{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "password-input",
  "title": "Password Input",
  "registryDependencies": [
    "button",
    "input"
  ],
  "files": [
    {
      "path": "components/ui/password-input.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { cn } from \"cn\"\n\ntype PasswordInputProps = Omit<React.ComponentProps<typeof Input>, \"type\">\n\nfunction PasswordInput({ className, ...props }: PasswordInputProps) {\n  const [visible, setVisible] = React.useState(false)\n\n  return (\n    <div className=\"relative w-full\">\n      <Input\n        {...props}\n        type={visible ? \"text\" : \"password\"}\n        className={cn(\"pr-10\", className)}\n      />\n      <Button\n        type=\"button\"\n        variant=\"ghost\"\n        size=\"icon-xs\"\n        className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n        aria-label={visible ? \"Hide password\" : \"Show password\"}\n        onClick={() => setVisible((current) => !current)}\n      >\n        {visible ? <EyeOffIcon /> : <EyeIcon />}\n      </Button>\n    </div>\n  )\n}\n\nexport { PasswordInput }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}