{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "field",
  "title": "Field",
  "description": "A field component.",
  "registryDependencies": [
    "@cubby-ui/input"
  ],
  "files": [
    {
      "path": "registry/default/field/field.tsx",
      "content": "\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Field as BaseField } from \"@base-ui/react/field\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\nimport { inputVariants } from \"@/registry/default/input/input\";\r\n\r\nfunction Field({ className, ...props }: BaseField.Root.Props) {\r\n  return (\r\n    <BaseField.Root\r\n      data-slot=\"field\"\r\n      className={cn(\"space-y-2\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldLabel({ className, ...props }: BaseField.Label.Props) {\r\n  return (\r\n    <BaseField.Label\r\n      data-slot=\"field-label\"\r\n      className={cn(\r\n        \"text-foreground flex items-center gap-2 text-sm leading-5 font-medium select-none\",\r\n        \"data-disabled:pointer-events-none data-disabled:opacity-60\",\r\n        \"data-invalid:text-destructive\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldControl({ className, ...props }: BaseField.Control.Props) {\r\n  return (\r\n    <BaseField.Control\r\n      data-slot=\"field-control\"\r\n      className={cn(inputVariants(), className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldDescription({\r\n  className,\r\n  ...props\r\n}: BaseField.Description.Props) {\r\n  return (\r\n    <BaseField.Description\r\n      data-slot=\"field-description\"\r\n      className={cn(\"text-muted-foreground text-sm\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldError({ className, ...props }: BaseField.Error.Props) {\r\n  return (\r\n    <BaseField.Error\r\n      data-slot=\"field-error\"\r\n      className={cn(\"text-destructive text-sm\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldErrorSlot({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"field-error-slot\"\r\n      className={cn(\r\n        \"-mt-2 grid h-0 overflow-clip [interpolate-size:allow-keywords] *:col-start-1 *:row-start-1\",\r\n        \"ease-out-expo transition-[height,margin-top] duration-140 motion-reduce:transition-none\",\r\n        \"has-[[data-slot=field-error]:not([data-ending-style])]:mt-0 has-[[data-slot=field-error]:not([data-ending-style])]:h-auto\",\r\n        // Opacity fade on child FieldError\r\n        \"*:data-[slot=field-error]:transition-opacity *:data-[slot=field-error]:duration-140 motion-reduce:*:data-[slot=field-error]:transition-none\",\r\n        \"[&>[data-slot=field-error][data-ending-style]]:opacity-0 [&>[data-slot=field-error][data-starting-style]]:opacity-0\",\r\n        // When swapping errors: instantly hide the exiting one, show the entering one.\r\n        \"[&:has(>[data-slot=field-error]:not([data-ending-style]))>[data-slot=field-error][data-ending-style]]:hidden\",\r\n        \"[&:has(>[data-slot=field-error][data-ending-style])>[data-slot=field-error][data-starting-style]]:opacity-100\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction FieldItem({ className, ...props }: BaseField.Item.Props) {\r\n  return (\r\n    <BaseField.Item\r\n      data-slot=\"field-item\"\r\n      className={cn(\"flex items-center gap-3\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nconst FieldValidity = BaseField.Validity;\r\n\r\nexport {\r\n  Field,\r\n  FieldLabel,\r\n  FieldControl,\r\n  FieldDescription,\r\n  FieldError,\r\n  FieldErrorSlot,\r\n  FieldItem,\r\n  FieldValidity,\r\n};\r\n",
      "type": "registry:ui",
      "target": "components/ui/cubby-ui/field.tsx"
    }
  ],
  "type": "registry:ui"
}