{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "input-group",
  "files": [
    {
      "path": "ui/input-group/InputGroup.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroup.astro directly.\n/**\n * @component InputGroup\n * @title Input Group\n * @description An input field with attached addons like icons, buttons, or text labels.\n * @figmaUrl https://www.figma.com/design/koxai7zw5vIuBzuVxe5T2l/bejamas-ui?node-id=2549-20918&t=YFStJ3V8fXEO8QD8-4\n *\n * @preview\n *\n * <div class=\"grid w-full max-w-sm gap-6\">\n *   <InputGroup>\n *     <InputGroupInput placeholder=\"Search...\" />\n *     <InputGroupAddon>\n *       <SearchIcon />\n *     </InputGroupAddon>\n *     <InputGroupAddon align=\"inline-end\">12 results</InputGroupAddon>\n *   </InputGroup>\n *\n *   <InputGroup>\n *     <InputGroupInput placeholder=\"example.com\" />\n *     <InputGroupAddon>\n *       <InputGroupText>https://</InputGroupText>\n *     </InputGroupAddon>\n *     <InputGroupAddon align=\"inline-end\">\n *       <InputGroupButton size=\"xs\">Check</InputGroupButton>\n *     </InputGroupAddon>\n *   </InputGroup>\n *\n *   <InputGroup>\n *     <InputGroupTextarea placeholder=\"Ask, Search or Chat...\" />\n *     <InputGroupAddon align=\"block-end\">\n *       <InputGroupButton size=\"icon-xs\" class=\"rounded-full\">\n *         <PlusIcon />\n *       </InputGroupButton>\n *       <InputGroupButton variant=\"ghost\">Auto</InputGroupButton>\n *       <InputGroupText class=\"ml-auto\">52% used</InputGroupText>\n *       <Separator orientation=\"vertical\" class=\"!h-4\" />\n *       <InputGroupButton size=\"icon-xs\" variant=\"default\" class=\"rounded-full\">\n *         <ArrowUpIcon />\n *         <span class=\"sr-only\">Send</span>\n *       </InputGroupButton>\n *     </InputGroupAddon>\n *   </InputGroup>\n * </div>\n *\n * @usage\n *\n * ```astro nocollapse\n * ---\n * import { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton, InputGroupText } from '@bejamas/ui/components/input-group';\n * ---\n *\n * <InputGroup>\n *   <InputGroupInput placeholder=\"Search...\" />\n *   <InputGroupAddon><SearchIcon /></InputGroupAddon>\n * </InputGroup>\n * ```\n *\n * @examples\n *\n * ### Sizes\n *\n * <div class=\"grid w-full max-w-sm gap-3\">\n *   <InputGroup size=\"sm\">\n *     <InputGroupInput placeholder=\"Small (h-8)\" />\n *   </InputGroup>\n *   <InputGroup>\n *     <InputGroupInput placeholder=\"Default (h-9)\" />\n *   </InputGroup>\n *   <InputGroup size=\"lg\">\n *     <InputGroupInput placeholder=\"Large (h-10)\" />\n *   </InputGroup>\n * </div>\n *\n * @api\n *\n * | Prop | Type | Default |\n * | --- | --- | --- |\n * | `size` | `\"sm\" \\| \"default\" \\| \"lg\"` | `\"default\"` |\n */\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"div\"> {\n  size?: \"sm\" | \"default\" | \"lg\";\n  class?: string;\n}\n\nconst {\n  size = \"default\",\n  class: className = \"\",\n  ...rest\n} = Astro.props as Props;\n---\n\n<div\n  {...rest}\n  role=\"group\"\n  data-slot=\"input-group\"\n  data-size={size}\n  class={cn(\n    \"group/input-group border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n    className,\n  )}\n>\n  <slot />\n</div>\n\n<script is:inline type=\"module\">\n  // Focus the nearest input when clicking on addons (unless clicking a button)\n  document.addEventListener(\"click\", (e) => {\n    const addon = e.target.closest(\"[data-slot='input-group-addon']\");\n    if (!addon) return;\n    if (e.target.closest(\"button\")) return;\n    const root = addon.closest(\"[data-slot='input-group']\");\n    if (!root) return;\n    const input = root.querySelector(\n      \"[data-input-group-control], [data-slot='input-group-control']\",\n    );\n    input?.focus();\n  });\n  // Disabled styling passthrough when any control is disabled\n  document.querySelectorAll(\"[data-slot='input-group']\").forEach((group) => {\n    const updateDisabled = () => {\n      const ctrl = group.querySelector(\n        \"[data-input-group-control], [data-slot='input-group-control']\",\n      );\n      group.dataset.disabled = ctrl?.hasAttribute(\"disabled\")\n        ? \"true\"\n        : \"false\";\n    };\n    updateDisabled();\n    group.addEventListener(\"change\", updateDisabled, { capture: true });\n  });\n</script>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/InputGroupAddon.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroupAddon.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\ntype Align = \"inline-start\" | \"inline-end\" | \"block-start\" | \"block-end\";\n\ninterface Props extends HTMLAttributes<\"div\"> {\n  align?: Align;\n  class?: string;\n}\n\nconst {\n  align = \"inline-start\",\n  class: className = \"\",\n  ...rest\n} = Astro.props as Props;\n\nconst addonVariants = cva(\n  \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n  {\n    variants: {\n      align: {\n        \"inline-start\":\n          \"pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem] order-first\",\n        \"inline-end\":\n          \"pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem] order-last\",\n        \"block-start\":\n          \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\n        \"block-end\":\n          \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\n      },\n    },\n    defaultVariants: {\n      align: \"inline-start\",\n    },\n  },\n);\n---\n\n<div\n  {...rest}\n  role=\"group\"\n  data-slot=\"input-group-addon\"\n  data-align={align}\n  class={cn(addonVariants({ align }), className)}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/InputGroupButton.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroupButton.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"../button\";\n\ntype GroupButtonSize = \"xs\" | \"sm\" | \"icon-xs\" | \"icon-sm\";\n\ninterface Props extends HTMLAttributes<\"button\"> {\n  size?: GroupButtonSize;\n  variant?:\n  | \"default\"\n  | \"secondary\"\n  | \"outline\"\n  | \"ghost\"\n  | \"destructive\"\n  | \"link\";\n  type?: \"button\" | \"submit\" | \"reset\";\n  class?: string;\n}\n\nconst {\n  size = \"xs\",\n  variant = \"ghost\",\n  type = \"button\",\n  class: className = \"\",\n  ...rest\n} = Astro.props as Props;\n\nconst inputGroupButtonVariants = cva(\n  \"gap-2 text-sm flex items-center shadow-none\",\n  {\n    variants: {\n      size: {\n        xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n        sm: \"\",\n        \"icon-xs\":\n          \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n        \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n      },\n    },\n    defaultVariants: {\n      size: \"xs\",\n    },\n  },\n);\n---\n\n<Button\n  type={type}\n  data-size={size}\n  variant={variant}\n  data-slot=\"input-group-button\"\n  class={cn(inputGroupButtonVariants({ size }), className)}\n  {...rest}\n>\n  <slot />\n</Button>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/InputGroupInput.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroupInput.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"../input\";\n\ninterface Props extends HTMLAttributes<\"input\"> {\n  class?: string;\n}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<Input\n  data-slot=\"input-group-control\"\n  class={cn(\"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1\", className)}\n  {...rest}\n/>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/InputGroupText.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroupText.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Props extends HTMLAttributes<\"span\"> {\n  class?: string;\n}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<span\n  {...rest}\n  data-slot=\"input-group-text\"\n  class={cn(\n    \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n    className,\n  )}\n>\n  <slot />\n</span>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/InputGroupTextarea.astro",
      "content": "---\n// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/InputGroupTextarea.astro directly.\nimport type { HTMLAttributes } from \"astro/types\";\nimport { cn } from \"@/lib/utils\";\nimport { Textarea } from \"../textarea\";\n\ninterface Props extends HTMLAttributes<\"textarea\"> {\n  class?: string;\n}\n\nconst { class: className = \"\", ...rest } = Astro.props as Props;\n---\n\n<Textarea\n  data-slot=\"input-group-control\"\n  class={cn(\"rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1 resize-none\", className)}\n  {...rest}\n/>\n",
      "type": "registry:ui"
    },
    {
      "path": "ui/input-group/index.ts",
      "content": "// Generated from bejamas-juno style registry. Do not edit packages/ui/src/components/input-group/index.ts directly.\nexport { default as InputGroup } from \"./InputGroup.astro\";\nexport { default as InputGroupAddon } from \"./InputGroupAddon.astro\";\nexport { default as InputGroupButton } from \"./InputGroupButton.astro\";\nexport { default as InputGroupText } from \"./InputGroupText.astro\";\nexport { default as InputGroupInput } from \"./InputGroupInput.astro\";\nexport { default as InputGroupTextarea } from \"./InputGroupTextarea.astro\";\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}