@pantool/components 1.0.0-alpha.10 → 1.0.0-alpha.11

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 (169) hide show
  1. package/dist/atoms/autocomplete/autocomplete.css +1 -0
  2. package/dist/atoms/autocomplete/autocomplete.d.ts +77 -0
  3. package/dist/atoms/autocomplete/autocomplete.js +2 -0
  4. package/dist/atoms/autocomplete/autocomplete.js.map +1 -0
  5. package/dist/atoms/autocomplete/autocomplete.module.js +3 -0
  6. package/dist/atoms/autocomplete/autocomplete.module.js.map +1 -0
  7. package/dist/atoms/autocomplete/index.d.ts +1 -0
  8. package/dist/atoms/autocomplete/index.js +1 -0
  9. package/dist/atoms/badge/badge.d.ts +42 -0
  10. package/dist/atoms/badge/badge.js +2 -0
  11. package/dist/atoms/badge/badge.js.map +1 -0
  12. package/dist/atoms/badge/index.d.ts +1 -0
  13. package/dist/atoms/badge/index.js +1 -0
  14. package/dist/atoms/badge/styles.css +1 -0
  15. package/dist/atoms/badge/styles.module.js +3 -0
  16. package/dist/atoms/badge/styles.module.js.map +1 -0
  17. package/dist/atoms/checkbox/checkbox.css +1 -1
  18. package/dist/atoms/checkbox/checkbox.d.ts +16 -32
  19. package/dist/atoms/checkbox/checkbox.js +1 -1
  20. package/dist/atoms/checkbox/checkbox.js.map +1 -1
  21. package/dist/atoms/checkbox/checkbox.module.js +1 -1
  22. package/dist/atoms/checkbox/checkbox.module.js.map +1 -1
  23. package/dist/atoms/checkbox-group/checkbox-group.css +1 -0
  24. package/dist/atoms/checkbox-group/checkbox-group.d.ts +47 -0
  25. package/dist/atoms/checkbox-group/checkbox-group.js +2 -0
  26. package/dist/atoms/checkbox-group/checkbox-group.js.map +1 -0
  27. package/dist/atoms/checkbox-group/checkbox-group.module.js +3 -0
  28. package/dist/atoms/checkbox-group/checkbox-group.module.js.map +1 -0
  29. package/dist/atoms/checkbox-group/index.d.ts +1 -0
  30. package/dist/atoms/checkbox-group/index.js +1 -0
  31. package/dist/atoms/combobox/combobox.css +1 -1
  32. package/dist/atoms/combobox/combobox.d.ts +11 -10
  33. package/dist/atoms/combobox/combobox.js +1 -1
  34. package/dist/atoms/combobox/combobox.js.map +1 -1
  35. package/dist/atoms/combobox/combobox.module.js +1 -1
  36. package/dist/atoms/combobox/combobox.module.js.map +1 -1
  37. package/dist/atoms/combobox/components/item.js +1 -1
  38. package/dist/atoms/combobox/components/item.js.map +1 -1
  39. package/dist/atoms/context-menu/context-menu.css +1 -1
  40. package/dist/atoms/context-menu/context-menu.module.js.map +1 -1
  41. package/dist/atoms/icon-button/icon-button.d.ts +2 -2
  42. package/dist/atoms/icon-button/icon-button.js +1 -1
  43. package/dist/atoms/icon-button/icon-button.js.map +1 -1
  44. package/dist/atoms/index.d.ts +12 -2
  45. package/dist/atoms/index.js +1 -1
  46. package/dist/atoms/input/input.css +1 -1
  47. package/dist/atoms/input/input.d.ts +13 -14
  48. package/dist/atoms/input/input.js +1 -1
  49. package/dist/atoms/input/input.js.map +1 -1
  50. package/dist/atoms/input/input.module.js.map +1 -1
  51. package/dist/atoms/menu/menu.css +1 -1
  52. package/dist/atoms/menu/menu.js +1 -1
  53. package/dist/atoms/menu/menu.js.map +1 -1
  54. package/dist/atoms/menu/menu.module.js.map +1 -1
  55. package/dist/atoms/menubar/index.d.ts +1 -0
  56. package/dist/atoms/menubar/index.js +1 -0
  57. package/dist/atoms/menubar/menubar.css +1 -0
  58. package/dist/atoms/menubar/menubar.d.ts +12 -0
  59. package/dist/atoms/menubar/menubar.js +2 -0
  60. package/dist/atoms/menubar/menubar.js.map +1 -0
  61. package/dist/atoms/menubar/menubar.module.js +3 -0
  62. package/dist/atoms/menubar/menubar.module.js.map +1 -0
  63. package/dist/atoms/notice/index.d.ts +1 -0
  64. package/dist/atoms/notice/index.js +1 -0
  65. package/dist/atoms/notice/notice.d.ts +28 -0
  66. package/dist/atoms/notice/notice.js +2 -0
  67. package/dist/atoms/notice/notice.js.map +1 -0
  68. package/dist/atoms/notice/styles.css +1 -0
  69. package/dist/atoms/notice/styles.module.js +3 -0
  70. package/dist/atoms/notice/styles.module.js.map +1 -0
  71. package/dist/atoms/radio/index.d.ts +1 -1
  72. package/dist/atoms/radio/radio.css +1 -1
  73. package/dist/atoms/radio/radio.d.ts +14 -17
  74. package/dist/atoms/radio/radio.js +1 -1
  75. package/dist/atoms/radio/radio.js.map +1 -1
  76. package/dist/atoms/radio/radio.module.js +1 -1
  77. package/dist/atoms/radio/radio.module.js.map +1 -1
  78. package/dist/atoms/radio-group/index.d.ts +1 -0
  79. package/dist/atoms/radio-group/index.js +1 -0
  80. package/dist/atoms/radio-group/radio-group.css +1 -0
  81. package/dist/atoms/radio-group/radio-group.d.ts +48 -0
  82. package/dist/atoms/radio-group/radio-group.js +2 -0
  83. package/dist/atoms/radio-group/radio-group.js.map +1 -0
  84. package/dist/atoms/radio-group/radio-group.module.js +3 -0
  85. package/dist/atoms/radio-group/radio-group.module.js.map +1 -0
  86. package/dist/atoms/select/components/item.d.ts +17 -0
  87. package/dist/atoms/select/components/item.js +2 -0
  88. package/dist/atoms/select/components/item.js.map +1 -0
  89. package/dist/atoms/select/index.d.ts +2 -0
  90. package/dist/atoms/select/index.js +1 -0
  91. package/dist/atoms/select/select.css +1 -0
  92. package/dist/atoms/select/select.d.ts +67 -0
  93. package/dist/atoms/select/select.js +2 -0
  94. package/dist/atoms/select/select.js.map +1 -0
  95. package/dist/atoms/select/select.module.js +3 -0
  96. package/dist/atoms/select/select.module.js.map +1 -0
  97. package/dist/atoms/slider/index.d.ts +1 -0
  98. package/dist/atoms/slider/index.js +1 -0
  99. package/dist/atoms/slider/slider.css +1 -0
  100. package/dist/atoms/slider/slider.d.ts +53 -0
  101. package/dist/atoms/slider/slider.js +2 -0
  102. package/dist/atoms/slider/slider.js.map +1 -0
  103. package/dist/atoms/slider/slider.module.js +3 -0
  104. package/dist/atoms/slider/slider.module.js.map +1 -0
  105. package/dist/atoms/stepper/index.d.ts +1 -0
  106. package/dist/atoms/stepper/index.js +1 -0
  107. package/dist/atoms/stepper/stepper.css +1 -0
  108. package/dist/atoms/stepper/stepper.d.ts +42 -0
  109. package/dist/atoms/stepper/stepper.js +2 -0
  110. package/dist/atoms/stepper/stepper.js.map +1 -0
  111. package/dist/atoms/stepper/stepper.module.js +3 -0
  112. package/dist/atoms/stepper/stepper.module.js.map +1 -0
  113. package/dist/fields/autocomplete-field/autocomplete-field.d.ts +26 -0
  114. package/dist/fields/autocomplete-field/autocomplete-field.js +2 -0
  115. package/dist/fields/autocomplete-field/autocomplete-field.js.map +1 -0
  116. package/dist/fields/autocomplete-field/index.d.ts +1 -0
  117. package/dist/fields/autocomplete-field/index.js +1 -0
  118. package/dist/fields/checkbox-field/checkbox-field.d.ts +23 -0
  119. package/dist/fields/checkbox-field/checkbox-field.js +2 -0
  120. package/dist/fields/checkbox-field/checkbox-field.js.map +1 -0
  121. package/dist/fields/checkbox-field/index.d.ts +1 -0
  122. package/dist/fields/checkbox-field/index.js +1 -0
  123. package/dist/fields/checkbox-group-field/checkbox-group-field.d.ts +26 -0
  124. package/dist/fields/checkbox-group-field/checkbox-group-field.js +2 -0
  125. package/dist/fields/checkbox-group-field/checkbox-group-field.js.map +1 -0
  126. package/dist/fields/checkbox-group-field/index.d.ts +1 -0
  127. package/dist/fields/checkbox-group-field/index.js +1 -0
  128. package/dist/fields/combobox-field/combobox-field.d.ts +26 -0
  129. package/dist/fields/combobox-field/combobox-field.js +2 -0
  130. package/dist/fields/combobox-field/combobox-field.js.map +1 -0
  131. package/dist/fields/combobox-field/index.d.ts +1 -0
  132. package/dist/fields/combobox-field/index.js +1 -0
  133. package/dist/fields/index.d.ts +9 -0
  134. package/dist/fields/index.js +1 -0
  135. package/dist/fields/input-field/index.d.ts +1 -0
  136. package/dist/fields/input-field/index.js +1 -0
  137. package/dist/fields/input-field/input-field.d.ts +26 -0
  138. package/dist/fields/input-field/input-field.js +2 -0
  139. package/dist/fields/input-field/input-field.js.map +1 -0
  140. package/dist/fields/radio-group-field/index.d.ts +1 -0
  141. package/dist/fields/radio-group-field/index.js +1 -0
  142. package/dist/fields/radio-group-field/radio-group-field.d.ts +26 -0
  143. package/dist/fields/radio-group-field/radio-group-field.js +2 -0
  144. package/dist/fields/radio-group-field/radio-group-field.js.map +1 -0
  145. package/dist/fields/select-field/index.d.ts +1 -0
  146. package/dist/fields/select-field/index.js +1 -0
  147. package/dist/fields/select-field/select-field.d.ts +26 -0
  148. package/dist/fields/select-field/select-field.js +2 -0
  149. package/dist/fields/select-field/select-field.js.map +1 -0
  150. package/dist/fields/slider-field/index.d.ts +1 -0
  151. package/dist/fields/slider-field/index.js +1 -0
  152. package/dist/fields/slider-field/slider-field.d.ts +26 -0
  153. package/dist/fields/slider-field/slider-field.js +2 -0
  154. package/dist/fields/slider-field/slider-field.js.map +1 -0
  155. package/dist/fields/stepper-field/index.d.ts +1 -0
  156. package/dist/fields/stepper-field/index.js +1 -0
  157. package/dist/fields/stepper-field/stepper-field.d.ts +26 -0
  158. package/dist/fields/stepper-field/stepper-field.js +2 -0
  159. package/dist/fields/stepper-field/stepper-field.js.map +1 -0
  160. package/dist/index.d.ts +23 -4
  161. package/dist/index.js +1 -1
  162. package/dist/internals/base-field/base-field.css +1 -1
  163. package/dist/internals/base-field/base-field.js +1 -1
  164. package/dist/internals/base-field/base-field.js.map +1 -1
  165. package/dist/internals/base-field/base-field.module.js.map +1 -1
  166. package/dist/internals/base-field/components/error.js +1 -1
  167. package/dist/internals/base-field/components/error.js.map +1 -1
  168. package/dist/internals/base-field/components/label.js.map +1 -1
  169. package/package.json +6 -4
