{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "field",
  "title": "Field",
  "description": "A component that provides labeling and validation for form controls.",
  "dependencies": [
    "@base-ui/react",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "utils",
    "@lumi-ui/input"
  ],
  "files": [
    {
      "path": "registry/ui/field.tsx",
      "content": "\"use client\";\n\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/registry/lib/utils\";\nimport { inputBaseVariants, inputVariants } from \"@/registry/ui/input\";\n\nfunction Field({ className, ...props }: BaseField.Root.Props) {\n  return (\n    <BaseField.Root\n      className={cn(\n        \"group relative flex flex-col gap-2\",\n        \"has-data-[slot=checkbox]:flex-row has-data-[slot=checkbox]:items-center has-data-[slot=checkbox]:flex-wrap\",\n        \"has-data-[slot=radio]:flex-row has-data-[slot=radio]:items-center has-data-[slot=radio]:flex-wrap\",\n        \"has-data-[slot=switch]:flex-row has-data-[slot=switch]:items-center has-data-[slot=switch]:flex-wrap\",\n        className,\n      )}\n      data-slot=\"field\"\n      {...props}\n    />\n  );\n}\n\nfunction FieldLabel({ className, ...props }: BaseField.Label.Props) {\n  return (\n    <BaseField.Label\n      className={cn(\n        \"inline-flex items-start gap-2 text-sm leading-none font-medium select-none transition-colors\",\n        \"data-disabled:opacity-50\",\n        \"data-invalid:text-destructive\",\n        \"group-has-required:after:content-['*'] group-has-required:after:text-destructive group-has-required:after:-ml-0.5\",\n        \"aria-required:after:content-['*'] aria-required:after:text-destructive aria-required:after:-ml-0.5\",\n        \"has-data-[slot=checkbox]:-mt-px has-data-[slot=switch]:-mt-0.5\",\n        className,\n      )}\n      data-slot=\"field-label\"\n      {...props}\n    />\n  );\n}\n\nfunction FieldControl({\n  className,\n  inputSize = \"default\",\n  variant = \"default\",\n  ...props\n}: BaseField.Control.Props & {\n  inputSize?: VariantProps<typeof inputVariants>[\"inputSize\"];\n  variant?: VariantProps<typeof inputBaseVariants>[\"variant\"];\n}) {\n  return (\n    <BaseField.Control\n      className={cn(\n        inputVariants({ inputSize }),\n        inputBaseVariants({ variant }),\n        className,\n      )}\n      data-slot=\"field-control\"\n      {...props}\n    />\n  );\n}\n\nfunction FieldDescription({\n  className,\n  ...props\n}: BaseField.Description.Props) {\n  return (\n    <BaseField.Description\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      data-slot=\"field-description\"\n      {...props}\n    />\n  );\n}\n\nfunction FieldItem({ className, ...props }: BaseField.Item.Props) {\n  return (\n    <BaseField.Item\n      className={cn(\"flex items-center gap-2\", className)}\n      data-slot=\"field-item\"\n      {...props}\n    />\n  );\n}\n\nfunction FieldError({ className, ...props }: BaseField.Error.Props) {\n  return (\n    <BaseField.Error\n      className={cn(\"text-sm text-destructive text-pretty\", className)}\n      data-slot=\"field-error\"\n      {...props}\n    />\n  );\n}\n\nconst FieldValidity = BaseField.Validity;\n\nexport {\n  Field,\n  FieldLabel,\n  FieldControl,\n  FieldDescription,\n  FieldItem,\n  FieldError,\n  FieldValidity,\n};\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}