{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "input", "title": "Input", "description": "Text input with outline, secondary, and ghost variants, four sizes, and accessible focus, validation, disabled, and file states.", "dependencies": [ "class-variance-authority" ], "registryDependencies": [ "https://zeron-ui.vercel.app/r/surfaces.json", "utils", "https://zeron-ui.vercel.app/r/shape-context.json" ], "files": [ { "path": "src/components/ui/input.tsx", "content": "\"use client\";\n\nimport { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { useShape } from \"@/lib/shape-context\";\n\nconst inputVariants = cva(\n [\n \"flex w-full min-w-0 text-fg-default outline-none\",\n \"transition-[background-color,border-color,box-shadow,color] duration-fast\",\n \"selection:bg-selection selection:text-fg-default\",\n \"file:inline-flex file:h-control-xs file:border-0 file:bg-transparent file:text-body file:text-fg-default\",\n \"placeholder:text-fg-subtle\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:ring-1 focus-visible:ring-focus-ring\",\n \"aria-invalid:border-danger-border aria-invalid:hover:border-danger-border aria-invalid:ring-1 aria-invalid:ring-danger-border/40 aria-invalid:focus-visible:outline-1 aria-invalid:focus-visible:outline-focus-ring aria-invalid:focus-visible:outline-offset-2\",\n ],\n {\n variants: {\n variant: {\n outline: \"border border-input bg-transparent hover:border-input-hover hover:bg-hover\",\n secondary: \"border border-transparent bg-emphasis shadow-none\",\n ghost: \"border border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"h-control-xs px-2.5 py-0.5 text-label\",\n default: \"min-h-control-sm px-3 py-1 text-body\",\n lg: \"min-h-control-md px-3.5 py-1.5 text-body\",\n xl: \"h-control-xl px-4 py-2 text-body\",\n },\n },\n defaultVariants: {\n variant: \"outline\",\n size: \"default\",\n },\n }\n);\n\ninterface InputProps\n extends Omit, \"size\">,\n VariantProps {}\n\nconst Input = forwardRef(\n (\n {\n className,\n size = \"default\",\n type,\n variant = \"outline\",\n ...props\n },\n ref\n ) => {\n const shape = useShape();\n\n return (\n \n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\nexport type { InputProps };\n", "type": "registry:ui", "target": "components/ui/input.tsx" } ], "type": "registry:ui" }