@brijbyte/agentic-ui 0.0.2 → 0.0.4

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 (227) hide show
  1. package/README.md +132 -35
  2. package/dist/accordion/accordion.d.ts +15 -1
  3. package/dist/accordion/accordion.d.ts.map +1 -1
  4. package/dist/accordion/accordion.js +6 -1
  5. package/dist/accordion/accordion.js.map +1 -1
  6. package/dist/accordion/parts.d.ts +1 -1
  7. package/dist/accordion/parts.js +2 -2
  8. package/dist/alert-dialog/alert-dialog.d.ts +12 -1
  9. package/dist/alert-dialog/alert-dialog.d.ts.map +1 -1
  10. package/dist/alert-dialog/alert-dialog.js +6 -1
  11. package/dist/alert-dialog/alert-dialog.js.map +1 -1
  12. package/dist/alert-dialog/parts.d.ts +1 -1
  13. package/dist/alert-dialog/parts.js +2 -2
  14. package/dist/badge/badge.d.ts +7 -1
  15. package/dist/badge/badge.d.ts.map +1 -1
  16. package/dist/badge/badge.js +4 -0
  17. package/dist/badge/badge.js.map +1 -1
  18. package/dist/button/button.css +22 -8
  19. package/dist/button/button.d.ts +19 -8
  20. package/dist/button/button.d.ts.map +1 -1
  21. package/dist/button/button.js +6 -1
  22. package/dist/button/button.js.map +1 -1
  23. package/dist/button/button.module.js.map +1 -1
  24. package/dist/card/card.d.ts +11 -1
  25. package/dist/card/card.d.ts.map +1 -1
  26. package/dist/card/card.js +7 -0
  27. package/dist/card/card.js.map +1 -1
  28. package/dist/checkbox/checkbox.d.ts +14 -1
  29. package/dist/checkbox/checkbox.d.ts.map +1 -1
  30. package/dist/checkbox/checkbox.js +5 -1
  31. package/dist/checkbox/checkbox.js.map +1 -1
  32. package/dist/checkbox/parts.js +1 -1
  33. package/dist/collapsible/collapsible.d.ts +12 -1
  34. package/dist/collapsible/collapsible.d.ts.map +1 -1
  35. package/dist/collapsible/collapsible.js +5 -0
  36. package/dist/collapsible/collapsible.js.map +1 -1
  37. package/dist/collapsible/parts.js +1 -1
  38. package/dist/context-menu/context-menu.d.ts +6 -1
  39. package/dist/context-menu/context-menu.d.ts.map +1 -1
  40. package/dist/context-menu/context-menu.js +4 -0
  41. package/dist/context-menu/context-menu.js.map +1 -1
  42. package/dist/context-menu/parts.js +1 -1
  43. package/dist/dialog/dialog.d.ts +14 -2
  44. package/dist/dialog/dialog.d.ts.map +1 -1
  45. package/dist/dialog/dialog.js +6 -0
  46. package/dist/dialog/dialog.js.map +1 -1
  47. package/dist/dialog/parts.js +1 -1
  48. package/dist/drawer/drawer.d.ts +12 -1
  49. package/dist/drawer/drawer.d.ts.map +1 -1
  50. package/dist/drawer/drawer.js +5 -0
  51. package/dist/drawer/drawer.js.map +1 -1
  52. package/dist/drawer/parts.d.ts +1 -1
  53. package/dist/drawer/parts.js +1 -1
  54. package/dist/index.css +1773 -1316
  55. package/dist/index.d.ts +29 -20
  56. package/dist/index.js +50 -37
  57. package/dist/input/input.d.ts +8 -0
  58. package/dist/input/input.d.ts.map +1 -1
  59. package/dist/input/input.js +6 -1
  60. package/dist/input/input.js.map +1 -1
  61. package/dist/menu/menu.css +3 -8
  62. package/dist/menu/menu.d.ts +12 -5
  63. package/dist/menu/menu.d.ts.map +1 -1
  64. package/dist/menu/menu.js +10 -24
  65. package/dist/menu/menu.js.map +1 -1
  66. package/dist/menu/menu.module.js +1 -1
  67. package/dist/menu/menu.module.js.map +1 -1
  68. package/dist/menu/menuitemshortcut.js +1 -1
  69. package/dist/menu/parts.js +1 -1
  70. package/dist/meter/circular-meter.d.ts +48 -0
  71. package/dist/meter/circular-meter.d.ts.map +1 -0
  72. package/dist/meter/circular-meter.js +86 -0
  73. package/dist/meter/circular-meter.js.map +1 -0
  74. package/dist/meter/index.d.ts +4 -0
  75. package/dist/meter/index.js +5 -0
  76. package/dist/meter/meter.css +152 -0
  77. package/dist/meter/meter.d.ts +58 -0
  78. package/dist/meter/meter.d.ts.map +1 -0
  79. package/dist/meter/meter.js +50 -0
  80. package/dist/meter/meter.js.map +1 -0
  81. package/dist/meter/meter.module.css.d.ts +2 -0
  82. package/dist/meter/meter.module.js +27 -0
  83. package/dist/meter/meter.module.js.map +1 -0
  84. package/dist/meter/meterState.js +18 -0
  85. package/dist/meter/meterState.js.map +1 -0
  86. package/dist/meter/parts.d.ts +31 -0
  87. package/dist/meter/parts.d.ts.map +1 -0
  88. package/dist/meter/parts.js +56 -0
  89. package/dist/meter/parts.js.map +1 -0
  90. package/dist/number-field/number-field.d.ts +17 -1
  91. package/dist/number-field/number-field.d.ts.map +1 -1
  92. package/dist/number-field/number-field.js +5 -1
  93. package/dist/number-field/number-field.js.map +1 -1
  94. package/dist/number-field/parts.js +1 -1
  95. package/dist/popover/index.d.ts +3 -0
  96. package/dist/popover/index.js +4 -0
  97. package/dist/popover/parts.d.ts +43 -0
  98. package/dist/popover/parts.d.ts.map +1 -0
  99. package/dist/popover/parts.js +96 -0
  100. package/dist/popover/parts.js.map +1 -0
  101. package/dist/popover/popover.css +173 -0
  102. package/dist/popover/popover.d.ts +49 -0
  103. package/dist/popover/popover.d.ts.map +1 -0
  104. package/dist/popover/popover.js +68 -0
  105. package/dist/popover/popover.js.map +1 -0
  106. package/dist/popover/popover.module.css.d.ts +2 -0
  107. package/dist/popover/popover.module.js +16 -0
  108. package/dist/popover/popover.module.js.map +1 -0
  109. package/dist/progress/parts.js +1 -1
  110. package/dist/progress/progress.d.ts +11 -0
  111. package/dist/progress/progress.d.ts.map +1 -1
  112. package/dist/progress/progress.js +5 -0
  113. package/dist/progress/progress.js.map +1 -1
  114. package/dist/radio/index.d.ts +3 -0
  115. package/dist/radio/index.js +4 -0
  116. package/dist/radio/parts.d.ts +18 -0
  117. package/dist/radio/parts.d.ts.map +1 -0
  118. package/dist/radio/parts.js +42 -0
  119. package/dist/radio/parts.js.map +1 -0
  120. package/dist/radio/radio.css +84 -0
  121. package/dist/radio/radio.d.ts +31 -0
  122. package/dist/radio/radio.d.ts.map +1 -0
  123. package/dist/radio/radio.js +33 -0
  124. package/dist/radio/radio.js.map +1 -0
  125. package/dist/radio/radio.module.css.d.ts +2 -0
  126. package/dist/radio/radio.module.js +11 -0
  127. package/dist/radio/radio.module.js.map +1 -0
  128. package/dist/radio-group/index.d.ts +3 -0
  129. package/dist/radio-group/index.js +4 -0
  130. package/dist/radio-group/parts.d.ts +13 -0
  131. package/dist/radio-group/parts.d.ts.map +1 -0
  132. package/dist/radio-group/parts.js +31 -0
  133. package/dist/radio-group/parts.js.map +1 -0
  134. package/dist/radio-group/radio-group.css +17 -0
  135. package/dist/radio-group/radio-group.d.ts +37 -0
  136. package/dist/radio-group/radio-group.d.ts.map +1 -0
  137. package/dist/radio-group/radio-group.js +28 -0
  138. package/dist/radio-group/radio-group.js.map +1 -0
  139. package/dist/radio-group/radio-group.module.css.d.ts +2 -0
  140. package/dist/radio-group/radio-group.module.js +9 -0
  141. package/dist/radio-group/radio-group.module.js.map +1 -0
  142. package/dist/select/parts.js +1 -1
  143. package/dist/select/select.d.ts +15 -2
  144. package/dist/select/select.d.ts.map +1 -1
  145. package/dist/select/select.js +5 -1
  146. package/dist/select/select.js.map +1 -1
  147. package/dist/separator/separator.d.ts +4 -0
  148. package/dist/separator/separator.d.ts.map +1 -1
  149. package/dist/separator/separator.js +5 -1
  150. package/dist/separator/separator.js.map +1 -1
  151. package/dist/shared/PopupArrow.js +22 -0
  152. package/dist/shared/PopupArrow.js.map +1 -0
  153. package/dist/slider/parts.js +1 -1
  154. package/dist/slider/slider.d.ts +19 -1
  155. package/dist/slider/slider.d.ts.map +1 -1
  156. package/dist/slider/slider.js +6 -0
  157. package/dist/slider/slider.js.map +1 -1
  158. package/dist/styles/tokens.css +21 -8
  159. package/dist/switch/parts.js +1 -1
  160. package/dist/switch/switch.css +11 -2
  161. package/dist/switch/switch.d.ts +13 -1
  162. package/dist/switch/switch.d.ts.map +1 -1
  163. package/dist/switch/switch.js +5 -1
  164. package/dist/switch/switch.js.map +1 -1
  165. package/dist/switch/switch.module.js.map +1 -1
  166. package/dist/tabs/parts.js +1 -1
  167. package/dist/tabs/tabs.d.ts +9 -2
  168. package/dist/tabs/tabs.d.ts.map +1 -1
  169. package/dist/tabs/tabs.js +4 -0
  170. package/dist/tabs/tabs.js.map +1 -1
  171. package/dist/toast/parts.js +1 -1
  172. package/dist/toast/toast.d.ts +12 -1
  173. package/dist/toast/toast.d.ts.map +1 -1
  174. package/dist/toast/toast.js +8 -0
  175. package/dist/toast/toast.js.map +1 -1
  176. package/dist/tokens.css +23 -11
  177. package/dist/tooltip/parts.js +1 -1
  178. package/dist/tooltip/tooltip.d.ts +10 -1
  179. package/dist/tooltip/tooltip.d.ts.map +1 -1
  180. package/dist/tooltip/tooltip.js +4 -0
  181. package/dist/tooltip/tooltip.js.map +1 -1
  182. package/package.json +23 -2
  183. package/src/accordion/accordion.tsx +14 -0
  184. package/src/alert-dialog/alert-dialog.tsx +11 -0
  185. package/src/badge/badge.tsx +6 -0
  186. package/src/button/button.module.css +29 -13
  187. package/src/button/button.tsx +19 -8
  188. package/src/card/card.tsx +10 -0
  189. package/src/checkbox/checkbox.tsx +13 -0
  190. package/src/collapsible/collapsible.tsx +11 -0
  191. package/src/context-menu/context-menu.tsx +5 -0
  192. package/src/dialog/dialog.tsx +13 -1
  193. package/src/drawer/drawer.tsx +11 -0
  194. package/src/index.ts +25 -233
  195. package/src/input/input.tsx +8 -0
  196. package/src/menu/menu.module.css +3 -10
  197. package/src/menu/menu.tsx +13 -26
  198. package/src/meter/circular-meter.tsx +114 -0
  199. package/src/meter/index.ts +9 -0
  200. package/src/meter/meter.module.css +162 -0
  201. package/src/meter/meter.tsx +86 -0
  202. package/src/meter/meterState.ts +29 -0
  203. package/src/meter/parts.tsx +72 -0
  204. package/src/number-field/number-field.tsx +16 -0
  205. package/src/popover/index.ts +14 -0
  206. package/src/popover/parts.tsx +120 -0
  207. package/src/popover/popover.module.css +189 -0
  208. package/src/popover/popover.tsx +80 -0
  209. package/src/progress/progress.tsx +11 -0
  210. package/src/radio/index.ts +6 -0
  211. package/src/radio/parts.tsx +43 -0
  212. package/src/radio/radio.module.css +96 -0
  213. package/src/radio/radio.tsx +37 -0
  214. package/src/radio-group/index.ts +5 -0
  215. package/src/radio-group/parts.tsx +32 -0
  216. package/src/radio-group/radio-group.module.css +17 -0
  217. package/src/radio-group/radio-group.tsx +63 -0
  218. package/src/select/select.tsx +14 -1
  219. package/src/separator/separator.tsx +4 -0
  220. package/src/shared/PopupArrow.tsx +41 -0
  221. package/src/slider/slider.tsx +18 -0
  222. package/src/styles/tokens.css +23 -11
  223. package/src/switch/switch.module.css +11 -2
  224. package/src/switch/switch.tsx +12 -0
  225. package/src/tabs/tabs.tsx +8 -1
  226. package/src/toast/toast.tsx +11 -0
  227. package/src/tooltip/tooltip.tsx +9 -0
