{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "field",
  "registryDependencies": [
    "label",
    "separator"
  ],
  "files": [
    {
      "path": "ui/field/Field.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/Field.astro directly.\n/**\n * @component Field\n * @title Field\n * @description Composable form layout primitives for labels, descriptions, grouped controls, separators, and validation messages.\n *\n * @preview\n *\n * <div class=\"w-full max-w-md\">\n *   <form>\n *     <FieldGroup>\n *       <FieldSet>\n *         <FieldLegend>Payment Method</FieldLegend>\n *         <FieldDescription>\n *           All transactions are secure and encrypted\n *         </FieldDescription>\n *         <FieldGroup>\n *           <Field>\n *             <FieldLabel for=\"checkout-7j9-card-name-43j\">Name on Card</FieldLabel>\n *             <Input id=\"checkout-7j9-card-name-43j\" placeholder=\"Evil Rabbit\" required />\n *           </Field>\n *           <Field>\n *             <FieldLabel for=\"checkout-7j9-card-number-uw1\">Card Number</FieldLabel>\n *             <Input id=\"checkout-7j9-card-number-uw1\" placeholder=\"1234 5678 9012 3456\" required />\n *             <FieldDescription>Enter your 16-digit card number</FieldDescription>\n *           </Field>\n *           <div class=\"grid grid-cols-3 gap-4\">\n *             <Field>\n *               <FieldLabel for=\"checkout-exp-month-ts6\">Month</FieldLabel>\n *               <Select>\n *                 <SelectTrigger id=\"checkout-exp-month-ts6\">\n *                   <SelectValue placeholder=\"MM\" />\n *                 </SelectTrigger>\n *                 <SelectContent>\n *                   <SelectGroup>\n *                     <SelectItem value=\"01\">01</SelectItem>\n *                     <SelectItem value=\"02\">02</SelectItem>\n *                     <SelectItem value=\"03\">03</SelectItem>\n *                     <SelectItem value=\"04\">04</SelectItem>\n *                     <SelectItem value=\"05\">05</SelectItem>\n *                     <SelectItem value=\"06\">06</SelectItem>\n *                     <SelectItem value=\"07\">07</SelectItem>\n *                     <SelectItem value=\"08\">08</SelectItem>\n *                     <SelectItem value=\"09\">09</SelectItem>\n *                     <SelectItem value=\"10\">10</SelectItem>\n *                     <SelectItem value=\"11\">11</SelectItem>\n *                     <SelectItem value=\"12\">12</SelectItem>\n *                   </SelectGroup>\n *                 </SelectContent>\n *               </Select>\n *             </Field>\n *             <Field>\n *               <FieldLabel for=\"checkout-7j9-exp-year-f59\">Year</FieldLabel>\n *               <Select>\n *                 <SelectTrigger id=\"checkout-7j9-exp-year-f59\">\n *                   <SelectValue placeholder=\"YYYY\" />\n *                 </SelectTrigger>\n *                 <SelectContent>\n *                   <SelectGroup>\n *                     <SelectItem value=\"2024\">2024</SelectItem>\n *                     <SelectItem value=\"2025\">2025</SelectItem>\n *                     <SelectItem value=\"2026\">2026</SelectItem>\n *                     <SelectItem value=\"2027\">2027</SelectItem>\n *                     <SelectItem value=\"2028\">2028</SelectItem>\n *                     <SelectItem value=\"2029\">2029</SelectItem>\n *                   </SelectGroup>\n *                 </SelectContent>\n *               </Select>\n *             </Field>\n *             <Field>\n *               <FieldLabel for=\"checkout-7j9-cvv\">CVV</FieldLabel>\n *               <Input id=\"checkout-7j9-cvv\" placeholder=\"123\" required />\n *             </Field>\n *           </div>\n *         </FieldGroup>\n *       </FieldSet>\n *\n *       <FieldSeparator />\n *\n *       <FieldSet>\n *         <FieldLegend>Billing Address</FieldLegend>\n *         <FieldDescription>\n *           The billing address associated with your payment method\n *         </FieldDescription>\n *         <FieldGroup>\n *           <Field orientation=\"horizontal\">\n *             <Checkbox id=\"checkout-7j9-same-as-shipping-wgm\" checked />\n *             <FieldLabel for=\"checkout-7j9-same-as-shipping-wgm\" class=\"font-normal\">\n *               Same as shipping address\n *             </FieldLabel>\n *           </Field>\n *         </FieldGroup>\n *       </FieldSet>\n *\n *       <FieldSet>\n *         <FieldGroup>\n *           <Field>\n *             <FieldLabel for=\"checkout-7j9-optional-comments\">Comments</FieldLabel>\n *             <Textarea\n *               id=\"checkout-7j9-optional-comments\"\n *               placeholder=\"Add any additional comments\"\n *               class=\"resize-none\"\n *             />\n *           </Field>\n *         </FieldGroup>\n *       </FieldSet>\n *\n *       <Field orientation=\"horizontal\">\n *         <Button type=\"submit\">Submit</Button>\n *         <Button variant=\"outline\" type=\"button\">Cancel</Button>\n *       </Field>\n *     </FieldGroup>\n *   </form>\n * </div>\n *\n * @usage\n *\n * ```astro nocollapse\n * ---\n * import {\n *   Field,\n *   FieldContent,\n *   FieldDescription,\n *   FieldError,\n *   FieldGroup,\n *   FieldLabel,\n *   FieldLegend,\n *   FieldSeparator,\n *   FieldSet,\n *   FieldTitle,\n * } from '@bejamas/ui/components/field';\n * ---\n *\n * <FieldGroup>\n *   <FieldSet>\n *     <FieldLegend>Account</FieldLegend>\n *     <Field>\n *       <FieldLabel for=\"email\">Email</FieldLabel>\n *       <Input id=\"email\" type=\"email\" />\n *       <FieldError errors={[{ message: 'Email is required' }]} />\n *     </Field>\n *   </FieldSet>\n * </FieldGroup>\n * ```\n *\n * @api\n *\n * ### FieldSet\n *\n * Container that renders a semantic `fieldset` with spacing presets.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldSet>\n *   <FieldLegend>Delivery</FieldLegend>\n *   <FieldGroup>\n *     <Field>\n *       <FieldLabel for=\"address\">Address</FieldLabel>\n *       <Input id=\"address\" />\n *     </Field>\n *   </FieldGroup>\n * </FieldSet>\n * ```\n *\n * ### FieldLegend\n *\n * Legend element for a `FieldSet`. Use the `label` variant to align with label sizing.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `variant` | `\"legend\" \\| \"label\"` | `\"legend\"` |\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldLegend variant=\"label\">Notification Preferences</FieldLegend>\n * ```\n *\n * ### FieldGroup\n *\n * Layout wrapper that stacks `Field` components and enables container-query\n * responsive orientations.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldGroup class=\"@container/field-group flex flex-col gap-6\">\n *   <Field>...</Field>\n *   <Field>...</Field>\n * </FieldGroup>\n * ```\n *\n * ### Field\n *\n * Core wrapper for a single field. Provides orientation control, invalid-state\n * styling, and spacing.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `orientation` | `\"vertical\" \\| \"horizontal\" \\| \"responsive\"` | `\"vertical\"` |\n * | `class` | `string` | - |\n * | `data-invalid` | `\"true\" \\| \"false\"` | - |\n *\n * ```astro nocollapse\n * <Field orientation=\"horizontal\">\n *   <FieldLabel for=\"remember\">Remember me</FieldLabel>\n *   <Switch id=\"remember\" />\n * </Field>\n * ```\n *\n * ### FieldContent\n *\n * Flex column for grouping control and descriptions when label/content are split.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <Field orientation=\"horizontal\">\n *   <Checkbox id=\"notifications\" />\n *   <FieldContent>\n *     <FieldLabel for=\"notifications\">Notifications</FieldLabel>\n *     <FieldDescription>Email, SMS, and push options.</FieldDescription>\n *   </FieldContent>\n * </Field>\n * ```\n *\n * ### FieldLabel\n *\n * Label styled for both direct controls and nested `Field` children.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n * | `for` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldLabel for=\"email\">Email</FieldLabel>\n * ```\n *\n * ### FieldTitle\n *\n * Title text styled for use inside `FieldContent`.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldContent>\n *   <FieldTitle>Enable Touch ID</FieldTitle>\n *   <FieldDescription>Unlock your device faster.</FieldDescription>\n * </FieldContent>\n * ```\n *\n * ### FieldDescription\n *\n * Helper text slot that supports links and balanced wrapping in horizontal layouts.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldDescription>We never share your email with anyone.</FieldDescription>\n * ```\n *\n * ### FieldSeparator\n *\n * Visual divider for sections inside a `FieldGroup`. Supports optional inline\n * content through its default slot.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldSeparator>Or continue with</FieldSeparator>\n * ```\n *\n * ### FieldError\n *\n * Accessible error container. Renders slot content if provided; otherwise it\n * derives output from the `errors` array.\n *\n * | Prop | Type | Default |\n * |------|------|---------|\n * | `errors` | `Array<{ message?: string } \\| undefined>` | `[]` |\n * | `forceMount` | `boolean` | `false` |\n * | `class` | `string` | - |\n *\n * ```astro nocollapse\n * <FieldError errors={[{ message: \"Username is required\" }]} />\n * ```\n *\n * When `errors` contains multiple unique messages, the component renders a list\n * automatically.\n *\n * For client-side script flows in Astro, mount once and toggle visibility:\n *\n * ```astro nocollapse\n * <FieldError forceMount class=\"hidden\" data-error-for=\"email\" />\n * ```\n *\n * @examples\n *\n * ### Input\n *\n * <FieldSet class=\"w-full max-w-xs\">\n *   <FieldGroup>\n *     <Field>\n *       <FieldLabel for=\"username\">Username</FieldLabel>\n *       <Input id=\"username\" type=\"text\" placeholder=\"Max Leiter\" />\n *       <FieldDescription>\n *         Choose a unique username for your account.\n *       </FieldDescription>\n *     </Field>\n *     <Field>\n *       <FieldLabel for=\"password\">Password</FieldLabel>\n *       <FieldDescription>\n *         Must be at least 8 characters long.\n *       </FieldDescription>\n *       <Input id=\"password\" type=\"password\" placeholder=\"••••••••\" />\n *     </Field>\n *   </FieldGroup>\n * </FieldSet>\n *\n * ### Textarea\n *\n * <FieldSet class=\"w-full max-w-xs\">\n *   <FieldGroup>\n *     <Field>\n *       <FieldLabel for=\"feedback\">Feedback</FieldLabel>\n *       <Textarea\n *         id=\"feedback\"\n *         placeholder=\"Your feedback helps us improve...\"\n *         rows={4}\n *       />\n *       <FieldDescription>\n *         Share your thoughts about our service.\n *       </FieldDescription>\n *     </Field>\n *   </FieldGroup>\n * </FieldSet>\n *\n * ### Select\n *\n * <Field class=\"w-full max-w-xs\">\n *   <FieldLabel for=\"department\">Department</FieldLabel>\n *   <Select>\n *     <SelectTrigger id=\"department\">\n *       <SelectValue placeholder=\"Choose department\" />\n *     </SelectTrigger>\n *     <SelectContent>\n *       <SelectGroup>\n *         <SelectItem value=\"engineering\">Engineering</SelectItem>\n *         <SelectItem value=\"design\">Design</SelectItem>\n *         <SelectItem value=\"marketing\">Marketing</SelectItem>\n *         <SelectItem value=\"sales\">Sales</SelectItem>\n *         <SelectItem value=\"support\">Customer Support</SelectItem>\n *         <SelectItem value=\"hr\">Human Resources</SelectItem>\n *         <SelectItem value=\"finance\">Finance</SelectItem>\n *         <SelectItem value=\"operations\">Operations</SelectItem>\n *       </SelectGroup>\n *     </SelectContent>\n *   </Select>\n *   <FieldDescription>\n *     Select your department or area of work.\n *   </FieldDescription>\n * </Field>\n *\n * ### Slider\n *\n * <Field class=\"w-full max-w-xs\">\n *   <FieldTitle>Price Range</FieldTitle>\n *   <FieldDescription>\n *     Set your budget range between $200 and $800.\n *   </FieldDescription>\n *   <Slider\n *     defaultValue={[200, 800]}\n *     max={1000}\n *     min={0}\n *     step={10}\n *     class=\"mt-2 w-full\"\n *     aria-label=\"Price Range\"\n *   />\n * </Field>\n *\n * ### Fieldset\n *\n * <FieldSet class=\"w-full max-w-sm\">\n *   <FieldLegend>Address Information</FieldLegend>\n *   <FieldDescription>\n *     We need your address to deliver your order.\n *   </FieldDescription>\n *   <FieldGroup>\n *     <Field>\n *       <FieldLabel for=\"street\">Street Address</FieldLabel>\n *       <Input id=\"street\" type=\"text\" placeholder=\"123 Main St\" />\n *     </Field>\n *     <div class=\"grid grid-cols-2 gap-4\">\n *       <Field>\n *         <FieldLabel for=\"city\">City</FieldLabel>\n *         <Input id=\"city\" type=\"text\" placeholder=\"New York\" />\n *       </Field>\n *       <Field>\n *         <FieldLabel for=\"zip\">Postal Code</FieldLabel>\n *         <Input id=\"zip\" type=\"text\" placeholder=\"90502\" />\n *       </Field>\n *     </div>\n *   </FieldGroup>\n * </FieldSet>\n *\n * ### Checkbox\n *\n * <FieldGroup class=\"w-full max-w-xs\">\n *   <FieldSet>\n *     <FieldLegend variant=\"label\">\n *       Show these items on the desktop\n *     </FieldLegend>\n *     <FieldDescription>\n *       Select the items you want to show on the desktop.\n *     </FieldDescription>\n *     <FieldGroup class=\"gap-3\">\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"finder-pref-9k2-hard-disks-ljj\" checked />\n *         <FieldLabel\n *           for=\"finder-pref-9k2-hard-disks-ljj\"\n *           class=\"font-normal\"\n *         >\n *           Hard disks\n *         </FieldLabel>\n *       </Field>\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"finder-pref-9k2-external-disks-1yg\" />\n *         <FieldLabel\n *           for=\"finder-pref-9k2-external-disks-1yg\"\n *           class=\"font-normal\"\n *         >\n *           External disks\n *         </FieldLabel>\n *       </Field>\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"finder-pref-9k2-cds-dvds-fzt\" />\n *         <FieldLabel\n *           for=\"finder-pref-9k2-cds-dvds-fzt\"\n *           class=\"font-normal\"\n *         >\n *           CDs, DVDs, and iPods\n *         </FieldLabel>\n *       </Field>\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"finder-pref-9k2-connected-servers-6l2\" />\n *         <FieldLabel\n *           for=\"finder-pref-9k2-connected-servers-6l2\"\n *           class=\"font-normal\"\n *         >\n *           Connected servers\n *         </FieldLabel>\n *       </Field>\n *     </FieldGroup>\n *   </FieldSet>\n *   <FieldSeparator />\n *   <Field orientation=\"horizontal\">\n *     <Checkbox id=\"finder-pref-9k2-sync-folders-nep\" checked />\n *     <FieldContent>\n *       <FieldLabel for=\"finder-pref-9k2-sync-folders-nep\">\n *         Sync Desktop & Documents folders\n *       </FieldLabel>\n *       <FieldDescription>\n *         Your Desktop & Documents folders are being synced with iCloud Drive.\n *         You can access them from other devices.\n *       </FieldDescription>\n *     </FieldContent>\n *   </Field>\n * </FieldGroup>\n *\n * ### Radio\n *\n * <FieldSet class=\"w-full max-w-xs\">\n *   <FieldLegend variant=\"label\">Subscription Plan</FieldLegend>\n *   <FieldDescription>\n *     Yearly and lifetime plans offer significant savings.\n *   </FieldDescription>\n *   <RadioGroup name=\"subscription-plan\" defaultValue=\"monthly\">\n *     <Field orientation=\"horizontal\">\n *       <RadioGroupItem\n *         value=\"monthly\"\n *         id=\"plan-monthly\"\n *       />\n *       <FieldLabel for=\"plan-monthly\" class=\"font-normal\">\n *         Monthly ($9.99/month)\n *       </FieldLabel>\n *     </Field>\n *     <Field orientation=\"horizontal\">\n *       <RadioGroupItem\n *         name=\"subscription-plan\"\n *         value=\"yearly\"\n *         id=\"plan-yearly\"\n *       />\n *       <FieldLabel for=\"plan-yearly\" class=\"font-normal\">\n *         Yearly ($99.99/year)\n *       </FieldLabel>\n *     </Field>\n *     <Field orientation=\"horizontal\">\n *       <RadioGroupItem\n *         name=\"subscription-plan\"\n *         value=\"lifetime\"\n *         id=\"plan-lifetime\"\n *       />\n *       <FieldLabel for=\"plan-lifetime\" class=\"font-normal\">\n *         Lifetime ($299.99)\n *       </FieldLabel>\n *     </Field>\n *   </RadioGroup>\n * </FieldSet>\n *\n * ### Switch\n *\n * <Field orientation=\"horizontal\" class=\"w-fit\">\n *   <FieldLabel for=\"2fa\">Multi-factor authentication</FieldLabel>\n *   <Switch id=\"2fa\" />\n * </Field>\n *\n * ### Choice Card\n *\n * Wrap `Field` components inside `FieldLabel` to create selectable field groups.\n * This works with `RadioGroupItem`, `Checkbox`, and `Switch` components.\n *\n * <FieldGroup class=\"w-full max-w-xs\">\n *   <FieldSet>\n *     <FieldLegend variant=\"label\">Compute Environment</FieldLegend>\n *     <FieldDescription>\n *       Select the compute environment for your cluster.\n *     </FieldDescription>\n *     <RadioGroup\n *       name=\"compute-environment\"\n *       defaultValue=\"kubernetes\"\n *     >\n *       <FieldLabel for=\"kubernetes-r2h\">\n *         <Field orientation=\"horizontal\">\n *           <FieldContent>\n *             <FieldTitle>Kubernetes</FieldTitle>\n *             <FieldDescription>\n *               Run GPU workloads on a K8s cluster.\n *             </FieldDescription>\n *           </FieldContent>\n *           <RadioGroupItem\n *             value=\"kubernetes\"\n *             id=\"kubernetes-r2h\"\n *           />\n *         </Field>\n *       </FieldLabel>\n *       <FieldLabel for=\"vm-z4k\">\n *         <Field orientation=\"horizontal\">\n *           <FieldContent>\n *             <FieldTitle>Virtual Machine</FieldTitle>\n *             <FieldDescription>\n *               Access a cluster to run GPU workloads.\n *             </FieldDescription>\n *           </FieldContent>\n *           <RadioGroupItem\n *             value=\"vm\"\n *             id=\"vm-z4k\"\n *           />\n *         </Field>\n *       </FieldLabel>\n *     </RadioGroup>\n *   </FieldSet>\n * </FieldGroup>\n *\n * ### Field Group\n *\n * Stack `Field` components with `FieldGroup`. Add `FieldSeparator` to divide\n * them.\n *\n * <FieldGroup class=\"w-full max-w-xs\">\n *   <FieldSet>\n *     <FieldLabel>Responses</FieldLabel>\n *     <FieldDescription>\n *       Get notified when ChatGPT responds to requests that take time, like\n *       research or image generation.\n *     </FieldDescription>\n *     <FieldGroup data-slot=\"checkbox-group\" class=\"\">\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"push\" checked disabled />\n *         <FieldLabel for=\"push\" class=\"font-normal\">\n *           Push notifications\n *         </FieldLabel>\n *       </Field>\n *     </FieldGroup>\n *   </FieldSet>\n *   <FieldSeparator />\n *   <FieldSet>\n *     <FieldLabel>Tasks</FieldLabel>\n *     <FieldDescription>\n *       Get notified when tasks you've created have updates.\n *       <a href=\"#\">Manage tasks</a>\n *     </FieldDescription>\n *     <FieldGroup data-slot=\"checkbox-group\" class=\"\">\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"push-tasks\" />\n *         <FieldLabel for=\"push-tasks\" class=\"font-normal\">\n *           Push notifications\n *         </FieldLabel>\n *       </Field>\n *       <Field orientation=\"horizontal\">\n *         <Checkbox id=\"email-tasks\" />\n *         <FieldLabel for=\"email-tasks\" class=\"font-normal\">\n *           Email notifications\n *         </FieldLabel>\n *       </Field>\n *     </FieldGroup>\n *   </FieldSet>\n * </FieldGroup>\n */\n\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst fieldVariants = cva(\n  \"data-[invalid=true]:text-destructive gap-2 group/field flex w-full\",\n  {\n    variants: {\n      orientation: {\n        vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n        horizontal:\n          \"flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n        responsive:\n          \"flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n      },\n    },\n    defaultVariants: {\n      orientation: \"vertical\",\n    },\n  },\n);\n\ntype FieldVariantProps = VariantProps<typeof fieldVariants>;\n\ninterface Props extends FieldVariantProps, HTMLAttributes<\"div\"> {}\n\nconst {\n  class: className = \"\",\n  orientation = \"vertical\",\n  ...rest\n} = Astro.props as Props;\n---\n\n<div\n  role=\"group\"\n  data-slot=\"field\"\n  data-orientation={orientation}\n  class={cn(\"data-[invalid=true]:text-destructive gap-3\", fieldVariants({ orientation }), className)}\n  {...rest}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldContent.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldContent.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"div\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<div\n  data-slot=\"field-content\"\n  class={cn(\n    \"gap-1\",\n    \"gap-0.5 group/field-content flex flex-1 flex-col leading-snug\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldDescription.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldDescription.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"p\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<p\n  data-slot=\"field-description\"\n  class={cn(\n    \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5\",\n    \"leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n    \"last:mt-0 nth-last-2:-mt-1\",\n    \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</p>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldError.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldError.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ntype ErrorItem = { message?: string } | undefined;\n\ninterface Props extends HTMLAttributes<\"div\"> {\n  errors?: ErrorItem[];\n  forceMount?: boolean;\n}\n\nconst {\n  class: className = \"\",\n  errors = [],\n  forceMount = false,\n  ...rest\n} = Astro.props as Props;\n\nconst hasContent = Astro.slots.has(\"default\");\n\nconst uniqueMessages = Array.from(\n  new Set(\n    errors\n      .map((error) => error?.message)\n      .filter((message): message is string => Boolean(message)),\n  ),\n);\n\nconst shouldRender = forceMount || hasContent || uniqueMessages.length > 0;\n---\n\n{\n  shouldRender && (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      class={cn(\"text-destructive text-sm font-normal\", className)}\n      {...rest}\n    >\n      {hasContent && <slot />}\n      {!hasContent && uniqueMessages.length === 1 && uniqueMessages[0]}\n      {!hasContent && uniqueMessages.length > 1 && (\n        <ul class=\"ml-4 flex list-disc flex-col gap-1\">\n          {uniqueMessages.map((message) => (\n            <li>{message}</li>\n          ))}\n        </ul>\n      )}\n    </div>\n  )\n}\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldGroup.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldGroup.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"div\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<div\n  data-slot=\"field-group\"\n  class={cn(\n    \"gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n    \"group/field-group @container/field-group flex w-full flex-col\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldLabel.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldLabel.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"../label\";\n\ninterface Props extends HTMLAttributes<\"label\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<Label\n  data-slot=\"field-label\"\n  class={cn(\n    \"has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3\",\n    \"group/field-label peer/field-label flex w-fit leading-snug\",\n    \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</Label>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldLegend.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldLegend.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"legend\"> {\n  variant?: \"legend\" | \"label\";\n}\n\nconst {\n  class: className = \"\",\n  variant = \"legend\",\n  ...rest\n} = Astro.props as Props;\n---\n\n<legend\n  data-slot=\"field-legend\"\n  data-variant={variant}\n  class={cn(\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\", className)}\n  {...rest}\n>\n  <slot />\n</legend>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldSeparator.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldSeparator.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"../separator\";\n\ninterface Props extends HTMLAttributes<\"div\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n\nconst hasContent = Astro.slots.has(\"default\");\n---\n\n<div\n  data-slot=\"field-separator\"\n  data-content={hasContent ? \"true\" : undefined}\n  class={cn(\"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\", className)}\n  {...rest}\n>\n  <Separator class=\"absolute inset-0 top-1/2\" />\n  {\n    hasContent && (\n      <span\n        class=\"text-muted-foreground px-2 relative mx-auto block w-fit bg-background\"\n        data-slot=\"field-separator-content\"\n      >\n        <slot />\n      </span>\n    )\n  }\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldSet.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldSet.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"fieldset\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<fieldset\n  data-slot=\"field-set\"\n  class={cn(\n    \"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n    \"gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</fieldset>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/FieldTitle.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/FieldTitle.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"div\"> {}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<div\n  data-slot=\"field-title\"\n  class={cn(\n    \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n    \"flex w-fit items-center leading-snug\",\n    className,\n  )}\n  {...rest}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/field/index.ts",
      "content": "// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/field/index.ts directly.\nexport { default as Field } from \"./Field.astro\";\nexport { default as FieldContent } from \"./FieldContent.astro\";\nexport { default as FieldDescription } from \"./FieldDescription.astro\";\nexport { default as FieldError } from \"./FieldError.astro\";\nexport { default as FieldGroup } from \"./FieldGroup.astro\";\nexport { default as FieldLabel } from \"./FieldLabel.astro\";\nexport { default as FieldLegend } from \"./FieldLegend.astro\";\nexport { default as FieldSeparator } from \"./FieldSeparator.astro\";\nexport { default as FieldSet } from \"./FieldSet.astro\";\nexport { default as FieldTitle } from \"./FieldTitle.astro\";\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}