{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "sf-input-otp",
"title": "SF InputOTP",
"description": "OTP verification input with individual character slots. Zero border-radius, mono font, keyboard navigable.",
"registryDependencies": [
"input-otp"
],
"files": [
{
"path": "components/sf/sf-input-otp.tsx",
"content": "\"use client\";\n\nimport {\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n InputOTPSeparator,\n} from \"@/components/ui/input-otp\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * One-time password input — FRAME layer form primitive.\n *\n * Individual character slots for verification codes. Keyboard navigable,\n * supports paste and SMS autofill. Zero border-radius on all slots.\n *\n * @example\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n */\nfunction SFInputOTP({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputOTP — groups slots together visually. Zero border-radius on group container. */\nfunction SFInputOTPGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputOTP — individual character slot. Zero radius, 2px foreground border, ring on active state. */\nfunction SFInputOTPSlot({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\n/** Sub-component of SFInputOTP — visual separator between slot groups. */\nfunction SFInputOTPSeparator(\n props: React.ComponentProps\n) {\n return ;\n}\n\nexport { SFInputOTP, SFInputOTPGroup, SFInputOTPSlot, SFInputOTPSeparator };\n",
"type": "registry:ui"
}
],
"meta": {
"layer": "frame",
"pattern": "A"
},
"type": "registry:ui"
}