@@ -0,0 +1,18 @@
1
+ import * as react from "react";
2
+ import { ComponentPropsWithoutRef } from "react";
3
+ import { Radio } from "@base-ui/react/radio";
4
+
5
+ //#region src/radio/parts.d.ts
6
+ type BaseRootProps = ComponentPropsWithoutRef<typeof Radio.Root>;
7
+ type BaseIndicatorProps = ComponentPropsWithoutRef<typeof Radio.Indicator>;
8
+ interface RadioRootProps extends Omit<BaseRootProps, "className"> {
9
+ className?: string;
10
+ }
11
+ interface RadioIndicatorProps extends Omit<BaseIndicatorProps, "className"> {
12
+ className?: string;
13
+ }
14
+ declare const RadioRoot: react.ForwardRefExoticComponent<RadioRootProps & react.RefAttributes<HTMLSpanElement>>;
15
+ declare const RadioIndicator: react.ForwardRefExoticComponent<RadioIndicatorProps & react.RefAttributes<HTMLSpanElement>>;
16
+ //#endregion
17
+ export { RadioIndicator, RadioIndicatorProps, RadioRoot, RadioRootProps };
18
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/radio/parts.tsx"],"mappings":";;;;;KAuBK,aAAA,GAAgB,wBAAA,QAAgC,KAAA,CAAU,IAAA;AAAA,KAC1D,kBAAA,GAAqB,wBAAA,QAAgC,KAAA,CAAU,SAAA;AAAA,UAEnD,cAAA,SAAuB,IAAA,CAAK,aAAA;EAC3C,SAAA;AAAA;AAAA,UAEe,mBAAA,SAA4B,IAAA,CAAK,kBAAA;EAChD,SAAA;AAAA;AAAA,cAGW,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,eAAA;AAAA,cAIT,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,mBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,eAAA"}
@@ -0,0 +1,42 @@
1
+ import radio_module_default from "./radio.module.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
+ import { Radio } from "@base-ui/react/radio";
5
+ //#region src/radio/parts.tsx
6
+ /**
7
+ * Styled primitives for Radio (single item).
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * import { RadioGroup } from '@base-ui/react/radio-group';
12
+ * import { RadioRoot, RadioIndicator } from '@brijbyte/agentic-ui/radio';
13
+ *
14
+ * <RadioGroup defaultValue="a">
15
+ * <label htmlFor="opt-a">
16
+ * <RadioRoot id="opt-a" value="a">
17
+ * <RadioIndicator />
18
+ * </RadioRoot>
19
+ * Option A
20
+ * </label>
21
+ * </RadioGroup>
22
+ * ```
23
+ */
24
+ const RadioRoot = forwardRef(function RadioRoot({ className, ...props }, ref) {
25
+ return /* @__PURE__ */ jsx(Radio.Root, {
26
+ ref,
27
+ className: `${radio_module_default.radio} ${className ?? ""}`,
28
+ ...props
29
+ });
30
+ });
31
+ const RadioIndicator = forwardRef(function RadioIndicator({ className, ...props }, ref) {
32
+ return /* @__PURE__ */ jsx(Radio.Indicator, {
33
+ ref,
34
+ keepMounted: true,
35
+ className: `${radio_module_default.indicator} ${className ?? ""}`,
36
+ ...props
37
+ });
38
+ });
39
+ //#endregion
40
+ export { RadioIndicator, RadioRoot };
41
+
42
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","names":["BaseRadio","styles"],"sources":["../../src/radio/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Radio (single item).\n *\n * @example\n * ```tsx\n * import { RadioGroup } from '@base-ui/react/radio-group';\n * import { RadioRoot, RadioIndicator } from '@brijbyte/agentic-ui/radio';\n *\n * <RadioGroup defaultValue=\"a\">\n * <label htmlFor=\"opt-a\">\n * <RadioRoot id=\"opt-a\" value=\"a\">\n * <RadioIndicator />\n * </RadioRoot>\n * Option A\n * </label>\n * </RadioGroup>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport styles from \"./radio.module.css\";\n\ntype BaseRootProps = ComponentPropsWithoutRef<typeof BaseRadio.Root>;\ntype BaseIndicatorProps = ComponentPropsWithoutRef<typeof BaseRadio.Indicator>;\n\nexport interface RadioRootProps extends Omit<BaseRootProps, \"className\"> {\n className?: string;\n}\nexport interface RadioIndicatorProps extends Omit<BaseIndicatorProps, \"className\"> {\n className?: string;\n}\n\nexport const RadioRoot = forwardRef<ComponentRef<typeof BaseRadio.Root>, RadioRootProps>(function RadioRoot({ className, ...props }, ref) {\n return <BaseRadio.Root ref={ref} className={`${styles.radio} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const RadioIndicator = forwardRef<ComponentRef<typeof BaseRadio.Indicator>, RadioIndicatorProps>(function RadioIndicator(\n { className, ...props },\n ref,\n) {\n return <BaseRadio.Indicator ref={ref} keepMounted className={`${styles.indicator} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAa,YAAY,WAAgE,SAAS,UAAU,EAAE,WAAW,GAAG,SAAS,KAAK;AACxI,QAAO,oBAACA,MAAU,MAAX;EAAqB;EAAK,WAAW,GAAGC,qBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC/F;AAEF,MAAa,iBAAiB,WAA0E,SAAS,eAC/G,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,WAAX;EAA0B;EAAK,aAAA;EAAY,WAAW,GAAGC,qBAAO,UAAU,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACpH"}
@@ -0,0 +1,84 @@
1
+ @layer components {
2
+ .item_hqwDuG {
3
+ align-items: center;
4
+ gap: var(--space-2);
5
+ cursor: pointer;
6
+ user-select: none;
7
+ display: flex;
8
+ }
9
+
10
+ .item_hqwDuG:has([data-disabled]) {
11
+ cursor: not-allowed;
12
+ }
13
+
14
+ .item_hqwDuG:has([data-disabled]) .label_hqwDuG {
15
+ opacity: .44;
16
+ }
17
+
18
+ .radio_hqwDuG {
19
+ border-radius: var(--radius-full);
20
+ border: var(--border-width-base) solid var(--color-line-strong);
21
+ background-color: var(--color-surface-1);
22
+ width: 16px;
23
+ height: 16px;
24
+ transition: background-color var(--duration-fast) var(--easing-standard),
25
+ border-color var(--duration-fast) var(--easing-standard),
26
+ box-shadow var(--duration-fast) var(--easing-standard);
27
+ outline: none;
28
+ flex-shrink: 0;
29
+ justify-content: center;
30
+ align-items: center;
31
+ margin: 0;
32
+ padding: 0;
33
+ display: flex;
34
+ position: relative;
35
+ }
36
+
37
+ .radio_hqwDuG:focus-visible {
38
+ box-shadow: var(--shadow-focus);
39
+ border-color: var(--color-accent);
40
+ }
41
+
42
+ .radio_hqwDuG:hover:not([data-disabled]) {
43
+ border-color: var(--color-accent);
44
+ }
45
+
46
+ .radio_hqwDuG[data-checked] {
47
+ background-color: var(--color-accent);
48
+ border-color: var(--color-accent);
49
+ }
50
+
51
+ .radio_hqwDuG[data-checked]:hover:not([data-disabled]) {
52
+ background-color: var(--color-accent-hover);
53
+ border-color: var(--color-accent-hover);
54
+ }
55
+
56
+ .radio_hqwDuG[data-disabled] {
57
+ opacity: .44;
58
+ cursor: not-allowed;
59
+ pointer-events: none;
60
+ }
61
+
62
+ .indicator_hqwDuG {
63
+ border-radius: var(--radius-full);
64
+ background-color: var(--color-on-accent);
65
+ width: 6px;
66
+ height: 6px;
67
+ transition: transform var(--duration-fast) var(--easing-spring),
68
+ opacity var(--duration-fast) var(--easing-standard);
69
+ opacity: 0;
70
+ transform: scale(0);
71
+ }
72
+
73
+ .radio_hqwDuG[data-checked] .indicator_hqwDuG {
74
+ opacity: 1;
75
+ transform: scale(1);
76
+ }
77
+
78
+ .label_hqwDuG {
79
+ font-family: var(--font-mono);
80
+ font-size: var(--font-size-sm);
81
+ color: var(--color-primary);
82
+ line-height: var(--line-height-normal);
83
+ }
84
+ }
@@ -0,0 +1,31 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
+ import styles from "./radio.module.css";
4
+
5
+ //#region src/radio/radio.d.ts
6
+ interface RadioProps {
7
+ /** Value submitted with the form and matched against the group's value. */
8
+ value: string;
9
+ /** Label rendered next to the button. */
10
+ children?: ReactNode;
11
+ disabled?: boolean;
12
+ readOnly?: boolean;
13
+ required?: boolean;
14
+ /** Override the auto-generated element id. */
15
+ id?: string;
16
+ className?: string;
17
+ }
18
+ /**
19
+ * A single radio button with an optional label.
20
+ * Must be placed inside `<RadioGroup>` or a raw base-ui RadioGroup.
21
+ */
22
+ declare function Radio({
23
+ value,
24
+ children,
25
+ id,
26
+ className,
27
+ ...props
28
+ }: RadioProps): react_jsx_runtime0.JSX.Element;
29
+ //#endregion
30
+ export { Radio, RadioProps, styles };
31
+ //# sourceMappingURL=radio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.d.ts","names":[],"sources":["../../src/radio/radio.tsx"],"mappings":";;;;;UAKiB,UAAA;;EAEf,KAAA;EAFe;EAIf,QAAA,GAAW,SAAA;EACX,QAAA;EACA,QAAA;EACA,QAAA;EAHA;EAKA,EAAA;EACA,SAAA;AAAA;;;;;iBAOc,KAAA,CAAA;EAAQ,KAAA;EAAO,QAAA;EAAU,EAAA;EAAI,SAAA;EAAA,GAAc;AAAA,GAAS,UAAA,GAAU,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,33 @@
1
+ import radio_module_default from "./radio.module.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useId } from "react";
4
+ import { Radio } from "@base-ui/react/radio";
5
+ //#region src/radio/radio.tsx
6
+ /**
7
+ * A single radio button with an optional label.
8
+ * Must be placed inside `<RadioGroup>` or a raw base-ui RadioGroup.
9
+ */
10
+ function Radio$1({ value, children, id, className, ...props }) {
11
+ const radioId = id ?? useId();
12
+ return /* @__PURE__ */ jsxs("label", {
13
+ className: `${radio_module_default.item} ${className ?? ""}`,
14
+ htmlFor: radioId,
15
+ children: [/* @__PURE__ */ jsx(Radio.Root, {
16
+ id: radioId,
17
+ value,
18
+ className: radio_module_default.radio,
19
+ ...props,
20
+ children: /* @__PURE__ */ jsx(Radio.Indicator, {
21
+ keepMounted: true,
22
+ className: radio_module_default.indicator
23
+ })
24
+ }), children && /* @__PURE__ */ jsx("span", {
25
+ className: radio_module_default.label,
26
+ children
27
+ })]
28
+ });
29
+ }
30
+ //#endregion
31
+ export { Radio$1 as Radio };
32
+
33
+ //# sourceMappingURL=radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.js","names":["Radio","styles","BaseRadio"],"sources":["../../src/radio/radio.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport styles from \"./radio.module.css\";\n\nexport interface RadioProps {\n /** Value submitted with the form and matched against the group's value. */\n value: string;\n /** Label rendered next to the button. */\n children?: ReactNode;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n /** Override the auto-generated element id. */\n id?: string;\n className?: string;\n}\n\n/**\n * A single radio button with an optional label.\n * Must be placed inside `<RadioGroup>` or a raw base-ui RadioGroup.\n */\nexport function Radio({ value, children, id, className, ...props }: RadioProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const radioId = id ?? useId();\n\n return (\n <label className={`${styles.item} ${className ?? \"\"}`} htmlFor={radioId}>\n <BaseRadio.Root id={radioId} value={value} className={styles.radio} {...props}>\n <BaseRadio.Indicator keepMounted className={styles.indicator} />\n </BaseRadio.Root>\n {children && <span className={styles.label}>{children}</span>}\n </label>\n );\n}\n\nexport { styles as RadioStyles };\n"],"mappings":";;;;;;;;;AAsBA,SAAgBA,QAAM,EAAE,OAAO,UAAU,IAAI,WAAW,GAAG,SAAqB;CAE9E,MAAM,UAAU,MAAM,OAAO;AAE7B,QACE,qBAAC,SAAD;EAAO,WAAW,GAAGC,qBAAO,KAAK,GAAG,aAAa;EAAM,SAAS;YAAhE,CACE,oBAACC,MAAU,MAAX;GAAgB,IAAI;GAAgB;GAAO,WAAWD,qBAAO;GAAO,GAAI;aACtE,oBAACC,MAAU,WAAX;IAAqB,aAAA;IAAY,WAAWD,qBAAO;IAAa,CAAA;GACjD,CAAA,EAChB,YAAY,oBAAC,QAAD;GAAM,WAAWA,qBAAO;GAAQ;GAAgB,CAAA,CACvD"}
@@ -0,0 +1,2 @@
1
+ declare const styles: Record<string, string | undefined>;
2
+ export default styles;
@@ -0,0 +1,11 @@
1
+ //#region src/radio/radio.module.css
2
+ var radio_module_default = {
3
+ "indicator": "indicator_hqwDuG",
4
+ "item": "item_hqwDuG",
5
+ "label": "label_hqwDuG",
6
+ "radio": "radio_hqwDuG"
7
+ };
8
+ //#endregion
9
+ export { radio_module_default as default };
10
+
11
+ //# sourceMappingURL=radio.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.module.js","names":[],"sources":["../../src/radio/radio.module.css"],"sourcesContent":["@layer components {\n /* ── Single radio item layout ───────────────────────────────────── */\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n cursor: pointer;\n user-select: none;\n }\n\n .item:has([data-disabled]) {\n cursor: not-allowed;\n }\n\n .item:has([data-disabled]) .label {\n opacity: 0.44;\n }\n\n /* ── Radio button (the circle) ──────────────────────────────────── */\n\n .radio {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border-radius: var(--radius-full);\n border: var(--border-width-base) solid var(--color-line-strong);\n background-color: var(--color-surface-1);\n display: flex;\n align-items: center;\n justify-content: center;\n transition:\n background-color var(--duration-fast) var(--easing-standard),\n border-color var(--duration-fast) var(--easing-standard),\n box-shadow var(--duration-fast) var(--easing-standard);\n outline: none;\n position: relative;\n /* Reset button/span defaults */\n padding: 0;\n margin: 0;\n }\n\n .radio:focus-visible {\n box-shadow: var(--shadow-focus);\n border-color: var(--color-accent);\n }\n\n .radio:hover:not([data-disabled]) {\n border-color: var(--color-accent);\n }\n\n .radio[data-checked] {\n background-color: var(--color-accent);\n border-color: var(--color-accent);\n }\n\n .radio[data-checked]:hover:not([data-disabled]) {\n background-color: var(--color-accent-hover);\n border-color: var(--color-accent-hover);\n }\n\n .radio[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n /* ── Indicator (inner dot) ──────────────────────────────────────── */\n\n .indicator {\n width: 6px;\n height: 6px;\n border-radius: var(--radius-full);\n background-color: var(--color-on-accent);\n transform: scale(0);\n transition:\n transform var(--duration-fast) var(--easing-spring),\n opacity var(--duration-fast) var(--easing-standard);\n opacity: 0;\n }\n\n /* data-checked is on the Root; the Indicator inherits it */\n .radio[data-checked] .indicator {\n transform: scale(1);\n opacity: 1;\n }\n\n /* ── Label text ─────────────────────────────────────────────────── */\n\n .label {\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n color: var(--color-primary);\n line-height: var(--line-height-normal);\n }\n}\n"],"mappings":";AAQA,IAAA,uBAAe;CAAC,aAAK;CAAA,QAAA;CAAA,SAAA;CAAA,SAAA;CAAA"}
@@ -0,0 +1,3 @@
1
+ import { RadioGroup, RadioGroupProps, RadioOption, styles } from "./radio-group.js";
2
+ import { RadioGroupRoot, RadioGroupRootProps } from "./parts.js";
3
+ export { RadioGroup, type RadioGroupProps, RadioGroupRoot, type RadioGroupRootProps, styles as RadioGroupStyles, type RadioOption };
@@ -0,0 +1,4 @@
1
+ import radio_group_module_default from "./radio-group.module.js";
2
+ import { RadioGroup } from "./radio-group.js";
3
+ import { RadioGroupRoot } from "./parts.js";
4
+ export { RadioGroup, RadioGroupRoot, radio_group_module_default as RadioGroupStyles };
@@ -0,0 +1,13 @@
1
+ import * as react from "react";
2
+ import { ComponentPropsWithoutRef } from "react";
3
+ import { RadioGroup } from "@base-ui/react/radio-group";
4
+
5
+ //#region src/radio-group/parts.d.ts
6
+ type BaseGroupProps = ComponentPropsWithoutRef<typeof RadioGroup>;
7
+ interface RadioGroupRootProps extends Omit<BaseGroupProps, "className"> {
8
+ className?: string;
9
+ }
10
+ declare const RadioGroupRoot: react.ForwardRefExoticComponent<RadioGroupRootProps & react.RefAttributes<HTMLDivElement>>;
11
+ //#endregion
12
+ export { RadioGroupRoot, RadioGroupRootProps };
13
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/radio-group/parts.tsx"],"mappings":";;;;;KAoBK,cAAA,GAAiB,wBAAA,QAAgC,UAAA;AAAA,UAErC,mBAAA,SAA4B,IAAA,CAAK,cAAA;EAChD,SAAA;AAAA;AAAA,cAGW,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,mBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -0,0 +1,31 @@
1
+ import radio_group_module_default from "./radio-group.module.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
+ import { RadioGroup } from "@base-ui/react/radio-group";
5
+ //#region src/radio-group/parts.tsx
6
+ /**
7
+ * Styled primitive for RadioGroup.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * import { Radio } from '@brijbyte/agentic-ui/radio';
12
+ * import { RadioGroupRoot } from '@brijbyte/agentic-ui/radio-group';
13
+ *
14
+ * <RadioGroupRoot defaultValue="b" name="plan">
15
+ * <Radio value="a">Hobby</Radio>
16
+ * <Radio value="b">Pro</Radio>
17
+ * <Radio value="c">Enterprise</Radio>
18
+ * </RadioGroupRoot>
19
+ * ```
20
+ */
21
+ const RadioGroupRoot = forwardRef(function RadioGroupRoot({ className, ...props }, ref) {
22
+ return /* @__PURE__ */ jsx(RadioGroup, {
23
+ ref,
24
+ className: `${radio_group_module_default.group} ${className ?? ""}`,
25
+ ...props
26
+ });
27
+ });
28
+ //#endregion
29
+ export { RadioGroupRoot };
30
+
31
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","names":["BaseRadioGroup","styles"],"sources":["../../src/radio-group/parts.tsx"],"sourcesContent":["/**\n * Styled primitive for RadioGroup.\n *\n * @example\n * ```tsx\n * import { Radio } from '@brijbyte/agentic-ui/radio';\n * import { RadioGroupRoot } from '@brijbyte/agentic-ui/radio-group';\n *\n * <RadioGroupRoot defaultValue=\"b\" name=\"plan\">\n * <Radio value=\"a\">Hobby</Radio>\n * <Radio value=\"b\">Pro</Radio>\n * <Radio value=\"c\">Enterprise</Radio>\n * </RadioGroupRoot>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport styles from \"./radio-group.module.css\";\n\ntype BaseGroupProps = ComponentPropsWithoutRef<typeof BaseRadioGroup>;\n\nexport interface RadioGroupRootProps extends Omit<BaseGroupProps, \"className\"> {\n className?: string;\n}\n\nexport const RadioGroupRoot = forwardRef<ComponentRef<typeof BaseRadioGroup>, RadioGroupRootProps>(function RadioGroupRoot(\n { className, ...props },\n ref,\n) {\n return <BaseRadioGroup ref={ref} className={`${styles.group} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,MAAa,iBAAiB,WAAqE,SAAS,eAC1G,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,YAAD;EAAqB;EAAK,WAAW,GAAGC,2BAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC/F"}
@@ -0,0 +1,17 @@
1
+ @layer components {
2
+ .group_Ps7OCW {
3
+ gap: var(--space-2);
4
+ flex-direction: column;
5
+ display: flex;
6
+ }
7
+
8
+ .group-label_Ps7OCW {
9
+ font-family: var(--font-mono);
10
+ font-size: var(--font-size-xs);
11
+ font-weight: var(--font-weight-semibold);
12
+ color: var(--color-tertiary);
13
+ text-transform: uppercase;
14
+ letter-spacing: var(--letter-spacing-wide);
15
+ margin-bottom: var(--space-1);
16
+ }
17
+ }
@@ -0,0 +1,37 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
+ import styles from "./radio-group.module.css";
4
+
5
+ //#region src/radio-group/radio-group.d.ts
6
+ interface RadioOption {
7
+ value: string;
8
+ label: ReactNode;
9
+ disabled?: boolean;
10
+ }
11
+ interface RadioGroupProps {
12
+ /** The options to render. Each becomes one `<Radio>` item. */
13
+ options: RadioOption[];
14
+ /** Accessible group label rendered above the options. */
15
+ label?: ReactNode;
16
+ /** Controlled selected value. */
17
+ value?: string;
18
+ /** Initial selected value (uncontrolled). */
19
+ defaultValue?: string;
20
+ onValueChange?: (value: string, eventDetails: unknown) => void;
21
+ disabled?: boolean;
22
+ readOnly?: boolean;
23
+ required?: boolean;
24
+ /** HTML name for form submission. */
25
+ name?: string;
26
+ className?: string;
27
+ }
28
+ declare function RadioGroup({
29
+ options,
30
+ label,
31
+ className,
32
+ onValueChange,
33
+ ...props
34
+ }: RadioGroupProps): react_jsx_runtime0.JSX.Element;
35
+ //#endregion
36
+ export { RadioGroup, RadioGroupProps, RadioOption, styles };
37
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","names":[],"sources":["../../src/radio-group/radio-group.tsx"],"mappings":";;;;;UAMiB,WAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,QAAA;AAAA;AAAA,UAGe,eAAA;EAJC;EAMhB,OAAA,EAAS,WAAA;EANT;EAQA,KAAA,GAAQ,SAAA;EAPR;EASA,KAAA;EATQ;EAWR,YAAA;EACA,aAAA,IAAiB,KAAA,UAAe,YAAA;EAChC,QAAA;EACA,QAAA;EACA,QAAA;EAVS;EAYT,IAAA;EACA,SAAA;AAAA;AAAA,iBAYc,UAAA,CAAA;EAAa,OAAA;EAAS,KAAA;EAAO,SAAA;EAAW,aAAA;EAAA,GAAkB;AAAA,GAAS,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,28 @@
1
+ import { Radio } from "../radio/radio.js";
2
+ import radio_group_module_default from "./radio-group.module.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { useId } from "react";
5
+ import { RadioGroup } from "@base-ui/react/radio-group";
6
+ //#region src/radio-group/radio-group.tsx
7
+ function RadioGroup$1({ options, label, className, onValueChange, ...props }) {
8
+ const labelId = useId();
9
+ return /* @__PURE__ */ jsxs(RadioGroup, {
10
+ "aria-labelledby": label ? labelId : void 0,
11
+ className: `${radio_group_module_default.group} ${className ?? ""}`,
12
+ onValueChange,
13
+ ...props,
14
+ children: [label && /* @__PURE__ */ jsx("div", {
15
+ id: labelId,
16
+ className: radio_group_module_default["group-label"],
17
+ children: label
18
+ }), options.map((opt) => /* @__PURE__ */ jsx(Radio, {
19
+ value: opt.value,
20
+ ...opt.disabled !== void 0 && { disabled: opt.disabled },
21
+ children: opt.label
22
+ }, opt.value))]
23
+ });
24
+ }
25
+ //#endregion
26
+ export { RadioGroup$1 as RadioGroup };
27
+
28
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.js","names":["RadioGroup","BaseRadioGroup","styles"],"sources":["../../src/radio-group/radio-group.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { Radio } from \"../radio/radio\";\nimport styles from \"./radio-group.module.css\";\n\nexport interface RadioOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n /** The options to render. Each becomes one `<Radio>` item. */\n options: RadioOption[];\n /** Accessible group label rendered above the options. */\n label?: ReactNode;\n /** Controlled selected value. */\n value?: string;\n /** Initial selected value (uncontrolled). */\n defaultValue?: string;\n onValueChange?: (value: string, eventDetails: unknown) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n /** HTML name for form submission. */\n name?: string;\n className?: string;\n}\n\n/**\n * A labelled group of radio buttons. Renders a base-ui RadioGroup with one\n * `<Radio>` per option.\n *\n * For full control over layout or behaviour use `RadioGroupRoot` with\n * individual `<Radio>` or `<RadioRoot>` elements.\n */\nexport { styles as RadioGroupStyles };\n\nexport function RadioGroup({ options, label, className, onValueChange, ...props }: RadioGroupProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const labelId = useId();\n\n return (\n <BaseRadioGroup\n aria-labelledby={label ? labelId : undefined}\n className={`${styles.group} ${className ?? \"\"}`}\n onValueChange={onValueChange as never}\n {...props}\n >\n {label && (\n <div id={labelId} className={styles[\"group-label\"]}>\n {label}\n </div>\n )}\n {options.map((opt) => (\n <Radio key={opt.value} value={opt.value} {...(opt.disabled !== undefined && { disabled: opt.disabled })}>\n {opt.label}\n </Radio>\n ))}\n </BaseRadioGroup>\n );\n}\n"],"mappings":";;;;;;AAuCA,SAAgBA,aAAW,EAAE,SAAS,OAAO,WAAW,eAAe,GAAG,SAA0B;CAElG,MAAM,UAAU,OAAO;AAEvB,QACE,qBAACC,YAAD;EACE,mBAAiB,QAAQ,UAAU,KAAA;EACnC,WAAW,GAAGC,2BAAO,MAAM,GAAG,aAAa;EAC5B;EACf,GAAI;YAJN,CAMG,SACC,oBAAC,OAAD;GAAK,IAAI;GAAS,WAAWA,2BAAO;aACjC;GACG,CAAA,EAEP,QAAQ,KAAK,QACZ,oBAAC,OAAD;GAAuB,OAAO,IAAI;GAAO,GAAK,IAAI,aAAa,KAAA,KAAa,EAAE,UAAU,IAAI,UAAU;aACnG,IAAI;GACC,EAFI,IAAI,MAER,CACR,CACa"}
@@ -0,0 +1,2 @@
1
+ declare const styles: Record<string, string | undefined>;
2
+ export default styles;
@@ -0,0 +1,9 @@
1
+ //#region src/radio-group/radio-group.module.css
2
+ var radio_group_module_default = {
3
+ "group": "group_Ps7OCW",
4
+ "group-label": "group-label_Ps7OCW"
5
+ };
6
+ //#endregion
7
+ export { radio_group_module_default as default };
8
+
9
+ //# sourceMappingURL=radio-group.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.module.js","names":[],"sources":["../../src/radio-group/radio-group.module.css"],"sourcesContent":["@layer components {\n .group {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n }\n\n .group-label {\n font-family: var(--font-mono);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n color: var(--color-tertiary);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n margin-bottom: var(--space-1);\n }\n}\n"],"mappings":";AAIA,IAAA,6BAAe;CAAA,SAAQ;CAAA,eAAA;CAAA"}
@@ -1,6 +1,6 @@
1
1
  import select_module_default from "./select.module.js";