@@ -0,0 +1 @@
1
+ .V4vGvW_root{width:100%;font-family:var(--typography-typeface-ltr)}.V4vGvW_control{--field-control-radius:var(--radius-md);--field-control-bg-color:var(--color-surface-base);--field-control-text-color:var(--color-content-neutral-base);--field-control-border-color:var(--color-border-secondary);--field-control-placeholder-color:var(--color-content-neutral-muted);align-items:center;width:100%;display:flex;position:relative}.V4vGvW_control[data-size=sm]{--field-control-height:1.5rem;--field-control-font-size:var(--typography-caption-base-size);--field-control-font-weight:var(--typography-caption-base-weight)}.V4vGvW_control[data-size=md]{--field-control-height:2rem;--field-control-font-size:var(--typography-body-2-size);--field-control-font-weight:var(--typography-body-2-weight)}.V4vGvW_control[data-size=lg]{--field-control-height:2.5rem;--field-control-font-size:var(--typography-body-1-size);--field-control-font-weight:var(--typography-body-1-weight)}.V4vGvW_control[data-invalid]{--field-control-border-color:var(--color-content-negative-base);--field-control-text-color:var(--color-content-negative-base)}.V4vGvW_input{box-sizing:border-box;padding:0 var(--spacing-sm);border-radius:var(--field-control-radius);border:1px solid var(--field-control-border-color);width:100%;height:var(--field-control-height);font-family:var(--typography-typeface-ltr);font-size:var(--field-control-font-size);font-weight:var(--field-control-font-weight);background-color:var(--field-control-bg-color);color:var(--field-control-text-color);outline:none;margin:0;transition:border-color .2s ease-in-out}.V4vGvW_input::placeholder{color:var(--field-control-placeholder-color)}.V4vGvW_input:focus-visible{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.V4vGvW_positioner{z-index:var(--zindex-1);outline:0}.V4vGvW_popup{box-sizing:border-box;background-color:var(--color-surface-base);color:var(--color-content-neutral-base);width:var(--anchor-width);max-width:var(--available-width);min-width:12rem;transform-origin:var(--transform-origin);border:1px solid var(--color-border-primary);transition:opacity .1s,transform .1s;overflow:hidden;box-shadow:0 4px 12px #0000001a}.V4vGvW_popup[data-starting-style],.V4vGvW_popup[data-ending-style]{opacity:0;font-family:var(--typography-typeface-ltr);transform:scale(.95)}.V4vGvW_list{box-sizing:border-box;overscroll-behavior:contain;padding-block:var(--spacing-xs);scroll-padding-block:var(--spacing-xs);max-height:min(22.5rem, var(--available-height));outline:0;overflow-y:auto}.V4vGvW_list[data-empty]{padding:0}.V4vGvW_group{padding-block:var(--spacing-xs)}.V4vGvW_group-label{padding:var(--spacing-xxs) var(--spacing-md);font-size:var(--typography-caption-base-size);font-weight:var(--typography-subheading-2-weight);color:var(--color-content-neutral-muted);text-transform:uppercase;letter-spacing:.05em}.V4vGvW_item{box-sizing:border-box;cursor:default;user-select:none;padding-block:var(--spacing-sm);padding-left:var(--spacing-md);padding-right:var(--spacing-md);outline:0;align-items:center;transition:background-color .1s;display:flex;position:relative}.V4vGvW_item[data-size=sm]{font-size:var(--typography-caption-base-size);font-weight:var(--typography-caption-base-weight)}.V4vGvW_item[data-size=md]{font-size:var(--typography-body-2-size);font-weight:var(--typography-body-2-weight)}.V4vGvW_item[data-size=lg]{font-size:var(--typography-body-1-size);font-weight:var(--typography-body-1-weight)}.V4vGvW_item[data-highlighted]{background-color:var(--color-surface-secondary)}.V4vGvW_item[data-disabled]{opacity:.5;cursor:not-allowed}.V4vGvW_empty{box-sizing:border-box;padding:var(--spacing-md);font-size:var(--typography-caption-base-size);color:var(--color-content-neutral-muted);text-align:center}
@@ -0,0 +1,77 @@
1
+ import { AutocompleteRootProps } from "@base-ui/react/autocomplete";
2
+
3
+ //#region src/atoms/autocomplete/autocomplete.d.ts
4
+ /**
5
+ * Represents an item in the autocomplete.
6
+ */
7
+ interface AutocompleteItem<T = string> {
8
+ /** Unique identifier for the item */
9
+ id: string;
10
+ /** Display label for the item */
11
+ label: string;
12
+ /** Underlying value of the item */
13
+ value: T;
14
+ /** Whether the item is disabled */
15
+ disabled?: boolean;
16
+ }
17
+ /**
18
+ * Represents a group of items in the autocomplete.
19
+ */
20
+ interface AutocompleteGroup {
21
+ /** The text label of the group */
22
+ label: string;
23
+ /** The items in the group */
24
+ items: AutocompleteItem[];
25
+ }
26
+ /**
27
+ * Props for the Autocomplete component.
28
+ */
29
+ type AutocompleteProps<T = string> = AutocompleteRootProps<T> & {
30
+ /**
31
+ * The size of the autocomplete.
32
+ * @default "md"
33
+ */
34
+ size?: "sm" | "md" | "lg";
35
+ /**
36
+ * Whether the autocomplete is in an invalid state.
37
+ * @default false
38
+ */
39
+ invalid?: boolean;
40
+ /**
41
+ * Additional CSS classes for styling.
42
+ */
43
+ classNames?: {
44
+ root?: string;
45
+ control?: string;
46
+ input?: string;
47
+ positioner?: string;
48
+ popup?: string;
49
+ list?: string;
50
+ item?: string;
51
+ empty?: string;
52
+ group?: string;
53
+ groupLabel?: string;
54
+ };
55
+ /**
56
+ * Placeholder text for the input.
57
+ */
58
+ placeholder?: string;
59
+ };
60
+ /**
61
+ * An autocomplete component that renders an input with filtered suggestions.
62
+ * Unlike Combobox, the input accepts free-form text and suggestions are optional.
63
+ * Built on top of Base UI's Autocomplete primitive.
64
+ */
65
+ declare const Autocomplete$1: <T = string>({
66
+ size,
67
+ invalid,
68
+ disabled,
69
+ readOnly,
70
+ placeholder,
71
+ classNames,
72
+ items,
73
+ ...props
74
+ }: AutocompleteProps<T>) => import("react/jsx-runtime").JSX.Element;
75
+ //#endregion
76
+ export { Autocomplete$1 as Autocomplete, AutocompleteGroup, AutocompleteItem, AutocompleteProps };
77
+ //# sourceMappingURL=autocomplete.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{usePortalConfig as e}from"../../helpers/portal/context/hooks.js";import"../../helpers/portal/index.js";import t from"./autocomplete.module.js";import n from"clsx";import"react";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Autocomplete as a}from"@base-ui/react/autocomplete";const o=({size:o=`md`,invalid:s=!1,disabled:c=!1,readOnly:l=!1,placeholder:u,classNames:d,items:f,...p})=>{let{resolveContainer:m}=e(),h=m();return r(`div`,{"data-slot":`autocomplete-root`,className:n(t.root,d?.root),children:i(a.Root,{items:f,disabled:c,readOnly:l,...p,children:[r(`div`,{className:n(t.control,d?.control),"data-size":o,"data-invalid":s||void 0,"data-slot":`autocomplete-control`,children:r(a.Input,{className:n(t.input,d?.input),"data-slot":`autocomplete-input`,placeholder:u})}),r(a.Portal,{container:h,children:r(a.Positioner,{className:n(t.positioner,d?.positioner),"data-slot":`autocomplete-positioner`,sideOffset:4,children:i(a.Popup,{className:n(t.popup,d?.popup),"data-slot":`autocomplete-popup`,children:[r(a.Empty,{children:r(`div`,{className:n(t.empty,d?.empty),"data-slot":`autocomplete-empty`,children:`No results found.`})}),r(a.List,{className:n(t.list,d?.list),"data-slot":`autocomplete-list`,children:e=>`items`in e?i(a.Group,{className:n(t.group,d?.group),items:e.items,"data-slot":`autocomplete-group`,children:[r(a.GroupLabel,{className:n(t[`group-label`],d?.groupLabel),"data-slot":`autocomplete-group-label`,children:e.label}),r(a.Collection,{children:e=>r(a.Item,{value:e,disabled:e.disabled,className:n(t.item,d?.item),"data-slot":`autocomplete-item`,"data-size":o,children:e.label},e.id)})]},e.label):r(a.Item,{value:e,disabled:e.disabled,className:n(t.item,d?.item),"data-slot":`autocomplete-item`,"data-size":o,children:e.label},e.id)})]})})})]})})};export{o as Autocomplete};
2
+ //# sourceMappingURL=autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.js","names":["Autocomplete","styles","BaseUIAutocomplete"],"sources":["../../../src/atoms/autocomplete/autocomplete.tsx"],"sourcesContent":["import {\n Autocomplete as BaseUIAutocomplete,\n type AutocompleteRootProps,\n} from \"@base-ui/react/autocomplete\";\nimport clsx from \"clsx\";\nimport * as React from \"react\";\nimport { usePortalConfig } from \"../../helpers/portal\";\nimport styles from \"./autocomplete.module.css\";\n\n/**\n * Represents an item in the autocomplete.\n */\nexport interface AutocompleteItem<T = string> {\n /** Unique identifier for the item */\n id: string;\n /** Display label for the item */\n label: string;\n /** Underlying value of the item */\n value: T;\n /** Whether the item is disabled */\n disabled?: boolean;\n}\n\n/**\n * Represents a group of items in the autocomplete.\n */\nexport interface AutocompleteGroup {\n /** The text label of the group */\n label: string;\n /** The items in the group */\n items: AutocompleteItem[];\n}\n\n/**\n * Props for the Autocomplete component.\n */\nexport type AutocompleteProps<T = string> = AutocompleteRootProps<T> & {\n /**\n * The size of the autocomplete.\n * @default \"md\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * Whether the autocomplete is in an invalid state.\n * @default false\n */\n invalid?: boolean;\n /**\n * Additional CSS classes for styling.\n */\n classNames?: {\n root?: string;\n control?: string;\n input?: string;\n positioner?: string;\n popup?: string;\n list?: string;\n item?: string;\n empty?: string;\n group?: string;\n groupLabel?: string;\n };\n /**\n * Placeholder text for the input.\n */\n placeholder?: string;\n};\n\n/**\n * An autocomplete component that renders an input with filtered suggestions.\n * Unlike Combobox, the input accepts free-form text and suggestions are optional.\n * Built on top of Base UI's Autocomplete primitive.\n */\nexport const Autocomplete = <T = string,>({\n size = \"md\",\n invalid = false,\n disabled = false,\n readOnly = false,\n placeholder,\n classNames,\n items,\n ...props\n}: AutocompleteProps<T>) => {\n const { resolveContainer } = usePortalConfig();\n const portalContainer = resolveContainer();\n\n return (\n <div\n data-slot=\"autocomplete-root\"\n className={clsx(styles[\"root\"], classNames?.root)}\n >\n <BaseUIAutocomplete.Root<T>\n items={items}\n disabled={disabled}\n readOnly={readOnly}\n {...props}\n >\n <div\n className={clsx(styles[\"control\"], classNames?.control)}\n data-size={size}\n data-invalid={invalid || undefined}\n data-slot=\"autocomplete-control\"\n >\n <BaseUIAutocomplete.Input\n className={clsx(styles[\"input\"], classNames?.input)}\n data-slot=\"autocomplete-input\"\n placeholder={placeholder}\n />\n </div>\n\n <BaseUIAutocomplete.Portal container={portalContainer}>\n <BaseUIAutocomplete.Positioner\n className={clsx(styles[\"positioner\"], classNames?.positioner)}\n data-slot=\"autocomplete-positioner\"\n sideOffset={4}\n >\n <BaseUIAutocomplete.Popup\n className={clsx(styles[\"popup\"], classNames?.popup)}\n data-slot=\"autocomplete-popup\"\n >\n <BaseUIAutocomplete.Empty>\n <div\n className={clsx(styles[\"empty\"], classNames?.empty)}\n data-slot=\"autocomplete-empty\"\n >\n No results found.\n </div>\n </BaseUIAutocomplete.Empty>\n\n <BaseUIAutocomplete.List\n className={clsx(styles[\"list\"], classNames?.list)}\n data-slot=\"autocomplete-list\"\n >\n {(itemOrGroup: AutocompleteItem<T> | AutocompleteGroup) => {\n if (\"items\" in itemOrGroup) {\n return (\n <BaseUIAutocomplete.Group\n className={clsx(styles[\"group\"], classNames?.group)}\n key={itemOrGroup.label}\n items={itemOrGroup.items}\n data-slot=\"autocomplete-group\"\n >\n <BaseUIAutocomplete.GroupLabel\n className={clsx(\n styles[\"group-label\"],\n classNames?.groupLabel,\n )}\n data-slot=\"autocomplete-group-label\"\n >\n {itemOrGroup.label}\n </BaseUIAutocomplete.GroupLabel>\n <BaseUIAutocomplete.Collection>\n {(item: AutocompleteItem<T>) => (\n <BaseUIAutocomplete.Item\n key={item.id}\n value={item}\n disabled={item.disabled}\n className={clsx(styles[\"item\"], classNames?.item)}\n data-slot=\"autocomplete-item\"\n data-size={size}\n >\n {item.label}\n </BaseUIAutocomplete.Item>\n )}\n </BaseUIAutocomplete.Collection>\n </BaseUIAutocomplete.Group>\n );\n }\n\n return (\n <BaseUIAutocomplete.Item\n key={itemOrGroup.id}\n value={itemOrGroup}\n disabled={itemOrGroup.disabled}\n className={clsx(styles[\"item\"], classNames?.item)}\n data-slot=\"autocomplete-item\"\n data-size={size}\n >\n {itemOrGroup.label}\n </BaseUIAutocomplete.Item>\n );\n }}\n </BaseUIAutocomplete.List>\n </BaseUIAutocomplete.Popup>\n </BaseUIAutocomplete.Positioner>\n </BaseUIAutocomplete.Portal>\n </BaseUIAutocomplete.Root>\n </div>\n );\n};\n"],"mappings":"qSAyEA,MAAaA,GAA6B,CACxC,OAAO,KACP,UAAU,GACV,WAAW,GACX,WAAW,GACX,cACA,aACA,QACA,GAAG,KACuB,CAC1B,GAAM,CAAE,oBAAqB,EAAgB,EACvC,EAAkB,EAAiB,EAEzC,OACE,EAAC,MAAD,CACE,YAAU,oBACV,UAAW,EAAKC,EAAO,KAAS,GAAY,IAAI,WAEhD,EAACC,EAAmB,KAApB,CACS,QACG,WACA,WACV,GAAI,WAJN,CAME,EAAC,MAAD,CACE,UAAW,EAAKD,EAAO,QAAY,GAAY,OAAO,EACtD,YAAW,EACX,eAAc,GAAW,IAAA,GACzB,YAAU,gCAEV,EAACC,EAAmB,MAApB,CACE,UAAW,EAAKD,EAAO,MAAU,GAAY,KAAK,EAClD,YAAU,qBACG,aACd,CAAA,CACE,CAAA,EAEL,EAACC,EAAmB,OAApB,CAA2B,UAAW,WACpC,EAACA,EAAmB,WAApB,CACE,UAAW,EAAKD,EAAO,WAAe,GAAY,UAAU,EAC5D,YAAU,0BACV,WAAY,WAEZ,EAACC,EAAmB,MAApB,CACE,UAAW,EAAKD,EAAO,MAAU,GAAY,KAAK,EAClD,YAAU,8BAFZ,CAIE,EAACC,EAAmB,MAApB,CAAA,SACE,EAAC,MAAD,CACE,UAAW,EAAKD,EAAO,MAAU,GAAY,KAAK,EAClD,YAAU,8BACX,mBAEI,CAAA,CACmB,CAAA,EAE1B,EAACC,EAAmB,KAApB,CACE,UAAW,EAAKD,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,6BAER,GACI,UAAW,EAEX,EAACC,EAAmB,MAApB,CACE,UAAW,EAAKD,EAAO,MAAU,GAAY,KAAK,EAElD,MAAO,EAAY,MACnB,YAAU,8BAJZ,CAME,EAACC,EAAmB,WAApB,CACE,UAAW,EACTD,EAAO,eACP,GAAY,UACd,EACA,YAAU,oCAET,EAAY,KACgB,CAAA,EAC/B,EAACC,EAAmB,WAApB,CAAA,SACI,GACA,EAACA,EAAmB,KAApB,CAEE,MAAO,EACP,SAAU,EAAK,SACf,UAAW,EAAKD,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,oBACV,YAAW,WAEV,EAAK,KACiB,EARlB,EAAK,EAQa,CAEE,CAAA,CACP,GA3BnB,EAAY,KA2BO,EAK5B,EAACC,EAAmB,KAApB,CAEE,MAAO,EACP,SAAU,EAAY,SACtB,UAAW,EAAKD,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,oBACV,YAAW,WAEV,EAAY,KACU,EARlB,EAAY,EAQM,CAGN,CAAA,CACD,GACG,CAAA,CACN,CAAA,CACJ,GACtB,CAAA,CAET"}
@@ -0,0 +1,3 @@
1
+ import './autocomplete.css';
2
+ var e={control:`V4vGvW_control`,empty:`V4vGvW_empty`,group:`V4vGvW_group`,"group-label":`V4vGvW_group-label`,input:`V4vGvW_input`,item:`V4vGvW_item`,list:`V4vGvW_list`,popup:`V4vGvW_popup`,positioner:`V4vGvW_positioner`,root:`V4vGvW_root`};export{e as default};
3
+ //# sourceMappingURL=autocomplete.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.module.js","names":[],"sources":["../../../src/atoms/autocomplete/autocomplete.module.css"],"sourcesContent":[".root {\n width: 100%;\n font-family: var(--typography-typeface-ltr);\n}\n\n.control {\n --field-control-radius: var(--radius-md);\n --field-control-bg-color: var(--color-surface-base);\n --field-control-text-color: var(--color-content-neutral-base);\n --field-control-border-color: var(--color-border-secondary);\n --field-control-placeholder-color: var(--color-content-neutral-muted);\n display: flex;\n align-items: center;\n position: relative;\n width: 100%;\n}\n\n.control[data-size=\"sm\"] {\n --field-control-height: 1.5rem;\n --field-control-font-size: var(--typography-caption-base-size);\n --field-control-font-weight: var(--typography-caption-base-weight);\n}\n\n.control[data-size=\"md\"] {\n --field-control-height: 2rem;\n --field-control-font-size: var(--typography-body-2-size);\n --field-control-font-weight: var(--typography-body-2-weight);\n}\n\n.control[data-size=\"lg\"] {\n --field-control-height: 2.5rem;\n --field-control-font-size: var(--typography-body-1-size);\n --field-control-font-weight: var(--typography-body-1-weight);\n}\n\n.control[data-invalid] {\n --field-control-border-color: var(--color-content-negative-base);\n --field-control-text-color: var(--color-content-negative-base);\n}\n\n.input {\n box-sizing: border-box;\n padding: 0 var(--spacing-sm);\n margin: 0;\n border-radius: var(--field-control-radius);\n border: 1px solid var(--field-control-border-color);\n width: 100%;\n height: var(--field-control-height);\n font-family: var(--typography-typeface-ltr);\n font-size: var(--field-control-font-size);\n font-weight: var(--field-control-font-weight);\n background-color: var(--field-control-bg-color);\n color: var(--field-control-text-color);\n transition: border-color 0.2s ease-in-out;\n outline: none;\n}\n\n.input::placeholder {\n color: var(--field-control-placeholder-color);\n}\n\n.input:focus-visible {\n outline-style: solid;\n outline-width: var(--stroke-focus-ring);\n outline-color: var(--color-action-info-base);\n outline-offset: var(--spacing-xxs);\n}\n\n.positioner {\n outline: 0;\n z-index: var(--zindex-1);\n}\n\n.popup {\n box-sizing: border-box;\n background-color: var(--color-surface-base);\n color: var(--color-content-neutral-base);\n width: var(--anchor-width);\n max-width: var(--available-width);\n min-width: 12rem;\n transition:\n opacity 0.1s,\n transform 0.1s;\n transform-origin: var(--transform-origin);\n border: 1px solid var(--color-border-primary);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.popup[data-starting-style],\n.popup[data-ending-style] {\n opacity: 0;\n transform: scale(0.95);\n font-family: var(--typography-typeface-ltr);\n}\n\n.list {\n box-sizing: border-box;\n overflow-y: auto;\n overscroll-behavior: contain;\n padding-block: var(--spacing-xs);\n scroll-padding-block: var(--spacing-xs);\n outline: 0;\n max-height: min(22.5rem, var(--available-height));\n}\n\n.list[data-empty] {\n padding: 0;\n}\n\n.group {\n padding-block: var(--spacing-xs);\n}\n\n.group-label {\n padding: var(--spacing-xxs) var(--spacing-md);\n font-size: var(--typography-caption-base-size);\n font-weight: var(--typography-subheading-2-weight);\n color: var(--color-content-neutral-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.item {\n box-sizing: border-box;\n outline: 0;\n cursor: default;\n user-select: none;\n padding-block: var(--spacing-sm);\n padding-left: var(--spacing-md);\n padding-right: var(--spacing-md);\n display: flex;\n align-items: center;\n position: relative;\n transition: background-color 0.1s;\n}\n\n.item[data-size=\"sm\"] {\n font-size: var(--typography-caption-base-size);\n font-weight: var(--typography-caption-base-weight);\n}\n\n.item[data-size=\"md\"] {\n font-size: var(--typography-body-2-size);\n font-weight: var(--typography-body-2-weight);\n}\n\n.item[data-size=\"lg\"] {\n font-size: var(--typography-body-1-size);\n font-weight: var(--typography-body-1-weight);\n}\n\n.item[data-highlighted] {\n background-color: var(--color-surface-secondary);\n}\n\n.item[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.empty {\n box-sizing: border-box;\n padding: var(--spacing-md);\n font-size: var(--typography-caption-base-size);\n color: var(--color-content-neutral-muted);\n text-align: center;\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ import { Autocomplete, AutocompleteGroup, AutocompleteItem, AutocompleteProps } from "./autocomplete.js";
@@ -0,0 +1 @@
1
+ import"./autocomplete.js";
@@ -0,0 +1,42 @@
1
+ import { MergeElementProps } from "../../types.js";
2
+ import { IconButtonProps } from "../icon-button/icon-button.js";
3
+ //#region src/atoms/badge/badge.d.ts
4
+ type BadgeAction = Omit<IconButtonProps, "aria-label" | "aria-labelledby"> & {
5
+ /**
6
+ * The label used for screen readers.
7
+ */
8
+ label: string;
9
+ };
10
+ type BadgeProps = Omit<MergeElementProps<"div", {
11
+ /**
12
+ * The classnames of the component.
13
+ */
14
+ classNames?: {
15
+ root: string;
16
+ icon: string;
17
+ text: string;
18
+ action: string;
19
+ };
20
+ /**
21
+ * The content of the badge.
22
+ */
23
+ text: string;
24
+ /**
25
+ * The icon data used for the badge.
26
+ */
27
+ iconData?: string;
28
+ /**
29
+ * The action button used in the badge.
30
+ */
31
+ action?: IconButtonProps;
32
+ /**
33
+ * The color scheme of the badge.
34
+ *
35
+ * @default "neutral"
36
+ */
37
+ color?: "neutral" | "brand" | "positive" | "negative" | "warn" | "info";
38
+ }>, "children" | "aria-label" | "aria-labelledby" | "aria-describedby" | "defaultValue" | "defaultChecked">;
39
+ declare const Badge: (props: BadgeProps) => import("react/jsx-runtime").JSX.Element;
40
+ //#endregion
41
+ export { Badge, BadgeAction, BadgeProps };
42
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{Icon as e}from"../icon/icon.js";import"../icon/index.js";import{IconButton as t}from"../icon-button/icon-button.js";import"../icon-button/index.js";import n from"./styles.module.js";import r from"clsx";import{jsx as i,jsxs as a}from"react/jsx-runtime";const o=o=>{let{ref:s,classNames:c,text:l,iconData:u,action:d,color:f=`neutral`,...p}=o,m=()=>u?i(`div`,{"aria-hidden":!0,"data-slot":`badge-icon`,className:r(n.icon,c?.icon),children:i(e,{data:u})}):null,h=()=>{if(!d)return null;let{label:e,...a}=d;return i(t,{...a,size:`sm`,variant:`ghost`,"data-slot":`badge-action`,className:r(n.action,c?.action),label:e})};return a(`div`,{...p,ref:s,"data-color":f,"data-slot":`badge-root`,className:r(n.root,c?.root),children:[m(),i(`span`,{"data-slot":`badge-text`,className:r(n.text,c?.text),children:l}),h()]})};export{o as Badge};
2
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","names":["classes"],"sources":["../../../src/atoms/badge/badge.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { MergeElementProps } from \"../../types\";\nimport { Icon } from \"../icon\";\nimport { IconButton, type IconButtonProps } from \"../icon-button\";\nimport classes from \"./styles.module.css\";\n\nexport type BadgeAction = Omit<\n IconButtonProps,\n \"aria-label\" | \"aria-labelledby\"\n> & {\n /**\n * The label used for screen readers.\n */\n label: string;\n};\n\nexport type BadgeProps = Omit<\n MergeElementProps<\n \"div\",\n {\n /**\n * The classnames of the component.\n */\n classNames?: {\n root: string;\n icon: string;\n text: string;\n action: string;\n };\n\n /**\n * The content of the badge.\n */\n text: string;\n\n /**\n * The icon data used for the badge.\n */\n iconData?: string;\n\n /**\n * The action button used in the badge.\n */\n action?: IconButtonProps;\n\n /**\n * The color scheme of the badge.\n *\n * @default \"neutral\"\n */\n color?: \"neutral\" | \"brand\" | \"positive\" | \"negative\" | \"warn\" | \"info\";\n }\n >,\n | \"children\"\n | \"aria-label\"\n | \"aria-labelledby\"\n | \"aria-describedby\"\n | \"defaultValue\"\n | \"defaultChecked\"\n>;\n\nexport const Badge = (props: BadgeProps) => {\n const {\n ref,\n classNames,\n text,\n iconData,\n action: secondaryAction,\n color = \"neutral\",\n ...otherProps\n } = props;\n\n const renderIcon = () => {\n if (!iconData) return null;\n\n return (\n <div\n aria-hidden\n data-slot=\"badge-icon\"\n className={clsx(classes[\"icon\"], classNames?.icon)}\n >\n <Icon data={iconData} />\n </div>\n );\n };\n\n const renderAction = () => {\n if (!secondaryAction) return null;\n\n const { label, ...etc } = secondaryAction;\n\n return (\n <IconButton\n {...etc}\n size=\"sm\"\n variant=\"ghost\"\n data-slot=\"badge-action\"\n className={clsx(classes[\"action\"], classNames?.action)}\n label={label}\n />\n );\n };\n\n return (\n <div\n {...otherProps}\n ref={ref}\n data-color={color}\n data-slot=\"badge-root\"\n className={clsx(classes[\"root\"], classNames?.root)}\n >\n {renderIcon()}\n <span\n data-slot=\"badge-text\"\n className={clsx(classes[\"text\"], classNames?.text)}\n >\n {text}\n </span>\n {renderAction()}\n </div>\n );\n};\n"],"mappings":"mQA6DA,MAAa,EAAS,GAAsB,CAC1C,GAAM,CACJ,MACA,aACA,OACA,WACA,OAAQ,EACR,QAAQ,UACR,GAAG,GACD,EAEE,MACC,EAGH,EAAC,MAAD,CACE,cAAA,GACA,YAAU,aACV,UAAW,EAAKA,EAAQ,KAAS,GAAY,IAAI,WAEjD,EAAC,EAAD,CAAM,KAAM,CAAW,CAAA,CACpB,CAAA,EATe,KAalB,MAAqB,CACzB,GAAI,CAAC,EAAiB,OAAO,KAE7B,GAAM,CAAE,QAAO,GAAG,GAAQ,EAE1B,OACE,EAAC,EAAD,CACE,GAAI,EACJ,KAAK,KACL,QAAQ,QACR,YAAU,eACV,UAAW,EAAKA,EAAQ,OAAW,GAAY,MAAM,EAC9C,OACR,CAAA,CAEL,EAEA,OACE,EAAC,MAAD,CACE,GAAI,EACC,MACL,aAAY,EACZ,YAAU,aACV,UAAW,EAAKA,EAAQ,KAAS,GAAY,IAAI,WALnD,CAOG,EAAW,EACZ,EAAC,OAAD,CACE,YAAU,aACV,UAAW,EAAKA,EAAQ,KAAS,GAAY,IAAI,WAEhD,CACG,CAAA,EACL,EAAa,CACX,GAET"}
@@ -0,0 +1 @@
1
+ import { Badge, BadgeAction, BadgeProps } from "./badge.js";
@@ -0,0 +1 @@
1
+ import"./badge.js";
@@ -0,0 +1 @@
1
+ .gXomQa_root{--badge-background:transparent;--badge-border-color:transparent;vertical-align:middle;font-family:var(--typography-typeface-ltr);color:var(--color-content-neutral-base);background-color:var(--badge-background);box-shadow:0 0 0 1px var(--badge-border-color);border-radius:var(--radius-full);padding:var(--spacing-xs) var(--spacing-sm);align-items:center;gap:var(--spacing-sm);height:1.25rem;display:inline-flex}.gXomQa_root[data-color=neutral]{--badge-background:color-mix(in oklab, var(--color-neutral) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-neutral) 25%, transparent)}.gXomQa_root[data-color=brand]{--badge-background:color-mix(in oklab, var(--color-brand) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-brand) 50%, transparent)}.gXomQa_root[data-color=positive]{--badge-background:color-mix(in oklab, var(--color-positive) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-positive) 50%, transparent)}.gXomQa_root[data-color=negative]{--badge-background:color-mix(in oklab, var(--color-negative) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-negative) 50%, transparent)}.gXomQa_root[data-color=info]{--badge-background:color-mix(in oklab, var(--color-info) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-info) 50%, transparent)}.gXomQa_root[data-color=warn]{--badge-background:color-mix(in oklab, var(--color-warn) 12.5%, transparent);--badge-border-color:color-mix(in oklab, var(--color-warn) 50%, transparent)}.gXomQa_text{font-size:var(--typography-caption-base-size);line-height:var(--leading-caption);white-space:nowrap;text-overflow:ellipsis;font-weight:400;overflow:hidden}.gXomQa_icon{flex-shrink:0;justify-content:center;align-items:center;width:1rem;max-width:1rem;height:1rem;max-height:1rem;display:flex}.gXomQa_action{flex-shrink:0;margin-inline-start:auto;margin-inline-end:calc(-1 * var(--spacing-sm))}
@@ -0,0 +1,3 @@
1
+ import './styles.css';
2
+ var e={action:`gXomQa_action`,icon:`gXomQa_icon`,root:`gXomQa_root`,text:`gXomQa_text`};export{e as default};
3
+ //# sourceMappingURL=styles.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.module.js","names":[],"sources":["../../../src/atoms/badge/styles.module.css"],"sourcesContent":[".root {\n --badge-background: transparent;\n --badge-border-color: transparent;\n\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n\n font-family: var(--typography-typeface-ltr);\n\n color: var(--color-content-neutral-base);\n background-color: var(--badge-background);\n box-shadow: 0 0 0 1px var(--badge-border-color);\n border-radius: var(--radius-full);\n padding: var(--spacing-xs) var(--spacing-sm);\n\n gap: var(--spacing-sm);\n height: 1.25rem;\n}\n\n.root[data-color=\"neutral\"] {\n --badge-background: color-mix(\n in oklab,\n var(--color-neutral) 12.5%,\n transparent\n );\n --badge-border-color: color-mix(\n in oklab,\n var(--color-neutral) 25%,\n transparent\n );\n}\n\n.root[data-color=\"brand\"] {\n --badge-background: color-mix(\n in oklab,\n var(--color-brand) 12.5%,\n transparent\n );\n --badge-border-color: color-mix(\n in oklab,\n var(--color-brand) 50%,\n transparent\n );\n}\n\n.root[data-color=\"positive\"] {\n --badge-background: color-mix(\n in oklab,\n var(--color-positive) 12.5%,\n transparent\n );\n --badge-border-color: color-mix(\n in oklab,\n var(--color-positive) 50%,\n transparent\n );\n}\n\n.root[data-color=\"negative\"] {\n --badge-background: color-mix(\n in oklab,\n var(--color-negative) 12.5%,\n transparent\n );\n --badge-border-color: color-mix(\n in oklab,\n var(--color-negative) 50%,\n transparent\n );\n}\n\n.root[data-color=\"info\"] {\n --badge-background: color-mix(in oklab, var(--color-info) 12.5%, transparent);\n --badge-border-color: color-mix(in oklab, var(--color-info) 50%, transparent);\n}\n\n.root[data-color=\"warn\"] {\n --badge-background: color-mix(in oklab, var(--color-warn) 12.5%, transparent);\n --badge-border-color: color-mix(in oklab, var(--color-warn) 50%, transparent);\n}\n\n.text {\n font-size: var(--typography-caption-base-size);\n line-height: var(--leading-caption);\n font-weight: 400;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 1rem;\n height: 1rem;\n max-width: 1rem;\n max-height: 1rem;\n\n flex-shrink: 0;\n}\n\n.action {\n margin-inline-start: auto;\n margin-inline-end: calc(-1 * var(--spacing-sm));\n\n flex-shrink: 0;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- .PdmYxW_root{--checkbox-size:1rem;--checkbox-bg:transparent;--checkbox-border:var(--color-border-primary);--checkbox-color:transparent;--checkbox-gap:var(--spacing-xs);--checkbox-label-color:var(--color-content-neutral-base);font-family:var(--typography-typeface-ltr);align-items:center;gap:var(--checkbox-gap);display:flex;position:relative}.PdmYxW_root [data-slot=field-label]{height:var(--checkbox-size)}.PdmYxW_control{box-sizing:border-box;width:var(--checkbox-size);height:var(--checkbox-size);background-color:var(--checkbox-bg);color:var(--checkbox-color);box-shadow:0 0 0 1px var(--checkbox-border) inset;cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:background-color .2s,box-shadow .2s,color .2s;display:flex}.PdmYxW_root[data-size=sm]{--checkbox-size:.875rem;--checkbox-gap:var(--spacing-xs);--checkbox-label-font-size:var(--typography-body-2-size);--checkbox-label-line-height:var(--typography-body-2-height);--checkbox-label-font-weight:var(--typography-body-2-weight)}.PdmYxW_root[data-size=md]{--checkbox-size:1rem;--checkbox-gap:var(--spacing-xs);--checkbox-label-font-size:var(--typography-body-1-size);--checkbox-label-line-height:var(--typography-body-1-height);--checkbox-label-font-weight:var(--typography-body-1-weight)}.PdmYxW_root[data-size=lg]{--checkbox-size:1.25rem;--checkbox-gap:var(--spacing-sm);--checkbox-label-font-size:var(--typography-body-1-size);--checkbox-label-line-height:var(--typography-body-1-height);--checkbox-label-font-weight:var(--typography-body-1-weight)}.PdmYxW_control[data-checked]:not([data-invalid]),.PdmYxW_control[data-indeterminate]:not([data-invalid]){--checkbox-bg:var(--color-action-neutral-base);--checkbox-border:transparent;--checkbox-color:var(--color-on-neutral)}.PdmYxW_control:focus-visible{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.PdmYxW_root[data-disabled]{cursor:not-allowed;opacity:.5;& *{cursor:not-allowed}}.PdmYxW_root[data-invalid]{--checkbox-border:var(--color-negative);--field-label-color:var(--color-content-negative-muted);--checkbox-label-color:var(--color-content-neutral-base)}.PdmYxW_control[data-invalid][data-checked],.PdmYxW_control[data-invalid][data-indeterminate]{--checkbox-bg:var(--color-negative);--checkbox-color:var(--color-on-negative)}.PdmYxW_indicator{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.PdmYxW_root[data-invalid]{--field-label-color:var(--color-content-negative-muted)}.PdmYxW_check-icon,.PdmYxW_minus-icon{font-size:.85em;display:none}.PdmYxW_control[data-checked] .PdmYxW_check-icon,.PdmYxW_control[data-indeterminate] .PdmYxW_minus-icon{display:block}.PdmYxW_label{font-size:var(--checkbox-label-font-size,var(--typography-body-2-size));line-height:var(--checkbox-label-line-height,var(--typography-body-2-height));font-weight:var(--checkbox-label-font-weight,var(--typography-body-2-weight));color:var(--checkbox-label-color)}
1
+ .PdmYxW_root{--checkbox-size:1rem;--checkbox-bg:transparent;--checkbox-border:var(--color-border-primary);--checkbox-color:transparent;--checkbox-gap:var(--spacing-xs);--checkbox-label-color:var(--color-content-neutral-base);font-family:var(--typography-typeface-ltr);align-items:center;gap:var(--checkbox-gap);display:flex;position:relative}.PdmYxW_root [data-slot=field-label]{height:var(--checkbox-size)}.PdmYxW_control{box-sizing:border-box;width:var(--checkbox-size);height:var(--checkbox-size);background-color:var(--checkbox-bg);color:var(--checkbox-color);box-shadow:0 0 0 1px var(--checkbox-border) inset;cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:background-color .2s,box-shadow .2s,color .2s;display:flex}.PdmYxW_root[data-size=sm]{--checkbox-size:.875rem;--checkbox-gap:var(--spacing-xs);--checkbox-label-font-size:var(--typography-body-2-size);--checkbox-label-line-height:var(--typography-body-2-height);--checkbox-label-font-weight:var(--typography-body-2-weight)}.PdmYxW_root[data-size=md]{--checkbox-size:1rem;--checkbox-gap:var(--spacing-xs);--checkbox-label-font-size:var(--typography-body-1-size);--checkbox-label-line-height:var(--typography-body-1-height);--checkbox-label-font-weight:var(--typography-body-1-weight)}.PdmYxW_root[data-size=lg]{--checkbox-size:1.25rem;--checkbox-gap:var(--spacing-sm);--checkbox-label-font-size:var(--typography-body-1-size);--checkbox-label-line-height:var(--typography-body-1-height);--checkbox-label-font-weight:var(--typography-body-1-weight)}.PdmYxW_control[data-checked]:not([data-invalid]),.PdmYxW_control[data-indeterminate]:not([data-invalid]){--checkbox-bg:var(--color-action-neutral-base);--checkbox-border:transparent;--checkbox-color:var(--color-on-neutral)}.PdmYxW_control:focus-visible{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.PdmYxW_root[data-disabled]{cursor:not-allowed;opacity:.5;& *{cursor:not-allowed}}.PdmYxW_root[data-invalid]{--checkbox-border:var(--color-negative);--field-label-color:var(--color-content-negative-muted);--checkbox-label-color:var(--color-content-negative-base)}.PdmYxW_control[data-invalid][data-checked],.PdmYxW_control[data-invalid][data-indeterminate]{--checkbox-bg:var(--color-negative);--checkbox-color:var(--color-on-negative)}.PdmYxW_indicator{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.PdmYxW_root[data-invalid]{--field-label-color:var(--color-content-negative-muted)}.PdmYxW_check-icon,.PdmYxW_minus-icon{font-size:.85em;display:none}.PdmYxW_control[data-checked] .PdmYxW_check-icon,.PdmYxW_control[data-indeterminate] .PdmYxW_minus-icon{display:block}.PdmYxW_label{font-size:var(--checkbox-label-font-size,var(--typography-body-2-size));line-height:var(--checkbox-label-line-height,var(--typography-body-2-height));font-weight:var(--checkbox-label-font-weight,var(--typography-body-2-weight));color:var(--checkbox-label-color)}.PdmYxW_label--hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
@@ -2,52 +2,36 @@ import { CheckboxRootProps } from "@base-ui/react/checkbox";
2
2
 
3
3
  //#region src/atoms/checkbox/checkbox.d.ts
4
4
  type CheckboxProps = Omit<CheckboxRootProps, "className"> & {
5
- /** The size of the input. @default "md" */size?: "sm" | "md" | "lg";
6
- /**
7
- * The label of the field.
8
- */
5
+ /** The size of the checkbox. @default "md" */size?: "sm" | "md" | "lg"; /** The text label accompanying the checkbox. */
9
6
  label: string;
10
7
  /**
11
- * Whether to hide the label or not.
12
- *
8
+ * Visually hides the label but keeps it accessible to screen readers.
13
9
  * @default false
14
10
  */
15
11
  hideLabel?: boolean;
16
12
  /**
17
- * Gets or sets whether or not the field is in a visually invalid state.
18
- *
19
- * This error state overrides the error state controlled by
20
- * `reportValidity()`.
21
- *
13
+ * Whether the checkbox is in a visually invalid state.
22
14
  * @default false
23
15
  */
24
- invalid?: boolean;
25
- /**
26
- * The error message that replaces feedback when `error` is true. If
27
- * `errorText` is an empty string, then the feedback will continue to
28
- * show.
29
- */
30
- errorText?: string;
31
- /**
32
- * Whether the field's value has been changed from its initial value.
33
- * Useful when the field state is controlled by an external library.
34
- */
35
- dirty?: boolean | undefined;
36
- /**
37
- * Additional CSS classes for styling.
38
- */
16
+ invalid?: boolean; /** Additional CSS classes for styling. */
39
17
  classNames?: {
40
- label?: string;
41
- feedback?: string;
42
18
  root?: string;
43
- error?: string;
44
19
  control?: string;
45
20
  indicator?: string;
46
- checkIcon?: string;
47
- minusIcon?: string;
21
+ label?: string;
48
22
  };
49
23
  };
50
- declare const Checkbox$1: (props: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
24
+ declare const Checkbox$1: ({
25
+ size,
26
+ label,
27
+ hideLabel,
28
+ disabled,
29
+ required,
30
+ invalid,
31
+ readOnly,
32
+ classNames,
33
+ ...props
34
+ }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
51
35
  //#endregion
52
36
  export { Checkbox$1 as Checkbox, CheckboxProps };
53
37
  //# sourceMappingURL=checkbox.d.ts.map
@@ -1,2 +1,2 @@
1
- import{Icon as e}from"../icon/icon.js";import"../icon/index.js";import t from"./checkbox.module.js";import n from"clsx";import{useId as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{Checkbox as o}from"@base-ui/react/checkbox";import{mdiCheckBold as s,mdiMinusThick as c}from"@mdi/js";const l=l=>{let{size:u=`md`,label:d,disabled:f=!1,required:p=!1,name:m,invalid:h,errorText:g,dirty:_,readOnly:v,autoFocus:y,hideLabel:b,classNames:x,...S}=l,C=r();return a(`div`,{"data-size":u,"data-disabled":f||void 0,"data-required":p||void 0,"data-invalid":h||void 0,className:n(t.root,x?.root),"data-slot":`checkbox-root`,children:[i(o.Root,{...S,disabled:f,required:p,readOnly:v,"data-invalid":h||void 0,className:n(t.control,x?.control),"data-size":u,"data-slot":`checkbox-control`,id:C,children:a(o.Indicator,{"data-slot":`checkbox-indicator`,className:n(t.indicator,x?.indicator),children:[i(e,{data:s,"data-slot":`checkbox-check-icon`,className:n(t[`check-icon`],x?.checkIcon)}),i(e,{data:c,"data-slot":`checkbox-minus-icon`,className:n(t[`minus-icon`],x?.minusIcon)})]})}),i(`label`,{htmlFor:C,className:n(t.label,x?.label),"data-slot":`checkbox-label`,children:d})]})};export{l as Checkbox};
1
+ import{Icon as e}from"../icon/icon.js";import"../icon/index.js";import t from"./checkbox.module.js";import n from"clsx";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Checkbox as a}from"@base-ui/react/checkbox";import{mdiCheckBold as o,mdiMinusThick as s}from"@mdi/js";const c=({size:c=`md`,label:l,hideLabel:u=!1,disabled:d=!1,required:f=!1,invalid:p,readOnly:m,classNames:h,...g})=>i(`label`,{"data-size":c,"data-disabled":d||void 0,"data-invalid":p||void 0,className:n(t.root,h?.root),"data-slot":`checkbox-root`,children:[r(a.Root,{...g,disabled:d,required:f,readOnly:m,"data-invalid":p||void 0,className:n(t.control,h?.control),"data-slot":`checkbox-control`,children:i(a.Indicator,{"data-slot":`checkbox-indicator`,className:n(t.indicator,h?.indicator),children:[r(e,{data:o,"data-slot":`checkbox-check-icon`,className:t[`check-icon`]}),r(e,{data:s,"data-slot":`checkbox-minus-icon`,className:t[`minus-icon`]})]})}),r(`span`,{className:n(t.label,u&&t[`label--hidden`],h?.label),"data-slot":`checkbox-label`,children:l})]});export{c as Checkbox};
2
2
  //# sourceMappingURL=checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":["Checkbox","styles","BaseUICheckbox"],"sources":["../../../src/atoms/checkbox/checkbox.tsx"],"sourcesContent":["import {\n Checkbox as BaseUICheckbox,\n type CheckboxRootProps,\n} from \"@base-ui/react/checkbox\";\nimport { Icon } from \"../icon\";\nimport { mdiCheckBold, mdiMinusThick } from \"@mdi/js\";\nimport styles from \"./checkbox.module.css\";\nimport clsx from \"clsx\";\nimport { useId } from \"react\";\n\nexport type CheckboxProps = Omit<CheckboxRootProps, \"className\"> & {\n /** The size of the input. @default \"md\" */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * The label of the field.\n */\n label: string;\n\n /**\n * Whether to hide the label or not.\n *\n * @default false\n */\n hideLabel?: boolean;\n /**\n * Gets or sets whether or not the field is in a visually invalid state.\n *\n * This error state overrides the error state controlled by\n * `reportValidity()`.\n *\n * @default false\n */\n invalid?: boolean;\n /**\n * The error message that replaces feedback when `error` is true. If\n * `errorText` is an empty string, then the feedback will continue to\n * show.\n */\n errorText?: string;\n\n /**\n * Whether the field's value has been changed from its initial value.\n * Useful when the field state is controlled by an external library.\n */\n dirty?: boolean | undefined;\n /**\n * Additional CSS classes for styling.\n */\n classNames?: {\n label?: string;\n feedback?: string;\n root?: string;\n error?: string;\n control?: string;\n indicator?: string;\n checkIcon?: string;\n minusIcon?: string;\n };\n};\n\nexport const Checkbox = (props: CheckboxProps) => {\n const {\n size = \"md\",\n label,\n disabled = false,\n required = false,\n name,\n invalid,\n errorText,\n dirty,\n readOnly,\n autoFocus,\n hideLabel,\n classNames,\n ...otherProps\n } = props;\n\n const id = useId();\n\n return (\n <div\n data-size={size}\n data-disabled={disabled || undefined}\n data-required={required || undefined}\n data-invalid={invalid || undefined}\n className={clsx(styles[\"root\"], classNames?.root)}\n data-slot=\"checkbox-root\"\n >\n <BaseUICheckbox.Root\n {...otherProps}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n data-invalid={invalid || undefined}\n className={clsx(styles[\"control\"], classNames?.control)}\n data-size={size}\n data-slot=\"checkbox-control\"\n id={id}\n >\n <BaseUICheckbox.Indicator\n data-slot=\"checkbox-indicator\"\n className={clsx(styles[\"indicator\"], classNames?.indicator)}\n >\n <Icon\n data={mdiCheckBold}\n data-slot=\"checkbox-check-icon\"\n className={clsx(styles[\"check-icon\"], classNames?.checkIcon)}\n />\n <Icon\n data={mdiMinusThick}\n data-slot=\"checkbox-minus-icon\"\n className={clsx(styles[\"minus-icon\"], classNames?.minusIcon)}\n />\n </BaseUICheckbox.Indicator>\n </BaseUICheckbox.Root>\n\n <label\n htmlFor={id}\n className={clsx(styles[\"label\"], classNames?.label)}\n data-slot=\"checkbox-label\"\n >\n {label}\n </label>\n </div>\n );\n};\n"],"mappings":"qTA4DA,MAAaA,EAAY,GAAyB,CAChD,GAAM,CACJ,OAAO,KACP,QACA,WAAW,GACX,WAAW,GACX,OACA,UACA,YACA,QACA,WACA,YACA,YACA,aACA,GAAG,GACD,EAEE,EAAK,EAAM,EAEjB,OACE,EAAC,MAAD,CACE,YAAW,EACX,gBAAe,GAAY,IAAA,GAC3B,gBAAe,GAAY,IAAA,GAC3B,eAAc,GAAW,IAAA,GACzB,UAAW,EAAKC,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,yBANZ,CAQE,EAACC,EAAe,KAAhB,CACE,GAAI,EACM,WACA,WACA,WACV,eAAc,GAAW,IAAA,GACzB,UAAW,EAAKD,EAAO,QAAY,GAAY,OAAO,EACtD,YAAW,EACX,YAAU,mBACN,cAEJ,EAACC,EAAe,UAAhB,CACE,YAAU,qBACV,UAAW,EAAKD,EAAO,UAAc,GAAY,SAAS,WAF5D,CAIE,EAAC,EAAD,CACE,KAAM,EACN,YAAU,sBACV,UAAW,EAAKA,EAAO,cAAe,GAAY,SAAS,CAC5D,CAAA,EACD,EAAC,EAAD,CACE,KAAM,EACN,YAAU,sBACV,UAAW,EAAKA,EAAO,cAAe,GAAY,SAAS,CAC5D,CAAA,CACuB,GACP,CAAA,EAErB,EAAC,QAAD,CACE,QAAS,EACT,UAAW,EAAKA,EAAO,MAAU,GAAY,KAAK,EAClD,YAAU,0BAET,CACI,CAAA,CACJ,GAET"}
1
+ {"version":3,"file":"checkbox.js","names":["Checkbox","styles","BaseUICheckbox"],"sources":["../../../src/atoms/checkbox/checkbox.tsx"],"sourcesContent":["import {\n Checkbox as BaseUICheckbox,\n type CheckboxRootProps,\n} from \"@base-ui/react/checkbox\";\nimport { Icon } from \"../icon\";\nimport { mdiCheckBold, mdiMinusThick } from \"@mdi/js\";\nimport styles from \"./checkbox.module.css\";\nimport clsx from \"clsx\";\n\nexport type CheckboxProps = Omit<CheckboxRootProps, \"className\"> & {\n /** The size of the checkbox. @default \"md\" */\n size?: \"sm\" | \"md\" | \"lg\";\n /** The text label accompanying the checkbox. */\n label: string;\n /**\n * Visually hides the label but keeps it accessible to screen readers.\n * @default false\n */\n hideLabel?: boolean;\n /**\n * Whether the checkbox is in a visually invalid state.\n * @default false\n */\n invalid?: boolean;\n /** Additional CSS classes for styling. */\n classNames?: {\n root?: string;\n control?: string;\n indicator?: string;\n label?: string;\n };\n};\n\nexport const Checkbox = ({\n size = \"md\",\n label,\n hideLabel = false,\n disabled = false,\n required = false,\n invalid,\n readOnly,\n classNames,\n ...props\n}: CheckboxProps) => {\n return (\n <label\n data-size={size}\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n className={clsx(styles[\"root\"], classNames?.root)}\n data-slot=\"checkbox-root\"\n >\n <BaseUICheckbox.Root\n {...props}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n data-invalid={invalid || undefined}\n className={clsx(styles[\"control\"], classNames?.control)}\n data-slot=\"checkbox-control\"\n >\n <BaseUICheckbox.Indicator\n data-slot=\"checkbox-indicator\"\n className={clsx(styles[\"indicator\"], classNames?.indicator)}\n >\n <Icon\n data={mdiCheckBold}\n data-slot=\"checkbox-check-icon\"\n className={styles[\"check-icon\"]}\n />\n <Icon\n data={mdiMinusThick}\n data-slot=\"checkbox-minus-icon\"\n className={styles[\"minus-icon\"]}\n />\n </BaseUICheckbox.Indicator>\n </BaseUICheckbox.Root>\n\n <span\n className={clsx(\n styles[\"label\"],\n hideLabel && styles[\"label--hidden\"],\n classNames?.label,\n )}\n data-slot=\"checkbox-label\"\n >\n {label}\n </span>\n </label>\n );\n};\n"],"mappings":"uRAiCA,MAAaA,GAAY,CACvB,OAAO,KACP,QACA,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UACA,WACA,aACA,GAAG,KAGD,EAAC,QAAD,CACE,YAAW,EACX,gBAAe,GAAY,IAAA,GAC3B,eAAc,GAAW,IAAA,GACzB,UAAW,EAAKC,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,yBALZ,CAOE,EAACC,EAAe,KAAhB,CACE,GAAI,EACM,WACA,WACA,WACV,eAAc,GAAW,IAAA,GACzB,UAAW,EAAKD,EAAO,QAAY,GAAY,OAAO,EACtD,YAAU,4BAEV,EAACC,EAAe,UAAhB,CACE,YAAU,qBACV,UAAW,EAAKD,EAAO,UAAc,GAAY,SAAS,WAF5D,CAIE,EAAC,EAAD,CACE,KAAM,EACN,YAAU,sBACV,UAAWA,EAAO,aACnB,CAAA,EACD,EAAC,EAAD,CACE,KAAM,EACN,YAAU,sBACV,UAAWA,EAAO,aACnB,CAAA,CACuB,GACP,CAAA,EAErB,EAAC,OAAD,CACE,UAAW,EACTA,EAAO,MACP,GAAaA,EAAO,iBACpB,GAAY,KACd,EACA,YAAU,0BAET,CACG,CAAA,CACD"}
@@ -1,3 +1,3 @@
1
1
  import './checkbox.css';
2
- var e={"check-icon":`PdmYxW_check-icon`,control:`PdmYxW_control`,indicator:`PdmYxW_indicator`,label:`PdmYxW_label`,"minus-icon":`PdmYxW_minus-icon`,root:`PdmYxW_root`};export{e as default};
2
+ var e={"check-icon":`PdmYxW_check-icon`,control:`PdmYxW_control`,indicator:`PdmYxW_indicator`,label:`PdmYxW_label`,"label--hidden":`PdmYxW_label--hidden`,"minus-icon":`PdmYxW_minus-icon`,root:`PdmYxW_root`};export{e as default};
3
3
  //# sourceMappingURL=checkbox.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.module.js","names":[],"sources":["../../../src/atoms/checkbox/checkbox.module.css"],"sourcesContent":[".root {\n --checkbox-size: 1rem;\n --checkbox-bg: transparent;\n --checkbox-border: var(--color-border-primary);\n --checkbox-color: transparent;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-color: var(--color-content-neutral-base);\n\n font-family: var(--typography-typeface-ltr);\n display: flex;\n align-items: center;\n position: relative;\n gap: var(--checkbox-gap);\n}\n.root [data-slot=\"field-label\"] {\n height: var(--checkbox-size);\n}\n\n.control {\n /* Base Styles */\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n background-color: var(--checkbox-bg);\n color: var(--checkbox-color);\n box-shadow: 0 0 0 1px var(--checkbox-border) inset; /* inset shadow acts as border without altering layout size */\n border-radius: 4px; /* Hardcoded standard rounding for checkboxes, or map to a small radius token */\n border: none;\n cursor: pointer;\n padding: 0;\n transition:\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s;\n}\n\n.root[data-size=\"sm\"] {\n --checkbox-size: 0.875rem;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-font-size: var(--typography-body-2-size);\n --checkbox-label-line-height: var(--typography-body-2-height);\n --checkbox-label-font-weight: var(--typography-body-2-weight);\n}\n.root[data-size=\"md\"] {\n --checkbox-size: 1rem;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-font-size: var(--typography-body-1-size);\n --checkbox-label-line-height: var(--typography-body-1-height);\n --checkbox-label-font-weight: var(--typography-body-1-weight);\n}\n.root[data-size=\"lg\"] {\n --checkbox-size: 1.25rem;\n --checkbox-gap: var(--spacing-sm);\n --checkbox-label-font-size: var(--typography-body-1-size);\n --checkbox-label-line-height: var(--typography-body-1-height);\n --checkbox-label-font-weight: var(--typography-body-1-weight);\n}\n\n/* Base UI passes data-checked and data-indeterminate to the root element when active */\n.control[data-checked]:not([data-invalid]),\n.control[data-indeterminate]:not([data-invalid]) {\n --checkbox-bg: var(--color-action-neutral-base);\n --checkbox-border: transparent;\n --checkbox-color: var(--color-on-neutral);\n}\n\n.control:focus-visible {\n outline-style: solid;\n outline-width: var(--stroke-focus-ring);\n outline-color: var(--color-action-info-base);\n outline-offset: var(--spacing-xxs);\n}\n\n.root[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n & * {\n cursor: not-allowed;\n }\n}\n\n.root[data-invalid] {\n --checkbox-border: var(--color-negative);\n --field-label-color: var(--color-content-negative-muted);\n --checkbox-label-color: var(--color-content-neutral-base);\n}\n.control[data-invalid][data-checked],\n.control[data-invalid][data-indeterminate] {\n --checkbox-bg: var(--color-negative);\n --checkbox-color: var(--color-on-negative);\n}\n\n.indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.root[data-invalid] {\n --field-label-color: var(--color-content-negative-muted);\n}\n\n.check-icon,\n.minus-icon {\n font-size: 0.85em; /* Scales the icon slightly down to fit inside the box nicely */\n display: none;\n}\n\n/* Toggle icons based on Base UI's data attributes */\n.control[data-checked] .check-icon {\n display: block;\n}\n.control[data-indeterminate] .minus-icon {\n display: block;\n}\n\n.label {\n font-size: var(--checkbox-label-font-size, var(--typography-body-2-size));\n line-height: var(\n --checkbox-label-line-height,\n var(--typography-body-2-height)\n );\n font-weight: var(\n --checkbox-label-font-weight,\n var(--typography-body-2-weight)\n );\n color: var(--checkbox-label-color);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"checkbox.module.js","names":[],"sources":["../../../src/atoms/checkbox/checkbox.module.css"],"sourcesContent":[".root {\n --checkbox-size: 1rem;\n --checkbox-bg: transparent;\n --checkbox-border: var(--color-border-primary);\n --checkbox-color: transparent;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-color: var(--color-content-neutral-base);\n\n font-family: var(--typography-typeface-ltr);\n display: flex;\n align-items: center;\n position: relative;\n gap: var(--checkbox-gap);\n}\n.root [data-slot=\"field-label\"] {\n height: var(--checkbox-size);\n}\n\n.control {\n /* Base Styles */\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n background-color: var(--checkbox-bg);\n color: var(--checkbox-color);\n box-shadow: 0 0 0 1px var(--checkbox-border) inset; /* inset shadow acts as border without altering layout size */\n border-radius: 4px; /* Hardcoded standard rounding for checkboxes, or map to a small radius token */\n border: none;\n cursor: pointer;\n padding: 0;\n transition:\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s;\n}\n\n.root[data-size=\"sm\"] {\n --checkbox-size: 0.875rem;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-font-size: var(--typography-body-2-size);\n --checkbox-label-line-height: var(--typography-body-2-height);\n --checkbox-label-font-weight: var(--typography-body-2-weight);\n}\n.root[data-size=\"md\"] {\n --checkbox-size: 1rem;\n --checkbox-gap: var(--spacing-xs);\n --checkbox-label-font-size: var(--typography-body-1-size);\n --checkbox-label-line-height: var(--typography-body-1-height);\n --checkbox-label-font-weight: var(--typography-body-1-weight);\n}\n.root[data-size=\"lg\"] {\n --checkbox-size: 1.25rem;\n --checkbox-gap: var(--spacing-sm);\n --checkbox-label-font-size: var(--typography-body-1-size);\n --checkbox-label-line-height: var(--typography-body-1-height);\n --checkbox-label-font-weight: var(--typography-body-1-weight);\n}\n\n/* Base UI passes data-checked and data-indeterminate to the root element when active */\n.control[data-checked]:not([data-invalid]),\n.control[data-indeterminate]:not([data-invalid]) {\n --checkbox-bg: var(--color-action-neutral-base);\n --checkbox-border: transparent;\n --checkbox-color: var(--color-on-neutral);\n}\n\n.control:focus-visible {\n outline-style: solid;\n outline-width: var(--stroke-focus-ring);\n outline-color: var(--color-action-info-base);\n outline-offset: var(--spacing-xxs);\n}\n\n.root[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n & * {\n cursor: not-allowed;\n }\n}\n\n.root[data-invalid] {\n --checkbox-border: var(--color-negative);\n --field-label-color: var(--color-content-negative-muted);\n --checkbox-label-color: var(--color-content-negative-base);\n}\n.control[data-invalid][data-checked],\n.control[data-invalid][data-indeterminate] {\n --checkbox-bg: var(--color-negative);\n --checkbox-color: var(--color-on-negative);\n}\n\n.indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.root[data-invalid] {\n --field-label-color: var(--color-content-negative-muted);\n}\n\n.check-icon,\n.minus-icon {\n font-size: 0.85em; /* Scales the icon slightly down to fit inside the box nicely */\n display: none;\n}\n\n/* Toggle icons based on Base UI's data attributes */\n.control[data-checked] .check-icon {\n display: block;\n}\n.control[data-indeterminate] .minus-icon {\n display: block;\n}\n\n.label {\n font-size: var(--checkbox-label-font-size, var(--typography-body-2-size));\n line-height: var(\n --checkbox-label-line-height,\n var(--typography-body-2-height)\n );\n font-weight: var(\n --checkbox-label-font-weight,\n var(--typography-body-2-weight)\n );\n color: var(--checkbox-label-color);\n}\n\n.label--hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ .bNzBPW_group{gap:var(--spacing-xs);flex-direction:column;display:flex}.bNzBPW_group[data-orientation=horizontal]{flex-flow:wrap}.bNzBPW_group[data-disabled]{cursor:not-allowed;opacity:.5;& *{cursor:not-allowed}}
@@ -0,0 +1,47 @@
1
+ import { CheckboxGroupProps } from "@base-ui/react/checkbox-group";
2
+
3
+ //#region src/atoms/checkbox-group/checkbox-group.d.ts
4
+ /**
5
+ * Represents an item in the checkbox group.
6
+ */
7
+ interface CheckboxGroupItem {
8
+ /** The value of the checkbox option. */
9
+ value: string;
10
+ /** The display label for the checkbox option. */
11
+ label: string;
12
+ /** Whether this option is disabled. */
13
+ disabled?: boolean;
14
+ }
15
+ type CheckboxGroupProps$1 = Omit<CheckboxGroupProps, "className"> & {
16
+ /** The items to render as checkbox options. */items: CheckboxGroupItem[]; /** The size applied to all checkbox items. @default "md" */
17
+ size?: "sm" | "md" | "lg";
18
+ /**
19
+ * The layout orientation of the checkbox group.
20
+ * @default "vertical"
21
+ */
22
+ orientation?: "horizontal" | "vertical";
23
+ /**
24
+ * Whether the group is in a visually invalid state.
25
+ * @default false
26
+ */
27
+ invalid?: boolean; /** Additional CSS classes for styling. */
28
+ classNames?: {
29
+ root?: string;
30
+ item?: string;
31
+ itemControl?: string;
32
+ itemIndicator?: string;
33
+ itemLabel?: string;
34
+ };
35
+ };
36
+ declare const CheckboxGroup$1: ({
37
+ items,
38
+ size,
39
+ orientation,
40
+ invalid,
41
+ disabled,
42
+ classNames,
43
+ ...props
44
+ }: CheckboxGroupProps$1) => import("react/jsx-runtime").JSX.Element;
45
+ //#endregion
46
+ export { CheckboxGroup$1 as CheckboxGroup, CheckboxGroupItem, CheckboxGroupProps$1 as CheckboxGroupProps };
47
+ //# sourceMappingURL=checkbox-group.d.ts.map
@@ -0,0 +1,2 @@
1
+ import e from"./checkbox-group.module.js";import{Checkbox as t}from"../checkbox/checkbox.js";import"../checkbox/index.js";import n from"clsx";import{jsx as r}from"react/jsx-runtime";import{CheckboxGroup as i}from"@base-ui/react/checkbox-group";const a=({items:a,size:o=`md`,orientation:s=`vertical`,invalid:c,disabled:l=!1,classNames:u,...d})=>r(i,{...d,disabled:l,"data-size":o,"data-orientation":s,"data-invalid":c||void 0,className:n(e.group,u?.root),"data-slot":`checkbox-group`,children:a.map(e=>r(t,{value:e.value,label:e.label,disabled:e.disabled,size:o,invalid:c,classNames:{root:u?.item,control:u?.itemControl,indicator:u?.itemIndicator,label:u?.itemLabel}},e.value))});export{a as CheckboxGroup};
2
+ //# sourceMappingURL=checkbox-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group.js","names":["CheckboxGroup","BaseUICheckboxGroup","styles"],"sources":["../../../src/atoms/checkbox-group/checkbox-group.tsx"],"sourcesContent":["import {\n CheckboxGroup as BaseUICheckboxGroup,\n type CheckboxGroupProps as BaseUICheckboxGroupProps,\n} from \"@base-ui/react/checkbox-group\";\nimport clsx from \"clsx\";\nimport styles from \"./checkbox-group.module.css\";\nimport { Checkbox } from \"../checkbox\";\n\n/**\n * Represents an item in the checkbox group.\n */\nexport interface CheckboxGroupItem {\n /** The value of the checkbox option. */\n value: string;\n /** The display label for the checkbox option. */\n label: string;\n /** Whether this option is disabled. */\n disabled?: boolean;\n}\n\nexport type CheckboxGroupProps = Omit<BaseUICheckboxGroupProps, \"className\"> & {\n /** The items to render as checkbox options. */\n items: CheckboxGroupItem[];\n /** The size applied to all checkbox items. @default \"md\" */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * The layout orientation of the checkbox group.\n * @default \"vertical\"\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the group is in a visually invalid state.\n * @default false\n */\n invalid?: boolean;\n /** Additional CSS classes for styling. */\n classNames?: {\n root?: string;\n item?: string;\n itemControl?: string;\n itemIndicator?: string;\n itemLabel?: string;\n };\n};\n\nexport const CheckboxGroup = ({\n items,\n size = \"md\",\n orientation = \"vertical\",\n invalid,\n disabled = false,\n classNames,\n ...props\n}: CheckboxGroupProps) => {\n return (\n <BaseUICheckboxGroup\n {...props}\n disabled={disabled}\n data-size={size}\n data-orientation={orientation}\n data-invalid={invalid || undefined}\n className={clsx(styles[\"group\"], classNames?.root)}\n data-slot=\"checkbox-group\"\n >\n {items.map(item => (\n <Checkbox\n key={item.value}\n value={item.value}\n label={item.label}\n disabled={item.disabled}\n size={size}\n invalid={invalid}\n classNames={{\n root: classNames?.item,\n control: classNames?.itemControl,\n indicator: classNames?.itemIndicator,\n label: classNames?.itemLabel,\n }}\n />\n ))}\n </BaseUICheckboxGroup>\n );\n};\n"],"mappings":"oPA6CA,MAAaA,GAAiB,CAC5B,QACA,OAAO,KACP,cAAc,WACd,UACA,WAAW,GACX,aACA,GAAG,KAGD,EAACC,EAAD,CACE,GAAI,EACM,WACV,YAAW,EACX,mBAAkB,EAClB,eAAc,GAAW,IAAA,GACzB,UAAW,EAAKC,EAAO,MAAU,GAAY,IAAI,EACjD,YAAU,0BAET,EAAM,IAAI,GACT,EAAC,EAAD,CAEE,MAAO,EAAK,MACZ,MAAO,EAAK,MACZ,SAAU,EAAK,SACT,OACG,UACT,WAAY,CACV,KAAM,GAAY,KAClB,QAAS,GAAY,YACrB,UAAW,GAAY,cACvB,MAAO,GAAY,SACrB,CACD,EAZM,EAAK,KAYX,CACF,CACkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import './checkbox-group.css';
2
+ var e={group:`bNzBPW_group`};export{e as default};
3
+ //# sourceMappingURL=checkbox-group.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group.module.js","names":[],"sources":["../../../src/atoms/checkbox-group/checkbox-group.module.css"],"sourcesContent":[".group {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.group[data-orientation=\"horizontal\"] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.group[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n & * {\n cursor: not-allowed;\n }\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ import { CheckboxGroup, CheckboxGroupItem, CheckboxGroupProps } from "./checkbox-group.js";
@@ -0,0 +1 @@
1
+ import"./checkbox-group.js";
@@ -1 +1 @@
1
- .KAWYaW_control{align-items:center;gap:var(--spacing-xs);width:100%;display:flex;position:relative}.KAWYaW_start-adornment,.KAWYaW_end-adornment{height:var(--field-control-icon-size);align-items:center;display:flex;& [data-slot=input-adornment-root]{&[data-kind=icon]{width:var(--adornment-icon-size);height:var(--adornment-icon-size);color:var(--field-label-color)}&[data-kind=button]{width:var(--adornment-button-size);height:var(--adornment-button-size);color:var(--field-label-color)}}}.KAWYaW_control[data-size=sm]{--adornment-icon-size:1rem;--adornment-button-size:1.5rem;--input-group-gap:var(--spacing-xs);--combobox-chip-size:1rem}.KAWYaW_control[data-size=md]{--adornment-icon-size:1.5rem;--adornment-button-size:2rem;--input-group-gap:var(--spacing-xs);--combobox-chip-size:1rem}.KAWYaW_control[data-size=lg]{--adornment-icon-size:2rem;--adornment-button-size:2.5rem;--input-group-gap:var(--spacing-sm);--combobox-chip-size:1rem}.KAWYaW_input-group{box-sizing:border-box;min-width:12rem;min-height:var(--field-control-height);border:1px solid var(--color-border-primary);background-color:var(--color-surface-base);border-radius:var(--field-control-radius);align-items:center;gap:var(--input-group-gap);padding:0 var(--spacing-sm);flex-wrap:wrap;flex:1;transition:border-color .2s ease-in-out;display:flex;position:relative}.KAWYaW_input-group:focus-within{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.KAWYaW_input{box-sizing:border-box;min-width:4rem;height:calc(var(--field-control-height) - 2px);font-family:var(--typography-typeface-ltr);font-size:var(--field-control-font-size);line-height:var(--field-control-line-height);font-weight:var(--field-control-font-weight);color:var(--field-control-text-color);background-color:#0000;border:none;border-radius:0;outline:none;flex:1;margin:0;padding:0}.KAWYaW_input::placeholder{color:var(--field-control-placeholder-color)}.KAWYaW_input:focus{outline:none}.KAWYaW_chips{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xxs) 0;flex-wrap:wrap;flex:1;display:flex}.KAWYaW_chip{--combobox-chip-bg:var(--color-surface-secondary);--combobox-chip-color:var(--color-content-brand-secondary);box-sizing:border-box;align-items:center;gap:var(--spacing-xxs);background-color:var(--combobox-chip-bg);color:var(--combobox-chip-color);border:1px solid var(--combobox-chip-color);padding:0 var(--spacing-sm);height:calc(var(--field-control-height) * .7);border-radius:var(--radius-full);font-size:var(--typography-caption-base-size);cursor:default;outline:none;display:flex}.KAWYaW_chip[data-highlighted]{background-color:var(--color-action-neutral-muted)}.KAWYaW_chip-text{white-space:nowrap;color:var(--combobox-chip-color)}.KAWYaW_chip-remove{color:var(--combobox-chip-color);background-color:var(--combobox-chip-bg);cursor:pointer;height:var(--combobox-chip-size);width:var(--combobox-chip-size);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background-color .1s;display:flex}.KAWYaW_chip-remove:hover{--combobox-chip-bg:var(--color-surface-tertiary)}.KAWYaW_action-buttons{box-sizing:border-box;align-items:center;gap:var(--spacing-xxs);padding-left:var(--spacing-sm);height:100%;margin-left:auto;display:flex}.KAWYaW_trigger,.KAWYaW_clear{box-sizing:border-box;width:var(--field-control-icon-size);height:var(--field-control-icon-size);color:var(--field-label-color);border-radius:var(--radius-full);background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .1s,background-color .1s;display:flex}.KAWYaW_trigger:hover,.KAWYaW_clear:hover{color:var(--color-content-neutral-base);background-color:var(--color-surface-secondary)}.KAWYaW_trigger:focus-visible,.KAWYaW_clear:focus-visible{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.KAWYaW_trigger[data-disabled],.KAWYaW_clear[data-disabled]{cursor:not-allowed;user-select:none}.KAWYaW_positioner{z-index:var(--zindex-1);outline:0}.KAWYaW_popup{box-sizing:border-box;background-color:var(--color-surface-base);color:var(--color-content-neutral-base);width:var(--anchor-width);max-width:var(--available-width);min-width:12rem;transform-origin:var(--transform-origin);border:1px solid var(--color-border-primary);transition:opacity .1s,transform .1s;overflow:hidden;box-shadow:0 4px 12px #0000001a}.KAWYaW_popup.KAWYaW_full-width{width:100%}.KAWYaW_popup[data-starting-style],.KAWYaW_popup[data-ending-style]{opacity:0;transform:scale(.95)}.KAWYaW_list{box-sizing:border-box;overscroll-behavior:contain;padding-block:var(--spacing-xs);scroll-padding-block:var(--spacing-xs);max-height:min(22.5rem, var(--available-height));outline:0;overflow-y:auto}.KAWYaW_list[data-empty]{padding:0}.KAWYaW_group{padding-block:var(--spacing-xs)}.KAWYaW_group-label{padding:var(--spacing-xxs) var(--spacing-md);font-size:var(--typography-caption-base-size);font-weight:var(--typography-subheading-2-weight);color:var(--color-content-neutral-muted);text-transform:uppercase;letter-spacing:.05em}.KAWYaW_item{box-sizing:border-box;cursor:default;user-select:none;padding-block:var(--spacing-sm);padding-left:var(--spacing-md);padding-right:var(--spacing-md);gap:var(--spacing-sm);font-size:var(--field-control-font-size);line-height:var(--field-control-line-height);font-weight:var(--field-control-font-weight);outline:0;grid-template-columns:1rem 1fr;align-items:center;transition:background-color .1s;display:grid;position:relative}.KAWYaW_item[data-highlighted]{background-color:var(--color-surface-secondary)}.KAWYaW_item[data-selected]{color:var(--color-content-brand-base);font-weight:var(--typography-subheading-2-weight)}.KAWYaW_item[data-disabled]{opacity:.5;cursor:not-allowed}.KAWYaW_item-indicator{grid-column-start:1;justify-content:center;align-items:center;display:flex}.KAWYaW_item-text{grid-column-start:2}.KAWYaW_empty{box-sizing:border-box;padding:var(--spacing-md);font-size:var(--field-control-font-size);color:var(--color-content-neutral-muted);text-align:center}
1
+ .KAWYaW_root{width:100%}.KAWYaW_control{--field-control-radius:var(--radius-md);--field-control-bg-color:var(--color-surface-base);--field-control-text-color:var(--color-content-neutral-base);--field-control-border-color:var(--color-border-secondary);--field-control-placeholder-color:var(--color-content-neutral-muted);--field-label-color:var(--color-content-neutral-secondary);align-items:center;gap:var(--spacing-xs);border-radius:999px;width:100%;display:flex;position:relative}.KAWYaW_control[data-size=sm]{--field-control-height:1.5rem;--field-control-icon-size:1.5rem;--field-control-font-size:var(--typography-caption-base-size);--field-control-line-height:var(--typography-caption-base-height);--field-control-font-weight:var(--typography-caption-base-weight);--adornment-icon-size:1rem;--adornment-button-size:1.5rem;--input-group-gap:var(--spacing-xs);--combobox-chip-size:1rem}.KAWYaW_control[data-size=md]{--field-control-height:2rem;--field-control-icon-size:2rem;--field-control-font-size:var(--typography-body-2-size);--field-control-line-height:var(--typography-body-2-height);--field-control-font-weight:var(--typography-body-2-weight);--adornment-icon-size:1.5rem;--adornment-button-size:2rem;--input-group-gap:var(--spacing-xs);--combobox-chip-size:1rem}.KAWYaW_control[data-size=lg]{--field-control-height:2.5rem;--field-control-icon-size:2rem;--field-control-font-size:var(--typography-body-1-size);--field-control-line-height:var(--typography-body-1-height);--field-control-font-weight:var(--typography-body-1-weight);--adornment-icon-size:2rem;--adornment-button-size:2.5rem;--input-group-gap:var(--spacing-sm);--combobox-chip-size:1rem}.KAWYaW_control[data-invalid]{--field-control-border-color:var(--color-content-negative-base);--field-control-text-color:var(--color-content-negative-base)}.KAWYaW_start-adornment,.KAWYaW_end-adornment{height:var(--field-control-icon-size);align-items:center;display:flex;& [data-slot=input-adornment-root]{&[data-kind=icon]{width:var(--adornment-icon-size);height:var(--adornment-icon-size);color:var(--field-label-color)}&[data-kind=button]{width:var(--adornment-button-size);height:var(--adornment-button-size);color:var(--field-label-color)}}}.KAWYaW_input-group{box-sizing:border-box;min-width:12rem;min-height:var(--field-control-height);border:1px solid var(--field-control-border-color);background-color:var(--field-control-bg-color);border-radius:var(--field-control-radius);align-items:center;gap:var(--input-group-gap);padding:0 var(--spacing-sm);flex-wrap:wrap;flex:1;transition:border-color .2s ease-in-out;display:flex;position:relative}.KAWYaW_input-group:focus-within{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.KAWYaW_input{box-sizing:border-box;min-width:4rem;height:calc(var(--field-control-height) - 2px);font-family:var(--typography-typeface-ltr);font-size:var(--field-control-font-size);line-height:var(--field-control-line-height);font-weight:var(--field-control-font-weight);color:var(--field-control-text-color);background-color:#0000;border:none;border-radius:0;outline:none;flex:1;margin:0;padding:0}.KAWYaW_input::placeholder{color:var(--field-control-placeholder-color)}.KAWYaW_input:focus{outline:none}.KAWYaW_chips{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xxs) 0;flex-wrap:wrap;flex:1;display:flex}.KAWYaW_chip{--combobox-chip-bg:var(--color-surface-tertiary);--combobox-chip-color:var(--color-content-neutral-base);box-sizing:border-box;align-items:center;gap:var(--spacing-xxs);background-color:var(--combobox-chip-bg);color:var(--combobox-chip-color);padding:0 var(--spacing-sm);height:calc(var(--field-control-height) * .7);border-radius:var(--radius-sm);font-size:var(--typography-caption-base-size);cursor:default;outline:none;display:flex}.KAWYaW_chip[data-highlighted]{background-color:var(--color-action-neutral-muted)}.KAWYaW_chip-text{white-space:nowrap;color:var(--combobox-chip-color)}.KAWYaW_chip-remove{color:var(--combobox-chip-color);background-color:var(--combobox-chip-bg);cursor:pointer;height:var(--combobox-chip-size);width:var(--combobox-chip-size);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background-color .1s;display:flex}.KAWYaW_chip-remove:hover{--combobox-chip-bg:var(--color-surface-tertiary)}.KAWYaW_action-buttons{box-sizing:border-box;align-items:center;gap:var(--spacing-xxs);padding-left:var(--spacing-sm);height:100%;margin-left:auto;display:flex}.KAWYaW_trigger,.KAWYaW_clear{box-sizing:border-box;width:var(--field-control-icon-size);height:var(--field-control-icon-size);color:var(--field-label-color);padding:var(--spacing-xxs);border-radius:var(--radius-full);background:0 0;border:none;justify-content:center;align-items:center;transition:color .1s,background-color .1s;display:flex}.KAWYaW_trigger:hover,.KAWYaW_clear:hover{color:var(--color-content-neutral-base);background-color:var(--color-surface-secondary)}.KAWYaW_trigger:focus-visible,.KAWYaW_clear:focus-visible{outline-style:solid;outline-width:var(--stroke-focus-ring);outline-color:var(--color-action-info-base);outline-offset:var(--spacing-xxs)}.KAWYaW_trigger[data-disabled],.KAWYaW_clear[data-disabled]{cursor:not-allowed;user-select:none}.KAWYaW_positioner{z-index:var(--zindex-1);outline:0}.KAWYaW_popup{box-sizing:border-box;background-color:var(--color-surface-base);color:var(--color-content-neutral-base);width:var(--anchor-width);max-width:var(--available-width);min-width:12rem;transform-origin:var(--transform-origin);border:1px solid var(--color-border-primary);transition:opacity .1s,transform .1s;overflow:hidden;box-shadow:0 4px 12px #0000001a}.KAWYaW_popup.KAWYaW_full-width{width:100%}.KAWYaW_popup[data-starting-style],.KAWYaW_popup[data-ending-style]{opacity:0;transform:scale(.95)}.KAWYaW_list{box-sizing:border-box;overscroll-behavior:contain;padding-block:var(--spacing-xs);scroll-padding-block:var(--spacing-xs);max-height:min(22.5rem, var(--available-height));outline:0;overflow-y:auto}.KAWYaW_list[data-empty]{padding:0}.KAWYaW_group{padding-block:var(--spacing-xs)}.KAWYaW_group-label{padding:var(--spacing-xxs) var(--spacing-md);font-size:var(--typography-caption-base-size);font-weight:var(--typography-subheading-2-weight);color:var(--color-content-neutral-muted);text-transform:uppercase;letter-spacing:.05em}.KAWYaW_item{box-sizing:border-box;cursor:default;user-select:none;padding-block:var(--spacing-sm);padding-left:var(--spacing-md);padding-right:var(--spacing-md);gap:var(--spacing-sm);outline:0;grid-template-columns:1rem 1fr;align-items:center;transition:background-color .1s;display:grid;position:relative}.KAWYaW_item[data-size=sm]{font-size:var(--typography-caption-base-size);line-height:var(--typography-caption-base-height);font-weight:var(--typography-caption-base-weight)}.KAWYaW_item[data-size=md]{font-size:var(--typography-body-2-size);line-height:var(--typography-body-2-height);font-weight:var(--typography-body-2-weight)}.KAWYaW_item[data-size=lg]{font-size:var(--typography-body-1-size);line-height:var(--typography-body-1-height);font-weight:var(--typography-body-1-weight)}.KAWYaW_item[data-highlighted]{background-color:var(--color-surface-secondary)}.KAWYaW_item[data-selected]{color:var(--color-content-brand-base);font-weight:var(--typography-subheading-2-weight)}.KAWYaW_item[data-disabled]{opacity:.5;cursor:not-allowed}.KAWYaW_item-indicator{visibility:hidden;grid-column-start:1;justify-content:center;align-items:center;display:flex}.KAWYaW_item[data-selected] .KAWYaW_item-indicator{visibility:visible}.KAWYaW_item-text{grid-column-start:2}.KAWYaW_empty{box-sizing:border-box;padding:var(--spacing-md);font-size:var(--field-control-font-size);color:var(--color-content-neutral-muted);text-align:center}
@@ -1,4 +1,3 @@
1
- import { FieldProps } from "../../internals/base-field/base-field.js";
2
1
  import { ComboboxItem } from "./components/item.js";
3
2
  import * as React$1 from "react";
4
3
  import { ComboboxRootProps } from "@base-ui/react/combobox";
@@ -16,7 +15,17 @@ interface ComboboxGroup {
16
15
  /**
17
16
  * Props for the Combobox component.
18
17
  */
19
- type ComboboxProps<T = string, Multiple extends boolean | undefined = false> = Pick<FieldProps, "label" | "hideLabel" | "name" | "required" | "description" | "invalid" | "errorText" | "dirty" | "size" | "disabled" | "autoFocus"> & ComboboxRootProps<T, Multiple> & {
18
+ type ComboboxProps<T = string, Multiple extends boolean | undefined = false> = ComboboxRootProps<T, Multiple> & {
19
+ /**
20
+ * The size of the combobox.
21
+ * @default "md"
22
+ */
23
+ size?: "sm" | "md" | "lg";
24
+ /**
25
+ * Whether the combobox is in an invalid state.
26
+ * @default false
27
+ */
28
+ invalid?: boolean;
20
29
  /**
21
30
  * Whether the combobox is clearable when a value is selected.
22
31
  * @default false
@@ -37,9 +46,6 @@ type ComboboxProps<T = string, Multiple extends boolean | undefined = false> = P
37
46
  */
38
47
  classNames?: {
39
48
  root?: string;
40
- label?: string;
41
- description?: string;
42
- error?: string;
43
49
  control?: string;
44
50
  inputGroup?: string;
45
51
  startAdornment?: string;
@@ -90,15 +96,10 @@ type ComboboxProps<T = string, Multiple extends boolean | undefined = false> = P
90
96
  * ```
91
97
  */
92
98
  declare const Combobox$1: <T = string, Multiple extends boolean | undefined = false>({
93
- label,
94
- description,
95
99
  fullWidthContents,
96
100
  invalid,
97
- errorText,
98
- hideLabel,
99
101
  clearable,
100
102
  searchable,
101
- required,
102
103
  size,
103
104
  readOnly,
104
105
  disabled,
@@ -1,2 +1,2 @@
1
- import{usePortalConfig as e}from"../../helpers/portal/context/hooks.js";import"../../helpers/portal/index.js";import{Icon as t}from"../icon/icon.js";import"../icon/index.js";import{Field as n}from"../../internals/base-field/base-field.js";import"../../internals/base-field/index.js";import r from"./combobox.module.js";import{Chip as i}from"./components/chip.js";import{ItemRow as a}from"./components/item.js";import o from"clsx";import"react";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";import{mdiChevronDown as u,mdiClose as d}from"@mdi/js";import{Combobox as f}from"@base-ui/react/combobox";const p=({label:p,description:m,fullWidthContents:h=!1,invalid:g=!1,errorText:_,hideLabel:v=!1,clearable:y=!1,searchable:b=!0,required:x=!1,size:S=`md`,readOnly:C=!1,disabled:w=!1,endAdornment:T,startAdornment:E,placeholder:D=`Select an option`,classNames:O,items:k,multiple:A,...j})=>{let{resolveContainer:M}=e(),N=M();return c(n,{label:p,hideLabel:v,size:S,disabled:w,required:x,errorText:_,invalid:g,description:m,classNames:{root:O?.root,label:O?.label,description:O?.description,error:O?.error},"data-slot":`combobox-root`,children:l(f.Root,{items:k,multiple:A,disabled:w,readOnly:C,...j,children:[c(`div`,{className:o(r.control,O?.control),"data-size":S,"data-slot":`combobox-control`,children:l(f.InputGroup,{className:o(r[`input-group`],O?.inputGroup),"data-slot":`combobox-input-group`,children:[E&&c(`div`,{className:o(r[`start-adornment`],O?.startAdornment),"data-slot":`combobox-start-adornment`,children:E}),A?c(f.Chips,{className:o(r.chips,O?.chips),"data-slot":`combobox-chips`,children:c(f.Value,{children:e=>l(s,{children:[e.map(e=>c(i,{item:e,classNames:{root:O?.chip,text:O?.chipText,remove:O?.chipRemove}},e.id)),c(f.Input,{className:o(r.input,O?.input),"data-slot":`combobox-input`,placeholder:e.length>0?``:D})]})})}):c(f.Input,{className:o(r.input,O?.input),"data-slot":`combobox-input`,placeholder:D}),l(`div`,{className:o(r[`action-buttons`],O?.actionButtons),"data-slot":`combobox-action-buttons`,children:[y&&c(f.Clear,{className:o(r.clear,O?.clear),"data-slot":`combobox-clear`,"aria-label":`Clear selection`,disabled:w,children:c(t,{data:d})}),c(f.Trigger,{className:o(r.trigger,O?.trigger),"data-slot":`combobox-trigger`,disabled:w,"aria-label":`Open dropdown`,children:c(t,{data:u})}),T&&c(`div`,{className:o(r[`end-adornment`],O?.endAdornment),"data-slot":`combobox-end-adornment`,children:T})]})]})}),c(f.Portal,{container:N,children:c(f.Positioner,{className:o(r.positioner,O?.positioner),"data-slot":`combobox-positioner`,sideOffset:4,children:l(f.Popup,{className:o(r.popup,O?.popup,{[r[`full-width`]]:h}),"data-slot":`combobox-popup`,children:[c(f.Empty,{children:c(`div`,{className:o(r.empty,O?.empty),"data-slot":`combobox-empty`,children:`No items found.`})}),c(f.List,{className:o(r.list,O?.list),"data-slot":`combobox-list`,children:e=>`items`in e?l(f.Group,{className:o(r.group,O?.group),items:e.items,"data-slot":`combobox-group`,children:[c(f.GroupLabel,{className:o(r[`group-label`],O?.groupLabel),"data-slot":`combobox-group-label`,children:e.label}),c(f.Collection,{children:e=>c(a,{className:O?.item,item:e},e.id)})]},e.label):c(a,{className:O?.item,item:e},e.id)})]})})})]})})};export{p as Combobox};
1
+ import{usePortalConfig as e}from"../../helpers/portal/context/hooks.js";import"../../helpers/portal/index.js";import{Icon as t}from"../icon/icon.js";import"../icon/index.js";import n from"./combobox.module.js";import{Chip as r}from"./components/chip.js";import{ItemRow as i}from"./components/item.js";import a from"clsx";import"react";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{mdiChevronDown as l,mdiClose as u}from"@mdi/js";import{Combobox as d}from"@base-ui/react/combobox";const f=({fullWidthContents:f=!1,invalid:p=!1,clearable:m=!1,searchable:h=!0,size:g=`md`,readOnly:_=!1,disabled:v=!1,endAdornment:y,startAdornment:b,placeholder:x=`Select an option`,classNames:S,items:C,multiple:w,...T})=>{let{resolveContainer:E}=e(),D=E();return s(`div`,{"data-slot":`combobox-root`,className:a(n.root,S?.root),children:c(d.Root,{items:C,multiple:w,disabled:v,readOnly:_,...T,children:[s(`div`,{className:a(n.control,S?.control),"data-size":g,"data-invalid":p||void 0,"data-slot":`combobox-control`,children:c(d.InputGroup,{className:a(n[`input-group`],S?.inputGroup),"data-slot":`combobox-input-group`,children:[b&&s(`div`,{className:a(n[`start-adornment`],S?.startAdornment),"data-slot":`combobox-start-adornment`,children:b}),w?s(d.Chips,{className:a(n.chips,S?.chips),"data-slot":`combobox-chips`,children:s(d.Value,{children:e=>c(o,{children:[e.map(e=>s(r,{item:e,classNames:{root:S?.chip,text:S?.chipText,remove:S?.chipRemove}},e.id)),s(d.Input,{className:a(n.input,S?.input),"data-slot":`combobox-input`,placeholder:e.length>0?``:x})]})})}):s(d.Input,{className:a(n.input,S?.input),"data-slot":`combobox-input`,placeholder:x}),c(`div`,{className:a(n[`action-buttons`],S?.actionButtons),"data-slot":`combobox-action-buttons`,children:[m&&s(d.Clear,{className:a(n.clear,S?.clear),"data-slot":`combobox-clear`,"aria-label":`Clear selection`,disabled:v,children:s(t,{data:u})}),s(d.Trigger,{className:a(n.trigger,S?.trigger),"data-slot":`combobox-trigger`,disabled:v,"aria-label":`Open dropdown`,children:s(t,{data:l})}),y&&s(`div`,{className:a(n[`end-adornment`],S?.endAdornment),"data-slot":`combobox-end-adornment`,children:y})]})]})}),s(d.Portal,{container:D,children:s(d.Positioner,{className:a(n.positioner,S?.positioner),"data-slot":`combobox-positioner`,sideOffset:4,children:c(d.Popup,{className:a(n.popup,S?.popup,{[n[`full-width`]]:f}),"data-slot":`combobox-popup`,children:[s(d.Empty,{children:s(`div`,{className:a(n.empty,S?.empty),"data-slot":`combobox-empty`,children:`No items found.`})}),s(d.List,{className:a(n.list,S?.list),"data-slot":`combobox-list`,children:e=>`items`in e?c(d.Group,{className:a(n.group,S?.group),items:e.items,"data-slot":`combobox-group`,children:[s(d.GroupLabel,{className:a(n[`group-label`],S?.groupLabel),"data-slot":`combobox-group-label`,children:e.label}),s(d.Collection,{children:e=>s(i,{className:S?.item,item:e,size:g},e.id)})]},e.label):s(i,{className:S?.item,item:e,size:g},e.id)})]})})})]})})};export{f as Combobox};
2
2
  //# sourceMappingURL=combobox.js.map