@brijbyte/agentic-ui 0.0.3 → 0.0.5

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 (289) hide show
  1. package/README.md +280 -53
  2. package/dist/accordion/accordion.d.ts +14 -0
  3. package/dist/accordion/accordion.d.ts.map +1 -1
  4. package/dist/accordion/accordion.js +5 -0
  5. package/dist/accordion/accordion.js.map +1 -1
  6. package/dist/accordion/index.d.ts +2 -2
  7. package/dist/accordion/index.js +2 -2
  8. package/dist/accordion/parts.d.ts +6 -14
  9. package/dist/accordion/parts.d.ts.map +1 -1
  10. package/dist/accordion/parts.js +7 -6
  11. package/dist/accordion/parts.js.map +1 -1
  12. package/dist/alert-dialog/alert-dialog.d.ts +11 -0
  13. package/dist/alert-dialog/alert-dialog.d.ts.map +1 -1
  14. package/dist/alert-dialog/alert-dialog.js +5 -0
  15. package/dist/alert-dialog/alert-dialog.js.map +1 -1
  16. package/dist/alert-dialog/parts.d.ts +4 -12
  17. package/dist/alert-dialog/parts.d.ts.map +1 -1
  18. package/dist/alert-dialog/parts.js +17 -19
  19. package/dist/alert-dialog/parts.js.map +1 -1
  20. package/dist/badge/badge.d.ts +6 -0
  21. package/dist/badge/badge.d.ts.map +1 -1
  22. package/dist/badge/badge.js +4 -0
  23. package/dist/badge/badge.js.map +1 -1
  24. package/dist/button/button.d.ts +12 -1
  25. package/dist/button/button.d.ts.map +1 -1
  26. package/dist/button/button.js +5 -0
  27. package/dist/button/button.js.map +1 -1
  28. package/dist/card/card.d.ts +10 -0
  29. package/dist/card/card.d.ts.map +1 -1
  30. package/dist/card/card.js +7 -0
  31. package/dist/card/card.js.map +1 -1
  32. package/dist/checkbox/checkbox.d.ts +13 -0
  33. package/dist/checkbox/checkbox.d.ts.map +1 -1
  34. package/dist/checkbox/checkbox.js +4 -0
  35. package/dist/checkbox/checkbox.js.map +1 -1
  36. package/dist/checkbox/parts.d.ts +2 -5
  37. package/dist/checkbox/parts.d.ts.map +1 -1
  38. package/dist/checkbox/parts.js +3 -2
  39. package/dist/checkbox/parts.js.map +1 -1
  40. package/dist/collapsible/collapsible.d.ts +11 -0
  41. package/dist/collapsible/collapsible.d.ts.map +1 -1
  42. package/dist/collapsible/collapsible.js +5 -0
  43. package/dist/collapsible/collapsible.js.map +1 -1
  44. package/dist/collapsible/parts.d.ts +3 -9
  45. package/dist/collapsible/parts.d.ts.map +1 -1
  46. package/dist/collapsible/parts.js +7 -6
  47. package/dist/collapsible/parts.js.map +1 -1
  48. package/dist/context-menu/context-menu.d.ts +5 -0
  49. package/dist/context-menu/context-menu.d.ts.map +1 -1
  50. package/dist/context-menu/context-menu.js +4 -0
  51. package/dist/context-menu/context-menu.js.map +1 -1
  52. package/dist/context-menu/parts.d.ts +6 -18
  53. package/dist/context-menu/parts.d.ts.map +1 -1
  54. package/dist/context-menu/parts.js +16 -16
  55. package/dist/context-menu/parts.js.map +1 -1
  56. package/dist/dialog/dialog.d.ts +13 -1
  57. package/dist/dialog/dialog.d.ts.map +1 -1
  58. package/dist/dialog/dialog.js +6 -0
  59. package/dist/dialog/dialog.js.map +1 -1
  60. package/dist/dialog/parts.d.ts +6 -18
  61. package/dist/dialog/parts.d.ts.map +1 -1
  62. package/dist/dialog/parts.js +8 -9
  63. package/dist/dialog/parts.js.map +1 -1
  64. package/dist/drawer/drawer.d.ts +11 -0
  65. package/dist/drawer/drawer.d.ts.map +1 -1
  66. package/dist/drawer/drawer.js +5 -0
  67. package/dist/drawer/drawer.js.map +1 -1
  68. package/dist/drawer/parts.d.ts +7 -19
  69. package/dist/drawer/parts.d.ts.map +1 -1
  70. package/dist/drawer/parts.js +14 -13
  71. package/dist/drawer/parts.js.map +1 -1
  72. package/dist/index.css +1580 -1150
  73. package/dist/index.d.ts +20 -11
  74. package/dist/index.js +15 -2
  75. package/dist/input/input.d.ts +8 -0
  76. package/dist/input/input.d.ts.map +1 -1
  77. package/dist/input/input.js +5 -0
  78. package/dist/input/input.js.map +1 -1
  79. package/dist/menu/menu.css +3 -8
  80. package/dist/menu/menu.d.ts +11 -4
  81. package/dist/menu/menu.d.ts.map +1 -1
  82. package/dist/menu/menu.js +10 -24
  83. package/dist/menu/menu.js.map +1 -1
  84. package/dist/menu/menu.module.js +1 -1
  85. package/dist/menu/menu.module.js.map +1 -1
  86. package/dist/menu/parts.d.ts +6 -18
  87. package/dist/menu/parts.d.ts.map +1 -1
  88. package/dist/menu/parts.js +7 -6
  89. package/dist/menu/parts.js.map +1 -1
  90. package/dist/meter/circular-meter.d.ts +48 -0
  91. package/dist/meter/circular-meter.d.ts.map +1 -0
  92. package/dist/meter/circular-meter.js +86 -0
  93. package/dist/meter/circular-meter.js.map +1 -0
  94. package/dist/meter/index.d.ts +4 -0
  95. package/dist/meter/index.js +5 -0
  96. package/dist/meter/meter.css +152 -0
  97. package/dist/meter/meter.d.ts +58 -0
  98. package/dist/meter/meter.d.ts.map +1 -0
  99. package/dist/meter/meter.js +50 -0
  100. package/dist/meter/meter.js.map +1 -0
  101. package/dist/meter/meter.module.css.d.ts +2 -0
  102. package/dist/meter/meter.module.js +27 -0
  103. package/dist/meter/meter.module.js.map +1 -0
  104. package/dist/meter/meterState.js +18 -0
  105. package/dist/meter/meterState.js.map +1 -0
  106. package/dist/meter/parts.d.ts +25 -0
  107. package/dist/meter/parts.d.ts.map +1 -0
  108. package/dist/meter/parts.js +57 -0
  109. package/dist/meter/parts.js.map +1 -0
  110. package/dist/number-field/number-field.d.ts +16 -0
  111. package/dist/number-field/number-field.d.ts.map +1 -1
  112. package/dist/number-field/number-field.js +4 -0
  113. package/dist/number-field/number-field.js.map +1 -1
  114. package/dist/number-field/parts.d.ts +6 -18
  115. package/dist/number-field/parts.d.ts.map +1 -1
  116. package/dist/number-field/parts.js +7 -6
  117. package/dist/number-field/parts.js.map +1 -1
  118. package/dist/popover/index.d.ts +3 -0
  119. package/dist/popover/index.js +4 -0
  120. package/dist/popover/parts.d.ts +29 -0
  121. package/dist/popover/parts.d.ts.map +1 -0
  122. package/dist/popover/parts.js +93 -0
  123. package/dist/popover/parts.js.map +1 -0
  124. package/dist/popover/popover.css +173 -0
  125. package/dist/popover/popover.d.ts +49 -0
  126. package/dist/popover/popover.d.ts.map +1 -0
  127. package/dist/popover/popover.js +68 -0
  128. package/dist/popover/popover.js.map +1 -0
  129. package/dist/popover/popover.module.css.d.ts +2 -0
  130. package/dist/popover/popover.module.js +16 -0
  131. package/dist/popover/popover.module.js.map +1 -0
  132. package/dist/progress/parts.d.ts +2 -4
  133. package/dist/progress/parts.d.ts.map +1 -1
  134. package/dist/progress/parts.js +3 -6
  135. package/dist/progress/parts.js.map +1 -1
  136. package/dist/progress/progress.d.ts +11 -0
  137. package/dist/progress/progress.d.ts.map +1 -1
  138. package/dist/progress/progress.js +5 -0
  139. package/dist/progress/progress.js.map +1 -1
  140. package/dist/radio/index.d.ts +3 -0
  141. package/dist/radio/index.js +4 -0
  142. package/dist/radio/parts.d.ts +14 -0
  143. package/dist/radio/parts.d.ts.map +1 -0
  144. package/dist/radio/parts.js +43 -0
  145. package/dist/radio/parts.js.map +1 -0
  146. package/dist/radio/radio.css +84 -0
  147. package/dist/radio/radio.d.ts +31 -0
  148. package/dist/radio/radio.d.ts.map +1 -0
  149. package/dist/radio/radio.js +33 -0
  150. package/dist/radio/radio.js.map +1 -0
  151. package/dist/radio/radio.module.css.d.ts +2 -0
  152. package/dist/radio/radio.module.js +11 -0
  153. package/dist/radio/radio.module.js.map +1 -0
  154. package/dist/radio-group/index.d.ts +3 -0
  155. package/dist/radio-group/index.js +4 -0
  156. package/dist/radio-group/parts.d.ts +11 -0
  157. package/dist/radio-group/parts.d.ts.map +1 -0
  158. package/dist/radio-group/parts.js +32 -0
  159. package/dist/radio-group/parts.js.map +1 -0
  160. package/dist/radio-group/radio-group.css +17 -0
  161. package/dist/radio-group/radio-group.d.ts +37 -0
  162. package/dist/radio-group/radio-group.d.ts.map +1 -0
  163. package/dist/radio-group/radio-group.js +28 -0
  164. package/dist/radio-group/radio-group.js.map +1 -0
  165. package/dist/radio-group/radio-group.module.css.d.ts +2 -0
  166. package/dist/radio-group/radio-group.module.js +9 -0
  167. package/dist/radio-group/radio-group.module.js.map +1 -0
  168. package/dist/reset-scoped.css +112 -0
  169. package/dist/select/parts.d.ts +11 -32
  170. package/dist/select/parts.d.ts.map +1 -1
  171. package/dist/select/parts.js +10 -9
  172. package/dist/select/parts.js.map +1 -1
  173. package/dist/select/select.d.ts +14 -1
  174. package/dist/select/select.d.ts.map +1 -1
  175. package/dist/select/select.js +4 -0
  176. package/dist/select/select.js.map +1 -1
  177. package/dist/separator/separator.d.ts +4 -0
  178. package/dist/separator/separator.d.ts.map +1 -1
  179. package/dist/separator/separator.js +4 -0
  180. package/dist/separator/separator.js.map +1 -1
  181. package/dist/shared/PopupArrow.js +22 -0
  182. package/dist/shared/PopupArrow.js.map +1 -0
  183. package/dist/slider/parts.d.ts +6 -18
  184. package/dist/slider/parts.d.ts.map +1 -1
  185. package/dist/slider/parts.js +7 -6
  186. package/dist/slider/parts.js.map +1 -1
  187. package/dist/slider/slider.d.ts +18 -0
  188. package/dist/slider/slider.d.ts.map +1 -1
  189. package/dist/slider/slider.js +6 -0
  190. package/dist/slider/slider.js.map +1 -1
  191. package/dist/switch/parts.d.ts +2 -6
  192. package/dist/switch/parts.d.ts.map +1 -1
  193. package/dist/switch/parts.js +3 -2
  194. package/dist/switch/parts.js.map +1 -1
  195. package/dist/switch/switch.css +11 -2
  196. package/dist/switch/switch.d.ts +12 -0
  197. package/dist/switch/switch.d.ts.map +1 -1
  198. package/dist/switch/switch.js +4 -0
  199. package/dist/switch/switch.js.map +1 -1
  200. package/dist/switch/switch.module.js.map +1 -1
  201. package/dist/tabs/parts.d.ts +3 -9
  202. package/dist/tabs/parts.d.ts.map +1 -1
  203. package/dist/tabs/parts.js +4 -3
  204. package/dist/tabs/parts.js.map +1 -1
  205. package/dist/tabs/tabs.d.ts +8 -1
  206. package/dist/tabs/tabs.d.ts.map +1 -1
  207. package/dist/tabs/tabs.js +4 -0
  208. package/dist/tabs/tabs.js.map +1 -1
  209. package/dist/toast/parts.d.ts +5 -15
  210. package/dist/toast/parts.d.ts.map +1 -1
  211. package/dist/toast/parts.js +6 -5
  212. package/dist/toast/parts.js.map +1 -1
  213. package/dist/toast/toast.d.ts +11 -0
  214. package/dist/toast/toast.d.ts.map +1 -1
  215. package/dist/toast/toast.js +8 -0
  216. package/dist/toast/toast.js.map +1 -1
  217. package/dist/tooltip/parts.d.ts +3 -9
  218. package/dist/tooltip/parts.d.ts.map +1 -1
  219. package/dist/tooltip/parts.js +4 -3
  220. package/dist/tooltip/parts.js.map +1 -1
  221. package/dist/tooltip/tooltip.d.ts +9 -0
  222. package/dist/tooltip/tooltip.d.ts.map +1 -1
  223. package/dist/tooltip/tooltip.js +4 -0
  224. package/dist/tooltip/tooltip.js.map +1 -1
  225. package/dist/utils/resolveClassName.js +25 -0
  226. package/dist/utils/resolveClassName.js.map +1 -0
  227. package/package.json +25 -4
  228. package/src/accordion/accordion.tsx +14 -0
  229. package/src/accordion/index.ts +1 -1
  230. package/src/accordion/parts.tsx +10 -17
  231. package/src/alert-dialog/alert-dialog.tsx +11 -0
  232. package/src/alert-dialog/parts.tsx +23 -31
  233. package/src/badge/badge.tsx +6 -0
  234. package/src/button/button.tsx +12 -1
  235. package/src/card/card.tsx +10 -0
  236. package/src/checkbox/checkbox.tsx +13 -0
  237. package/src/checkbox/parts.tsx +5 -7
  238. package/src/collapsible/collapsible.tsx +11 -0
  239. package/src/collapsible/parts.tsx +10 -15
  240. package/src/context-menu/context-menu.tsx +5 -0
  241. package/src/context-menu/parts.tsx +34 -34
  242. package/src/dialog/dialog.tsx +13 -1
  243. package/src/dialog/parts.tsx +14 -27
  244. package/src/drawer/drawer.tsx +11 -0
  245. package/src/drawer/parts.tsx +30 -38
  246. package/src/index.ts +4 -0
  247. package/src/input/input.tsx +8 -0
  248. package/src/menu/menu.module.css +3 -10
  249. package/src/menu/menu.tsx +13 -26
  250. package/src/menu/parts.tsx +13 -24
  251. package/src/meter/circular-meter.tsx +114 -0
  252. package/src/meter/index.ts +9 -0
  253. package/src/meter/meter.module.css +162 -0
  254. package/src/meter/meter.tsx +86 -0
  255. package/src/meter/meterState.ts +29 -0
  256. package/src/meter/parts.tsx +73 -0
  257. package/src/number-field/number-field.tsx +16 -0
  258. package/src/number-field/parts.tsx +33 -24
  259. package/src/popover/index.ts +14 -0
  260. package/src/popover/parts.tsx +105 -0
  261. package/src/popover/popover.module.css +189 -0
  262. package/src/popover/popover.tsx +80 -0
  263. package/src/progress/parts.tsx +13 -6
  264. package/src/progress/progress.tsx +11 -0
  265. package/src/radio/index.ts +6 -0
  266. package/src/radio/parts.tsx +42 -0
  267. package/src/radio/radio.module.css +96 -0
  268. package/src/radio/radio.tsx +37 -0
  269. package/src/radio-group/index.ts +5 -0
  270. package/src/radio-group/parts.tsx +31 -0
  271. package/src/radio-group/radio-group.module.css +17 -0
  272. package/src/radio-group/radio-group.tsx +63 -0
  273. package/src/select/parts.tsx +34 -41
  274. package/src/select/select.tsx +14 -1
  275. package/src/separator/separator.tsx +4 -0
  276. package/src/shared/PopupArrow.tsx +41 -0
  277. package/src/slider/parts.tsx +13 -24
  278. package/src/slider/slider.tsx +18 -0
  279. package/src/styles/reset-scoped.css +112 -0
  280. package/src/switch/parts.tsx +5 -8
  281. package/src/switch/switch.module.css +11 -2
  282. package/src/switch/switch.tsx +12 -0
  283. package/src/tabs/parts.tsx +7 -12
  284. package/src/tabs/tabs.tsx +8 -1
  285. package/src/toast/parts.tsx +11 -20
  286. package/src/toast/toast.tsx +11 -0
  287. package/src/tooltip/parts.tsx +7 -12
  288. package/src/tooltip/tooltip.tsx +9 -0
  289. package/src/utils/resolveClassName.ts +24 -0