2
- import { forwardRef } from "react";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
4
  import { Select } from "@base-ui/react/select";
5
5
  //#region src/select/parts.tsx
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
1
  import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
3
  import styles from "./select.module.css";
4
4
 
5
5
  //#region src/select/select.d.ts
@@ -13,19 +13,32 @@ interface SelectGroup {
13
13
  options: SelectOption[];
14
14
  }
15
15
  interface SelectProps {
16
+ /** Currently selected value (controlled). */
16
17
  value?: string;
18
+ /** Initially selected value (uncontrolled). */
17
19
  defaultValue?: string;
18
- /** `eventDetails` is the base-ui event details object. Value may be null when cleared. */
20
+ /** Called when the selection changes. `eventDetails` is the base-ui event details object. Value may be null when cleared. */
19
21
  onValueChange?: (value: string | null, eventDetails: unknown) => void;
22
+ /** Prevent interaction. */
20
23
  disabled?: boolean;
24
+ /** Mark the field as required for form validation. */
21
25
  required?: boolean;
26
+ /** HTML name attribute for form submission. */
22
27
  name?: string;
28
+ /** Text shown when no value is selected. */
23
29
  placeholder?: string;
30
+ /** Flat list of options (use `groups` for grouped options). */
24
31
  options?: SelectOption[];
32
+ /** Grouped options with optional section labels. */
25
33
  groups?: SelectGroup[];
26
34
  className?: string;
35
+ /** Override the auto-generated element id. */
27
36
  id?: string;
28
37
  }
