{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "two-factor-setup-modal", "dependencies": [ "@inertiajs/react" ], "registryDependencies": [ "@craft/alert-error", "@craft/form-errors", "@craft/use-clipboard", "button", "dialog", "input-otp", "label" ], "files": [ { "path": "registry/new-york-v4/components/two-factor-setup-modal.tsx", "content": "import { Form } from \"@inertiajs/react\";\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\";\nimport { ScanLine } from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport AlertError from \"@/components/alert-error\";\nimport InputError from \"@/components/input-error\";\nimport { Button } from \"@/components/ui/button\";\nimport { toastFirstFormError } from \"@/lib/form-errors\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport { useAppearance } from \"@/hooks/use-appearance\";\nimport { OTP_MAX_LENGTH } from \"@/hooks/use-two-factor-auth\";\nimport { confirm } from \"@/routes/two-factor\";\n\nfunction GridScanIcon() {\n return (\n