@@ -4,17 +4,29 @@ import styles from "./slider.module.css";
4
4
 
5
5
  //#region src/slider/slider.d.ts
6
6
  interface SliderProps {
7
+ /** Current value (controlled). Pass an array for range sliders. */
7
8
  value?: number | number[];
9
+ /** Initial value (uncontrolled). Pass an array for range sliders. */
8
10
  defaultValue?: number | number[];
11
+ /** Called on every value change while dragging. */
9
12
  onValueChange?: (value: number | number[], eventDetails: unknown) => void;
13
+ /** Called once when the user finishes dragging. */
10
14
  onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;
15
+ /** Minimum allowed value. @default 0 */
11
16
  min?: number;
17
+ /** Maximum allowed value. @default 100 */
12
18
  max?: number;
19
+ /** Step increment. @default 1 */
13
20
  step?: number;
21
+ /** Step used for Page Up / Page Down keyboard shortcuts. @default 10 */
14
22
  largeStep?: number;
23
+ /** Prevent interaction. */
15
24
  disabled?: boolean;
25
+ /** HTML name attribute for form submission. */
16
26
  name?: string;
27
+ /** Axis direction. @default "horizontal" */
17
28
  orientation?: "horizontal" | "vertical";
29
+ /** `Intl.NumberFormatOptions` for value display formatting. */
18
30
  format?: Intl.NumberFormatOptions;
19
31
  /** Visible label rendered above the track. */
20
32
  label?: ReactNode;
@@ -24,6 +36,12 @@ interface SliderProps {
24
36
  "aria-label"?: string;
25
37
  className?: string;
26
38
  }
39
+ /**
40
+ * An accessible range input with full keyboard and touch support. Pass a
41
+ * single number for a standard slider or an array for a range slider with
42
+ * two thumbs. Supports steps, large steps (Page Up/Down), and
43
+ * `Intl.NumberFormat` display formatting.
44
+ */
27
45
  declare function Slider({
28
46
  label,
29
47
  showValue,
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/slider/slider.tsx"],"mappings":";;;;;UAIiB,WAAA;EACf,KAAA;EACA,YAAA;EACA,aAAA,IAAiB,KAAA,qBAA0B,YAAA;EAC3C,gBAAA,IAAoB,KAAA,qBAA0B,YAAA;EAC9C,GAAA;EACA,GAAA;EACA,IAAA;EACA,SAAA;EACA,QAAA;EACA,IAAA;EACA,WAAA;EACA,MAAA,GAAS,IAAA,CAAK,mBAAA;EARM;EAUpB,KAAA,GAAQ,SAAA;EATR;EAWA,SAAA;EATA;EAWA,YAAA;EACA,SAAA;AAAA;AAAA,iBAGc,MAAA,CAAA;EACd,KAAA;EACA,SAAA;EACA,SAAA;EACA,aAAA;EACA,gBAAA;EAAA,cACc,SAAA;EAAA,GACX;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/slider/slider.tsx"],"mappings":";;;;;UAIiB,WAAA;;EAEf,KAAA;EAFe;EAIf,YAAA;;EAEA,aAAA,IAAiB,KAAA,qBAA0B,YAAA;EAJ3C;EAMA,gBAAA,IAAoB,KAAA,qBAA0B,YAAA;EAF9C;EAIA,GAAA;EAJ2C;EAM3C,GAAA;EAJoB;EAMpB,IAAA;EAJA;EAMA,SAAA;EAFA;EAIA,QAAA;EAAA;EAEA,IAAA;EAEA;EAAA,WAAA;EAES;EAAT,MAAA,GAAS,IAAA,CAAK,mBAAA;EAEd;EAAA,KAAA,GAAQ,SAAA;EAER;EAAA,SAAA;EAGA;EADA,YAAA;EACA,SAAA;AAAA;;;;;;;iBASc,MAAA,CAAA;EACd,KAAA;EACA,SAAA;EACA,SAAA;EACA,aAAA;EACA,gBAAA;EAAA,cACc,SAAA;EAAA,GACX;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -2,6 +2,12 @@ import slider_module_default from "./slider.module.js";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Slider } from "@base-ui/react/slider";
4
4
  //#region src/slider/slider.tsx
5
+ /**
6
+ * An accessible range input with full keyboard and touch support. Pass a
7
+ * single number for a standard slider or an array for a range slider with
8
+ * two thumbs. Supports steps, large steps (Page Up/Down), and
9
+ * `Intl.NumberFormat` display formatting.
10
+ */
5
11
  function Slider$1({ label, showValue = false, className, onValueChange, onValueCommitted, "aria-label": ariaLabel, ...props }) {
6
12
  const isRange = Array.isArray(props.defaultValue ?? props.value);
7
13
  return /* @__PURE__ */ jsxs(Slider.Root, {
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":["Slider","BaseSlider","styles"],"sources":["../../src/slider/slider.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui/react/slider\";\nimport styles from \"./slider.module.css\";\n\nexport interface SliderProps {\n value?: number | number[];\n defaultValue?: number | number[];\n onValueChange?: (value: number | number[], eventDetails: unknown) => void;\n onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;\n min?: number;\n max?: number;\n step?: number;\n largeStep?: number;\n disabled?: boolean;\n name?: string;\n orientation?: \"horizontal\" | \"vertical\";\n format?: Intl.NumberFormatOptions;\n /** Visible label rendered above the track. */\n label?: ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n /** Aria-label for single-thumb sliders without a visible label. */\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport function Slider({\n label,\n showValue = false,\n className,\n onValueChange,\n onValueCommitted,\n \"aria-label\": ariaLabel,\n ...props\n}: SliderProps) {\n const isRange = Array.isArray(props.defaultValue ?? props.value);\n\n return (\n <BaseSlider.Root\n className={`${styles.root} ${className ?? \"\"}`}\n onValueChange={onValueChange as never}\n onValueCommitted={onValueCommitted as never}\n {...props}\n >\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <BaseSlider.Label className={styles.label}>{label}</BaseSlider.Label>}\n {showValue && <BaseSlider.Value className={styles.value} />}\n </div>\n )}\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n {isRange ? (\n <>\n <BaseSlider.Thumb index={0} className={styles.thumb} aria-label=\"Minimum value\" />\n <BaseSlider.Thumb index={1} className={styles.thumb} aria-label=\"Maximum value\" />\n </>\n ) : (\n <BaseSlider.Thumb className={styles.thumb} aria-label={ariaLabel} />\n )}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n\nexport { styles as SliderStyles };\n"],"mappings":";;;;AA0BA,SAAgBA,SAAO,EACrB,OACA,YAAY,OACZ,WACA,eACA,kBACA,cAAc,WACd,GAAG,SACW;CACd,MAAM,UAAU,MAAM,QAAQ,MAAM,gBAAgB,MAAM,MAAM;AAEhE,QACE,qBAACC,OAAW,MAAZ;EACE,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAC3B;EACG;EAClB,GAAI;YAJN,EAMI,SAAS,cACT,qBAAC,OAAD;GAAK,WAAWA,sBAAO;aAAvB,CACG,SAAS,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAAQ;IAAyB,CAAA,EAC9E,aAAa,oBAACD,OAAW,OAAZ,EAAkB,WAAWC,sBAAO,OAAS,CAAA,CACvD;MAER,oBAACD,OAAW,SAAZ;GAAoB,WAAWC,sBAAO;aACpC,qBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAApC,CACE,oBAACD,OAAW,WAAZ,EAAsB,WAAWC,sBAAO,WAAa,CAAA,EACpD,UACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,EAClF,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,CACjF,EAAA,CAAA,GAEH,oBAACD,OAAW,OAAZ;KAAkB,WAAWC,sBAAO;KAAO,cAAY;KAAa,CAAA,CAErD;;GACA,CAAA,CACL"}
1
+ {"version":3,"file":"slider.js","names":["Slider","BaseSlider","styles"],"sources":["../../src/slider/slider.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui/react/slider\";\nimport styles from \"./slider.module.css\";\n\nexport interface SliderProps {\n /** Current value (controlled). Pass an array for range sliders. */\n value?: number | number[];\n /** Initial value (uncontrolled). Pass an array for range sliders. */\n defaultValue?: number | number[];\n /** Called on every value change while dragging. */\n onValueChange?: (value: number | number[], eventDetails: unknown) => void;\n /** Called once when the user finishes dragging. */\n onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;\n /** Minimum allowed value. @default 0 */\n min?: number;\n /** Maximum allowed value. @default 100 */\n max?: number;\n /** Step increment. @default 1 */\n step?: number;\n /** Step used for Page Up / Page Down keyboard shortcuts. @default 10 */\n largeStep?: number;\n /** Prevent interaction. */\n disabled?: boolean;\n /** HTML name attribute for form submission. */\n name?: string;\n /** Axis direction. @default \"horizontal\" */\n orientation?: \"horizontal\" | \"vertical\";\n /** `Intl.NumberFormatOptions` for value display formatting. */\n format?: Intl.NumberFormatOptions;\n /** Visible label rendered above the track. */\n label?: ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n /** Aria-label for single-thumb sliders without a visible label. */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * An accessible range input with full keyboard and touch support. Pass a\n * single number for a standard slider or an array for a range slider with\n * two thumbs. Supports steps, large steps (Page Up/Down), and\n * `Intl.NumberFormat` display formatting.\n */\nexport function Slider({\n label,\n showValue = false,\n className,\n onValueChange,\n onValueCommitted,\n \"aria-label\": ariaLabel,\n ...props\n}: SliderProps) {\n const isRange = Array.isArray(props.defaultValue ?? props.value);\n\n return (\n <BaseSlider.Root\n className={`${styles.root} ${className ?? \"\"}`}\n onValueChange={onValueChange as never}\n onValueCommitted={onValueCommitted as never}\n {...props}\n >\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <BaseSlider.Label className={styles.label}>{label}</BaseSlider.Label>}\n {showValue && <BaseSlider.Value className={styles.value} />}\n </div>\n )}\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n {isRange ? (\n <>\n <BaseSlider.Thumb index={0} className={styles.thumb} aria-label=\"Minimum value\" />\n <BaseSlider.Thumb index={1} className={styles.thumb} aria-label=\"Maximum value\" />\n </>\n ) : (\n <BaseSlider.Thumb className={styles.thumb} aria-label={ariaLabel} />\n )}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n\nexport { styles as SliderStyles };\n"],"mappings":";;;;;;;;;;AA4CA,SAAgBA,SAAO,EACrB,OACA,YAAY,OACZ,WACA,eACA,kBACA,cAAc,WACd,GAAG,SACW;CACd,MAAM,UAAU,MAAM,QAAQ,MAAM,gBAAgB,MAAM,MAAM;AAEhE,QACE,qBAACC,OAAW,MAAZ;EACE,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAC3B;EACG;EAClB,GAAI;YAJN,EAMI,SAAS,cACT,qBAAC,OAAD;GAAK,WAAWA,sBAAO;aAAvB,CACG,SAAS,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAAQ;IAAyB,CAAA,EAC9E,aAAa,oBAACD,OAAW,OAAZ,EAAkB,WAAWC,sBAAO,OAAS,CAAA,CACvD;MAER,oBAACD,OAAW,SAAZ;GAAoB,WAAWC,sBAAO;aACpC,qBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAApC,CACE,oBAACD,OAAW,WAAZ,EAAsB,WAAWC,sBAAO,WAAa,CAAA,EACpD,UACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,EAClF,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,CACjF,EAAA,CAAA,GAEH,oBAACD,OAAW,OAAZ;KAAkB,WAAWC,sBAAO;KAAO,cAAY;KAAa,CAAA,CAErD;;GACA,CAAA,CACL"}
@@ -5,12 +5,8 @@ import { Switch } from "@base-ui/react/switch";
5
5
  //#region src/switch/parts.d.ts
6
6
  type BaseRootProps = ComponentPropsWithoutRef<typeof Switch.Root>;
7
7
  type BaseThumbProps = ComponentPropsWithoutRef<typeof Switch.Thumb>;
8
- interface SwitchRootProps extends Omit<BaseRootProps, "className"> {
9
- className?: string;
10
- }
11
- interface SwitchThumbProps extends Omit<BaseThumbProps, "className"> {
12
- className?: string;
13
- }
8
+ interface SwitchRootProps extends BaseRootProps {}
9
+ interface SwitchThumbProps extends BaseThumbProps {}
14
10
  declare const SwitchRoot: react.ForwardRefExoticComponent<SwitchRootProps & react.RefAttributes<HTMLElement>>;
15
11
  declare const SwitchThumb: react.ForwardRefExoticComponent<SwitchThumbProps & react.RefAttributes<HTMLSpanElement>>;
16
12
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/switch/parts.tsx"],"mappings":";;;;;KAqBK,aAAA,GAAgB,wBAAA,QAAgC,MAAA,CAAW,IAAA;AAAA,KAC3D,cAAA,GAAiB,wBAAA,QAAgC,MAAA,CAAW,KAAA;AAAA,UAEhD,eAAA,SAAwB,IAAA,CAAK,aAAA;EAC5C,SAAA;AAAA;AAAA,UAEe,gBAAA,SAAyB,IAAA,CAAK,cAAA;EAC7C,SAAA;AAAA;AAAA,cAGW,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAOV,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,gBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,eAAA"}
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/switch/parts.tsx"],"mappings":";;;;;KAsBK,aAAA,GAAgB,wBAAA,QAAgC,MAAA,CAAW,IAAA;AAAA,KAC3D,cAAA,GAAiB,wBAAA,QAAgC,MAAA,CAAW,KAAA;AAAA,UAEhD,eAAA,SAAwB,aAAA;AAAA,UACxB,gBAAA,SAAyB,cAAA;AAAA,cAE7B,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAOV,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,gBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,eAAA"}
@@ -1,3 +1,4 @@
1
+ import { cx, resolveClassName } from "../utils/resolveClassName.js";
1
2
  import switch_module_default from "./switch.module.js";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { forwardRef } from "react";
@@ -22,14 +23,14 @@ import { Switch } from "@base-ui/react/switch";
22
23
  const SwitchRoot = forwardRef(function SwitchRoot({ className, ...props }, ref) {
23
24
  return /* @__PURE__ */ jsx(Switch.Root, {
24
25
  ref,
25
- className: `${switch_module_default["thumb-track"]} ${className ?? ""}`,
26
+ className: (state) => cx(switch_module_default["thumb-track"], resolveClassName(className, state)),
26
27
  ...props
27
28
  });
28
29
  });
29
30
  const SwitchThumb = forwardRef(function SwitchThumb({ className, ...props }, ref) {
30
31
  return /* @__PURE__ */ jsx(Switch.Thumb, {
31
32
  ref,
32
- className: `${switch_module_default.thumb} ${className ?? ""}`,
33
+ className: (state) => cx(switch_module_default.thumb, resolveClassName(className, state)),
33
34
  ...props
34
35
  });
35
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","names":["BaseSwitch","styles"],"sources":["../../src/switch/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Switch.\n *\n * @example\n * ```tsx\n * import { Switch } from '@base-ui/react/switch';\n * import { SwitchRoot, SwitchThumb } from '@brijbyte/agentic-ui/switch';\n *\n * <label htmlFor=\"sw\">\n * <SwitchRoot id=\"sw\" onCheckedChange={...}>\n * <SwitchThumb />\n * </SwitchRoot>\n * Dark mode\n * </label>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\n\ntype BaseRootProps = ComponentPropsWithoutRef<typeof BaseSwitch.Root>;\ntype BaseThumbProps = ComponentPropsWithoutRef<typeof BaseSwitch.Thumb>;\n\nexport interface SwitchRootProps extends Omit<BaseRootProps, \"className\"> {\n className?: string;\n}\nexport interface SwitchThumbProps extends Omit<BaseThumbProps, \"className\"> {\n className?: string;\n}\n\nexport const SwitchRoot = forwardRef<ComponentRef<typeof BaseSwitch.Root>, SwitchRootProps>(function SwitchRoot(\n { className, ...props },\n ref,\n) {\n return <BaseSwitch.Root ref={ref} className={`${styles[\"thumb-track\"]} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const SwitchThumb = forwardRef<ComponentRef<typeof BaseSwitch.Thumb>, SwitchThumbProps>(function SwitchThumb(\n { className, ...props },\n ref,\n) {\n return <BaseSwitch.Thumb ref={ref} className={`${styles.thumb} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,OAAW,MAAZ;EAAsB;EAAK,WAAW,GAAGC,sBAAO,eAAe,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACzG;AAEF,MAAa,cAAc,WAAoE,SAAS,YACtG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,OAAW,OAAZ;EAAuB;EAAK,WAAW,GAAGC,sBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACjG"}
1
+ {"version":3,"file":"parts.js","names":["BaseSwitch","styles"],"sources":["../../src/switch/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Switch.\n *\n * @example\n * ```tsx\n * import { Switch } from '@base-ui/react/switch';\n * import { SwitchRoot, SwitchThumb } from '@brijbyte/agentic-ui/switch';\n *\n * <label htmlFor=\"sw\">\n * <SwitchRoot id=\"sw\" onCheckedChange={...}>\n * <SwitchThumb />\n * </SwitchRoot>\n * Dark mode\n * </label>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\nimport { resolveClassName, cx } from \"../utils/resolveClassName\";\n\ntype BaseRootProps = ComponentPropsWithoutRef<typeof BaseSwitch.Root>;\ntype BaseThumbProps = ComponentPropsWithoutRef<typeof BaseSwitch.Thumb>;\n\nexport interface SwitchRootProps extends BaseRootProps {}\nexport interface SwitchThumbProps extends BaseThumbProps {}\n\nexport const SwitchRoot = forwardRef<ComponentRef<typeof BaseSwitch.Root>, SwitchRootProps>(function SwitchRoot(\n { className, ...props },\n ref,\n) {\n return <BaseSwitch.Root ref={ref} className={(state) => cx(styles[\"thumb-track\"], resolveClassName(className, state))} {...props} />;\n});\n\nexport const SwitchThumb = forwardRef<ComponentRef<typeof BaseSwitch.Thumb>, SwitchThumbProps>(function SwitchThumb(\n { className, ...props },\n ref,\n) {\n return <BaseSwitch.Thumb ref={ref} className={(state) => cx(styles.thumb, resolveClassName(className, state))} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,OAAW,MAAZ;EAAsB;EAAK,YAAY,UAAU,GAAGC,sBAAO,gBAAgB,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACpI;AAEF,MAAa,cAAc,WAAoE,SAAS,YACtG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,OAAW,OAAZ;EAAuB;EAAK,YAAY,UAAU,GAAGC,sBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC5H"}
@@ -7,11 +7,14 @@
7
7
  display: flex;
8
8
  }
9
9
 
10
- .root_3hDtBa[data-disabled] {
11
- opacity: .44;
10
+ .root_3hDtBa:has([data-disabled]) {
12
11
  cursor: not-allowed;
13
12
  }
14
13
 
14
+ .root_3hDtBa:has([data-disabled]) .label_3hDtBa {
15
+ opacity: .44;
16
+ }
17
+
15
18
  .thumb-track_3hDtBa {
16
19
  border-radius: var(--radius-full);
17
20
  background-color: var(--color-surface-3);
@@ -26,6 +29,12 @@
26
29
  position: relative;
27
30
  }
28
31
 
32
+ .thumb-track_3hDtBa[data-disabled] {
33
+ opacity: .44;
34
+ cursor: not-allowed;
35
+ pointer-events: none;
36
+ }
37
+
29
38
  .thumb-track_3hDtBa:focus-visible {
30
39
  box-shadow: var(--shadow-focus);
31
40
  }
@@ -4,18 +4,30 @@ import styles from "./switch.module.css";
4
4
 
5
5
  //#region src/switch/switch.d.ts
6
6
  interface SwitchProps {
7
+ /** Controlled checked state. */
7
8
  checked?: boolean;
9
+ /** Initial checked state (uncontrolled). */
8
10
  defaultChecked?: boolean;
11
+ /** Prevent interaction. */
9
12
  disabled?: boolean;
13
+ /** Mark the field as required for form validation. */
10
14
  required?: boolean;
15
+ /** HTML name attribute for form submission. */
11
16
  name?: string;
17
+ /** HTML value attribute for form submission. */
12
18
  value?: string;
13
19
  /** Called when checked state changes. `eventDetails` is the base-ui event details object. */
14
20
  onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;
21
+ /** Label content rendered next to the switch. */
15
22
  children?: ReactNode;
23
+ /** Override the auto-generated element id. */
16
24
  id?: string;
17
25
  className?: string;
18
26
  }
27
+ /**
28
+ * Toggle for boolean settings. Renders a track with a sliding thumb and
29
+ * an optional label. Wraps `@base-ui/react` Switch.
30
+ */
19
31
  declare function Switch({
20
32
  children,
21
33
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/switch/switch.tsx"],"mappings":";;;;;UAKiB,WAAA;EACf,OAAA;EACA,cAAA;EACA,QAAA;EACA,QAAA;EACA,IAAA;EACA,KAAA;EALA;EAOA,eAAA,IAAmB,OAAA,WAAkB,YAAA;EACrC,QAAA,GAAW,SAAA;EACX,EAAA;EACA,SAAA;AAAA;AAAA,iBAGc,MAAA,CAAA;EAAS,QAAA;EAAU,EAAA;EAAI,SAAA;EAAW,eAAA;EAAA,GAAoB;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/switch/switch.tsx"],"mappings":";;;;;UAKiB,WAAA;;EAEf,OAAA;EAFe;EAIf,cAAA;;EAEA,QAAA;EAJA;EAMA,QAAA;EAFA;EAIA,IAAA;EAAA;EAEA,KAAA;EAEA;EAAA,eAAA,IAAmB,OAAA,WAAkB,YAAA;EAAA;EAErC,QAAA,GAAW,SAAA;EAAA;EAEX,EAAA;EACA,SAAA;AAAA;;AAOF;;;iBAAgB,MAAA,CAAA;EAAS,QAAA;EAAU,EAAA;EAAI,SAAA;EAAW,eAAA;EAAA,GAAoB;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -3,6 +3,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useId } from "react";
4
4
  import { Switch } from "@base-ui/react/switch";
5
5
  //#region src/switch/switch.tsx
6
+ /**
7
+ * Toggle for boolean settings. Renders a track with a sliding thumb and
8
+ * an optional label. Wraps `@base-ui/react` Switch.
9
+ */
6
10
  function Switch$1({ children, id, className, onCheckedChange, ...props }) {
7
11
  const switchId = id ?? useId();
8
12
  return /* @__PURE__ */ jsxs("label", {
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":["Switch","styles","BaseSwitch"],"sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: string;\n /** Called when checked state changes. `eventDetails` is the base-ui event details object. */\n onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nexport function Switch({ children, id, className, onCheckedChange, ...props }: SwitchProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const switchId = id ?? useId();\n\n return (\n <label className={`${styles.root} ${className ?? \"\"}`} htmlFor={switchId}>\n <BaseSwitch.Root id={switchId} className={styles[\"thumb-track\"]} onCheckedChange={onCheckedChange as never} {...props}>\n <BaseSwitch.Thumb className={styles.thumb} />\n </BaseSwitch.Root>\n {children && <span className={styles.label}>{children}</span>}\n </label>\n );\n}\nexport { styles as SwitchStyles };\n"],"mappings":";;;;;AAmBA,SAAgBA,SAAO,EAAE,UAAU,IAAI,WAAW,iBAAiB,GAAG,SAAsB;CAE1F,MAAM,WAAW,MAAM,OAAO;AAE9B,QACE,qBAAC,SAAD;EAAO,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAAM,SAAS;YAAhE,CACE,oBAACC,OAAW,MAAZ;GAAiB,IAAI;GAAU,WAAWD,sBAAO;GAAiC;GAA0B,GAAI;aAC9G,oBAACC,OAAW,OAAZ,EAAkB,WAAWD,sBAAO,OAAS,CAAA;GAC7B,CAAA,EACjB,YAAY,oBAAC,QAAD;GAAM,WAAWA,sBAAO;GAAQ;GAAgB,CAAA,CACvD"}
1
+ {"version":3,"file":"switch.js","names":["Switch","styles","BaseSwitch"],"sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\n\nexport interface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean;\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 /** HTML value attribute for form submission. */\n value?: string;\n /** Called when checked state changes. `eventDetails` is the base-ui event details object. */\n onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;\n /** Label content rendered next to the switch. */\n children?: ReactNode;\n /** Override the auto-generated element id. */\n id?: string;\n className?: string;\n}\n\n/**\n * Toggle for boolean settings. Renders a track with a sliding thumb and\n * an optional label. Wraps `@base-ui/react` Switch.\n */\nexport function Switch({ children, id, className, onCheckedChange, ...props }: SwitchProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const switchId = id ?? useId();\n\n return (\n <label className={`${styles.root} ${className ?? \"\"}`} htmlFor={switchId}>\n <BaseSwitch.Root id={switchId} className={styles[\"thumb-track\"]} onCheckedChange={onCheckedChange as never} {...props}>\n <BaseSwitch.Thumb className={styles.thumb} />\n </BaseSwitch.Root>\n {children && <span className={styles.label}>{children}</span>}\n </label>\n );\n}\nexport { styles as SwitchStyles };\n"],"mappings":";;;;;;;;;AA+BA,SAAgBA,SAAO,EAAE,UAAU,IAAI,WAAW,iBAAiB,GAAG,SAAsB;CAE1F,MAAM,WAAW,MAAM,OAAO;AAE9B,QACE,qBAAC,SAAD;EAAO,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAAM,SAAS;YAAhE,CACE,oBAACC,OAAW,MAAZ;GAAiB,IAAI;GAAU,WAAWD,sBAAO;GAAiC;GAA0B,GAAI;aAC9G,oBAACC,OAAW,OAAZ,EAAkB,WAAWD,sBAAO,OAAS,CAAA;GAC7B,CAAA,EACjB,YAAY,oBAAC,QAAD;GAAM,WAAWA,sBAAO;GAAQ;GAAgB,CAAA,CACvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"switch.module.js","names":[],"sources":["../../src/switch/switch.module.css"],"sourcesContent":["@layer components {\n .root {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n cursor: pointer;\n user-select: none;\n }\n .root[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n }\n .thumb-track {\n position: relative;\n width: 36px;\n height: 20px;\n border-radius: var(--radius-full);\n background-color: var(--color-surface-3);\n border: var(--border-width-base) solid var(--color-line);\n transition:\n background-color var(--duration-normal) var(--easing-standard),\n border-color var(--duration-normal) var(--easing-standard),\n box-shadow var(--duration-fast) var(--easing-standard);\n outline: none;\n flex-shrink: 0;\n }\n .thumb-track:focus-visible {\n box-shadow: var(--shadow-focus);\n }\n .thumb-track[data-checked] {\n background-color: var(--color-accent);\n border-color: var(--color-accent);\n }\n .thumb-track[data-checked]:hover {\n background-color: var(--color-accent-hover);\n border-color: var(--color-accent-hover);\n }\n .thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: var(--radius-full);\n background-color: #ffffff;\n box-shadow: var(--shadow-xs);\n transition: transform var(--duration-normal) var(--easing-spring);\n }\n .thumb-track[data-checked] .thumb {\n transform: translateX(16px);\n }\n .label {\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n color: var(--color-primary);\n }\n}\n"],"mappings":";AAQA,IAAA,wBAAa;CAAA,SAAU;CAAA,QAAA;CAAA,SAAA;CAAA,eAAA;CAAA"}
1
+ {"version":3,"file":"switch.module.js","names":[],"sources":["../../src/switch/switch.module.css"],"sourcesContent":["@layer components {\n .root {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n cursor: pointer;\n user-select: none;\n }\n /* data-disabled lives on the inner button, not the label wrapper.\n Use :has() to dim the label text, and target the track directly. */\n .root:has([data-disabled]) {\n cursor: not-allowed;\n }\n .root:has([data-disabled]) .label {\n opacity: 0.44;\n }\n .thumb-track {\n position: relative;\n width: 36px;\n height: 20px;\n border-radius: var(--radius-full);\n background-color: var(--color-surface-3);\n border: var(--border-width-base) solid var(--color-line);\n transition:\n background-color var(--duration-normal) var(--easing-standard),\n border-color var(--duration-normal) var(--easing-standard),\n box-shadow var(--duration-fast) var(--easing-standard);\n outline: none;\n flex-shrink: 0;\n }\n .thumb-track[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n pointer-events: none;\n }\n .thumb-track:focus-visible {\n box-shadow: var(--shadow-focus);\n }\n .thumb-track[data-checked] {\n background-color: var(--color-accent);\n border-color: var(--color-accent);\n }\n .thumb-track[data-checked]:hover {\n background-color: var(--color-accent-hover);\n border-color: var(--color-accent-hover);\n }\n .thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: var(--radius-full);\n background-color: #ffffff;\n box-shadow: var(--shadow-xs);\n transition: transform var(--duration-normal) var(--easing-spring);\n }\n .thumb-track[data-checked] .thumb {\n transform: translateX(16px);\n }\n .label {\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n color: var(--color-primary);\n }\n}\n"],"mappings":";AAQA,IAAA,wBAAU;CAAA,SAAc;CAAc,QAAQ;CAAc,SAAO;CAAA,eAAA;CAAA"}
@@ -6,15 +6,9 @@ import { Tabs } from "@base-ui/react/tabs";
6
6
  type BaseListProps = ComponentPropsWithoutRef<typeof Tabs.List>;
7
7
  type BaseTabProps = ComponentPropsWithoutRef<typeof Tabs.Tab>;
8
8
  type BasePanelProps = ComponentPropsWithoutRef<typeof Tabs.Panel>;
9
- interface TabsListProps extends Omit<BaseListProps, "className"> {
10
- className?: string;
11
- }
12
- interface TabsTabProps extends Omit<BaseTabProps, "className"> {
13
- className?: string;
14
- }
15
- interface TabsPanelProps extends Omit<BasePanelProps, "className"> {
16
- className?: string;
17
- }
9
+ interface TabsListProps extends BaseListProps {}
10
+ interface TabsTabProps extends BaseTabProps {}
11
+ interface TabsPanelProps extends BasePanelProps {}
18
12
  declare const TabsList: react.ForwardRefExoticComponent<TabsListProps & react.RefAttributes<HTMLDivElement>>;
19
13
  declare const TabsTab: react.ForwardRefExoticComponent<TabsTabProps & react.RefAttributes<HTMLElement>>;
20
14
  declare const TabsPanel: react.ForwardRefExoticComponent<TabsPanelProps & react.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/tabs/parts.tsx"],"mappings":";;;;;KAuBK,aAAA,GAAgB,wBAAA,QAAgC,IAAA,CAAS,IAAA;AAAA,KACzD,YAAA,GAAe,wBAAA,QAAgC,IAAA,CAAS,GAAA;AAAA,KACxD,cAAA,GAAiB,wBAAA,QAAgC,IAAA,CAAS,KAAA;AAAA,UAE9C,aAAA,SAAsB,IAAA,CAAK,aAAA;EAC1C,SAAA;AAAA;AAAA,UAEe,YAAA,SAAqB,IAAA,CAAK,YAAA;EACzC,SAAA;AAAA;AAAA,UAEe,cAAA,SAAuB,IAAA,CAAK,cAAA;EAC3C,SAAA;AAAA;AAAA,cAGW,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,aAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAIR,OAAA,EAAO,KAAA,CAAA,yBAAA,CAAA,YAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAIP,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/tabs/parts.tsx"],"mappings":";;;;;KAwBK,aAAA,GAAgB,wBAAA,QAAgC,IAAA,CAAS,IAAA;AAAA,KACzD,YAAA,GAAe,wBAAA,QAAgC,IAAA,CAAS,GAAA;AAAA,KACxD,cAAA,GAAiB,wBAAA,QAAgC,IAAA,CAAS,KAAA;AAAA,UAE9C,aAAA,SAAsB,aAAA;AAAA,UACtB,YAAA,SAAqB,YAAA;AAAA,UACrB,cAAA,SAAuB,cAAA;AAAA,cAE3B,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,aAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAIR,OAAA,EAAO,KAAA,CAAA,yBAAA,CAAA,YAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAIP,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -1,3 +1,4 @@
1
+ import { cx, resolveClassName } from "../utils/resolveClassName.js";
1
2
  import tabs_module_default from "./tabs.module.js";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { forwardRef } from "react";
@@ -24,21 +25,21 @@ import { Tabs } from "@base-ui/react/tabs";
24
25
  const TabsList = forwardRef(function TabsList({ className, ...props }, ref) {
25
26
  return /* @__PURE__ */ jsx(Tabs.List, {
26
27
  ref,
27
- className: `${tabs_module_default.list} ${className ?? ""}`,
28
+ className: (state) => cx(tabs_module_default.list, resolveClassName(className, state)),
28
29
  ...props
29
30
  });
30
31
  });
31
32
  const TabsTab = forwardRef(function TabsTab({ className, ...props }, ref) {
32
33
  return /* @__PURE__ */ jsx(Tabs.Tab, {
33
34
  ref,
34
- className: `${tabs_module_default.tab} ${className ?? ""}`,
35
+ className: (state) => cx(tabs_module_default.tab, resolveClassName(className, state)),
35
36
  ...props
36
37
  });
37
38
  });
38
39
  const TabsPanel = forwardRef(function TabsPanel({ className, ...props }, ref) {
39
40
  return /* @__PURE__ */ jsx(Tabs.Panel, {
40
41
  ref,
41
- className: `${tabs_module_default.panel} ${className ?? ""}`,
42
+ className: (state) => cx(tabs_module_default.panel, resolveClassName(className, state)),
42
43
  ...props
43
44
  });
44
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","names":["BaseTabs","styles"],"sources":["../../src/tabs/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Tabs.\n *\n * @example\n * ```tsx\n * import { Tabs } from '@base-ui/react/tabs';\n * import { TabsList, TabsTab, TabsPanel } from '@brijbyte/agentic-ui/tabs';\n *\n * <Tabs.Root defaultValue=\"a\">\n * <TabsList>\n * <TabsTab value=\"a\">Tab A</TabsTab>\n * <TabsTab value=\"b\">Tab B</TabsTab>\n * </TabsList>\n * <TabsPanel value=\"a\">Content A</TabsPanel>\n * <TabsPanel value=\"b\">Content B</TabsPanel>\n * </Tabs.Root>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\n\ntype BaseListProps = ComponentPropsWithoutRef<typeof BaseTabs.List>;\ntype BaseTabProps = ComponentPropsWithoutRef<typeof BaseTabs.Tab>;\ntype BasePanelProps = ComponentPropsWithoutRef<typeof BaseTabs.Panel>;\n\nexport interface TabsListProps extends Omit<BaseListProps, \"className\"> {\n className?: string;\n}\nexport interface TabsTabProps extends Omit<BaseTabProps, \"className\"> {\n className?: string;\n}\nexport interface TabsPanelProps extends Omit<BasePanelProps, \"className\"> {\n className?: string;\n}\n\nexport const TabsList = forwardRef<ComponentRef<typeof BaseTabs.List>, TabsListProps>(function TabsList({ className, ...props }, ref) {\n return <BaseTabs.List ref={ref} className={`${styles.list} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const TabsTab = forwardRef<ComponentRef<typeof BaseTabs.Tab>, TabsTabProps>(function TabsTab({ className, ...props }, ref) {\n return <BaseTabs.Tab ref={ref} className={`${styles.tab} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const TabsPanel = forwardRef<ComponentRef<typeof BaseTabs.Panel>, TabsPanelProps>(function TabsPanel({ className, ...props }, ref) {\n return <BaseTabs.Panel ref={ref} className={`${styles.panel} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,WAAW,WAA8D,SAAS,SAAS,EAAE,WAAW,GAAG,SAAS,KAAK;AACpI,QAAO,oBAACA,KAAS,MAAV;EAAoB;EAAK,WAAW,GAAGC,oBAAO,KAAK,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC7F;AAEF,MAAa,UAAU,WAA4D,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAS,KAAK;AAChI,QAAO,oBAACD,KAAS,KAAV;EAAmB;EAAK,WAAW,GAAGC,oBAAO,IAAI,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC3F;AAEF,MAAa,YAAY,WAAgE,SAAS,UAAU,EAAE,WAAW,GAAG,SAAS,KAAK;AACxI,QAAO,oBAACD,KAAS,OAAV;EAAqB;EAAK,WAAW,GAAGC,oBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC/F"}
1
+ {"version":3,"file":"parts.js","names":["BaseTabs","styles"],"sources":["../../src/tabs/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Tabs.\n *\n * @example\n * ```tsx\n * import { Tabs } from '@base-ui/react/tabs';\n * import { TabsList, TabsTab, TabsPanel } from '@brijbyte/agentic-ui/tabs';\n *\n * <Tabs.Root defaultValue=\"a\">\n * <TabsList>\n * <TabsTab value=\"a\">Tab A</TabsTab>\n * <TabsTab value=\"b\">Tab B</TabsTab>\n * </TabsList>\n * <TabsPanel value=\"a\">Content A</TabsPanel>\n * <TabsPanel value=\"b\">Content B</TabsPanel>\n * </Tabs.Root>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\nimport { resolveClassName, cx } from \"../utils/resolveClassName\";\n\ntype BaseListProps = ComponentPropsWithoutRef<typeof BaseTabs.List>;\ntype BaseTabProps = ComponentPropsWithoutRef<typeof BaseTabs.Tab>;\ntype BasePanelProps = ComponentPropsWithoutRef<typeof BaseTabs.Panel>;\n\nexport interface TabsListProps extends BaseListProps {}\nexport interface TabsTabProps extends BaseTabProps {}\nexport interface TabsPanelProps extends BasePanelProps {}\n\nexport const TabsList = forwardRef<ComponentRef<typeof BaseTabs.List>, TabsListProps>(function TabsList({ className, ...props }, ref) {\n return <BaseTabs.List ref={ref} className={(state) => cx(styles.list, resolveClassName(className, state))} {...props} />;\n});\n\nexport const TabsTab = forwardRef<ComponentRef<typeof BaseTabs.Tab>, TabsTabProps>(function TabsTab({ className, ...props }, ref) {\n return <BaseTabs.Tab ref={ref} className={(state) => cx(styles.tab, resolveClassName(className, state))} {...props} />;\n});\n\nexport const TabsPanel = forwardRef<ComponentRef<typeof BaseTabs.Panel>, TabsPanelProps>(function TabsPanel({ className, ...props }, ref) {\n return <BaseTabs.Panel ref={ref} className={(state) => cx(styles.panel, resolveClassName(className, state))} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAa,WAAW,WAA8D,SAAS,SAAS,EAAE,WAAW,GAAG,SAAS,KAAK;AACpI,QAAO,oBAACA,KAAS,MAAV;EAAoB;EAAK,YAAY,UAAU,GAAGC,oBAAO,MAAM,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACxH;AAEF,MAAa,UAAU,WAA4D,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAS,KAAK;AAChI,QAAO,oBAACD,KAAS,KAAV;EAAmB;EAAK,YAAY,UAAU,GAAGC,oBAAO,KAAK,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACtH;AAEF,MAAa,YAAY,WAAgE,SAAS,UAAU,EAAE,WAAW,GAAG,SAAS,KAAK;AACxI,QAAO,oBAACD,KAAS,OAAV;EAAqB;EAAK,YAAY,UAAU,GAAGC,oBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC1H"}
@@ -11,13 +11,20 @@ interface TabItem {
11
11
  icon?: ReactNode;
12
12
  }
13
13
  interface TabsProps {
14
+ /** Array of tab definitions to render. */
14
15
  items: TabItem[];
16
+ /** Currently active tab value (controlled). */
15
17
  value?: string;
18
+ /** Initially active tab value (uncontrolled). Defaults to the first item. */
16
19
  defaultValue?: string;
17
- /** `eventDetails` is the base-ui event details object. */
20
+ /** Called when the active tab changes. `eventDetails` is the base-ui event details object. */
18
21
  onValueChange?: (value: unknown, eventDetails: unknown) => void;
19
22
  className?: string;
20
23
  }
24
+ /**
25
+ * Tab navigation for switching between content panels. Each tab can have
26
+ * an optional icon and can be individually disabled.
27
+ */
21
28
  declare function Tabs({
22
29
  items,
23
30
  className,
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/tabs/tabs.tsx"],"mappings":";;;;;UAIiB,OAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,OAAA,EAAS,SAAA;EACT,QAAA;EACA,IAAA,GAAO,SAAA;AAAA;AAAA,UAGQ,SAAA;EACf,KAAA,EAAO,OAAA;EACP,KAAA;EACA,YAAA;EAVA;EAYA,aAAA,IAAiB,KAAA,WAAgB,YAAA;EACjC,SAAA;AAAA;AAAA,iBAGc,IAAA,CAAA;EAAO,KAAA;EAAO,SAAA;EAAA,GAAc;AAAA,GAAS,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/tabs/tabs.tsx"],"mappings":";;;;;UAIiB,OAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,OAAA,EAAS,SAAA;EACT,QAAA;EACA,IAAA,GAAO,SAAA;AAAA;AAAA,UAGQ,SAAA;EAHR;EAKP,KAAA,EAAO,OAAA;EALS;EAOhB,KAAA;EAVA;EAYA,YAAA;EAXA;EAaA,aAAA,IAAiB,KAAA,WAAgB,YAAA;EACjC,SAAA;AAAA;;;;AATF;iBAgBgB,IAAA,CAAA;EAAO,KAAA;EAAO,SAAA;EAAA,GAAc;AAAA,GAAS,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA"}
package/dist/tabs/tabs.js CHANGED
@@ -2,6 +2,10 @@ import tabs_module_default from "./tabs.module.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Tabs } from "@base-ui/react/tabs";
4
4
  //#region src/tabs/tabs.tsx
5
+ /**
6
+ * Tab navigation for switching between content panels. Each tab can have
7
+ * an optional icon and can be individually disabled.
8
+ */
5
9
  function Tabs$1({ items, className, ...props }) {
6
10
  const defaultVal = props.defaultValue ?? items[0]?.value;
7
11
  return /* @__PURE__ */ jsxs(Tabs.Root, {
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":["Tabs","BaseTabs","styles"],"sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\n\nexport interface TabItem {\n value: string;\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n}\n\nexport interface TabsProps {\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n /** `eventDetails` is the base-ui event details object. */\n onValueChange?: (value: unknown, eventDetails: unknown) => void;\n className?: string;\n}\n\nexport function Tabs({ items, className, ...props }: TabsProps) {\n const defaultVal = props.defaultValue ?? items[0]?.value;\n\n return (\n <BaseTabs.Root\n className={`${styles.root} ${className ?? \"\"}`}\n defaultValue={defaultVal}\n onValueChange={props.onValueChange as never}\n value={props.value}\n >\n <BaseTabs.List className={styles.list}>\n {items.map((item) => (\n <BaseTabs.Tab key={item.value} value={item.value} disabled={item.disabled} className={styles.tab}>\n {item.icon}\n {item.label}\n </BaseTabs.Tab>\n ))}\n </BaseTabs.List>\n {items.map((item) => (\n <BaseTabs.Panel key={item.value} value={item.value} className={styles.panel}>\n {item.content}\n </BaseTabs.Panel>\n ))}\n </BaseTabs.Root>\n );\n}\nexport { styles as TabsStyles };\n"],"mappings":";;;;AAqBA,SAAgBA,OAAK,EAAE,OAAO,WAAW,GAAG,SAAoB;CAC9D,MAAM,aAAa,MAAM,gBAAgB,MAAM,IAAI;AAEnD,QACE,qBAACC,KAAS,MAAV;EACE,WAAW,GAAGC,oBAAO,KAAK,GAAG,aAAa;EAC1C,cAAc;EACd,eAAe,MAAM;EACrB,OAAO,MAAM;YAJf,CAME,oBAACD,KAAS,MAAV;GAAe,WAAWC,oBAAO;aAC9B,MAAM,KAAK,SACV,qBAACD,KAAS,KAAV;IAA+B,OAAO,KAAK;IAAO,UAAU,KAAK;IAAU,WAAWC,oBAAO;cAA7F,CACG,KAAK,MACL,KAAK,MACO;MAHI,KAAK,MAGT,CACf;GACY,CAAA,EACf,MAAM,KAAK,SACV,oBAACD,KAAS,OAAV;GAAiC,OAAO,KAAK;GAAO,WAAWC,oBAAO;aACnE,KAAK;GACS,EAFI,KAAK,MAET,CACjB,CACY"}
1
+ {"version":3,"file":"tabs.js","names":["Tabs","BaseTabs","styles"],"sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\n\nexport interface TabItem {\n value: string;\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n}\n\nexport interface TabsProps {\n /** Array of tab definitions to render. */\n items: TabItem[];\n /** Currently active tab value (controlled). */\n value?: string;\n /** Initially active tab value (uncontrolled). Defaults to the first item. */\n defaultValue?: string;\n /** Called when the active tab changes. `eventDetails` is the base-ui event details object. */\n onValueChange?: (value: unknown, eventDetails: unknown) => void;\n className?: string;\n}\n\n/**\n * Tab navigation for switching between content panels. Each tab can have\n * an optional icon and can be individually disabled.\n */\nexport function Tabs({ items, className, ...props }: TabsProps) {\n const defaultVal = props.defaultValue ?? items[0]?.value;\n\n return (\n <BaseTabs.Root\n className={`${styles.root} ${className ?? \"\"}`}\n defaultValue={defaultVal}\n onValueChange={props.onValueChange as never}\n value={props.value}\n >\n <BaseTabs.List className={styles.list}>\n {items.map((item) => (\n <BaseTabs.Tab key={item.value} value={item.value} disabled={item.disabled} className={styles.tab}>\n {item.icon}\n {item.label}\n </BaseTabs.Tab>\n ))}\n </BaseTabs.List>\n {items.map((item) => (\n <BaseTabs.Panel key={item.value} value={item.value} className={styles.panel}>\n {item.content}\n </BaseTabs.Panel>\n ))}\n </BaseTabs.Root>\n );\n}\nexport { styles as TabsStyles };\n"],"mappings":";;;;;;;;AA4BA,SAAgBA,OAAK,EAAE,OAAO,WAAW,GAAG,SAAoB;CAC9D,MAAM,aAAa,MAAM,gBAAgB,MAAM,IAAI;AAEnD,QACE,qBAACC,KAAS,MAAV;EACE,WAAW,GAAGC,oBAAO,KAAK,GAAG,aAAa;EAC1C,cAAc;EACd,eAAe,MAAM;EACrB,OAAO,MAAM;YAJf,CAME,oBAACD,KAAS,MAAV;GAAe,WAAWC,oBAAO;aAC9B,MAAM,KAAK,SACV,qBAACD,KAAS,KAAV;IAA+B,OAAO,KAAK;IAAO,UAAU,KAAK;IAAU,WAAWC,oBAAO;cAA7F,CACG,KAAK,MACL,KAAK,MACO;MAHI,KAAK,MAGT,CACf;GACY,CAAA,EACf,MAAM,KAAK,SACV,oBAACD,KAAS,OAAV;GAAiC,OAAO,KAAK;GAAO,WAAWC,oBAAO;aACnE,KAAK;GACS,EAFI,KAAK,MAET,CACjB,CACY"}
@@ -8,21 +8,11 @@ type BaseTitleProps = ComponentPropsWithoutRef<typeof Toast.Title>;
8
8
  type BaseDescriptionProps = ComponentPropsWithoutRef<typeof Toast.Description>;
9
9
  type BaseCloseProps = ComponentPropsWithoutRef<typeof Toast.Close>;
10
10
  type BaseViewportProps = ComponentPropsWithoutRef<typeof Toast.Viewport>;
11
- interface ToastRootProps extends Omit<BaseRootProps, "className"> {
12
- className?: string;
13
- }
14
- interface ToastTitleProps extends Omit<BaseTitleProps, "className"> {
15
- className?: string;
16
- }
17
- interface ToastDescriptionProps extends Omit<BaseDescriptionProps, "className"> {
18
- className?: string;
19
- }
20
- interface ToastCloseProps extends Omit<BaseCloseProps, "className"> {
21
- className?: string;
22
- }
23
- interface ToastViewportPartProps extends Omit<BaseViewportProps, "className"> {
24
- className?: string;
25
- }
11
+ interface ToastRootProps extends BaseRootProps {}
12
+ interface ToastTitleProps extends BaseTitleProps {}
13
+ interface ToastDescriptionProps extends BaseDescriptionProps {}
14
+ interface ToastCloseProps extends BaseCloseProps {}
15
+ interface ToastViewportPartProps extends BaseViewportProps {}
26
16
  declare const ToastRoot: react.ForwardRefExoticComponent<ToastRootProps & react.RefAttributes<HTMLDivElement>>;
27
17
  declare const ToastTitle: react.ForwardRefExoticComponent<ToastTitleProps & react.RefAttributes<HTMLHeadingElement>>;
28
18
  declare const ToastDescription: react.ForwardRefExoticComponent<ToastDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/toast/parts.tsx"],"mappings":";;;;;KAuBK,aAAA,GAAgB,wBAAA,QAAgC,KAAA,CAAU,IAAA;AAAA,KAC1D,cAAA,GAAiB,wBAAA,QAAgC,KAAA,CAAU,KAAA;AAAA,KAC3D,oBAAA,GAAuB,wBAAA,QAAgC,KAAA,CAAU,WAAA;AAAA,KACjE,cAAA,GAAiB,wBAAA,QAAgC,KAAA,CAAU,KAAA;AAAA,KAC3D,iBAAA,GAAoB,wBAAA,QAAgC,KAAA,CAAU,QAAA;AAAA,UAElD,cAAA,SAAuB,IAAA,CAAK,aAAA;EAC3C,SAAA;AAAA;AAAA,UAEe,eAAA,SAAwB,IAAA,CAAK,cAAA;EAC5C,SAAA;AAAA;AAAA,UAEe,qBAAA,SAA8B,IAAA,CAAK,oBAAA;EAClD,SAAA;AAAA;AAAA,UAEe,eAAA,SAAwB,IAAA,CAAK,cAAA;EAC5C,SAAA;AAAA;AAAA,UAEe,sBAAA,SAA+B,IAAA,CAAK,iBAAA;EACnD,SAAA;AAAA;AAAA,cAGW,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAIT,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,kBAAA;AAAA,cAOV,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,qBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,oBAAA;AAAA,cAOhB,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,cAOV,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,sBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/toast/parts.tsx"],"mappings":";;;;;KAwBK,aAAA,GAAgB,wBAAA,QAAgC,KAAA,CAAU,IAAA;AAAA,KAC1D,cAAA,GAAiB,wBAAA,QAAgC,KAAA,CAAU,KAAA;AAAA,KAC3D,oBAAA,GAAuB,wBAAA,QAAgC,KAAA,CAAU,WAAA;AAAA,KACjE,cAAA,GAAiB,wBAAA,QAAgC,KAAA,CAAU,KAAA;AAAA,KAC3D,iBAAA,GAAoB,wBAAA,QAAgC,KAAA,CAAU,QAAA;AAAA,UAElD,cAAA,SAAuB,aAAA;AAAA,UACvB,eAAA,SAAwB,cAAA;AAAA,UACxB,qBAAA,SAA8B,oBAAA;AAAA,UAC9B,eAAA,SAAwB,cAAA;AAAA,UACxB,sBAAA,SAA+B,iBAAA;AAAA,cAEnC,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAIT,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,kBAAA;AAAA,cAOV,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,qBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,oBAAA;AAAA,cAOhB,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,cAOV,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,sBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -1,3 +1,4 @@
1
+ import { cx, resolveClassName } from "../utils/resolveClassName.js";
1
2
  import toast_module_default from "./toast.module.js";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { forwardRef } from "react";
@@ -24,35 +25,35 @@ import { Toast } from "@base-ui/react/toast";
24
25
  const ToastRoot = forwardRef(function ToastRoot({ className, ...props }, ref) {
25
26
  return /* @__PURE__ */ jsx(Toast.Root, {
26
27
  ref,
27
- className: `${toast_module_default.toast} ${className ?? ""}`,
28
+ className: (state) => cx(toast_module_default.toast, resolveClassName(className, state)),
28
29
  ...props
29
30
  });
30
31
  });
31
32
  const ToastTitle = forwardRef(function ToastTitle({ className, ...props }, ref) {
32
33
  return /* @__PURE__ */ jsx(Toast.Title, {
33
34
  ref,
34
- className: `${toast_module_default.title} ${className ?? ""}`,
35
+ className: (state) => cx(toast_module_default.title, resolveClassName(className, state)),
35
36
  ...props
36
37
  });
37
38
  });
38
39
  const ToastDescription = forwardRef(function ToastDescription({ className, ...props }, ref) {
39
40
  return /* @__PURE__ */ jsx(Toast.Description, {
40
41
  ref,
41
- className: `${toast_module_default.description} ${className ?? ""}`,
42
+ className: (state) => cx(toast_module_default.description, resolveClassName(className, state)),
42
43
  ...props
43
44
  });
44
45
  });
45
46
  const ToastClose = forwardRef(function ToastClose({ className, ...props }, ref) {
46
47
  return /* @__PURE__ */ jsx(Toast.Close, {
47
48
  ref,
48
- className: `${toast_module_default.close} ${className ?? ""}`,
49
+ className: (state) => cx(toast_module_default.close, resolveClassName(className, state)),
49
50
  ...props
50
51
  });
51
52
  });
52
53
  const ToastViewportPart = forwardRef(function ToastViewportPart({ className, ...props }, ref) {
53
54
  return /* @__PURE__ */ jsx(Toast.Viewport, {
54
55
  ref,
55
- className: `${toast_module_default.viewport} ${className ?? ""}`,
56
+ className: (state) => cx(toast_module_default.viewport, resolveClassName(className, state)),
56
57
  ...props
57
58
  });
58
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","names":["BaseToast","styles"],"sources":["../../src/toast/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Toast.\n *\n * @example\n * ```tsx\n * import { Toast } from '@base-ui/react/toast';\n * import { ToastRoot, ToastTitle, ToastDescription, ToastClose } from '@brijbyte/agentic-ui/toast';\n *\n * // Inside a Toast.Viewport or custom viewport:\n * manager.toasts.map((toast) => (\n * <ToastRoot key={toast.id} toast={toast}>\n * <ToastTitle />\n * <ToastDescription />\n * <ToastClose aria-label=\"Dismiss\" />\n * </ToastRoot>\n * ))\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\n\ntype BaseRootProps = ComponentPropsWithoutRef<typeof BaseToast.Root>;\ntype BaseTitleProps = ComponentPropsWithoutRef<typeof BaseToast.Title>;\ntype BaseDescriptionProps = ComponentPropsWithoutRef<typeof BaseToast.Description>;\ntype BaseCloseProps = ComponentPropsWithoutRef<typeof BaseToast.Close>;\ntype BaseViewportProps = ComponentPropsWithoutRef<typeof BaseToast.Viewport>;\n\nexport interface ToastRootProps extends Omit<BaseRootProps, \"className\"> {\n className?: string;\n}\nexport interface ToastTitleProps extends Omit<BaseTitleProps, \"className\"> {\n className?: string;\n}\nexport interface ToastDescriptionProps extends Omit<BaseDescriptionProps, \"className\"> {\n className?: string;\n}\nexport interface ToastCloseProps extends Omit<BaseCloseProps, \"className\"> {\n className?: string;\n}\nexport interface ToastViewportPartProps extends Omit<BaseViewportProps, \"className\"> {\n className?: string;\n}\n\nexport const ToastRoot = forwardRef<ComponentRef<typeof BaseToast.Root>, ToastRootProps>(function ToastRoot({ className, ...props }, ref) {\n return <BaseToast.Root ref={ref} className={`${styles.toast} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ToastTitle = forwardRef<ComponentRef<typeof BaseToast.Title>, ToastTitleProps>(function ToastTitle(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Title ref={ref} className={`${styles.title} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ToastDescription = forwardRef<ComponentRef<typeof BaseToast.Description>, ToastDescriptionProps>(function ToastDescription(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Description ref={ref} className={`${styles.description} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ToastClose = forwardRef<ComponentRef<typeof BaseToast.Close>, ToastCloseProps>(function ToastClose(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Close ref={ref} className={`${styles.close} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ToastViewportPart = forwardRef<ComponentRef<typeof BaseToast.Viewport>, ToastViewportPartProps>(function ToastViewportPart(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Viewport ref={ref} className={`${styles.viewport} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6CA,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,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,OAAX;EAAsB;EAAK,WAAW,GAAGC,qBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAChG;AAEF,MAAa,mBAAmB,WAA8E,SAAS,iBACrH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,aAAX;EAA4B;EAAK,WAAW,GAAGC,qBAAO,YAAY,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC5G;AAEF,MAAa,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,OAAX;EAAsB;EAAK,WAAW,GAAGC,qBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAChG;AAEF,MAAa,oBAAoB,WAA4E,SAAS,kBACpH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,UAAX;EAAyB;EAAK,WAAW,GAAGC,qBAAO,SAAS,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACtG"}
1
+ {"version":3,"file":"parts.js","names":["BaseToast","styles"],"sources":["../../src/toast/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Toast.\n *\n * @example\n * ```tsx\n * import { Toast } from '@base-ui/react/toast';\n * import { ToastRoot, ToastTitle, ToastDescription, ToastClose } from '@brijbyte/agentic-ui/toast';\n *\n * // Inside a Toast.Viewport or custom viewport:\n * manager.toasts.map((toast) => (\n * <ToastRoot key={toast.id} toast={toast}>\n * <ToastTitle />\n * <ToastDescription />\n * <ToastClose aria-label=\"Dismiss\" />\n * </ToastRoot>\n * ))\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\nimport { resolveClassName, cx } from \"../utils/resolveClassName\";\n\ntype BaseRootProps = ComponentPropsWithoutRef<typeof BaseToast.Root>;\ntype BaseTitleProps = ComponentPropsWithoutRef<typeof BaseToast.Title>;\ntype BaseDescriptionProps = ComponentPropsWithoutRef<typeof BaseToast.Description>;\ntype BaseCloseProps = ComponentPropsWithoutRef<typeof BaseToast.Close>;\ntype BaseViewportProps = ComponentPropsWithoutRef<typeof BaseToast.Viewport>;\n\nexport interface ToastRootProps extends BaseRootProps {}\nexport interface ToastTitleProps extends BaseTitleProps {}\nexport interface ToastDescriptionProps extends BaseDescriptionProps {}\nexport interface ToastCloseProps extends BaseCloseProps {}\nexport interface ToastViewportPartProps extends BaseViewportProps {}\n\nexport const ToastRoot = forwardRef<ComponentRef<typeof BaseToast.Root>, ToastRootProps>(function ToastRoot({ className, ...props }, ref) {\n return <BaseToast.Root ref={ref} className={(state) => cx(styles.toast, resolveClassName(className, state))} {...props} />;\n});\n\nexport const ToastTitle = forwardRef<ComponentRef<typeof BaseToast.Title>, ToastTitleProps>(function ToastTitle(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Title ref={ref} className={(state) => cx(styles.title, resolveClassName(className, state))} {...props} />;\n});\n\nexport const ToastDescription = forwardRef<ComponentRef<typeof BaseToast.Description>, ToastDescriptionProps>(function ToastDescription(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Description ref={ref} className={(state) => cx(styles.description, resolveClassName(className, state))} {...props} />;\n});\n\nexport const ToastClose = forwardRef<ComponentRef<typeof BaseToast.Close>, ToastCloseProps>(function ToastClose(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Close ref={ref} className={(state) => cx(styles.close, resolveClassName(className, state))} {...props} />;\n});\n\nexport const ToastViewportPart = forwardRef<ComponentRef<typeof BaseToast.Viewport>, ToastViewportPartProps>(function ToastViewportPart(\n { className, ...props },\n ref,\n) {\n return <BaseToast.Viewport ref={ref} className={(state) => cx(styles.viewport, resolveClassName(className, state))} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,YAAY,WAAgE,SAAS,UAAU,EAAE,WAAW,GAAG,SAAS,KAAK;AACxI,QAAO,oBAACA,MAAU,MAAX;EAAqB;EAAK,YAAY,UAAU,GAAGC,qBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC1H;AAEF,MAAa,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,OAAX;EAAsB;EAAK,YAAY,UAAU,GAAGC,qBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC3H;AAEF,MAAa,mBAAmB,WAA8E,SAAS,iBACrH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,aAAX;EAA4B;EAAK,YAAY,UAAU,GAAGC,qBAAO,aAAa,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACvI;AAEF,MAAa,aAAa,WAAkE,SAAS,WACnG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,OAAX;EAAsB;EAAK,YAAY,UAAU,GAAGC,qBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC3H;AAEF,MAAa,oBAAoB,WAA4E,SAAS,kBACpH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,MAAU,UAAX;EAAyB;EAAK,YAAY,UAAU,GAAGC,qBAAO,UAAU,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACjI"}
@@ -24,16 +24,27 @@ interface ToastViewportProps {
24
24
  }
25
25
  interface ToastProviderProps {
26
26
  children: ReactNode;
27
+ /** Layout style for the viewport. @default "list" */
27
28
  variant?: ToastViewportProps["variant"];
29
+ /** Maximum number of toasts shown at once. */
28
30
  limit?: number;
31
+ /** Auto-dismiss delay in milliseconds. */
29
32
  timeout?: number;
30
33
  }
34
+ /**
35
+ * Drop-in provider that wires limit defaults to the chosen viewport variant.
36
+ * Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.
37
+ */
31
38
  declare function ToastProvider({
32
39
  children,
33
40
  variant,
34
41
  limit,
35
42
  timeout
36
43
  }: ToastProviderProps): react_jsx_runtime0.JSX.Element;
44
+ /**
45
+ * Renders and manages toast notifications. Supports `"stacked"` (Sonner-style
46
+ * fanned cards) and `"list"` (vertically stacked, each fully visible) layouts.
47
+ */
37
48
  declare function ToastViewport({
38
49
  variant,
39
50
  limit: _limit
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","names":[],"sources":["../../src/toast/toast.tsx"],"mappings":";;;;;;KAIY,SAAA;AAAA,cAGC,eAAA,SAAe,KAAA,CAAA,eAAA;AAAA,UAgDX,kBAAA;EAnDL;;;;;AAGZ;;EAwDE,OAAA;EAxD0B;;AAgD5B;;;EAcE,KAAA;AAAA;AAAA,UAQe,kBAAA;EACf,QAAA,EAAU,SAAA;EACV,OAAA,GAAU,kBAAA;EACV,KAAA;EACA,OAAA;AAAA;AAAA,iBAYc,aAAA,CAAA;EAAgB,QAAA;EAAU,OAAA;EAAkB,KAAA;EAAO;AAAA,GAAW,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAShF,aAAA,CAAA;EAAgB,OAAA;EAAkB,KAAA,EAAO;AAAA,GAAU,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"toast.d.ts","names":[],"sources":["../../src/toast/toast.tsx"],"mappings":";;;;;;KAIY,SAAA;AAAA,cAGC,eAAA,SAAe,KAAA,CAAA,eAAA;AAAA,UAgDX,kBAAA;EAnDL;;;;;AAGZ;;EAwDE,OAAA;EAxD0B;;AAgD5B;;;EAcE,KAAA;AAAA;AAAA,UAQe,kBAAA;EACf,QAAA,EAAU,SAAA;;EAEV,OAAA,GAAU,kBAAA;EAFV;EAIA,KAAA;EAFA;EAIA,OAAA;AAAA;;;;AAgBF;iBAAgB,aAAA,CAAA;EAAgB,QAAA;EAAU,OAAA;EAAkB,KAAA;EAAO;AAAA,GAAW,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;;iBAahF,aAAA,CAAA;EAAgB,OAAA;EAAkB,KAAA,EAAO;AAAA,GAAU,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -118,6 +118,10 @@ const MAX_LIMIT = {
118
118
  stacked: 10,
119
119
  list: 5
120
120
  };
121
+ /**
122
+ * Drop-in provider that wires limit defaults to the chosen viewport variant.
123
+ * Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.
124
+ */
121
125
  function ToastProvider({ children, variant = "list", limit, timeout }) {
122
126
  const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);
123
127
  return /* @__PURE__ */ jsx(Toast.Provider, {
@@ -126,6 +130,10 @@ function ToastProvider({ children, variant = "list", limit, timeout }) {
126
130
  children
127
131
  });
128
132
  }
133
+ /**
134
+ * Renders and manages toast notifications. Supports `"stacked"` (Sonner-style
135
+ * fanned cards) and `"list"` (vertically stacked, each fully visible) layouts.
136
+ */
129
137
  function ToastViewport({ variant = "list", limit: _limit }) {
130
138
  const manager = useToastManager();
131
139
  const isStacked = variant === "stacked";
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","names":["BaseToast","styles"],"sources":["../../src/toast/toast.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\n\nexport type ToastType = \"default\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\n// Re-export for consumer convenience\nexport const useToastManager = BaseToast.useToastManager;\n\nfunction XIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 1L9 9M9 1L1 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction StatusIcon({ type }: { type: string }) {\n if (type === \"success\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-success\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M4.5 8L6.5 10.5L11 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n }\n if (type === \"error\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-error\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n if (type === \"warning\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-warning\"]}`}>\n <path d=\"M8 2L14.5 13H1.5L8 2Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5V9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n if (type === \"info\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-info\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7V11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n return null;\n}\n\nexport interface ToastViewportProps {\n /**\n * \"stacked\" — toasts fan out behind each other like Sonner.\n * Collapsed: only the front toast is fully visible; others peek as\n * scaled-down cards behind it. Hover/focus expands the full stack.\n *\n * \"list\" — toasts stack vertically, each fully visible (default behaviour).\n */\n variant?: \"stacked\" | \"list\";\n /**\n * Maximum number of toasts shown at once.\n * Defaults to 5 for \"stacked\", 3 for \"list\".\n * Oldest toasts are removed when the limit is exceeded.\n */\n limit?: number;\n}\n\nconst DEFAULT_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 5,\n list: 3,\n};\n\nexport interface ToastProviderProps {\n children: ReactNode;\n variant?: ToastViewportProps[\"variant\"];\n limit?: number;\n timeout?: number;\n}\n\n/**\n * Drop-in provider that wires limit defaults to the chosen variant.\n * Use this instead of base-ui's Toast.Provider when using ToastViewport.\n */\nconst MAX_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 10,\n list: 5,\n};\n\nexport function ToastProvider({ children, variant = \"list\", limit, timeout }: ToastProviderProps) {\n const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);\n return (\n <BaseToast.Provider limit={resolvedLimit} timeout={timeout}>\n {children}\n </BaseToast.Provider>\n );\n}\n\nexport function ToastViewport({ variant = \"list\", limit: _limit }: ToastViewportProps) {\n const manager = useToastManager();\n const isStacked = variant === \"stacked\";\n\n return (\n <BaseToast.Viewport className={`${styles.viewport} ${isStacked ? styles[\"viewport-stacked\"] : styles[\"viewport-list\"]}`}>\n {manager.toasts.map((toast) => (\n <BaseToast.Root\n key={toast.id}\n toast={toast}\n className={`${styles.toast} ${isStacked ? styles[\"toast-stacked\"] : \"\"} ${styles[`toast-${toast.type ?? \"default\"}`]}`}\n swipeDirection={isStacked ? [\"right\", \"down\"] : [\"right\", \"down\"]}\n >\n {toast.type && toast.type !== \"default\" && <StatusIcon type={toast.type} />}\n <div className={styles.content}>\n {toast.title && <BaseToast.Title className={styles.title} />}\n {toast.description && <BaseToast.Description className={styles.description} />}\n </div>\n <BaseToast.Close className={styles.close} aria-label=\"Dismiss\">\n <XIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n );\n}\nexport { styles as ToastStyles };\n"],"mappings":"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"}
1
+ {"version":3,"file":"toast.js","names":["BaseToast","styles"],"sources":["../../src/toast/toast.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\n\nexport type ToastType = \"default\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\n// Re-export for consumer convenience\nexport const useToastManager = BaseToast.useToastManager;\n\nfunction XIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 1L9 9M9 1L1 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction StatusIcon({ type }: { type: string }) {\n if (type === \"success\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-success\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M4.5 8L6.5 10.5L11 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n }\n if (type === \"error\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-error\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n if (type === \"warning\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-warning\"]}`}>\n <path d=\"M8 2L14.5 13H1.5L8 2Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5V9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n if (type === \"info\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-info\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7V11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n return null;\n}\n\nexport interface ToastViewportProps {\n /**\n * \"stacked\" — toasts fan out behind each other like Sonner.\n * Collapsed: only the front toast is fully visible; others peek as\n * scaled-down cards behind it. Hover/focus expands the full stack.\n *\n * \"list\" — toasts stack vertically, each fully visible (default behaviour).\n */\n variant?: \"stacked\" | \"list\";\n /**\n * Maximum number of toasts shown at once.\n * Defaults to 5 for \"stacked\", 3 for \"list\".\n * Oldest toasts are removed when the limit is exceeded.\n */\n limit?: number;\n}\n\nconst DEFAULT_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 5,\n list: 3,\n};\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Layout style for the viewport. @default \"list\" */\n variant?: ToastViewportProps[\"variant\"];\n /** Maximum number of toasts shown at once. */\n limit?: number;\n /** Auto-dismiss delay in milliseconds. */\n timeout?: number;\n}\n\n/**\n * Drop-in provider that wires limit defaults to the chosen variant.\n * Use this instead of base-ui's Toast.Provider when using ToastViewport.\n */\nconst MAX_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 10,\n list: 5,\n};\n\n/**\n * Drop-in provider that wires limit defaults to the chosen viewport variant.\n * Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.\n */\nexport function ToastProvider({ children, variant = \"list\", limit, timeout }: ToastProviderProps) {\n const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);\n return (\n <BaseToast.Provider limit={resolvedLimit} timeout={timeout}>\n {children}\n </BaseToast.Provider>\n );\n}\n\n/**\n * Renders and manages toast notifications. Supports `\"stacked\"` (Sonner-style\n * fanned cards) and `\"list\"` (vertically stacked, each fully visible) layouts.\n */\nexport function ToastViewport({ variant = \"list\", limit: _limit }: ToastViewportProps) {\n const manager = useToastManager();\n const isStacked = variant === \"stacked\";\n\n return (\n <BaseToast.Viewport className={`${styles.viewport} ${isStacked ? styles[\"viewport-stacked\"] : styles[\"viewport-list\"]}`}>\n {manager.toasts.map((toast) => (\n <BaseToast.Root\n key={toast.id}\n toast={toast}\n className={`${styles.toast} ${isStacked ? styles[\"toast-stacked\"] : \"\"} ${styles[`toast-${toast.type ?? \"default\"}`]}`}\n swipeDirection={isStacked ? [\"right\", \"down\"] : [\"right\", \"down\"]}\n >\n {toast.type && toast.type !== \"default\" && <StatusIcon type={toast.type} />}\n <div className={styles.content}>\n {toast.title && <BaseToast.Title className={styles.title} />}\n {toast.description && <BaseToast.Description className={styles.description} />}\n </div>\n <BaseToast.Close className={styles.close} aria-label=\"Dismiss\">\n <XIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n );\n}\nexport { styles as ToastStyles };\n"],"mappings":"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"}