38
+ /**
39
+ * Dropdown select with keyboard navigation, grouping, and search. Pass
40
+ * `options` for a flat list or `groups` for sections with optional labels.
41
+ */
29
42
  declare function Select({
30
43
  placeholder,
31
44
  options,
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","names":[],"sources":["../../src/select/select.tsx"],"mappings":";;;;;UAIiB,YAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,QAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAA,GAAQ,SAAA;EACR,OAAA,EAAS,YAAA;AAAA;AAAA,UAGM,WAAA;EACf,KAAA;EACA,YAAA;EAVQ;EAYR,aAAA,IAAiB,KAAA,iBAAsB,YAAA;EACvC,QAAA;EACA,QAAA;EACA,IAAA;EACA,WAAA;EACA,OAAA,GAAU,YAAA;EACV,MAAA,GAAS,WAAA;EACT,SAAA;EACA,EAAA;AAAA;AAAA,iBA8Bc,MAAA,CAAA;EAAS,WAAA;EAAyB,OAAA;EAAS,MAAA;EAAQ,SAAA;EAAW,aAAA;EAAe,KAAA;EAAO,YAAA;EAAA,GAAiB;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"select.d.ts","names":[],"sources":["../../src/select/select.tsx"],"mappings":";;;;;UAIiB,YAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,QAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAA,GAAQ,SAAA;EACR,OAAA,EAAS,YAAA;AAAA;AAAA,UAGM,WAAA;EARf;EAUA,KAAA;EAVQ;EAYR,YAAA;EAT0B;EAW1B,aAAA,IAAiB,KAAA,iBAAsB,YAAA;EATlB;EAWrB,QAAA;EAZQ;EAcR,QAAA;EAbS;EAeT,IAAA;EAfqB;EAiBrB,WAAA;EAd0B;EAgB1B,OAAA,GAAU,YAAA;EAEU;EAApB,MAAA,GAAS,WAAA;EACT,SAAA;EAbA;EAeA,EAAA;AAAA;;;;;iBAkCc,MAAA,CAAA;EAAS,WAAA;EAAyB,OAAA;EAAS,MAAA;EAAQ,SAAA;EAAW,aAAA;EAAe,KAAA;EAAO,YAAA;EAAA,GAAiB;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import select_module_default from "./select.module.js";
2
- import { useMemo } from "react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
4
  import { Select } from "@base-ui/react/select";
5
5
  //#region src/select/select.tsx
6
6
  function ChevronIcon() {
@@ -45,6 +45,10 @@ function SelectItem({ option }) {
45
45
  })]
46
46
  });
