import { OTPInput, OTPInputContext } from 'input-otp'; import { Minus } from 'lucide-react'; import * as React from 'react'; import { cn } from '../lib/utils'; const PinInput = React.forwardRef, React.ComponentPropsWithoutRef>( ({ className, containerClassName, ...props }, ref) => ( ), ); PinInput.displayName = 'PinInput'; const PinInputGroup = React.forwardRef, 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.ComponentPropsWithoutRef<'div'>>( ({ ...props }, ref) => (
), ); PinInputSeparator.displayName = 'PinInputSeparator'; export { PinInput, PinInputGroup, PinInputSeparator, PinInputSlot };