@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
@@ -6,15 +6,9 @@ import { Tooltip } from "@base-ui/react/tooltip";
6
6
  type BasePositionerProps = ComponentPropsWithoutRef<typeof Tooltip.Positioner>;
7
7
  type BasePopupProps = ComponentPropsWithoutRef<typeof Tooltip.Popup>;
8
8
  type BaseArrowProps = ComponentPropsWithoutRef<typeof Tooltip.Arrow>;
9
- interface TooltipPositionerProps extends Omit<BasePositionerProps, "className"> {
10
- className?: string;
11
- }
12
- interface TooltipPopupProps extends Omit<BasePopupProps, "className"> {
13
- className?: string;
14
- }
15
- interface TooltipArrowProps extends Omit<BaseArrowProps, "className"> {
16
- className?: string;
17
- }
9
+ interface TooltipPositionerProps extends BasePositionerProps {}
10
+ interface TooltipPopupProps extends BasePopupProps {}
11
+ interface TooltipArrowProps extends BaseArrowProps {}
18
12
  declare const TooltipPositioner: react.ForwardRefExoticComponent<TooltipPositionerProps & react.RefAttributes<HTMLDivElement>>;
19
13
  declare const TooltipPopup: react.ForwardRefExoticComponent<TooltipPopupProps & react.RefAttributes<HTMLDivElement>>;
20
14
  declare const TooltipArrow: react.ForwardRefExoticComponent<TooltipArrowProps & react.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/tooltip/parts.tsx"],"mappings":";;;;;KA4BK,mBAAA,GAAsB,wBAAA,QAAgC,OAAA,CAAY,UAAA;AAAA,KAClE,cAAA,GAAiB,wBAAA,QAAgC,OAAA,CAAY,KAAA;AAAA,KAC7D,cAAA,GAAiB,wBAAA,QAAgC,OAAA,CAAY,KAAA;AAAA,UAEjD,sBAAA,SAA+B,IAAA,CAAK,mBAAA;EACnD,SAAA;AAAA;AAAA,UAEe,iBAAA,SAA0B,IAAA,CAAK,cAAA;EAC9C,SAAA;AAAA;AAAA,UAEe,iBAAA,SAA0B,IAAA,CAAK,cAAA;EAC9C,SAAA;AAAA;AAAA,cAGW,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,sBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOZ,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
1
+ {"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/tooltip/parts.tsx"],"mappings":";;;;;KA6BK,mBAAA,GAAsB,wBAAA,QAAgC,OAAA,CAAY,UAAA;AAAA,KAClE,cAAA,GAAiB,wBAAA,QAAgC,OAAA,CAAY,KAAA;AAAA,KAC7D,cAAA,GAAiB,wBAAA,QAAgC,OAAA,CAAY,KAAA;AAAA,UAEjD,sBAAA,SAA+B,mBAAA;AAAA,UAC/B,iBAAA,SAA0B,cAAA;AAAA,UAC1B,iBAAA,SAA0B,cAAA;AAAA,cAE9B,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,sBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOZ,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA"}
@@ -1,3 +1,4 @@
1
+ import { cx, resolveClassName } from "../utils/resolveClassName.js";
1
2
  import tooltip_module_default from "./tooltip.module.js";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { forwardRef } from "react";
@@ -29,21 +30,21 @@ import { Tooltip } from "@base-ui/react/tooltip";
29
30
  const TooltipPositioner = forwardRef(function TooltipPositioner({ className, ...props }, ref) {
30
31
  return /* @__PURE__ */ jsx(Tooltip.Positioner, {
31
32
  ref,
32
- className: `${tooltip_module_default.positioner} ${className ?? ""}`,
33
+ className: (state) => cx(tooltip_module_default.positioner, resolveClassName(className, state)),
33
34
  ...props
34
35
  });
35
36
  });
36
37
  const TooltipPopup = forwardRef(function TooltipPopup({ className, ...props }, ref) {
37
38
  return /* @__PURE__ */ jsx(Tooltip.Popup, {
38
39
  ref,
39
- className: `${tooltip_module_default.popup} ${className ?? ""}`,
40
+ className: (state) => cx(tooltip_module_default.popup, resolveClassName(className, state)),
40
41
  ...props
41
42
  });
42
43
  });
43
44
  const TooltipArrow = forwardRef(function TooltipArrow({ className, ...props }, ref) {
44
45
  return /* @__PURE__ */ jsx(Tooltip.Arrow, {
45
46
  ref,
46
- className: `${tooltip_module_default.arrow} ${className ?? ""}`,
47
+ className: (state) => cx(tooltip_module_default.arrow, resolveClassName(className, state)),
47
48
  ...props
48
49
  });
49
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","names":["BaseTooltip","styles"],"sources":["../../src/tooltip/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Tooltip.\n *\n * @example\n * ```tsx\n * import { Tooltip } from '@base-ui/react/tooltip';\n * import { TooltipPositioner, TooltipPopup, TooltipArrow } from '@brijbyte/agentic-ui/tooltip';\n *\n * <Tooltip.Provider>\n * <Tooltip.Root>\n * <Tooltip.Trigger render={<button>Hover me</button>} />\n * <Tooltip.Portal>\n * <TooltipPositioner side=\"top\" sideOffset={6}>\n * <TooltipPopup>\n * <TooltipArrow />\n * Tooltip content\n * </TooltipPopup>\n * </TooltipPositioner>\n * </Tooltip.Portal>\n * </Tooltip.Root>\n * </Tooltip.Provider>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport styles from \"./tooltip.module.css\";\n\ntype BasePositionerProps = ComponentPropsWithoutRef<typeof BaseTooltip.Positioner>;\ntype BasePopupProps = ComponentPropsWithoutRef<typeof BaseTooltip.Popup>;\ntype BaseArrowProps = ComponentPropsWithoutRef<typeof BaseTooltip.Arrow>;\n\nexport interface TooltipPositionerProps extends Omit<BasePositionerProps, \"className\"> {\n className?: string;\n}\nexport interface TooltipPopupProps extends Omit<BasePopupProps, \"className\"> {\n className?: string;\n}\nexport interface TooltipArrowProps extends Omit<BaseArrowProps, \"className\"> {\n className?: string;\n}\n\nexport const TooltipPositioner = forwardRef<ComponentRef<typeof BaseTooltip.Positioner>, TooltipPositionerProps>(function TooltipPositioner(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Positioner ref={ref} className={`${styles.positioner} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const TooltipPopup = forwardRef<ComponentRef<typeof BaseTooltip.Popup>, TooltipPopupProps>(function TooltipPopup(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Popup ref={ref} className={`${styles.popup} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const TooltipArrow = forwardRef<ComponentRef<typeof BaseTooltip.Arrow>, TooltipArrowProps>(function TooltipArrow(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Arrow ref={ref} className={`${styles.arrow} ${className ?? \"\"}`} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAa,oBAAoB,WAAgF,SAAS,kBACxH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,QAAY,YAAb;EAA6B;EAAK,WAAW,GAAGC,uBAAO,WAAW,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAC5G;AAEF,MAAa,eAAe,WAAsE,SAAS,aACzG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,QAAY,OAAb;EAAwB;EAAK,WAAW,GAAGC,uBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAClG;AAEF,MAAa,eAAe,WAAsE,SAAS,aACzG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,QAAY,OAAb;EAAwB;EAAK,WAAW,GAAGC,uBAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAClG"}
1
+ {"version":3,"file":"parts.js","names":["BaseTooltip","styles"],"sources":["../../src/tooltip/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for Tooltip.\n *\n * @example\n * ```tsx\n * import { Tooltip } from '@base-ui/react/tooltip';\n * import { TooltipPositioner, TooltipPopup, TooltipArrow } from '@brijbyte/agentic-ui/tooltip';\n *\n * <Tooltip.Provider>\n * <Tooltip.Root>\n * <Tooltip.Trigger render={<button>Hover me</button>} />\n * <Tooltip.Portal>\n * <TooltipPositioner side=\"top\" sideOffset={6}>\n * <TooltipPopup>\n * <TooltipArrow />\n * Tooltip content\n * </TooltipPopup>\n * </TooltipPositioner>\n * </Tooltip.Portal>\n * </Tooltip.Root>\n * </Tooltip.Provider>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport styles from \"./tooltip.module.css\";\nimport { resolveClassName, cx } from \"../utils/resolveClassName\";\n\ntype BasePositionerProps = ComponentPropsWithoutRef<typeof BaseTooltip.Positioner>;\ntype BasePopupProps = ComponentPropsWithoutRef<typeof BaseTooltip.Popup>;\ntype BaseArrowProps = ComponentPropsWithoutRef<typeof BaseTooltip.Arrow>;\n\nexport interface TooltipPositionerProps extends BasePositionerProps {}\nexport interface TooltipPopupProps extends BasePopupProps {}\nexport interface TooltipArrowProps extends BaseArrowProps {}\n\nexport const TooltipPositioner = forwardRef<ComponentRef<typeof BaseTooltip.Positioner>, TooltipPositionerProps>(function TooltipPositioner(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Positioner ref={ref} className={(state) => cx(styles.positioner, resolveClassName(className, state))} {...props} />;\n});\n\nexport const TooltipPopup = forwardRef<ComponentRef<typeof BaseTooltip.Popup>, TooltipPopupProps>(function TooltipPopup(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Popup ref={ref} className={(state) => cx(styles.popup, resolveClassName(className, state))} {...props} />;\n});\n\nexport const TooltipArrow = forwardRef<ComponentRef<typeof BaseTooltip.Arrow>, TooltipArrowProps>(function TooltipArrow(\n { className, ...props },\n ref,\n) {\n return <BaseTooltip.Arrow ref={ref} className={(state) => cx(styles.arrow, resolveClassName(className, state))} {...props} />;\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,oBAAoB,WAAgF,SAAS,kBACxH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,QAAY,YAAb;EAA6B;EAAK,YAAY,UAAU,GAAGC,uBAAO,YAAY,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EACvI;AAEF,MAAa,eAAe,WAAsE,SAAS,aACzG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,QAAY,OAAb;EAAwB;EAAK,YAAY,UAAU,GAAGC,uBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC7H;AAEF,MAAa,eAAe,WAAsE,SAAS,aACzG,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,QAAY,OAAb;EAAwB;EAAK,YAAY,UAAU,GAAGC,uBAAO,OAAO,iBAAiB,WAAW,MAAM,CAAC;EAAE,GAAI;EAAS,CAAA;EAC7H"}
@@ -4,12 +4,21 @@ import styles from "./tooltip.module.css";
4
4
 
5
5
  //#region src/tooltip/tooltip.d.ts
6
6
  interface TooltipProps {
7
+ /** Text or rich content shown inside the tooltip popup. */
7
8
  content: ReactNode;
9
+ /** The element that triggers the tooltip on hover/focus. */
8
10
  children: ReactElement;
11
+ /** Hover delay in milliseconds before the tooltip appears. @default 400 */
9
12
  delay?: number;
13
+ /** Which side of the trigger the tooltip appears on. @default "top" */
10
14
  side?: "top" | "bottom" | "left" | "right";
15
+ /** Alignment along the side axis. @default "center" */
11
16
  align?: "start" | "center" | "end";
12
17
  }
18
+ /**
19
+ * Accessible popup shown on hover or focus. Automatically positions itself
20
+ * with an arrow and supports configurable delay, side, and alignment.
21
+ */
13
22
  declare function Tooltip({
14
23
  content,
15
24
  children,
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"mappings":";;;;;UAIiB,YAAA;EACf,OAAA,EAAS,SAAA;EACT,QAAA,EAAU,YAAA;EACV,KAAA;EACA,IAAA;EACA,KAAA;AAAA;AAAA,iBAGc,OAAA,CAAA;EAAU,OAAA;EAAS,QAAA;EAAU,KAAA;EAAa,IAAA;EAAc;AAAA,GAAoB,YAAA,GAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"tooltip.d.ts","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"mappings":";;;;;UAIiB,YAAA;;EAEf,OAAA,EAAS,SAAA;EAFM;EAIf,QAAA,EAAU,YAAA;;EAEV,KAAA;EAJA;EAMA,IAAA;EAJA;EAMA,KAAA;AAAA;;;;;iBAOc,OAAA,CAAA;EAAU,OAAA;EAAS,QAAA;EAAU,KAAA;EAAa,IAAA;EAAc;AAAA,GAAoB,YAAA,GAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -2,6 +2,10 @@ import tooltip_module_default from "./tooltip.module.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Tooltip } from "@base-ui/react/tooltip";
4
4
  //#region src/tooltip/tooltip.tsx
5
+ /**
6
+ * Accessible popup shown on hover or focus. Automatically positions itself
7
+ * with an arrow and supports configurable delay, side, and alignment.
8
+ */
5
9
  function Tooltip$1({ content, children, delay = 400, side = "top", align = "center" }) {
6
10
  return /* @__PURE__ */ jsx(Tooltip.Provider, {
7
11
  delay,
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":["Tooltip","BaseTooltip","styles"],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import type { ReactNode, ReactElement } from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport styles from \"./tooltip.module.css\";\n\nexport interface TooltipProps {\n content: ReactNode;\n children: ReactElement;\n delay?: number;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n}\n\nexport function Tooltip({ content, children, delay = 400, side = \"top\", align = \"center\" }: TooltipProps) {\n return (\n <BaseTooltip.Provider delay={delay}>\n <BaseTooltip.Root>\n <BaseTooltip.Trigger render={children} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner className={styles.positioner} side={side} align={align} sideOffset={6}>\n <BaseTooltip.Popup className={styles.popup}>\n <BaseTooltip.Arrow className={styles.arrow} />\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n </BaseTooltip.Provider>\n );\n}\nexport { styles as TooltipStyles };\n"],"mappings":";;;;AAYA,SAAgBA,UAAQ,EAAE,SAAS,UAAU,QAAQ,KAAK,OAAO,OAAO,QAAQ,YAA0B;AACxG,QACE,oBAACC,QAAY,UAAb;EAA6B;YAC3B,qBAACA,QAAY,MAAb,EAAA,UAAA,CACE,oBAACA,QAAY,SAAb,EAAqB,QAAQ,UAAY,CAAA,EACzC,oBAACA,QAAY,QAAb,EAAA,UACE,oBAACA,QAAY,YAAb;GAAwB,WAAWC,uBAAO;GAAkB;GAAa;GAAO,YAAY;aAC1F,qBAACD,QAAY,OAAb;IAAmB,WAAWC,uBAAO;cAArC,CACE,oBAACD,QAAY,OAAb,EAAmB,WAAWC,uBAAO,OAAS,CAAA,EAC7C,QACiB;;GACG,CAAA,EACN,CAAA,CACJ,EAAA,CAAA;EACE,CAAA"}
1
+ {"version":3,"file":"tooltip.js","names":["Tooltip","BaseTooltip","styles"],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import type { ReactNode, ReactElement } from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport styles from \"./tooltip.module.css\";\n\nexport interface TooltipProps {\n /** Text or rich content shown inside the tooltip popup. */\n content: ReactNode;\n /** The element that triggers the tooltip on hover/focus. */\n children: ReactElement;\n /** Hover delay in milliseconds before the tooltip appears. @default 400 */\n delay?: number;\n /** Which side of the trigger the tooltip appears on. @default \"top\" */\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Alignment along the side axis. @default \"center\" */\n align?: \"start\" | \"center\" | \"end\";\n}\n\n/**\n * Accessible popup shown on hover or focus. Automatically positions itself\n * with an arrow and supports configurable delay, side, and alignment.\n */\nexport function Tooltip({ content, children, delay = 400, side = \"top\", align = \"center\" }: TooltipProps) {\n return (\n <BaseTooltip.Provider delay={delay}>\n <BaseTooltip.Root>\n <BaseTooltip.Trigger render={children} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner className={styles.positioner} side={side} align={align} sideOffset={6}>\n <BaseTooltip.Popup className={styles.popup}>\n <BaseTooltip.Arrow className={styles.arrow} />\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n </BaseTooltip.Provider>\n );\n}\nexport { styles as TooltipStyles };\n"],"mappings":";;;;;;;;AAqBA,SAAgBA,UAAQ,EAAE,SAAS,UAAU,QAAQ,KAAK,OAAO,OAAO,QAAQ,YAA0B;AACxG,QACE,oBAACC,QAAY,UAAb;EAA6B;YAC3B,qBAACA,QAAY,MAAb,EAAA,UAAA,CACE,oBAACA,QAAY,SAAb,EAAqB,QAAQ,UAAY,CAAA,EACzC,oBAACA,QAAY,QAAb,EAAA,UACE,oBAACA,QAAY,YAAb;GAAwB,WAAWC,uBAAO;GAAkB;GAAa;GAAO,YAAY;aAC1F,qBAACD,QAAY,OAAb;IAAmB,WAAWC,uBAAO;cAArC,CACE,oBAACD,QAAY,OAAb,EAAmB,WAAWC,uBAAO,OAAS,CAAA,EAC7C,QACiB;;GACG,CAAA,EACN,CAAA,CACJ,EAAA,CAAA;EACE,CAAA"}
@@ -0,0 +1,25 @@
1
+ //#region src/utils/resolveClassName.ts
2
+ /**
3
+ * Resolves a base-ui className prop (string | function | undefined) into a string.
4
+ * When the className is a function, it is called with the component state.
5
+ * Used by styled parts to merge our fixed style class with the consumer's className.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // In a styled part, prepend our class while preserving function className support:
10
+ * className={(state) => cx(styles.root, resolveClassName(className, state))}
11
+ * ```
12
+ */
13
+ function resolveClassName(className, state) {
14
+ return typeof className === "function" ? className(state) : className;
15
+ }
16
+ /**
17
+ * Joins class name strings, filtering out falsy values.
18
+ */
19
+ function cx(...classes) {
20
+ return classes.filter(Boolean).join(" ");
21
+ }
22
+ //#endregion
23
+ export { cx, resolveClassName };
24
+
25
+ //# sourceMappingURL=resolveClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveClassName.js","names":[],"sources":["../../src/utils/resolveClassName.ts"],"sourcesContent":["/**\n * Resolves a base-ui className prop (string | function | undefined) into a string.\n * When the className is a function, it is called with the component state.\n * Used by styled parts to merge our fixed style class with the consumer's className.\n *\n * @example\n * ```tsx\n * // In a styled part, prepend our class while preserving function className support:\n * className={(state) => cx(styles.root, resolveClassName(className, state))}\n * ```\n */\nexport function resolveClassName<State>(\n className: string | ((state: State) => string | undefined) | undefined,\n state: State,\n): string | undefined {\n return typeof className === \"function\" ? className(state) : className;\n}\n\n/**\n * Joins class name strings, filtering out falsy values.\n */\nexport function cx(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,iBACd,WACA,OACoB;AACpB,QAAO,OAAO,cAAc,aAAa,UAAU,MAAM,GAAG;;;;;AAM9D,SAAgB,GAAG,GAAG,SAAwD;AAC5E,QAAO,QAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brijbyte/agentic-ui",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,6 +28,7 @@
28
28
  "./layer-order": "./dist/layer-order.css",
29
29
  "./tokens": "./dist/tokens.css",
30
30
  "./reset": "./dist/reset.css",
31
+ "./reset-scoped": "./dist/reset-scoped.css",
31
32
  "./tailwind-theme": "./dist/tailwind-theme.css",
32
33
  "./alert-dialog": {
33
34
  "import": "./dist/alert-dialog/index.js",
@@ -89,6 +90,11 @@
89
90
  "types": "./dist/menu/index.d.ts"
90
91
  },
91
92
  "./menu.css": "./dist/menu/menu.css",
93
+ "./meter": {
94
+ "import": "./dist/meter/index.js",
95
+ "types": "./dist/meter/index.d.ts"
96
+ },
97
+ "./meter.css": "./dist/meter/meter.css",
92
98
  "./number-field": {
93
99
  "import": "./dist/number-field/index.js",
94
100
  "types": "./dist/number-field/index.d.ts"
@@ -99,6 +105,16 @@
99
105
  "types": "./dist/progress/index.d.ts"
100
106
  },
101
107
  "./progress.css": "./dist/progress/progress.css",
108
+ "./radio": {
109
+ "import": "./dist/radio/index.js",
110
+ "types": "./dist/radio/index.d.ts"
111
+ },
112
+ "./radio.css": "./dist/radio/radio.css",
113
+ "./radio-group": {
114
+ "import": "./dist/radio-group/index.js",
115
+ "types": "./dist/radio-group/index.d.ts"
116
+ },
117
+ "./radio-group.css": "./dist/radio-group/radio-group.css",
102
118
  "./select": {
103
119
  "import": "./dist/select/index.js",
104
120
  "types": "./dist/select/index.d.ts"
@@ -133,7 +149,12 @@
133
149
  "import": "./dist/tooltip/index.js",
134
150
  "types": "./dist/tooltip/index.d.ts"
135
151
  },
136
- "./tooltip.css": "./dist/tooltip/tooltip.css"
152
+ "./tooltip.css": "./dist/tooltip/tooltip.css",
153
+ "./popover": {
154
+ "import": "./dist/popover/index.js",
155
+ "types": "./dist/popover/index.d.ts"
156
+ },
157
+ "./popover.css": "./dist/popover/popover.css"
137
158
  },
138
159
  "publishConfig": {
139
160
  "access": "public",
@@ -143,8 +164,8 @@
143
164
  "@base-ui/react": "^1.3.0"
144
165
  },
145
166
  "devDependencies": {
146
- "@types/react": "^19.0.0",
147
- "@types/react-dom": "^19.0.0"
167
+ "@types/react": "^19.2.14",
168
+ "@types/react-dom": "^19.2.3"
148
169
  },
149
170
  "peerDependencies": {
150
171
  "react": "^19.0.0",
@@ -3,17 +3,26 @@ import { Accordion as BaseAccordion } from "@base-ui/react/accordion";
3
3
  import styles from "./accordion.module.css";
4
4
 
5
5
  export interface AccordionItem {
6
+ /** Unique identifier for this panel. */
6
7
  value: string;
8
+ /** Content rendered inside the trigger button. */
7
9
  header: ReactNode;
10
+ /** Content revealed when the panel is expanded. */
8
11
  content: ReactNode;
12
+ /** When `true`, the item cannot be toggled. */
9
13
  disabled?: boolean;
10
14
  }
11
15
 
12
16
  export interface AccordionProps {
17
+ /** Array of items to render as collapsible panels. */
13
18
  items: AccordionItem[];
19
+ /** Allow multiple panels open at once. @default true */
14
20
  multiple?: boolean;
21
+ /** Initially expanded panel values (uncontrolled). */
15
22
  defaultValue?: string[];
23
+ /** Currently expanded panel values (controlled). */
16
24
  value?: string[];
25
+ /** Called when the set of open panels changes. */
17
26
  onValueChange?: (value: string[]) => void;
18
27
  className?: string;
19
28
  }
@@ -26,6 +35,11 @@ function ChevronIcon() {
26
35
  );
27
36
  }
28
37
 
38
+ /**
39
+ * Collapsible content panels. Wraps `@base-ui/react` Accordion with pre-styled
40
+ * headers, triggers, and animated panels. Pass `multiple` to allow more than one
41
+ * panel open at a time.
42
+ */
29
43
  export function Accordion({ items, className, multiple = true, ...props }: AccordionProps) {
30
44
  return (
31
45
  <BaseAccordion.Root className={`${styles.root} ${className ?? ""}`} multiple={multiple} {...props}>
@@ -1,6 +1,6 @@
1
1
  export { Accordion } from "./accordion";
2
2
  export type { AccordionProps, AccordionItem } from "./accordion";
3
3
 
4
- export { AccordionItem as AccordionItemPart, AccordionHeader, AccordionTrigger, AccordionPanel } from "./parts";
4
+ export { AccordionItemPart, AccordionHeader, AccordionTrigger, AccordionPanel } from "./parts";
5
5
  export type { AccordionItemProps, AccordionHeaderProps, AccordionTriggerProps, AccordionPanelProps } from "./parts";
6
6
  export { AccordionStyles } from "./accordion";
@@ -20,49 +20,42 @@ import { forwardRef } from "react";
20
20
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
21
21
  import { Accordion as BaseAccordion } from "@base-ui/react/accordion";
22
22
  import styles from "./accordion.module.css";
23
+ import { resolveClassName, cx } from "../utils/resolveClassName";
23
24
 
24
25
  type BaseItemProps = ComponentPropsWithoutRef<typeof BaseAccordion.Item>;
25
26
  type BaseHeaderProps = ComponentPropsWithoutRef<typeof BaseAccordion.Header>;
26
27
  type BaseTriggerProps = ComponentPropsWithoutRef<typeof BaseAccordion.Trigger>;
27
28
  type BasePanelProps = ComponentPropsWithoutRef<typeof BaseAccordion.Panel>;
28
29
 
29
- export interface AccordionItemProps extends Omit<BaseItemProps, "className"> {
30
- className?: string;
31
- }
32
- export interface AccordionHeaderProps extends Omit<BaseHeaderProps, "className"> {
33
- className?: string;
34
- }
35
- export interface AccordionTriggerProps extends Omit<BaseTriggerProps, "className"> {
36
- className?: string;
37
- }
38
- export interface AccordionPanelProps extends Omit<BasePanelProps, "className"> {
39
- className?: string;
40
- }
30
+ export interface AccordionItemProps extends BaseItemProps {}
31
+ export interface AccordionHeaderProps extends BaseHeaderProps {}
32
+ export interface AccordionTriggerProps extends BaseTriggerProps {}
33
+ export interface AccordionPanelProps extends BasePanelProps {}
41
34
 
42
- export const AccordionItem = forwardRef<ComponentRef<typeof BaseAccordion.Item>, AccordionItemProps>(function AccordionItem(
35
+ export const AccordionItemPart = forwardRef<ComponentRef<typeof BaseAccordion.Item>, AccordionItemProps>(function AccordionItemPart(
43
36
  { className, ...props },
44
37
  ref,
45
38
  ) {
46
- return <BaseAccordion.Item ref={ref} className={`${styles.item} ${className ?? ""}`} {...props} />;
39
+ return <BaseAccordion.Item ref={ref} className={(state) => cx(styles.item, resolveClassName(className, state))} {...props} />;
47
40
  });
48
41
 
49
42
  export const AccordionHeader = forwardRef<ComponentRef<typeof BaseAccordion.Header>, AccordionHeaderProps>(function AccordionHeader(
50
43
  { className, ...props },
51
44
  ref,
52
45
  ) {
53
- return <BaseAccordion.Header ref={ref} className={`${styles.header} ${className ?? ""}`} {...props} />;
46
+ return <BaseAccordion.Header ref={ref} className={(state) => cx(styles.header, resolveClassName(className, state))} {...props} />;
54
47
  });
55
48
 
56
49
  export const AccordionTrigger = forwardRef<ComponentRef<typeof BaseAccordion.Trigger>, AccordionTriggerProps>(function AccordionTrigger(
57
50
  { className, ...props },
58
51
  ref,
59
52
  ) {
60
- return <BaseAccordion.Trigger ref={ref} className={`${styles.trigger} ${className ?? ""}`} {...props} />;
53
+ return <BaseAccordion.Trigger ref={ref} className={(state) => cx(styles.trigger, resolveClassName(className, state))} {...props} />;
61
54
  });
62
55
 
63
56
  export const AccordionPanel = forwardRef<ComponentRef<typeof BaseAccordion.Panel>, AccordionPanelProps>(function AccordionPanel(
64
57
  { className, ...props },
65
58
  ref,
66
59
  ) {
67
- return <BaseAccordion.Panel ref={ref} className={`${styles.panel} ${className ?? ""}`} {...props} />;
60
+ return <BaseAccordion.Panel ref={ref} className={(state) => cx(styles.panel, resolveClassName(className, state))} {...props} />;
68
61
  });
@@ -14,13 +14,19 @@ export interface AlertAction {
14
14
  }
15
15
 
16
16
  export interface AlertDialogProps {
17
+ /** Controlled open state. */
17
18
  open?: boolean;
19
+ /** Whether the dialog is initially open (uncontrolled). */
18
20
  defaultOpen?: boolean;
21
+ /** Called when the dialog opens or closes. */
19
22
  onOpenChange?: (open: boolean, eventDetails: unknown) => void;
23
+ /** Element that opens the dialog when clicked. */
20
24
  trigger?: ReactElement;
21
25
  /** Optional icon shown above the title. */
22
26
  icon?: ReactNode;
27
+ /** Dialog heading text. */
23
28
  title: ReactNode;
29
+ /** Supplementary text below the title. */
24
30
  description?: ReactNode;
25
31
  /**
26
32
  * Action buttons rendered right-aligned.
@@ -31,6 +37,11 @@ export interface AlertDialogProps {
31
37
  className?: string;
32
38
  }
33
39
 
40
+ /**
41
+ * A modal that requires a user response before continuing. Blocks interaction
42
+ * with the rest of the page until dismissed. Two actions render side-by-side;
43
+ * three or more stack vertically.
44
+ */
34
45
  export function AlertDialog({ trigger, icon, title, description, actions, className, onOpenChange, ...props }: AlertDialogProps) {
35
46
  return (
36
47
  <BaseAlertDialog.Root onOpenChange={onOpenChange as never} {...props}>
@@ -3,52 +3,42 @@
3
3
  *
4
4
  * @example
5
5
  * ```tsx
6
- * import { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';
7
- * import { Button } from '@brijbyte/agentic-ui/button';
6
+ * import { AlertDialog } from '@base-ui/react/alert-dialog';
8
7
  * import { AlertDialogBackdrop, AlertDialogPopup, AlertDialogTitle, AlertDialogDescription } from '@brijbyte/agentic-ui/alert-dialog';
9
8
  *
10
- * <BaseAlertDialog.Root>
11
- * <BaseAlertDialog.Trigger render={<button>Open</button>} />
12
- * <BaseAlertDialog.Portal>
9
+ * <AlertDialog.Root>
10
+ * <AlertDialog.Trigger render={<button>Open</button>} />
11
+ * <AlertDialog.Portal>
13
12
  * <AlertDialogBackdrop />
14
- * <AlertDialogPopup>
15
- * <AlertDialogTitle>Delete account?</AlertDialogTitle>
16
- * <AlertDialogDescription>This cannot be undone.</AlertDialogDescription>
17
- * <div>
18
- * <BaseAlertDialog.Close render={<Button variant="soft" tone="destructive" size="sm" />}>Delete</BaseAlertDialog.Close>
19
- * <BaseAlertDialog.Close render={<Button variant="outline" size="sm" />}>Cancel</BaseAlertDialog.Close>
20
- * </div>
21
- * </AlertDialogPopup>
22
- * </BaseAlertDialog.Portal>
23
- * </BaseAlertDialog.Root>
13
+ * <AlertDialog.Viewport>
14
+ * <AlertDialogPopup>
15
+ * <AlertDialogTitle>Confirm</AlertDialogTitle>
16
+ * <AlertDialogDescription>Are you sure?</AlertDialogDescription>
17
+ * </AlertDialogPopup>
18
+ * </AlertDialog.Viewport>
19
+ * </AlertDialog.Portal>
20
+ * </AlertDialog.Root>
24
21
  * ```
25
22
  */
26
23
  import { forwardRef } from "react";
27
24
  import type { ComponentRef, ComponentPropsWithoutRef } from "react";
28
25
  import { AlertDialog as BaseAlertDialog } from "@base-ui/react/alert-dialog";
29
26
  import styles from "./alert-dialog.module.css";
27
+ import { resolveClassName, cx } from "../utils/resolveClassName";
30
28
 
31
29
  type BaseBackdropProps = ComponentPropsWithoutRef<typeof BaseAlertDialog.Backdrop>;
32
30
  type BasePopupProps = ComponentPropsWithoutRef<typeof BaseAlertDialog.Popup>;
33
31
  type BaseTitleProps = ComponentPropsWithoutRef<typeof BaseAlertDialog.Title>;
34
32
  type BaseDescriptionProps = ComponentPropsWithoutRef<typeof BaseAlertDialog.Description>;
35
33
 
36
- export interface AlertDialogBackdropProps extends Omit<BaseBackdropProps, "className"> {
37
- className?: string;
38
- }
39
- export interface AlertDialogPopupProps extends Omit<BasePopupProps, "className"> {
40
- className?: string;
41
- }
42
- export interface AlertDialogTitleProps extends Omit<BaseTitleProps, "className"> {
43
- className?: string;
44
- }
45
- export interface AlertDialogDescriptionProps extends Omit<BaseDescriptionProps, "className"> {
46
- className?: string;
47
- }
34
+ export interface AlertDialogBackdropProps extends BaseBackdropProps {}
35
+ export interface AlertDialogPopupProps extends BasePopupProps {}
36
+ export interface AlertDialogTitleProps extends BaseTitleProps {}
37
+ export interface AlertDialogDescriptionProps extends BaseDescriptionProps {}
48
38
 
49
39
  export const AlertDialogBackdrop = forwardRef<ComponentRef<typeof BaseAlertDialog.Backdrop>, AlertDialogBackdropProps>(
50
40
  function AlertDialogBackdrop({ className, ...props }, ref) {
51
- return <BaseAlertDialog.Backdrop ref={ref} className={`${styles.backdrop} ${className ?? ""}`} {...props} />;
41
+ return <BaseAlertDialog.Backdrop ref={ref} className={(state) => cx(styles.backdrop, resolveClassName(className, state))} {...props} />;
52
42
  },
53
43
  );
54
44
 
@@ -56,18 +46,20 @@ export const AlertDialogPopup = forwardRef<ComponentRef<typeof BaseAlertDialog.P
56
46
  { className, ...props },
57
47
  ref,
58
48
  ) {
59
- return <BaseAlertDialog.Popup ref={ref} className={`${styles.popup} ${className ?? ""}`} {...props} />;
49
+ return <BaseAlertDialog.Popup ref={ref} className={(state) => cx(styles.popup, resolveClassName(className, state))} {...props} />;
60
50
  });
61
51
 
62
52
  export const AlertDialogTitle = forwardRef<ComponentRef<typeof BaseAlertDialog.Title>, AlertDialogTitleProps>(function AlertDialogTitle(
63
53
  { className, ...props },
64
54
  ref,
65
55
  ) {
66
- return <BaseAlertDialog.Title ref={ref} className={`${styles.title} ${className ?? ""}`} {...props} />;
56
+ return <BaseAlertDialog.Title ref={ref} className={(state) => cx(styles.title, resolveClassName(className, state))} {...props} />;
67
57
  });
68
58
 
69
59
  export const AlertDialogDescription = forwardRef<ComponentRef<typeof BaseAlertDialog.Description>, AlertDialogDescriptionProps>(
70
60
  function AlertDialogDescription({ className, ...props }, ref) {
71
- return <BaseAlertDialog.Description ref={ref} className={`${styles.description} ${className ?? ""}`} {...props} />;
61
+ return (
62
+ <BaseAlertDialog.Description ref={ref} className={(state) => cx(styles.description, resolveClassName(className, state))} {...props} />
63
+ );
72
64
  },
73
65
  );
@@ -4,10 +4,16 @@ import styles from "./badge.module.css";
4
4
  export type BadgeVariant = "default" | "solid" | "soft" | "success" | "warning" | "error" | "info";
5
5
 
6
6
  export interface BadgeProps extends ComponentPropsWithoutRef<"span"> {
7
+ /** Visual style and semantic colour. @default "default" */
7
8
  variant?: BadgeVariant;
9
+ /** Show a small coloured dot indicator before the label. */
8
10
  dot?: boolean;
9
11
  }
10
12
 
13
+ /**
14
+ * Compact label for status, counts, and categories. A plain styled `<span>` —
15
+ * no base-ui dependency.
16
+ */
11
17
  export function Badge({ variant = "default", dot = false, className, children, ...props }: BadgeProps) {
12
18
  return (
13
19
  <span className={[styles.root, styles[`variant-${variant}`], className ?? ""].filter(Boolean).join(" ")} {...props}>
@@ -8,10 +8,13 @@ export type ButtonTone = "primary" | "secondary" | "destructive" | "success" | "
8
8
  export type ButtonSize = "xs" | "sm" | "md" | "lg";
9
9
 
10
10
  export interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
11
+ /** Visual shape — filled, tinted, outlined, or borderless. @default "solid" */
11
12
  variant?: ButtonVariant;
12
- /** Semantic color. Defaults to "primary". */
13
+ /** Semantic colour. @default "primary" */
13
14
  tone?: ButtonTone | undefined;
15
+ /** Controls padding and font size. @default "md" */
14
16
  size?: ButtonSize | undefined;
17
+ /** Shows a spinner overlay and disables interaction. */
15
18
  loading?: boolean | undefined;
16
19
  /**
17
20
  * Text shown in place of children while loading.
@@ -19,11 +22,19 @@ export interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
19
22
  * When omitted, children stay rendered invisibly — width stays stable.
20
23
  */
21
24
  loadingText?: string | undefined;
25
+ /** Renders as a square button with equal padding on all sides. */
22
26
  iconOnly?: boolean | undefined;
27
+ /** Custom render element forwarded to base-ui Button. */
23
28
  render?: ReactElement | undefined;
29
+ /** Use a native `<button>` element. @default true */
24
30
  nativeButton?: boolean | undefined;
25
31
  }
26
32
 
33
+ /**
34
+ * Pressable button with multiple variants, tones, and sizes. Composes
35
+ * `@base-ui/react` Button with focus management and disabled-while-loading.
36
+ * Supports a spinner overlay that preserves button width.
37
+ */
27
38
  export const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(
28
39
  {
29
40
  variant = "solid",
package/src/card/card.tsx CHANGED
@@ -2,7 +2,9 @@ import type { ComponentPropsWithoutRef, ReactNode } from "react";
2
2
  import styles from "./card.module.css";
3
3
 
4
4
  export interface CardProps extends ComponentPropsWithoutRef<"div"> {
5
+ /** Apply a raised shadow for layered surfaces. */
5
6
  elevated?: boolean;
7
+ /** Add hover/active states for clickable cards. */
6
8
  interactive?: boolean;
7
9
  }
8
10
 
@@ -10,9 +12,14 @@ export interface CardProps extends ComponentPropsWithoutRef<"div"> {
10
12
  export interface CardHeaderProps extends Omit<ComponentPropsWithoutRef<"div">, "title"> {
11
13
  /** Card heading rendered in the header area. */
12
14
  heading?: ReactNode;
15
+ /** Secondary text below the heading. */
13
16
  description?: ReactNode;
14
17
  }
15
18
 
19
+ /**
20
+ * Surface container with optional header, body, and footer slots.
21
+ * Pure HTML — no base-ui dependency.
22
+ */
16
23
  export function Card({ elevated, interactive, className, children, ...props }: CardProps) {
17
24
  return (
18
25
  <div
@@ -26,6 +33,7 @@ export function Card({ elevated, interactive, className, children, ...props }: C
26
33
  );
27
34
  }
28
35
 
36
+ /** Header area with optional heading and description. */
29
37
  export function CardHeader({ heading, description, className, children, ...props }: CardHeaderProps) {
30
38
  return (
31
39
  <div className={`${styles.header} ${className ?? ""}`} {...props}>
@@ -36,6 +44,7 @@ export function CardHeader({ heading, description, className, children, ...props
36
44
  );
37
45
  }
38
46
 
47
+ /** Padded body content area. */
39
48
  export function CardBody({ className, children, ...props }: ComponentPropsWithoutRef<"div">) {
40
49
  return (
41
50
  <div className={`${styles.body} ${className ?? ""}`} {...props}>
@@ -44,6 +53,7 @@ export function CardBody({ className, children, ...props }: ComponentPropsWithou
44
53
  );
45
54
  }
46
55
 
56
+ /** Footer area, typically used for actions. */
47
57
  export function CardFooter({ className, children, ...props }: ComponentPropsWithoutRef<"div">) {
48
58
  return (
49
59
  <div className={`${styles.footer} ${className ?? ""}`} {...props}>
@@ -4,20 +4,33 @@ import { Checkbox as BaseCheckbox } from "@base-ui/react/checkbox";
4
4
  import styles from "./checkbox.module.css";
5
5
 
6
6
  export interface CheckboxProps {
7
+ /** Controlled checked state. */
7
8
  checked?: boolean;
9
+ /** Initial checked state (uncontrolled). */
8
10
  defaultChecked?: boolean;
11
+ /** Display a horizontal dash instead of a checkmark. */
9
12
  indeterminate?: boolean;
13
+ /** Prevent interaction and dim the checkbox. */
10
14
  disabled?: boolean;
15
+ /** Mark the field as required for form validation. */
11
16
  required?: boolean;
17
+ /** HTML name attribute for form submission. */
12
18
  name?: string;
19
+ /** HTML value attribute for form submission. */
13
20
  value?: string;
14
21
  /** Called when checked state changes. `eventDetails` is the base-ui event details object. */
15
22
  onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;
23
+ /** Label content rendered next to the checkbox. */
16
24
  children?: ReactNode;
25
+ /** Override the auto-generated element id. */
17
26
  id?: string;
18
27
  className?: string;
19
28
  }
20
29
 
30
+ /**
31
+ * Boolean selection with an accessible label. Wraps `@base-ui/react` Checkbox
32
+ * with a styled indicator, check icon, and label layout.
33
+ */
21
34
  export function Checkbox({ children, id, className, onCheckedChange, ...props }: CheckboxProps) {
22
35
  // eslint-disable-next-line react-hooks/rules-of-hooks
23
36
  const checkboxId = id ?? useId();