'use client'; import * as React from 'react'; import { OTPInput, OTPInputContext } from 'input-otp'; import { MinusIcon } from 'lucide-react'; import { cn } from '@/lib/utils'; const ErrorContext = React.createContext(false); function InputOTP({ className, containerClassName, error, ...props }: React.ComponentProps & { containerClassName?: string; error?: boolean; }) { return ( ); } function InputOTPGroup({ className, ...props }: React.ComponentProps<'div'>) { return (
); } function InputOTPSlot({ index, className, ...props }: React.ComponentProps<'div'> & { index: number; mask?: boolean; }) { const inputOTPContext = React.useContext(OTPInputContext); const hasError = React.useContext(ErrorContext); const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}; const slots = inputOTPContext?.slots ?? []; const isAllFilled = slots.length >= 6 && slots.every((slot) => slot.char); return (
{isAllFilled || (char && !isActive) ? '●' : char} {hasFakeCaret && (
)}
); } function InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) { return (
); } export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };