import * as React from 'react'; import { OTPInput, OTPInputContext } from 'input-otp'; import { Minus } from 'lucide-react'; import { cn } from '../lib/utils'; const PinInput = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, containerClassName, ...props }, ref) => ( )); PinInput.displayName = 'PinInput'; const PinInputGroup = React.forwardRef< React.ElementRef<'div'>, React.ComponentPropsWithoutRef<'div'> >(({ className, ...props }, ref) => (
)); PinInputGroup.displayName = 'PinInputGroup'; const PinInputSlot = React.forwardRef< React.ElementRef<'div'>, React.ComponentPropsWithoutRef<'div'> & { index: number } >(({ index, className, ...props }, ref) => { const context = React.useContext(OTPInputContext); const { char, hasFakeCaret, isActive } = context.slots[index]; return (
{char} {hasFakeCaret && (
)}
); }); PinInputSlot.displayName = 'PinInputSlot'; const PinInputSeparator = React.forwardRef< React.ElementRef<'div'>, React.ComponentPropsWithoutRef<'div'> >(({ ...props }, ref) => (
)); PinInputSeparator.displayName = 'PinInputSeparator'; export { PinInput, PinInputGroup, PinInputSlot, PinInputSeparator };