{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "password-input",
  "title": "Password Input",
  "description": "A shadcn-style password input component built with Ark UI primitives.",
  "dependencies": ["@ark-ui/react", "lucide-react"],
  "registryDependencies": ["button", "input-group"],
  "files": [
    {
      "path": "src/components/ui/password-input.tsx",
      "content": "\"use client\";\n\nimport { PasswordInput as PasswordInputPrimitive } from \"@ark-ui/react/password-input\";\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n  InputGroup,\n  InputGroupAddon,\n  InputGroupInput,\n} from \"@/components/ui/input-group\";\nimport { cn } from \"@/lib/utils\";\n\nexport type PasswordInputRootProps = PasswordInputPrimitive.RootProps;\n\nexport const PasswordInputRoot = ({\n  className,\n  ...props\n}: PasswordInputRootProps) => (\n  <PasswordInputPrimitive.Root\n    className={cn(\n      \"group/password-input flex w-full flex-col gap-1.5\",\n      className,\n    )}\n    data-slot=\"password-input\"\n    {...props}\n  />\n);\n\nexport type PasswordInputLabelProps = PasswordInputPrimitive.LabelProps;\n\nexport const PasswordInputLabel = ({\n  className,\n  ...props\n}: PasswordInputLabelProps) => (\n  <PasswordInputPrimitive.Label\n    className={cn(\n      \"text-sm font-medium text-foreground leading-none select-none\",\n      className,\n    )}\n    data-slot=\"password-input-label\"\n    {...props}\n  />\n);\n\nexport type PasswordInputControlProps = PasswordInputPrimitive.ControlProps;\n\nexport const PasswordInputControl = ({\n  ...props\n}: PasswordInputControlProps) => (\n  <PasswordInputPrimitive.Control\n    data-slot=\"password-input-control\"\n    {...props}\n  />\n);\n\nexport type PasswordInputInputProps = PasswordInputPrimitive.InputProps;\n\nexport const PasswordInputInput = ({ ...props }: PasswordInputInputProps) => (\n  <PasswordInputPrimitive.Input data-slot=\"password-input-input\" {...props} />\n);\n\nexport type PasswordInputProps = {\n  startAddon?: ReactNode;\n  endAddon?: ReactNode;\n  variant?: ComponentProps<typeof Button>[\"variant\"];\n  size?: ComponentProps<typeof Button>[\"size\"];\n  hideVisibilityToggle?: boolean;\n} & Omit<PasswordInputInputProps, \"size\">;\n\nexport const PasswordInput = ({\n  startAddon,\n  endAddon,\n  variant = \"ghost\",\n  size = \"icon-xs\",\n  hideVisibilityToggle = false,\n  ...props\n}: PasswordInputProps) => {\n  return (\n    <PasswordInputControl asChild>\n      <InputGroup>\n        {startAddon && (\n          <InputGroupAddon align=\"inline-start\">{startAddon}</InputGroupAddon>\n        )}\n        <PasswordInputInput {...props} asChild>\n          <InputGroupInput />\n        </PasswordInputInput>\n\n        <InputGroupAddon align=\"inline-end\">\n          {endAddon && <>{endAddon}</>}\n          {!hideVisibilityToggle && (\n            <PasswordInputVisibilityTrigger asChild>\n              <Button variant={variant} size={size}>\n                <PasswordInputIndicator fallback={<EyeOffIcon />}>\n                  <EyeIcon />\n                </PasswordInputIndicator>\n              </Button>\n            </PasswordInputVisibilityTrigger>\n          )}\n        </InputGroupAddon>\n      </InputGroup>\n    </PasswordInputControl>\n  );\n};\n\nexport type PasswordInputVisibilityTriggerProps =\n  PasswordInputPrimitive.VisibilityTriggerProps;\n\nexport const PasswordInputVisibilityTrigger = ({\n  ...props\n}: PasswordInputVisibilityTriggerProps) => (\n  <PasswordInputPrimitive.VisibilityTrigger\n    data-slot=\"password-input-visibility-trigger\"\n    {...props}\n  />\n);\n\nexport type PasswordInputIndicatorProps = PasswordInputPrimitive.IndicatorProps;\n\nexport const PasswordInputIndicator = ({\n  ...props\n}: PasswordInputIndicatorProps) => (\n  <PasswordInputPrimitive.Indicator\n    data-slot=\"password-input-indicator\"\n    {...props}\n  />\n);\n\nexport type PasswordInputRootProviderProps =\n  PasswordInputPrimitive.RootProviderProps;\n\nexport const PasswordInputRootProvider = (\n  props: PasswordInputRootProviderProps,\n) => (\n  <PasswordInputPrimitive.RootProvider\n    data-slot=\"password-input-root-provider\"\n    {...props}\n  />\n);\n\nexport type PasswordInputContextProps = PasswordInputPrimitive.ContextProps;\n\nexport const PasswordInputContext = (props: PasswordInputContextProps) => (\n  <PasswordInputPrimitive.Context {...props} />\n);\n\nexport type { PasswordInputVisibilityChangeDetails } from \"@ark-ui/react/password-input\";\n\nexport {\n  type UsePasswordInputProps,\n  type UsePasswordInputReturn,\n  usePasswordInput,\n  usePasswordInputContext,\n} from \"@ark-ui/react/password-input\";\n",
      "type": "registry:ui",
      "target": "src/components/ui/password-input.tsx"
    }
  ],
  "type": "registry:ui"
}