47
47
  }
48
+ /**
49
+ * Dropdown select with keyboard navigation, grouping, and search. Pass
50
+ * `options` for a flat list or `groups` for sections with optional labels.
51
+ */
48
52
  function Select$1({ placeholder = "Select…", options, groups, className, onValueChange, value, defaultValue, ...props }) {
49
53
  const allOptions = useMemo(() => [...options ?? [], ...groups?.flatMap((g) => g.options) ?? []], [options, groups]);
50
54
  return /* @__PURE__ */ jsxs(Select.Root, {
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":["BaseSelect","styles","Select"],"sources":["../../src/select/select.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport styles from \"./select.module.css\";\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectGroup {\n label?: ReactNode;\n options: SelectOption[];\n}\n\nexport interface SelectProps {\n value?: string;\n defaultValue?: string;\n /** `eventDetails` is the base-ui event details object. Value may be null when cleared. */\n onValueChange?: (value: string | null, eventDetails: unknown) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n className?: string;\n id?: string;\n}\n\nfunction ChevronIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.5 4.5L6 8L9.5 4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2 6L4.5 8.5L10 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction SelectItem({ option }: { option: SelectOption }) {\n return (\n <BaseSelect.Item className={styles.item} value={option.value} disabled={option.disabled}>\n <BaseSelect.ItemText>{option.label}</BaseSelect.ItemText>\n <BaseSelect.ItemIndicator className={styles[\"item-indicator\"]}>\n <CheckIcon />\n </BaseSelect.ItemIndicator>\n </BaseSelect.Item>\n );\n}\n\nexport function Select({ placeholder = \"Select…\", options, groups, className, onValueChange, value, defaultValue, ...props }: SelectProps) {\n const allOptions = useMemo(() => [...(options ?? []), ...(groups?.flatMap((g) => g.options) ?? [])], [options, groups]);\n\n return (\n <BaseSelect.Root onValueChange={onValueChange as never} value={value} defaultValue={defaultValue} {...props}>\n <BaseSelect.Trigger className={`${styles.trigger} ${className ?? \"\"}`}>\n <BaseSelect.Value className={styles[\"trigger-value\"]} placeholder={placeholder}>\n {(currentValue: string | null) => {\n if (!currentValue) return placeholder;\n const match = allOptions.find((o) => o.value === currentValue);\n return match ? match.label : currentValue;\n }}\n </BaseSelect.Value>\n <span className={styles[\"trigger-icon\"]}>\n <ChevronIcon />\n </span>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner className={styles.positioner} sideOffset={4}>\n <BaseSelect.Popup className={styles.popup}>\n <BaseSelect.List>\n {options?.map((opt) => (\n <SelectItem key={opt.value} option={opt} />\n ))}\n {groups?.map((group, i) => (\n <BaseSelect.Group key={i}>\n {group.label && <BaseSelect.GroupLabel className={styles[\"group-label\"]}>{group.label}</BaseSelect.GroupLabel>}\n {group.options.map((opt) => (\n <SelectItem key={opt.value} option={opt} />\n ))}\n {i < (groups?.length ?? 0) - 1 && <BaseSelect.Separator className={styles.separator} />}\n </BaseSelect.Group>\n ))}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\nexport { styles as SelectStyles };\n"],"mappings":";;;;;AA8BA,SAAS,cAAc;AACrB,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,OAAM;YAChE,oBAAC,QAAD;GAAM,GAAE;GAAuB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA;EAClH,CAAA;;AAIV,SAAS,YAAY;AACnB,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;YACnD,oBAAC,QAAD;GAAM,GAAE;GAAoB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA;EAC/G,CAAA;;AAIV,SAAS,WAAW,EAAE,UAAoC;AACxD,QACE,qBAACA,OAAW,MAAZ;EAAiB,WAAWC,sBAAO;EAAM,OAAO,OAAO;EAAO,UAAU,OAAO;YAA/E,CACE,oBAACD,OAAW,UAAZ,EAAA,UAAsB,OAAO,OAA4B,CAAA,EACzD,oBAACA,OAAW,eAAZ;GAA0B,WAAWC,sBAAO;aAC1C,oBAAC,WAAD,EAAa,CAAA;GACY,CAAA,CACX;;;AAItB,SAAgBC,SAAO,EAAE,cAAc,WAAW,SAAS,QAAQ,WAAW,eAAe,OAAO,cAAc,GAAG,SAAsB;CACzI,MAAM,aAAa,cAAc,CAAC,GAAI,WAAW,EAAE,EAAG,GAAI,QAAQ,SAAS,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAE,EAAE,CAAC,SAAS,OAAO,CAAC;AAEvH,QACE,qBAACF,OAAW,MAAZ;EAAgC;EAA+B;EAAqB;EAAc,GAAI;YAAtG,CACE,qBAACA,OAAW,SAAZ;GAAoB,WAAW,GAAGC,sBAAO,QAAQ,GAAG,aAAa;aAAjE,CACE,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;IAA+B;eAC/D,iBAAgC;AAChC,SAAI,CAAC,aAAc,QAAO;KAC1B,MAAM,QAAQ,WAAW,MAAM,MAAM,EAAE,UAAU,aAAa;AAC9D,YAAO,QAAQ,MAAM,QAAQ;;IAEd,CAAA,EACnB,oBAAC,QAAD;IAAM,WAAWA,sBAAO;cACtB,oBAAC,aAAD,EAAe,CAAA;IACV,CAAA,CACY;MACrB,oBAACD,OAAW,QAAZ,EAAA,UACE,oBAACA,OAAW,YAAZ;GAAuB,WAAWC,sBAAO;GAAY,YAAY;aAC/D,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAClC,qBAACD,OAAW,MAAZ,EAAA,UAAA,CACG,SAAS,KAAK,QACb,oBAAC,YAAD,EAA4B,QAAQ,KAAO,EAA1B,IAAI,MAAsB,CAC3C,EACD,QAAQ,KAAK,OAAO,MACnB,qBAACA,OAAW,OAAZ,EAAA,UAAA;KACG,MAAM,SAAS,oBAACA,OAAW,YAAZ;MAAuB,WAAWC,sBAAO;gBAAiB,MAAM;MAA8B,CAAA;KAC7G,MAAM,QAAQ,KAAK,QAClB,oBAAC,YAAD,EAA4B,QAAQ,KAAO,EAA1B,IAAI,MAAsB,CAC3C;KACD,KAAK,QAAQ,UAAU,KAAK,KAAK,oBAACD,OAAW,WAAZ,EAAsB,WAAWC,sBAAO,WAAa,CAAA;KACtE,EAAA,EANI,EAMJ,CACnB,CACc,EAAA,CAAA;IACD,CAAA;GACG,CAAA,EACN,CAAA,CACJ"}
1
+ {"version":3,"file":"select.js","names":["BaseSelect","styles","Select"],"sources":["../../src/select/select.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport styles from \"./select.module.css\";\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectGroup {\n label?: ReactNode;\n options: SelectOption[];\n}\n\nexport interface SelectProps {\n /** Currently selected value (controlled). */\n value?: string;\n /** Initially selected value (uncontrolled). */\n defaultValue?: string;\n /** Called when the selection changes. `eventDetails` is the base-ui event details object. Value may be null when cleared. */\n onValueChange?: (value: string | null, eventDetails: unknown) => void;\n /** Prevent interaction. */\n disabled?: boolean;\n /** Mark the field as required for form validation. */\n required?: boolean;\n /** HTML name attribute for form submission. */\n name?: string;\n /** Text shown when no value is selected. */\n placeholder?: string;\n /** Flat list of options (use `groups` for grouped options). */\n options?: SelectOption[];\n /** Grouped options with optional section labels. */\n groups?: SelectGroup[];\n className?: string;\n /** Override the auto-generated element id. */\n id?: string;\n}\n\nfunction ChevronIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.5 4.5L6 8L9.5 4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2 6L4.5 8.5L10 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nfunction SelectItem({ option }: { option: SelectOption }) {\n return (\n <BaseSelect.Item className={styles.item} value={option.value} disabled={option.disabled}>\n <BaseSelect.ItemText>{option.label}</BaseSelect.ItemText>\n <BaseSelect.ItemIndicator className={styles[\"item-indicator\"]}>\n <CheckIcon />\n </BaseSelect.ItemIndicator>\n </BaseSelect.Item>\n );\n}\n\n/**\n * Dropdown select with keyboard navigation, grouping, and search. Pass\n * `options` for a flat list or `groups` for sections with optional labels.\n */\nexport function Select({ placeholder = \"Select…\", options, groups, className, onValueChange, value, defaultValue, ...props }: SelectProps) {\n const allOptions = useMemo(() => [...(options ?? []), ...(groups?.flatMap((g) => g.options) ?? [])], [options, groups]);\n\n return (\n <BaseSelect.Root onValueChange={onValueChange as never} value={value} defaultValue={defaultValue} {...props}>\n <BaseSelect.Trigger className={`${styles.trigger} ${className ?? \"\"}`}>\n <BaseSelect.Value className={styles[\"trigger-value\"]} placeholder={placeholder}>\n {(currentValue: string | null) => {\n if (!currentValue) return placeholder;\n const match = allOptions.find((o) => o.value === currentValue);\n return match ? match.label : currentValue;\n }}\n </BaseSelect.Value>\n <span className={styles[\"trigger-icon\"]}>\n <ChevronIcon />\n </span>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner className={styles.positioner} sideOffset={4}>\n <BaseSelect.Popup className={styles.popup}>\n <BaseSelect.List>\n {options?.map((opt) => (\n <SelectItem key={opt.value} option={opt} />\n ))}\n {groups?.map((group, i) => (\n <BaseSelect.Group key={i}>\n {group.label && <BaseSelect.GroupLabel className={styles[\"group-label\"]}>{group.label}</BaseSelect.GroupLabel>}\n {group.options.map((opt) => (\n <SelectItem key={opt.value} option={opt} />\n ))}\n {i < (groups?.length ?? 0) - 1 && <BaseSelect.Separator className={styles.separator} />}\n </BaseSelect.Group>\n ))}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\nexport { styles as SelectStyles };\n"],"mappings":";;;;;AAuCA,SAAS,cAAc;AACrB,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,OAAM;YAChE,oBAAC,QAAD;GAAM,GAAE;GAAuB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA;EAClH,CAAA;;AAIV,SAAS,YAAY;AACnB,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;YACnD,oBAAC,QAAD;GAAM,GAAE;GAAoB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA;EAC/G,CAAA;;AAIV,SAAS,WAAW,EAAE,UAAoC;AACxD,QACE,qBAACA,OAAW,MAAZ;EAAiB,WAAWC,sBAAO;EAAM,OAAO,OAAO;EAAO,UAAU,OAAO;YAA/E,CACE,oBAACD,OAAW,UAAZ,EAAA,UAAsB,OAAO,OAA4B,CAAA,EACzD,oBAACA,OAAW,eAAZ;GAA0B,WAAWC,sBAAO;aAC1C,oBAAC,WAAD,EAAa,CAAA;GACY,CAAA,CACX;;;;;;;AAQtB,SAAgBC,SAAO,EAAE,cAAc,WAAW,SAAS,QAAQ,WAAW,eAAe,OAAO,cAAc,GAAG,SAAsB;CACzI,MAAM,aAAa,cAAc,CAAC,GAAI,WAAW,EAAE,EAAG,GAAI,QAAQ,SAAS,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAE,EAAE,CAAC,SAAS,OAAO,CAAC;AAEvH,QACE,qBAACF,OAAW,MAAZ;EAAgC;EAA+B;EAAqB;EAAc,GAAI;YAAtG,CACE,qBAACA,OAAW,SAAZ;GAAoB,WAAW,GAAGC,sBAAO,QAAQ,GAAG,aAAa;aAAjE,CACE,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;IAA+B;eAC/D,iBAAgC;AAChC,SAAI,CAAC,aAAc,QAAO;KAC1B,MAAM,QAAQ,WAAW,MAAM,MAAM,EAAE,UAAU,aAAa;AAC9D,YAAO,QAAQ,MAAM,QAAQ;;IAEd,CAAA,EACnB,oBAAC,QAAD;IAAM,WAAWA,sBAAO;cACtB,oBAAC,aAAD,EAAe,CAAA;IACV,CAAA,CACY;MACrB,oBAACD,OAAW,QAAZ,EAAA,UACE,oBAACA,OAAW,YAAZ;GAAuB,WAAWC,sBAAO;GAAY,YAAY;aAC/D,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAClC,qBAACD,OAAW,MAAZ,EAAA,UAAA,CACG,SAAS,KAAK,QACb,oBAAC,YAAD,EAA4B,QAAQ,KAAO,EAA1B,IAAI,MAAsB,CAC3C,EACD,QAAQ,KAAK,OAAO,MACnB,qBAACA,OAAW,OAAZ,EAAA,UAAA;KACG,MAAM,SAAS,oBAACA,OAAW,YAAZ;MAAuB,WAAWC,sBAAO;gBAAiB,MAAM;MAA8B,CAAA;KAC7G,MAAM,QAAQ,KAAK,QAClB,oBAAC,YAAD,EAA4B,QAAQ,KAAO,EAA1B,IAAI,MAAsB,CAC3C;KACD,KAAK,QAAQ,UAAU,KAAK,KAAK,oBAACD,OAAW,WAAZ,EAAsB,WAAWC,sBAAO,WAAa,CAAA;KACtE,EAAA,EANI,EAMJ,CACnB,CACc,EAAA,CAAA;IACD,CAAA;GACG,CAAA,EACN,CAAA,CACJ"}
@@ -10,6 +10,10 @@ interface SeparatorProps extends Omit<BaseSeparatorProps, "className"> {
10
10
  orientation?: "horizontal" | "vertical";
11
11
  className?: string;
12
12
  }
13
+ /**
14
+ * A semantic divider accessible to screen readers. Renders a horizontal
15
+ * line by default; switch to vertical for inline layouts.
16
+ */
13
17
  declare const Separator$1: react.ForwardRefExoticComponent<SeparatorProps & react.RefAttributes<HTMLDivElement>>;
14
18
  //#endregion
15
19
  export { Separator$1 as Separator, SeparatorProps, styles };
@@ -1 +1 @@
1
- {"version":3,"file":"separator.d.ts","names":[],"sources":["../../src/separator/separator.tsx"],"mappings":";;;;;;KAKK,kBAAA,GAAqB,wBAAA,QAAgC,SAAA;AAAA,UAEzC,cAAA,SAAuB,IAAA,CAAK,kBAAA;;EAE3C,WAAA;EACA,SAAA;AAAA;AAAA,cAGW,WAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"separator.d.ts","names":[],"sources":["../../src/separator/separator.tsx"],"mappings":";;;;;;KAKK,kBAAA,GAAqB,wBAAA,QAAgC,SAAA;AAAA,UAEzC,cAAA,SAAuB,IAAA,CAAK,kBAAA;;EAE3C,WAAA;EACA,SAAA;AAAA;;;AAHF;;cAUa,WAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -1,8 +1,12 @@
1
1
  import separator_module_default from "./separator.module.js";
2
- import { forwardRef } from "react";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
4
  import { Separator } from "@base-ui/react/separator";
5
5
  //#region src/separator/separator.tsx
6
+ /**
7
+ * A semantic divider accessible to screen readers. Renders a horizontal
8
+ * line by default; switch to vertical for inline layouts.
9
+ */
6
10
  const Separator$1 = forwardRef(function Separator$2({ className, orientation = "horizontal", ...props }, ref) {
7
11
  return /* @__PURE__ */ jsx(Separator, {
8
12
  ref,
@@ -1 +1 @@
1
- {"version":3,"file":"separator.js","names":["Separator","BaseSeparator","styles"],"sources":["../../src/separator/separator.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ComponentRef } from \"react\";\nimport { Separator as BaseSeparator } from \"@base-ui/react/separator\";\nimport styles from \"./separator.module.css\";\n\ntype BaseSeparatorProps = ComponentPropsWithoutRef<typeof BaseSeparator>;\n\nexport interface SeparatorProps extends Omit<BaseSeparatorProps, \"className\"> {\n /** @default \"horizontal\" */\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nexport const Separator = forwardRef<ComponentRef<typeof BaseSeparator>, SeparatorProps>(function Separator(\n { className, orientation = \"horizontal\", ...props },\n ref,\n) {\n return <BaseSeparator ref={ref} orientation={orientation} className={`${styles.separator} ${className ?? \"\"}`} {...props} />;\n});\nexport { styles as SeparatorStyles };\n"],"mappings":";;;;;AAaA,MAAaA,cAAY,WAA+D,SAASA,YAC/F,EAAE,WAAW,cAAc,cAAc,GAAG,SAC5C,KACA;AACA,QAAO,oBAACC,WAAD;EAAoB;EAAkB;EAAa,WAAW,GAAGC,yBAAO,UAAU,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC5H"}
1
+ {"version":3,"file":"separator.js","names":["Separator","BaseSeparator","styles"],"sources":["../../src/separator/separator.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ComponentRef } from \"react\";\nimport { Separator as BaseSeparator } from \"@base-ui/react/separator\";\nimport styles from \"./separator.module.css\";\n\ntype BaseSeparatorProps = ComponentPropsWithoutRef<typeof BaseSeparator>;\n\nexport interface SeparatorProps extends Omit<BaseSeparatorProps, \"className\"> {\n /** @default \"horizontal\" */\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\n/**\n * A semantic divider accessible to screen readers. Renders a horizontal\n * line by default; switch to vertical for inline layouts.\n */\nexport const Separator = forwardRef<ComponentRef<typeof BaseSeparator>, SeparatorProps>(function Separator(\n { className, orientation = \"horizontal\", ...props },\n ref,\n) {\n return <BaseSeparator ref={ref} orientation={orientation} className={`${styles.separator} ${className ?? \"\"}`} {...props} />;\n});\nexport { styles as SeparatorStyles };\n"],"mappings":";;;;;;;;;AAiBA,MAAaA,cAAY,WAA+D,SAASA,YAC/F,EAAE,WAAW,cAAc,cAAc,GAAG,SAC5C,KACA;AACA,QAAO,oBAACC,WAAD;EAAoB;EAAkB;EAAa,WAAW,GAAGC,yBAAO,UAAU,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC5H"}
@@ -0,0 +1,22 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ //#region src/shared/PopupArrow.tsx
3
+ function PopupArrow({ fillClass, seamClass }) {
4
+ return /* @__PURE__ */ jsxs("svg", {
5
+ width: "20",
6
+ height: "10",
7
+ viewBox: "0 0 20 10",
8
+ fill: "none",
9
+ "aria-hidden": true,
10
+ children: [/* @__PURE__ */ jsx("path", {
11
+ d: "M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z",
12
+ className: fillClass
13
+ }), /* @__PURE__ */ jsx("path", {
14
+ d: "M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z",
15
+ className: seamClass
16
+ })]
17
+ });
18
+ }
19
+ //#endregion
20
+ export { PopupArrow };
21
+
22
+ //# sourceMappingURL=PopupArrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupArrow.js","names":[],"sources":["../../src/shared/PopupArrow.tsx"],"sourcesContent":["/**\n * Shared arrow SVG used by Menu and Popover.\n *\n * Two paths:\n * 1. Fill — the arrow body, matches the popup surface colour.\n * 2. Seam — a thin strip in the border colour at the base, covering\n * the popup border at the junction so it doesn't bleed through.\n *\n * All CSS classes come from the importing component's own CSS module\n * so the rules are bundled into the component's CSS file, not a\n * separate shared chunk that consumers would need to import separately.\n *\n * @example\n * ```tsx\n * <BaseMenu.Arrow className={styles.arrow}>\n * <PopupArrow fillClass={styles[\"arrow-fill\"]!} seamClass={styles[\"arrow-seam\"]!} />\n * </BaseMenu.Arrow>\n * ```\n */\n\ninterface PopupArrowProps {\n fillClass: string;\n seamClass: string;\n}\n\nexport function PopupArrow({ fillClass, seamClass }: PopupArrowProps) {\n return (\n <svg width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\" aria-hidden>\n {/* Body — surface colour */}\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className={fillClass}\n />\n {/* Seam — border colour strip at the base, covers the popup border at the junction */}\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className={seamClass}\n />\n </svg>\n );\n}\n"],"mappings":";;AAyBA,SAAgB,WAAW,EAAE,WAAW,aAA8B;AACpE,QACE,qBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,eAAA;YAA5D,CAEE,oBAAC,QAAD;GACE,GAAE;GACF,WAAW;GACX,CAAA,EAEF,oBAAC,QAAD;GACE,GAAE;GACF,WAAW;GACX,CAAA,CACE"}