@tetrascience-npm/tetrascience-react-ui 1.0.0-beta.152.1 → 1.0.0-beta.154.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/components/ui/checkbox.d.ts +6 -2
  2. package/dist/components/ui/combobox.d.ts +10 -2
  3. package/dist/components/ui/input-group.d.ts +8 -3
  4. package/dist/components/ui/input.d.ts +9 -2
  5. package/dist/components/ui/radio-group.d.ts +10 -3
  6. package/dist/components/ui/select.d.ts +1 -1
  7. package/dist/components/ui/textarea.d.ts +6 -2
  8. package/dist/index.cjs +1 -1
  9. package/dist/index.css +1 -1
  10. package/dist/index.js +505 -501
  11. package/dist/index.scoped.css +1 -1
  12. package/dist/index.tailwind.css +1 -1
  13. package/dist/ui/checkbox.cjs +1 -1
  14. package/dist/ui/checkbox.cjs.map +1 -1
  15. package/dist/ui/checkbox.js +37 -22
  16. package/dist/ui/checkbox.js.map +1 -1
  17. package/dist/ui/combobox.cjs +1 -1
  18. package/dist/ui/combobox.cjs.map +1 -1
  19. package/dist/ui/combobox.js +97 -78
  20. package/dist/ui/combobox.js.map +1 -1
  21. package/dist/ui/input-group.cjs +1 -1
  22. package/dist/ui/input-group.cjs.map +1 -1
  23. package/dist/ui/input-group.js +89 -63
  24. package/dist/ui/input-group.js.map +1 -1
  25. package/dist/ui/input.cjs +1 -1
  26. package/dist/ui/input.cjs.map +1 -1
  27. package/dist/ui/input.js +33 -9
  28. package/dist/ui/input.js.map +1 -1
  29. package/dist/ui/radio-group.cjs +1 -1
  30. package/dist/ui/radio-group.cjs.map +1 -1
  31. package/dist/ui/radio-group.js +46 -24
  32. package/dist/ui/radio-group.js.map +1 -1
  33. package/dist/ui/select.cjs +1 -1
  34. package/dist/ui/select.cjs.map +1 -1
  35. package/dist/ui/select.js +23 -21
  36. package/dist/ui/select.js.map +1 -1
  37. package/dist/ui/textarea.cjs +1 -1
  38. package/dist/ui/textarea.cjs.map +1 -1
  39. package/dist/ui/textarea.js +32 -10
  40. package/dist/ui/textarea.js.map +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","sources":["../../src/components/ui/combobox.tsx"],"sourcesContent":["\"use client\"\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { ChevronDownIcon, XIcon, CheckIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@/components/ui/input-group\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n aria-label=\"Toggle options\"\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n aria-label=\"Clear\"\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n <InputGroup className={cn(\"w-auto bg-card\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-elevation-4 ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n aria-hidden=\"true\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"group/chips flex min-h-12 flex-wrap items-center gap-1 rounded-md border border-input bg-card bg-clip-padding px-4 py-1 text-sm transition-colors has-[[data-slot=combobox-chip-input]:focus-visible]:border-ring has-[[data-slot=combobox-chip-input]:focus-visible]:shadow-focus has-aria-invalid:border-destructive has-aria-invalid:shadow-focus has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(6.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n aria-label=\"Remove\"\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\n \"min-w-16 flex-1 outline-none group-has-data-[slot=combobox-chip]/chips:placeholder:text-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n"],"names":["Combobox","ComboboxPrimitive","ComboboxValue","props","ComboboxTrigger","className","children","jsxs","cn","jsx","ChevronDownIcon","ComboboxClear","InputGroupButton","XIcon","ComboboxInput","disabled","showTrigger","showClear","InputGroup","InputGroupInput","InputGroupAddon","ComboboxContent","side","sideOffset","align","alignOffset","anchor","ComboboxList","ComboboxItem","CheckIcon","ComboboxGroup","ComboboxLabel","ComboboxCollection","ComboboxEmpty","ComboboxSeparator","ComboboxChips","ComboboxChip","showRemove","Button","ComboboxChipsInput","useComboboxAnchor","React"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.js","sources":["../../src/components/ui/combobox.tsx"],"sourcesContent":["\"use client\"\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { ChevronDownIcon, XIcon, CheckIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@/components/ui/input-group\"\nimport { cn } from \"@/lib/utils\"\n\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n aria-label=\"Toggle options\"\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n aria-label=\"Clear\"\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n size,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n /** Shared control scale (SW-2591): xs 24 / sm 28 / default 32 / lg 36. */\n size?: \"xs\" | \"sm\" | \"default\" | \"lg\"\n}) {\n return (\n <InputGroup size={size} className={cn(\"w-auto bg-card\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-elevation-4 ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n aria-hidden=\"true\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n children,\n size = \"default\",\n showTrigger = true,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props & {\n /** Shared control scale (SW-2591): base height + chip/remove scale via group-data. */\n size?: \"xs\" | \"sm\" | \"default\" | \"lg\"\n /** Dropdown-toggle chevron at the inline end (default `true`) — mirrors\n * `ComboboxInput` so single- and multi-select share the affordance (SW-2583). */\n showTrigger?: boolean\n }) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n data-size={size}\n className={cn(\n // min-height matches Select/Combobox per size (24 / 28 / 32 / 36) and\n // grows as chips wrap; radius 8 at xs/sm, 10 at default/lg. `relative`\n // so the toggle chevron can pin to the top-right (see below); left\n // padding tightens once chips are present, right side reserves space\n // for the chevron.\n \"group/chips relative flex flex-wrap items-center gap-1 border border-input bg-card bg-clip-padding py-1 pl-4 text-sm transition-colors data-[size=xs]:min-h-6 data-[size=xs]:rounded-md data-[size=sm]:min-h-7 data-[size=sm]:rounded-md data-[size=default]:min-h-8 data-[size=default]:rounded-lg data-[size=lg]:min-h-9 data-[size=lg]:rounded-lg has-[[data-slot=combobox-chip-input]:focus-visible]:border-ring has-[[data-slot=combobox-chip-input]:focus-visible]:shadow-focus has-aria-invalid:border-destructive has-aria-invalid:shadow-focus has-data-[slot=combobox-chip]:pl-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50\",\n showTrigger ? \"pr-8\" : \"pr-4\",\n className\n )}\n {...props}\n >\n {children}\n {showTrigger && (\n // Pinned to the top-right and sized to the first row, so it stays put\n // (aligned with the input row) as chips wrap to multiple lines (SW-2583).\n <ComboboxTrigger className=\"absolute top-0 right-1 flex shrink-0 items-center text-muted-foreground group-data-[size=xs]/chips:h-6 group-data-[size=sm]/chips:h-7 group-data-[size=default]/chips:h-8 group-data-[size=lg]/chips:h-9\" />\n )}\n </ComboboxPrimitive.Chips>\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n // Pill scales with the chips container (SW-2591): height / radius / text\n // step per group size; radius is concentric with the container (4/4/6/6).\n \"flex w-fit items-center justify-center gap-1 bg-muted font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0 group-data-[size=xs]/chips:h-4 group-data-[size=xs]/chips:rounded-[4px] group-data-[size=xs]/chips:px-1 group-data-[size=xs]/chips:text-[10px] group-data-[size=sm]/chips:h-5 group-data-[size=sm]/chips:rounded-[4px] group-data-[size=sm]/chips:px-1.5 group-data-[size=sm]/chips:text-[11px] group-data-[size=default]/chips:h-6 group-data-[size=default]/chips:rounded-[6px] group-data-[size=default]/chips:px-1.5 group-data-[size=default]/chips:text-xs group-data-[size=lg]/chips:h-7 group-data-[size=lg]/chips:rounded-[6px] group-data-[size=lg]/chips:px-2 group-data-[size=lg]/chips:text-sm\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n aria-label=\"Remove\"\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100 group-data-[size=xs]/chips:size-3.5 group-data-[size=xs]/chips:[&>svg]:size-2.5 group-data-[size=sm]/chips:size-4 group-data-[size=sm]/chips:[&>svg]:size-3 group-data-[size=default]/chips:size-5 group-data-[size=default]/chips:[&>svg]:size-3.5 group-data-[size=lg]/chips:size-6 group-data-[size=lg]/chips:[&>svg]:size-3.5\"\n data-slot=\"combobox-chip-remove\"\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\n \"min-w-16 flex-1 outline-none group-has-data-[slot=combobox-chip]/chips:placeholder:text-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n"],"names":["Combobox","ComboboxPrimitive","ComboboxValue","props","ComboboxTrigger","className","children","jsxs","cn","jsx","ChevronDownIcon","ComboboxClear","InputGroupButton","XIcon","ComboboxInput","disabled","showTrigger","showClear","size","InputGroup","InputGroupInput","InputGroupAddon","ComboboxContent","side","sideOffset","align","alignOffset","anchor","ComboboxList","ComboboxItem","CheckIcon","ComboboxGroup","ComboboxLabel","ComboboxCollection","ComboboxEmpty","ComboboxSeparator","ComboboxChips","ComboboxChip","showRemove","Button","ComboboxChipsInput","useComboboxAnchor","React"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),s=require("class-variance-authority"),u=require("./button.cjs"),p=require("./input.cjs"),l=require("./textarea.cjs"),e=require("../lib/utils.cjs");function d({className:n,...t}){return r.jsx("div",{"data-slot":"input-group",role:"group",className:e.cn("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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",n),...t})}const c=s.cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function g({className:n,align:t="inline-start",...o}){return r.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:e.cn(c({align:t}),n),onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),a.currentTarget.click())},onClick:a=>{a.target.closest("button")||a.currentTarget.parentElement?.querySelector("input")?.focus()},...o})}const b=s.cva("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function f({className:n,type:t="button",variant:o="ghost",size:a="xs",...i}){return r.jsx(u.Button,{type:t,"data-size":a,variant:o,className:e.cn(b({size:a}),n),...i})}function h({className:n,...t}){return r.jsx("span",{className:e.cn("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",n),...t})}function x({className:n,...t}){return r.jsx(p.Input,{"data-slot":"input-group-control",className:e.cn("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...t})}function m({className:n,...t}){return r.jsx(l.Textarea,{"data-slot":"input-group-control",className:e.cn("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...t})}exports.InputGroup=d;exports.InputGroupAddon=g;exports.InputGroupButton=f;exports.InputGroupInput=x;exports.InputGroupText=h;exports.InputGroupTextarea=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),s=require("class-variance-authority"),d=require("react"),p=require("./button.cjs"),c=require("./input.cjs"),g=require("./textarea.cjs"),o=require("../lib/utils.cjs");function b(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const a in n)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(t,a,e.get?e:{enumerable:!0,get:()=>n[a]})}}return t.default=n,Object.freeze(t)}const i=b(d),u=i.createContext({}),f=s.cva("group/input-group relative flex w-full min-w-0 items-center border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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",{variants:{size:{xs:"h-6 rounded-md",sm:"h-7 rounded-md",default:"h-8 rounded-lg",lg:"h-9 rounded-lg"}},defaultVariants:{size:"default"}});function x({className:n,size:t,...a}){return r.jsx(u.Provider,{value:{size:t??"default"},children:r.jsx("div",{"data-slot":"input-group","data-size":t??"default",role:"group",className:o.cn(f({size:t}),n),...a})})}const h=s.cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function m({className:n,align:t="inline-start",...a}){return r.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:o.cn(h({align:t}),n),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.currentTarget.click())},onClick:e=>{e.target.closest("button")||e.currentTarget.parentElement?.querySelector("input")?.focus()},...a})}const v=s.cva("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function k({className:n,type:t="button",variant:a="ghost",size:e="xs",...l}){return r.jsx(p.Button,{type:t,"data-size":e,variant:a,className:o.cn(v({size:e}),n),...l})}function z({className:n,...t}){return r.jsx("span",{className:o.cn("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",n),...t})}function y({className:n,size:t,...a}){const e=i.useContext(u);return r.jsx(c.Input,{"data-slot":"input-group-control",size:t??e.size,className:o.cn("h-full flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...a})}function j({className:n,size:t,...a}){const e=i.useContext(u);return r.jsx(g.Textarea,{"data-slot":"input-group-control",size:t??e.size,className:o.cn("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",n),...a})}exports.InputGroup=x;exports.InputGroupAddon=m;exports.InputGroupButton=k;exports.InputGroupInput=y;exports.InputGroupText=z;exports.InputGroupTextarea=j;
2
2
  //# sourceMappingURL=input-group.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.cjs","sources":["../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.currentTarget.click()\n }\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] 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\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":"wQAQA,SAASA,EAAW,CAAE,UAAAC,EAAW,GAAGC,GAAsC,CACxE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,KAAK,QACL,UAAWC,EAAAA,GACT,khCACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,MAAMG,EAA0BC,EAAAA,IAC9B,0PACA,CACE,SAAU,CACR,MAAO,CACL,eACE,uEACF,aACE,sEACF,cACE,oGACF,YACE,kGAAA,CACJ,EAEF,gBAAiB,CACf,MAAO,cAAA,CACT,CAEJ,EAEA,SAASC,EAAgB,CACvB,UAAAN,EACA,MAAAO,EAAQ,eACR,GAAGN,CACL,EAA+E,CAC7E,OACEC,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,YAAU,oBACV,aAAYK,EACZ,UAAWJ,EAAAA,GAAGC,EAAwB,CAAE,MAAAG,CAAA,CAAO,EAAGP,CAAS,EAC3D,UAAYQ,GAAM,EACZA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFA,EAAE,cAAc,MAAA,EAEpB,EACA,QAAUA,GAAM,CACTA,EAAE,OAAuB,QAAQ,QAAQ,GAG9CA,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAA,CACzD,EACC,GAAGP,CAAA,CAAA,CAGV,CAEA,MAAMQ,EAA2BJ,EAAAA,IAC/B,8CACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,4FACJ,GAAI,GACJ,UACE,8DACF,UAAW,2BAAA,CACb,EAEF,gBAAiB,CACf,KAAM,IAAA,CACR,CAEJ,EAEA,SAASK,EAAiB,CACxB,UAAAV,EACA,KAAAW,EAAO,SACP,QAAAC,EAAU,QACV,KAAAC,EAAO,KACP,GAAGZ,CACL,EACiD,CAC/C,OACEC,EAAAA,IAACY,EAAAA,OAAA,CACC,KAAAH,EACA,YAAWE,EACX,QAAAD,EACA,UAAWT,EAAAA,GAAGM,EAAyB,CAAE,KAAAI,CAAA,CAAM,EAAGb,CAAS,EAC1D,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASc,EAAe,CAAE,UAAAf,EAAW,GAAGC,GAAuC,CAC7E,OACEC,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,GACT,yHACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASe,EAAgB,CACvB,UAAAhB,EACA,GAAGC,CACL,EAAkC,CAChC,OACEC,EAAAA,IAACe,EAAAA,MAAA,CACC,YAAU,sBACV,UAAWd,EAAAA,GACT,6MACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASiB,EAAmB,CAC1B,UAAAlB,EACA,GAAGC,CACL,EAAqC,CACnC,OACEC,EAAAA,IAACiB,EAAAA,SAAA,CACC,YAAU,sBACV,UAAWhB,EAAAA,GACT,8NACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"input-group.cjs","sources":["../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\ntype InputGroupSize = \"xs\" | \"sm\" | \"default\" | \"lg\"\n\nconst InputGroupContext = React.createContext<{ size?: InputGroupSize }>({})\n\nconst inputGroupVariants = cva(\n \"group/input-group relative flex w-full min-w-0 items-center border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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\",\n {\n variants: {\n // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.\n size: {\n xs: \"h-6 rounded-md\",\n sm: \"h-7 rounded-md\",\n default: \"h-8 rounded-lg\",\n lg: \"h-9 rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <InputGroupContext.Provider value={{ size: size ?? \"default\" }}>\n <div\n data-slot=\"input-group\"\n data-size={size ?? \"default\"}\n role=\"group\"\n className={cn(inputGroupVariants({ size }), className)}\n {...props}\n />\n </InputGroupContext.Provider>\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.currentTarget.click()\n }\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] 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\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof Input>) {\n const context = React.useContext(InputGroupContext)\n return (\n <Input\n data-slot=\"input-group-control\"\n // The group owns the height; the control fills it and drops its own chrome.\n size={size ?? context.size}\n className={cn(\n \"h-full flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof Textarea>) {\n const context = React.useContext(InputGroupContext)\n return (\n <Textarea\n data-slot=\"input-group-control\"\n size={size ?? context.size}\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroupContext","React","inputGroupVariants","cva","InputGroup","className","size","props","jsx","cn","inputGroupAddonVariants","InputGroupAddon","align","inputGroupButtonVariants","InputGroupButton","type","variant","Button","InputGroupText","InputGroupInput","context","Input","InputGroupTextarea","Textarea"],"mappings":"qjBAUMA,EAAoBC,EAAM,cAAyC,EAAE,EAErEC,EAAqBC,EAAAA,IACzB,mgCACA,CACE,SAAU,CAER,KAAM,CACJ,GAAI,iBACJ,GAAI,iBACJ,QAAS,iBACT,GAAI,gBAAA,CACN,EAEF,gBAAiB,CACf,KAAM,SAAA,CACR,CAEJ,EAEA,SAASC,EAAW,CAClB,UAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAA0E,CACxE,OACEC,MAACR,EAAkB,SAAlB,CAA2B,MAAO,CAAE,KAAMM,GAAQ,WACjD,SAAAE,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,YAAWF,GAAQ,UACnB,KAAK,QACL,UAAWG,EAAAA,GAAGP,EAAmB,CAAE,KAAAI,CAAA,CAAM,EAAGD,CAAS,EACpD,GAAGE,CAAA,CAAA,EAER,CAEJ,CAEA,MAAMG,EAA0BP,EAAAA,IAC9B,0PACA,CACE,SAAU,CACR,MAAO,CACL,eACE,uEACF,aACE,sEACF,cACE,oGACF,YACE,kGAAA,CACJ,EAEF,gBAAiB,CACf,MAAO,cAAA,CACT,CAEJ,EAEA,SAASQ,EAAgB,CACvB,UAAAN,EACA,MAAAO,EAAQ,eACR,GAAGL,CACL,EAA+E,CAC7E,OACEC,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,YAAU,oBACV,aAAYI,EACZ,UAAWH,EAAAA,GAAGC,EAAwB,CAAE,MAAAE,CAAA,CAAO,EAAGP,CAAS,EAC3D,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAA,EACF,EAAE,cAAc,MAAA,EAEpB,EACA,QAAU,GAAM,CACT,EAAE,OAAuB,QAAQ,QAAQ,GAG9C,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAA,CACzD,EACC,GAAGE,CAAA,CAAA,CAGV,CAEA,MAAMM,EAA2BV,EAAAA,IAC/B,8CACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,4FACJ,GAAI,GACJ,UACE,8DACF,UAAW,2BAAA,CACb,EAEF,gBAAiB,CACf,KAAM,IAAA,CACR,CAEJ,EAEA,SAASW,EAAiB,CACxB,UAAAT,EACA,KAAAU,EAAO,SACP,QAAAC,EAAU,QACV,KAAAV,EAAO,KACP,GAAGC,CACL,EACiD,CAC/C,OACEC,EAAAA,IAACS,EAAAA,OAAA,CACC,KAAAF,EACA,YAAWT,EACX,QAAAU,EACA,UAAWP,EAAAA,GAAGI,EAAyB,CAAE,KAAAP,CAAA,CAAM,EAAGD,CAAS,EAC1D,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASW,EAAe,CAAE,UAAAb,EAAW,GAAGE,GAAuC,CAC7E,OACEC,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,GACT,yHACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASY,EAAgB,CACvB,UAAAd,EACA,KAAAC,EACA,GAAGC,CACL,EAAuC,CACrC,MAAMa,EAAUnB,EAAM,WAAWD,CAAiB,EAClD,OACEQ,EAAAA,IAACa,EAAAA,MAAA,CACC,YAAU,sBAEV,KAAMf,GAAQc,EAAQ,KACtB,UAAWX,EAAAA,GACT,oNACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASe,EAAmB,CAC1B,UAAAjB,EACA,KAAAC,EACA,GAAGC,CACL,EAA0C,CACxC,MAAMa,EAAUnB,EAAM,WAAWD,CAAiB,EAClD,OACEQ,EAAAA,IAACe,EAAAA,SAAA,CACC,YAAU,sBACV,KAAMjB,GAAQc,EAAQ,KACtB,UAAWX,EAAAA,GACT,8NACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV"}
@@ -1,24 +1,44 @@
1
- import { jsx as r } from "react/jsx-runtime";
1
+ import { jsx as o } from "react/jsx-runtime";
2
2
  import { cva as s } from "class-variance-authority";
3
- import { Button as u } from "./button.js";
4
- import { Input as l } from "./input.js";
5
- import { Textarea as d } from "./textarea.js";
6
- import { cn as o } from "../lib/utils.js";
7
- function v({ className: a, ...t }) {
8
- return /* @__PURE__ */ r(
3
+ import * as i from "react";
4
+ import { Button as l } from "./button.js";
5
+ import { Input as p } from "./input.js";
6
+ import { Textarea as c } from "./textarea.js";
7
+ import { cn as e } from "../lib/utils.js";
8
+ const u = i.createContext({}), g = s(
9
+ "group/input-group relative flex w-full min-w-0 items-center border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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",
10
+ {
11
+ variants: {
12
+ // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.
13
+ size: {
14
+ xs: "h-6 rounded-md",
15
+ sm: "h-7 rounded-md",
16
+ default: "h-8 rounded-lg",
17
+ lg: "h-9 rounded-lg"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ size: "default"
22
+ }
23
+ }
24
+ );
25
+ function w({
26
+ className: n,
27
+ size: t,
28
+ ...r
29
+ }) {
30
+ return /* @__PURE__ */ o(u.Provider, { value: { size: t ?? "default" }, children: /* @__PURE__ */ o(
9
31
  "div",
10
32
  {
11
33
  "data-slot": "input-group",
34
+ "data-size": t ?? "default",
12
35
  role: "group",
13
- className: o(
14
- "group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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",
15
- a
16
- ),
17
- ...t
36
+ className: e(g({ size: t }), n),
37
+ ...r
18
38
  }
19
- );
39
+ ) });
20
40
  }
21
- const p = s(
41
+ const b = s(
22
42
  "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
23
43
  {
24
44
  variants: {
@@ -34,29 +54,29 @@ const p = s(
34
54
  }
35
55
  }
36
56
  );
37
- function k({
38
- className: a,
57
+ function y({
58
+ className: n,
39
59
  align: t = "inline-start",
40
- ...e
60
+ ...r
41
61
  }) {
42
- return /* @__PURE__ */ r(
62
+ return /* @__PURE__ */ o(
43
63
  "div",
44
64
  {
45
65
  role: "group",
46
66
  "data-slot": "input-group-addon",
47
67
  "data-align": t,
48
- className: o(p({ align: t }), a),
49
- onKeyDown: (n) => {
50
- (n.key === "Enter" || n.key === " ") && (n.preventDefault(), n.currentTarget.click());
68
+ className: e(b({ align: t }), n),
69
+ onKeyDown: (a) => {
70
+ (a.key === "Enter" || a.key === " ") && (a.preventDefault(), a.currentTarget.click());
51
71
  },
52
- onClick: (n) => {
53
- n.target.closest("button") || n.currentTarget.parentElement?.querySelector("input")?.focus();
72
+ onClick: (a) => {
73
+ a.target.closest("button") || a.currentTarget.parentElement?.querySelector("input")?.focus();
54
74
  },
55
- ...e
75
+ ...r
56
76
  }
57
77
  );
58
78
  }
59
- const c = s(
79
+ const f = s(
60
80
  "flex items-center gap-2 text-sm shadow-none",
61
81
  {
62
82
  variants: {
@@ -72,74 +92,80 @@ const c = s(
72
92
  }
73
93
  }
74
94
  );
75
- function w({
76
- className: a,
95
+ function G({
96
+ className: n,
77
97
  type: t = "button",
78
- variant: e = "ghost",
79
- size: n = "xs",
80
- ...i
98
+ variant: r = "ghost",
99
+ size: a = "xs",
100
+ ...d
81
101
  }) {
82
- return /* @__PURE__ */ r(
83
- u,
102
+ return /* @__PURE__ */ o(
103
+ l,
84
104
  {
85
105
  type: t,
86
- "data-size": n,
87
- variant: e,
88
- className: o(c({ size: n }), a),
89
- ...i
106
+ "data-size": a,
107
+ variant: r,
108
+ className: e(f({ size: a }), n),
109
+ ...d
90
110
  }
91
111
  );
92
112
  }
93
- function y({ className: a, ...t }) {
94
- return /* @__PURE__ */ r(
113
+ function I({ className: n, ...t }) {
114
+ return /* @__PURE__ */ o(
95
115
  "span",
96
116
  {
97
- className: o(
117
+ className: e(
98
118
  "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
99
- a
119
+ n
100
120
  ),
101
121
  ...t
102
122
  }
103
123
  );
104
124
  }
105
- function z({
106
- className: a,
107
- ...t
125
+ function N({
126
+ className: n,
127
+ size: t,
128
+ ...r
108
129
  }) {
109
- return /* @__PURE__ */ r(
110
- l,
130
+ const a = i.useContext(u);
131
+ return /* @__PURE__ */ o(
132
+ p,
111
133
  {
112
134
  "data-slot": "input-group-control",
113
- className: o(
114
- "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
115
- a
135
+ size: t ?? a.size,
136
+ className: e(
137
+ "h-full flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
138
+ n
116
139
  ),
117
- ...t
140
+ ...r
118
141
  }
119
142
  );
120
143
  }
121
- function G({
122
- className: a,
123
- ...t
144
+ function V({
145
+ className: n,
146
+ size: t,
147
+ ...r
124
148
  }) {
125
- return /* @__PURE__ */ r(
126
- d,
149
+ const a = i.useContext(u);
150
+ return /* @__PURE__ */ o(
151
+ c,
127
152
  {
128
153
  "data-slot": "input-group-control",
129
- className: o(
154
+ size: t ?? a.size,
155
+ className: e(
130
156
  "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
131
- a
157
+ n
132
158
  ),
133
- ...t
159
+ ...r
134
160
  }
135
161
  );
136
162
  }
137
163
  export {
138
- v as InputGroup,
139
- k as InputGroupAddon,
140
- w as InputGroupButton,
141
- z as InputGroupInput,
142
- y as InputGroupText,
143
- G as InputGroupTextarea
164
+ w as InputGroup,
165
+ y as InputGroupAddon,
166
+ G as InputGroupButton,
167
+ N as InputGroupInput,
168
+ I as InputGroupText,
169
+ V as InputGroupTextarea
144
170
  };
145
171
  //# sourceMappingURL=input-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.js","sources":["../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.currentTarget.click()\n }\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] 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\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;AAQA,SAASA,EAAW,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMG,IAA0BC;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBACE;AAAA,QACF,cACE;AAAA,QACF,eACE;AAAA,QACF,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ;AAEA,SAASC,EAAgB;AAAA,EACvB,WAAAN;AAAA,EACA,OAAAO,IAAQ;AAAA,EACR,GAAGN;AACL,GAA+E;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYK;AAAA,MACZ,WAAWJ,EAAGC,EAAwB,EAAE,OAAAG,EAAA,CAAO,GAAGP,CAAS;AAAA,MAC3D,WAAW,CAACQ,MAAM;AAChB,SAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFA,EAAE,cAAc,MAAA;AAAA,MAEpB;AAAA,MACA,SAAS,CAACA,MAAM;AACd,QAAKA,EAAE,OAAuB,QAAQ,QAAQ,KAG9CA,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAA;AAAA,MACzD;AAAA,MACC,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMQ,IAA2BJ;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,WACE;AAAA,QACF,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAASK,EAAiB;AAAA,EACxB,WAAAV;AAAA,EACA,MAAAW,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,GAAGZ;AACL,GACiD;AAC/C,SACE,gBAAAC;AAAA,IAACY;AAAA,IAAA;AAAA,MACC,MAAAH;AAAA,MACA,aAAWE;AAAA,MACX,SAAAD;AAAA,MACA,WAAWT,EAAGM,EAAyB,EAAE,MAAAI,EAAA,CAAM,GAAGb,CAAS;AAAA,MAC1D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASc,EAAe,EAAE,WAAAf,GAAW,GAAGC,KAAuC;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASe,EAAgB;AAAA,EACvB,WAAAhB;AAAA,EACA,GAAGC;AACL,GAAkC;AAChC,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWd;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASiB,EAAmB;AAAA,EAC1B,WAAAlB;AAAA,EACA,GAAGC;AACL,GAAqC;AACnC,SACE,gBAAAC;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWhB;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"input-group.js","sources":["../../src/components/ui/input-group.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\ntype InputGroupSize = \"xs\" | \"sm\" | \"default\" | \"lg\"\n\nconst InputGroupContext = React.createContext<{ size?: InputGroupSize }>({})\n\nconst inputGroupVariants = cva(\n \"group/input-group relative flex w-full min-w-0 items-center border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:disabled]:bg-input/50 has-[[data-slot=input-group-control]:disabled]:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:shadow-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:shadow-focus 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-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot=input-group-control]:disabled]:bg-input/80 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\",\n {\n variants: {\n // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.\n size: {\n xs: \"h-6 rounded-md\",\n sm: \"h-7 rounded-md\",\n default: \"h-8 rounded-lg\",\n lg: \"h-9 rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nfunction InputGroup({\n className,\n size,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupVariants>) {\n return (\n <InputGroupContext.Provider value={{ size: size ?? \"default\" }}>\n <div\n data-slot=\"input-group\"\n data-size={size ?? \"default\"}\n role=\"group\"\n className={cn(inputGroupVariants({ size }), className)}\n {...props}\n />\n </InputGroupContext.Provider>\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.currentTarget.click()\n }\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] 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\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof Input>) {\n const context = React.useContext(InputGroupContext)\n return (\n <Input\n data-slot=\"input-group-control\"\n // The group owns the height; the control fills it and drops its own chrome.\n size={size ?? context.size}\n className={cn(\n \"h-full flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof Textarea>) {\n const context = React.useContext(InputGroupContext)\n return (\n <Textarea\n data-slot=\"input-group-control\"\n size={size ?? context.size}\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:shadow-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"names":["InputGroupContext","React","inputGroupVariants","cva","InputGroup","className","size","props","jsx","cn","inputGroupAddonVariants","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","Button","InputGroupText","InputGroupInput","context","Input","InputGroupTextarea","Textarea"],"mappings":"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"}
package/dist/ui/input.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("../lib/utils.cjs");function d({className:e,type:i,...t}){return r.jsx("input",{type:i,"data-slot":"input",className:n.cn("h-8 w-full min-w-0 rounded-lg border border-input bg-card px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50",e),...t})}exports.Input=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),s=require("class-variance-authority"),o=require("../lib/utils.cjs"),t=s.cva("w-full min-w-0 border border-input bg-card py-1 transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50",{variants:{size:{xs:"h-6 rounded-md px-2 text-xs",sm:"h-7 rounded-md px-2.5 text-[0.8rem]",default:"h-8 rounded-lg px-2.5 text-base md:text-sm",lg:"h-9 rounded-lg px-3 text-base md:text-sm"}},defaultVariants:{size:"default"}});function u({className:i,type:r,size:e,htmlSize:d,...a}){return n.jsx("input",{type:r,"data-slot":"input","data-size":e??"default",size:d,className:o.cn(t({size:e}),i),...a})}exports.Input=u;exports.inputVariants=t;
2
2
  //# sourceMappingURL=input.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.cjs","sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-card px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"names":["Input","className","type","props","jsx","cn"],"mappings":"mJAIA,SAASA,EAAM,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,GAAwC,CAC3E,OACEC,EAAAA,IAAC,QAAA,CACC,KAAAF,EACA,YAAU,QACV,UAAWG,EAAAA,GACT,ijBACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"input.cjs","sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst inputVariants = cva(\n \"w-full min-w-0 border border-input bg-card py-1 transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50\",\n {\n variants: {\n // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.\n size: {\n xs: \"h-6 rounded-md px-2 text-xs\",\n sm: \"h-7 rounded-md px-2.5 text-[0.8rem]\",\n default: \"h-8 rounded-lg px-2.5 text-base md:text-sm\",\n lg: \"h-9 rounded-lg px-3 text-base md:text-sm\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nfunction Input({\n className,\n type,\n size,\n htmlSize,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> &\n VariantProps<typeof inputVariants> & {\n /** Native HTML `size` attribute (visible character width); the CVA `size` prop takes the name. */\n htmlSize?: number\n }) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-size={size ?? \"default\"}\n size={htmlSize}\n className={cn(inputVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Input, inputVariants }\n"],"names":["inputVariants","cva","Input","className","type","size","htmlSize","props","jsx","cn"],"mappings":"yLAKMA,EAAgBC,EAAAA,IACpB,sgBACA,CACE,SAAU,CAER,KAAM,CACJ,GAAI,8BACJ,GAAI,sCACJ,QAAS,6CACT,GAAI,0CAAA,CACN,EAEF,gBAAiB,CACf,KAAM,SAAA,CACR,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAIK,CACH,OACEC,EAAAA,IAAC,QAAA,CACC,KAAAJ,EACA,YAAU,QACV,YAAWC,GAAQ,UACnB,KAAMC,EACN,UAAWG,EAAAA,GAAGT,EAAc,CAAE,KAAAK,CAAA,CAAM,EAAGF,CAAS,EAC/C,GAAGI,CAAA,CAAA,CAGV"}
package/dist/ui/input.js CHANGED
@@ -1,20 +1,44 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { cn as d } from "../lib/utils.js";
3
- function a({ className: e, type: i, ...r }) {
4
- return /* @__PURE__ */ t(
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { cva as o } from "class-variance-authority";
3
+ import { cn as n } from "../lib/utils.js";
4
+ const s = o(
5
+ "w-full min-w-0 border border-input bg-card py-1 transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50",
6
+ {
7
+ variants: {
8
+ // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.
9
+ size: {
10
+ xs: "h-6 rounded-md px-2 text-xs",
11
+ sm: "h-7 rounded-md px-2.5 text-[0.8rem]",
12
+ default: "h-8 rounded-lg px-2.5 text-base md:text-sm",
13
+ lg: "h-9 rounded-lg px-3 text-base md:text-sm"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ size: "default"
18
+ }
19
+ }
20
+ );
21
+ function p({
22
+ className: t,
23
+ type: i,
24
+ size: e,
25
+ htmlSize: d,
26
+ ...r
27
+ }) {
28
+ return /* @__PURE__ */ a(
5
29
  "input",
6
30
  {
7
31
  type: i,
8
32
  "data-slot": "input",
9
- className: d(
10
- "h-8 w-full min-w-0 rounded-lg border border-input bg-card px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50",
11
- e
12
- ),
33
+ "data-size": e ?? "default",
34
+ size: d,
35
+ className: n(s({ size: e }), t),
13
36
  ...r
14
37
  }
15
38
  );
16
39
  }
17
40
  export {
18
- a as Input
41
+ p as Input,
42
+ s as inputVariants
19
43
  };
20
44
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-card px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"names":["Input","className","type","props","jsx","cn"],"mappings":";;AAIA,SAASA,EAAM,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,KAAwC;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAF;AAAA,MACA,aAAU;AAAA,MACV,WAAWG;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"input.js","sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst inputVariants = cva(\n \"w-full min-w-0 border border-input bg-card py-1 transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:shadow-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50\",\n {\n variants: {\n // Shared control scale (SW-2591): 24 / 28 / 32 / 36, matching Button.\n size: {\n xs: \"h-6 rounded-md px-2 text-xs\",\n sm: \"h-7 rounded-md px-2.5 text-[0.8rem]\",\n default: \"h-8 rounded-lg px-2.5 text-base md:text-sm\",\n lg: \"h-9 rounded-lg px-3 text-base md:text-sm\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nfunction Input({\n className,\n type,\n size,\n htmlSize,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> &\n VariantProps<typeof inputVariants> & {\n /** Native HTML `size` attribute (visible character width); the CVA `size` prop takes the name. */\n htmlSize?: number\n }) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-size={size ?? \"default\"}\n size={htmlSize}\n className={cn(inputVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport { Input, inputVariants }\n"],"names":["inputVariants","cva","Input","className","type","size","htmlSize","props","jsx","cn"],"mappings":";;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA;AAAA,MAER,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAIK;AACH,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAJ;AAAA,MACA,aAAU;AAAA,MACV,aAAWC,KAAQ;AAAA,MACnB,MAAMC;AAAA,MACN,WAAWG,EAAGT,EAAc,EAAE,MAAAK,EAAA,CAAM,GAAGF,CAAS;AAAA,MAC/C,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),i=require("radix-ui"),o=require("../lib/utils.cjs");function t({className:e,...a}){return r.jsx(i.RadioGroup.Root,{"data-slot":"radio-group",className:o.cn("grid w-full gap-2",e),...a})}function d({className:e,...a}){return r.jsx(i.RadioGroup.Item,{"data-slot":"radio-group-item",className:o.cn("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input bg-card outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",e),...a,children:r.jsx(i.RadioGroup.Indicator,{"data-slot":"radio-group-indicator",className:"flex size-4 items-center justify-center",children:r.jsx("span",{className:"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground"})})})}exports.RadioGroup=t;exports.RadioGroupItem=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),l=require("class-variance-authority"),o=require("radix-ui"),p=require("react"),d=require("../lib/utils.cjs");function f(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(a,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return a.default=e,Object.freeze(a)}const n=f(p),u=n.createContext({});function g({className:e,size:a,...r}){return t.jsx(u.Provider,{value:{size:a??"default"},children:t.jsx(o.RadioGroup.Root,{"data-slot":"radio-group",className:d.cn("grid w-full gap-2",e),...r})})}const c=l.cva("group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border border-input bg-card outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",{variants:{size:{xs:"size-3.5",sm:"size-4",default:"size-4",lg:"size-5"}},defaultVariants:{size:"default"}});function m({className:e,size:a,...r}){const i=n.useContext(u),s=a??i.size??"default";return t.jsx(o.RadioGroup.Item,{"data-slot":"radio-group-item","data-size":s,className:d.cn(c({size:s}),e),...r,children:t.jsx(o.RadioGroup.Indicator,{"data-slot":"radio-group-indicator",className:"flex size-full items-center justify-center",children:t.jsx("span",{className:"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground group-data-[size=xs]/radio-group-item:size-1.5 group-data-[size=lg]/radio-group-item:size-2.5"})})})}exports.RadioGroup=g;exports.RadioGroupItem=m;exports.radioGroupItemVariants=c;
2
2
  //# sourceMappingURL=radio-group.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.cjs","sources":["../../src/components/ui/radio-group.tsx"],"sourcesContent":["\"use client\"\n\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid w-full gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input bg-card outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex size-4 items-center justify-center\"\n >\n <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"],"names":["RadioGroup","className","props","jsx","RadioGroupPrimitive","cn","RadioGroupItem"],"mappings":"yKAOA,SAASA,EAAW,CAClB,UAAAC,EACA,GAAGC,CACL,EAA0D,CACxD,OACEC,EAAAA,IAACC,EAAAA,WAAoB,KAApB,CACC,YAAU,cACV,UAAWC,EAAAA,GAAG,oBAAqBJ,CAAS,EAC3C,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASI,EAAe,CACtB,UAAAL,EACA,GAAGC,CACL,EAA0D,CACxD,OACEC,EAAAA,IAACC,EAAAA,WAAoB,KAApB,CACC,YAAU,mBACV,UAAWC,EAAAA,GACT,wiBACAJ,CAAA,EAED,GAAGC,EAEJ,SAAAC,EAAAA,IAACC,EAAAA,WAAoB,UAApB,CACC,YAAU,wBACV,UAAU,0CAEV,SAAAD,EAAAA,IAAC,OAAA,CAAK,UAAU,uGAAA,CAAwG,CAAA,CAAA,CAC1H,CAAA,CAGN"}
1
+ {"version":3,"file":"radio-group.cjs","sources":["../../src/components/ui/radio-group.tsx"],"sourcesContent":["\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype RadioSize = \"xs\" | \"sm\" | \"default\" | \"lg\"\n\nconst RadioGroupContext = React.createContext<{ size?: RadioSize }>({})\n\nfunction RadioGroup({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & { size?: RadioSize }) {\n return (\n <RadioGroupContext.Provider value={{ size: size ?? \"default\" }}>\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid w-full gap-2\", className)}\n {...props}\n />\n </RadioGroupContext.Provider>\n )\n}\n\nconst radioGroupItemVariants = cva(\n \"group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border border-input bg-card outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:shadow-focus aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n {\n variants: {\n // Box scale (SW-2591): default stays 16 (no visual change); xs 14 / lg 20.\n size: {\n xs: \"size-3.5\",\n sm: \"size-4\",\n default: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nfunction RadioGroupItem({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> &\n VariantProps<typeof radioGroupItemVariants>) {\n const context = React.useContext(RadioGroupContext)\n const resolved = size ?? context.size ?? \"default\"\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n data-size={resolved}\n className={cn(radioGroupItemVariants({ size: resolved }), className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex size-full items-center justify-center\"\n >\n <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground group-data-[size=xs]/radio-group-item:size-1.5 group-data-[size=lg]/radio-group-item:size-2.5\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, radioGroupItemVariants }\n"],"names":["RadioGroupContext","React","RadioGroup","className","size","props","jsx","RadioGroupPrimitive","cn","radioGroupItemVariants","cva","RadioGroupItem","context","resolved"],"mappings":"4fAUMA,EAAoBC,EAAM,cAAoC,EAAE,EAEtE,SAASC,EAAW,CAClB,UAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAAiF,CAC/E,OACEC,MAACN,EAAkB,SAAlB,CAA2B,MAAO,CAAE,KAAMI,GAAQ,WACjD,SAAAE,EAAAA,IAACC,EAAAA,WAAoB,KAApB,CACC,YAAU,cACV,UAAWC,EAAAA,GAAG,oBAAqBL,CAAS,EAC3C,GAAGE,CAAA,CAAA,EAER,CAEJ,CAEA,MAAMI,EAAyBC,EAAAA,IAC7B,iiBACA,CACE,SAAU,CAER,KAAM,CACJ,GAAI,WACJ,GAAI,SACJ,QAAS,SACT,GAAI,QAAA,CACN,EAEF,gBAAiB,CACf,KAAM,SAAA,CACR,CAEJ,EAEA,SAASC,EAAe,CACtB,UAAAR,EACA,KAAAC,EACA,GAAGC,CACL,EAC+C,CAC7C,MAAMO,EAAUX,EAAM,WAAWD,CAAiB,EAC5Ca,EAAWT,GAAQQ,EAAQ,MAAQ,UACzC,OACEN,EAAAA,IAACC,EAAAA,WAAoB,KAApB,CACC,YAAU,mBACV,YAAWM,EACX,UAAWL,EAAAA,GAAGC,EAAuB,CAAE,KAAMI,CAAA,CAAU,EAAGV,CAAS,EAClE,GAAGE,EAEJ,SAAAC,EAAAA,IAACC,EAAAA,WAAoB,UAApB,CACC,YAAU,wBACV,UAAU,6CAEV,SAAAD,EAAAA,IAAC,OAAA,CAAK,UAAU,qMAAA,CAAsM,CAAA,CAAA,CACxN,CAAA,CAGN"}