Password

PreviousNext

Password input with show/hide toggle

Docs
formcncomponent

Preview

Loading preview…
components/password.tsx
"use client";

import { useState } from "react";
import { EyeIcon, EyeOffIcon } from "lucide-react";
import {
  InputGroup,
  InputGroupAddon,
  InputGroupButton,
  InputGroupInput,
} from "@/components/ui/input-group";

export function Password(props: React.ComponentProps<typeof InputGroupInput>) {
  const [isVisible, setIsVisible] = useState<boolean>(false);

  const toggleVisibility = () => setIsVisible((prevState) => !prevState);

  return (
    <InputGroup>
      <InputGroupInput
        placeholder="password"
        type={isVisible ? "text" : "password"}
        {...props}
      />
      <InputGroupAddon align="inline-end">
        <InputGroupButton onClick={toggleVisibility}>
          {isVisible ? (
            <EyeOffIcon size={16} aria-hidden="true" />
          ) : (
            <EyeIcon size={16} aria-hidden="true" />
          )}
        </InputGroupButton>
      </InputGroupAddon>
    </InputGroup>
  );
}

Installation

npx shadcn@latest add @formcn/password

Usage

import { Password } from "@/components/password"
<Password />