{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "field",
  "title": "Field",
  "description": "Base UI Field and Fieldset. Render plain Input or Textarea through FieldControl to associate the label, description and visible errors. Setting invalid also reveals FieldError.",
  "dependencies": [
    "@base-ui/react@1.9.0",
    "class-variance-authority@0.7.1"
  ],
  "registryDependencies": [
    "@waimakers/utils",
    "@waimakers/theme"
  ],
  "files": [
    {
      "path": "src/components/ui/field.tsx",
      "content": "import { Field as FieldPrimitive } from \"@base-ui/react/field\";\nimport { Fieldset as FieldsetPrimitive } from \"@base-ui/react/fieldset\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { createContext, useContext } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst FieldInvalidContext = createContext<boolean | undefined>(undefined);\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<typeof FieldsetPrimitive.Root>) {\n  return (\n    <FieldsetPrimitive.Root\n      data-slot=\"field-set\"\n      className={cn(\"flex min-w-0 flex-col gap-4\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction FieldLegend({\n  className,\n  variant = \"legend\",\n  ...props\n}: React.ComponentProps<typeof FieldsetPrimitive.Legend> & { variant?: \"legend\" | \"label\" }) {\n  return (\n    <FieldsetPrimitive.Legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        \"mb-1.5 font-medium text-foreground data-[variant=label]:text-sm data-[variant=legend]:text-base data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\"@container/field-group flex w-full min-w-0 flex-col gap-5\", className)}\n      {...props}\n    />\n  );\n}\n\nconst fieldVariants = cva(\"group/field flex w-full min-w-0 gap-2\", {\n  variants: {\n    orientation: {\n      vertical: \"flex-col\",\n      horizontal: \"flex-row items-center\",\n      responsive: \"flex-col @md/field-group:flex-row @md/field-group:items-center\",\n    },\n  },\n  defaultVariants: { orientation: \"vertical\" },\n});\n\nfunction Field({\n  className,\n  orientation = \"vertical\",\n  invalid,\n  ...props\n}: React.ComponentProps<typeof FieldPrimitive.Root> & VariantProps<typeof fieldVariants>) {\n  return (\n    <FieldInvalidContext.Provider value={invalid}>\n      <FieldPrimitive.Root\n        invalid={invalid}\n        data-slot=\"field\"\n        data-orientation={orientation}\n        className={cn(fieldVariants({ orientation }), className)}\n        {...props}\n      />\n    </FieldInvalidContext.Provider>\n  );\n}\n\nfunction FieldControl(props: React.ComponentProps<typeof FieldPrimitive.Control>) {\n  return <FieldPrimitive.Control {...props} />;\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn(\"flex min-w-0 flex-1 flex-col gap-1\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction FieldLabel({ className, ...props }: React.ComponentProps<typeof FieldPrimitive.Label>) {\n  return (\n    <FieldPrimitive.Label\n      data-slot=\"field-label\"\n      className={cn(\n        \"flex w-fit items-center gap-2 text-sm font-medium leading-snug text-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof FieldPrimitive.Description>) {\n  return (\n    <FieldPrimitive.Description\n      data-slot=\"field-description\"\n      className={cn(\n        \"text-sm leading-normal text-muted-foreground [&>a]:text-foreground [&>a]:underline [&>a]:decoration-primary [&>a]:underline-offset-4\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldError({\n  className,\n  match,\n  ...props\n}: React.ComponentProps<typeof FieldPrimitive.Error>) {\n  const invalid = useContext(FieldInvalidContext);\n  return (\n    <FieldPrimitive.Error\n      match={match ?? (invalid === true ? true : undefined)}\n      data-slot=\"field-error\"\n      role=\"alert\"\n      className={cn(\"text-sm leading-normal text-danger-text\", className)}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Field,\n  FieldControl,\n  FieldContent,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldSet,\n  FieldLegend,\n};\n",
      "type": "registry:ui",
      "target": "components/ui/field.tsx"
    }
  ],
  "type": "registry:ui"
}