@fragments-sdk/ui 0.12.0 → 0.14.0

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 (675) hide show
  1. package/dist/assets/ui.css +1642 -1679
  2. package/dist/chart.cjs.map +1 -1
  3. package/dist/chart.js.map +1 -1
  4. package/dist/codeblock.cjs +26 -18
  5. package/dist/codeblock.cjs.map +1 -1
  6. package/dist/codeblock.js +26 -18
  7. package/dist/codeblock.js.map +1 -1
  8. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  9. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  10. package/dist/components/Accordion/index.cjs +17 -6
  11. package/dist/components/Accordion/index.cjs.map +1 -1
  12. package/dist/components/Accordion/index.d.ts +25 -12
  13. package/dist/components/Accordion/index.d.ts.map +1 -1
  14. package/dist/components/Accordion/index.js +17 -6
  15. package/dist/components/Accordion/index.js.map +1 -1
  16. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  17. package/dist/components/Alert/Alert.module.scss.js +12 -12
  18. package/dist/components/Alert/index.cjs +37 -15
  19. package/dist/components/Alert/index.cjs.map +1 -1
  20. package/dist/components/Alert/index.d.ts +15 -22
  21. package/dist/components/Alert/index.d.ts.map +1 -1
  22. package/dist/components/Alert/index.js +37 -15
  23. package/dist/components/Alert/index.js.map +1 -1
  24. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  25. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  26. package/dist/components/AppShell/index.cjs +3 -1
  27. package/dist/components/AppShell/index.cjs.map +1 -1
  28. package/dist/components/AppShell/index.d.ts.map +1 -1
  29. package/dist/components/AppShell/index.js +3 -1
  30. package/dist/components/AppShell/index.js.map +1 -1
  31. package/dist/components/Avatar/index.cjs +9 -1
  32. package/dist/components/Avatar/index.cjs.map +1 -1
  33. package/dist/components/Avatar/index.d.ts +2 -0
  34. package/dist/components/Avatar/index.d.ts.map +1 -1
  35. package/dist/components/Avatar/index.js +9 -1
  36. package/dist/components/Avatar/index.js.map +1 -1
  37. package/dist/components/Badge/index.cjs +4 -2
  38. package/dist/components/Badge/index.cjs.map +1 -1
  39. package/dist/components/Badge/index.d.ts +3 -0
  40. package/dist/components/Badge/index.d.ts.map +1 -1
  41. package/dist/components/Badge/index.js +4 -2
  42. package/dist/components/Badge/index.js.map +1 -1
  43. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +11 -11
  44. package/dist/components/BentoGrid/BentoGrid.module.scss.js +11 -11
  45. package/dist/components/BentoGrid/index.cjs +8 -5
  46. package/dist/components/BentoGrid/index.cjs.map +1 -1
  47. package/dist/components/BentoGrid/index.d.ts +2 -8
  48. package/dist/components/BentoGrid/index.d.ts.map +1 -1
  49. package/dist/components/BentoGrid/index.js +8 -5
  50. package/dist/components/BentoGrid/index.js.map +1 -1
  51. package/dist/components/Box/index.cjs +12 -2
  52. package/dist/components/Box/index.cjs.map +1 -1
  53. package/dist/components/Box/index.d.ts +1 -1
  54. package/dist/components/Box/index.d.ts.map +1 -1
  55. package/dist/components/Box/index.js +12 -2
  56. package/dist/components/Box/index.js.map +1 -1
  57. package/dist/components/Breadcrumbs/index.cjs +3 -1
  58. package/dist/components/Breadcrumbs/index.cjs.map +1 -1
  59. package/dist/components/Breadcrumbs/index.d.ts +3 -1
  60. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  61. package/dist/components/Breadcrumbs/index.js +3 -1
  62. package/dist/components/Breadcrumbs/index.js.map +1 -1
  63. package/dist/components/Button/Button.module.scss.cjs +11 -11
  64. package/dist/components/Button/Button.module.scss.js +11 -11
  65. package/dist/components/Button/index.cjs +5 -2
  66. package/dist/components/Button/index.cjs.map +1 -1
  67. package/dist/components/Button/index.d.ts +3 -3
  68. package/dist/components/Button/index.d.ts.map +1 -1
  69. package/dist/components/Button/index.js +5 -2
  70. package/dist/components/Button/index.js.map +1 -1
  71. package/dist/components/ButtonGroup/index.cjs +3 -2
  72. package/dist/components/ButtonGroup/index.cjs.map +1 -1
  73. package/dist/components/ButtonGroup/index.d.ts +1 -2
  74. package/dist/components/ButtonGroup/index.d.ts.map +1 -1
  75. package/dist/components/ButtonGroup/index.js +3 -2
  76. package/dist/components/ButtonGroup/index.js.map +1 -1
  77. package/dist/components/Card/Card.module.scss.cjs +14 -14
  78. package/dist/components/Card/Card.module.scss.js +14 -14
  79. package/dist/components/Card/index.cjs +3 -22
  80. package/dist/components/Card/index.cjs.map +1 -1
  81. package/dist/components/Card/index.d.ts +6 -11
  82. package/dist/components/Card/index.d.ts.map +1 -1
  83. package/dist/components/Card/index.js +3 -22
  84. package/dist/components/Card/index.js.map +1 -1
  85. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  86. package/dist/components/Chart/Chart.module.scss.js +15 -15
  87. package/dist/components/Chart/index.d.ts +3 -3
  88. package/dist/components/Chart/index.d.ts.map +1 -1
  89. package/dist/components/Checkbox/Checkbox.module.scss.cjs +10 -10
  90. package/dist/components/Checkbox/Checkbox.module.scss.js +10 -10
  91. package/dist/components/Checkbox/index.cjs +11 -4
  92. package/dist/components/Checkbox/index.cjs.map +1 -1
  93. package/dist/components/Checkbox/index.d.ts +6 -0
  94. package/dist/components/Checkbox/index.d.ts.map +1 -1
  95. package/dist/components/Checkbox/index.js +11 -4
  96. package/dist/components/Checkbox/index.js.map +1 -1
  97. package/dist/components/Chip/index.cjs +11 -3
  98. package/dist/components/Chip/index.cjs.map +1 -1
  99. package/dist/components/Chip/index.d.ts +1 -2
  100. package/dist/components/Chip/index.d.ts.map +1 -1
  101. package/dist/components/Chip/index.js +11 -3
  102. package/dist/components/Chip/index.js.map +1 -1
  103. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +20 -20
  104. package/dist/components/CodeBlock/CodeBlock.module.scss.js +20 -20
  105. package/dist/components/CodeBlock/index.d.ts +8 -2
  106. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  107. package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
  108. package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
  109. package/dist/components/Collapsible/index.cjs +45 -10
  110. package/dist/components/Collapsible/index.cjs.map +1 -1
  111. package/dist/components/Collapsible/index.d.ts +6 -12
  112. package/dist/components/Collapsible/index.d.ts.map +1 -1
  113. package/dist/components/Collapsible/index.js +45 -10
  114. package/dist/components/Collapsible/index.js.map +1 -1
  115. package/dist/components/Combobox/Combobox.module.scss.cjs +15 -15
  116. package/dist/components/Combobox/Combobox.module.scss.js +15 -15
  117. package/dist/components/Combobox/index.cjs +86 -27
  118. package/dist/components/Combobox/index.cjs.map +1 -1
  119. package/dist/components/Combobox/index.d.ts +40 -23
  120. package/dist/components/Combobox/index.d.ts.map +1 -1
  121. package/dist/components/Combobox/index.js +86 -27
  122. package/dist/components/Combobox/index.js.map +1 -1
  123. package/dist/components/Command/Command.module.scss.cjs +11 -11
  124. package/dist/components/Command/Command.module.scss.js +11 -11
  125. package/dist/components/Command/index.cjs +55 -22
  126. package/dist/components/Command/index.cjs.map +1 -1
  127. package/dist/components/Command/index.d.ts +3 -3
  128. package/dist/components/Command/index.d.ts.map +1 -1
  129. package/dist/components/Command/index.js +55 -22
  130. package/dist/components/Command/index.js.map +1 -1
  131. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  132. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  133. package/dist/components/ConversationList/index.cjs +6 -3
  134. package/dist/components/ConversationList/index.cjs.map +1 -1
  135. package/dist/components/ConversationList/index.d.ts +1 -1
  136. package/dist/components/ConversationList/index.d.ts.map +1 -1
  137. package/dist/components/ConversationList/index.js +6 -3
  138. package/dist/components/ConversationList/index.js.map +1 -1
  139. package/dist/components/DataTable/DataTable.module.scss.cjs +26 -26
  140. package/dist/components/DataTable/DataTable.module.scss.js +26 -26
  141. package/dist/components/DataTable/index.cjs +25 -4
  142. package/dist/components/DataTable/index.cjs.map +1 -1
  143. package/dist/components/DataTable/index.d.ts +7 -2
  144. package/dist/components/DataTable/index.d.ts.map +1 -1
  145. package/dist/components/DataTable/index.js +25 -4
  146. package/dist/components/DataTable/index.js.map +1 -1
  147. package/dist/components/DatePicker/DatePicker.module.scss.cjs +26 -26
  148. package/dist/components/DatePicker/DatePicker.module.scss.js +26 -26
  149. package/dist/components/DatePicker/index.d.ts +4 -5
  150. package/dist/components/DatePicker/index.d.ts.map +1 -1
  151. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  152. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  153. package/dist/components/Dialog/index.cjs +14 -10
  154. package/dist/components/Dialog/index.cjs.map +1 -1
  155. package/dist/components/Dialog/index.d.ts +26 -17
  156. package/dist/components/Dialog/index.d.ts.map +1 -1
  157. package/dist/components/Dialog/index.js +14 -10
  158. package/dist/components/Dialog/index.js.map +1 -1
  159. package/dist/components/Drawer/Drawer.module.scss.cjs +26 -26
  160. package/dist/components/Drawer/Drawer.module.scss.js +26 -26
  161. package/dist/components/Drawer/index.cjs +41 -11
  162. package/dist/components/Drawer/index.cjs.map +1 -1
  163. package/dist/components/Drawer/index.d.ts +11 -13
  164. package/dist/components/Drawer/index.d.ts.map +1 -1
  165. package/dist/components/Drawer/index.js +24 -11
  166. package/dist/components/Drawer/index.js.map +1 -1
  167. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  168. package/dist/components/Editor/Editor.module.scss.js +17 -17
  169. package/dist/components/Editor/index.cjs +32 -7
  170. package/dist/components/Editor/index.cjs.map +1 -1
  171. package/dist/components/Editor/index.d.ts +16 -3
  172. package/dist/components/Editor/index.d.ts.map +1 -1
  173. package/dist/components/Editor/index.js +32 -7
  174. package/dist/components/Editor/index.js.map +1 -1
  175. package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
  176. package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
  177. package/dist/components/EmptyState/index.cjs +12 -8
  178. package/dist/components/EmptyState/index.cjs.map +1 -1
  179. package/dist/components/EmptyState/index.d.ts +8 -12
  180. package/dist/components/EmptyState/index.d.ts.map +1 -1
  181. package/dist/components/EmptyState/index.js +12 -8
  182. package/dist/components/EmptyState/index.js.map +1 -1
  183. package/dist/components/Fieldset/index.cjs +2 -2
  184. package/dist/components/Fieldset/index.cjs.map +1 -1
  185. package/dist/components/Fieldset/index.d.ts +2 -3
  186. package/dist/components/Fieldset/index.d.ts.map +1 -1
  187. package/dist/components/Fieldset/index.js +2 -2
  188. package/dist/components/Fieldset/index.js.map +1 -1
  189. package/dist/components/Form/index.cjs +13 -13
  190. package/dist/components/Form/index.cjs.map +1 -1
  191. package/dist/components/Form/index.d.ts +5 -2
  192. package/dist/components/Form/index.d.ts.map +1 -1
  193. package/dist/components/Form/index.js +13 -13
  194. package/dist/components/Form/index.js.map +1 -1
  195. package/dist/components/Grid/Grid.module.scss.cjs +57 -57
  196. package/dist/components/Grid/Grid.module.scss.js +57 -57
  197. package/dist/components/Grid/index.cjs +7 -4
  198. package/dist/components/Grid/index.cjs.map +1 -1
  199. package/dist/components/Grid/index.d.ts +5 -3
  200. package/dist/components/Grid/index.d.ts.map +1 -1
  201. package/dist/components/Grid/index.js +7 -4
  202. package/dist/components/Grid/index.js.map +1 -1
  203. package/dist/components/Header/Header.module.scss.cjs +21 -21
  204. package/dist/components/Header/Header.module.scss.js +21 -21
  205. package/dist/components/Header/index.cjs +61 -23
  206. package/dist/components/Header/index.cjs.map +1 -1
  207. package/dist/components/Header/index.d.ts +27 -34
  208. package/dist/components/Header/index.d.ts.map +1 -1
  209. package/dist/components/Header/index.js +61 -23
  210. package/dist/components/Header/index.js.map +1 -1
  211. package/dist/components/Icon/index.cjs +11 -1
  212. package/dist/components/Icon/index.cjs.map +1 -1
  213. package/dist/components/Icon/index.d.ts +28 -9
  214. package/dist/components/Icon/index.d.ts.map +1 -1
  215. package/dist/components/Icon/index.js +11 -1
  216. package/dist/components/Icon/index.js.map +1 -1
  217. package/dist/components/Image/index.cjs +15 -4
  218. package/dist/components/Image/index.cjs.map +1 -1
  219. package/dist/components/Image/index.d.ts +7 -1
  220. package/dist/components/Image/index.d.ts.map +1 -1
  221. package/dist/components/Image/index.js +15 -4
  222. package/dist/components/Image/index.js.map +1 -1
  223. package/dist/components/Input/Input.module.scss.cjs +13 -13
  224. package/dist/components/Input/Input.module.scss.js +13 -13
  225. package/dist/components/Input/index.cjs +79 -31
  226. package/dist/components/Input/index.cjs.map +1 -1
  227. package/dist/components/Input/index.d.ts +17 -3
  228. package/dist/components/Input/index.d.ts.map +1 -1
  229. package/dist/components/Input/index.js +79 -31
  230. package/dist/components/Input/index.js.map +1 -1
  231. package/dist/components/Link/index.cjs +17 -0
  232. package/dist/components/Link/index.cjs.map +1 -1
  233. package/dist/components/Link/index.d.ts.map +1 -1
  234. package/dist/components/Link/index.js +17 -0
  235. package/dist/components/Link/index.js.map +1 -1
  236. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  237. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  238. package/dist/components/Listbox/index.cjs +10 -6
  239. package/dist/components/Listbox/index.cjs.map +1 -1
  240. package/dist/components/Listbox/index.d.ts +2 -2
  241. package/dist/components/Listbox/index.d.ts.map +1 -1
  242. package/dist/components/Listbox/index.js +10 -6
  243. package/dist/components/Listbox/index.js.map +1 -1
  244. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  245. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  246. package/dist/components/Markdown/index.d.ts +4 -2
  247. package/dist/components/Markdown/index.d.ts.map +1 -1
  248. package/dist/components/Menu/Menu.module.scss.cjs +13 -13
  249. package/dist/components/Menu/Menu.module.scss.js +13 -13
  250. package/dist/components/Menu/index.cjs +41 -16
  251. package/dist/components/Menu/index.cjs.map +1 -1
  252. package/dist/components/Menu/index.d.ts +24 -27
  253. package/dist/components/Menu/index.d.ts.map +1 -1
  254. package/dist/components/Menu/index.js +41 -16
  255. package/dist/components/Menu/index.js.map +1 -1
  256. package/dist/components/Message/Message.module.scss.cjs +18 -18
  257. package/dist/components/Message/Message.module.scss.js +18 -18
  258. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  259. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  260. package/dist/components/NavigationMenu/NavigationMenuContext.cjs.map +1 -1
  261. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +9 -0
  262. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -1
  263. package/dist/components/NavigationMenu/NavigationMenuContext.js.map +1 -1
  264. package/dist/components/NavigationMenu/index.cjs +92 -21
  265. package/dist/components/NavigationMenu/index.cjs.map +1 -1
  266. package/dist/components/NavigationMenu/index.d.ts +5 -1
  267. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  268. package/dist/components/NavigationMenu/index.js +92 -21
  269. package/dist/components/NavigationMenu/index.js.map +1 -1
  270. package/dist/components/NavigationMenu/useNavigationMenu.cjs +2 -0
  271. package/dist/components/NavigationMenu/useNavigationMenu.cjs.map +1 -1
  272. package/dist/components/NavigationMenu/useNavigationMenu.d.ts +1 -0
  273. package/dist/components/NavigationMenu/useNavigationMenu.d.ts.map +1 -1
  274. package/dist/components/NavigationMenu/useNavigationMenu.js +2 -0
  275. package/dist/components/NavigationMenu/useNavigationMenu.js.map +1 -1
  276. package/dist/components/Pagination/index.cjs +37 -9
  277. package/dist/components/Pagination/index.cjs.map +1 -1
  278. package/dist/components/Pagination/index.d.ts +2 -3
  279. package/dist/components/Pagination/index.d.ts.map +1 -1
  280. package/dist/components/Pagination/index.js +37 -9
  281. package/dist/components/Pagination/index.js.map +1 -1
  282. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  283. package/dist/components/Popover/Popover.module.scss.js +10 -10
  284. package/dist/components/Popover/index.cjs +52 -10
  285. package/dist/components/Popover/index.cjs.map +1 -1
  286. package/dist/components/Popover/index.d.ts +22 -16
  287. package/dist/components/Popover/index.d.ts.map +1 -1
  288. package/dist/components/Popover/index.js +35 -10
  289. package/dist/components/Popover/index.js.map +1 -1
  290. package/dist/components/Progress/index.cjs +3 -1
  291. package/dist/components/Progress/index.cjs.map +1 -1
  292. package/dist/components/Progress/index.d.ts.map +1 -1
  293. package/dist/components/Progress/index.js +3 -1
  294. package/dist/components/Progress/index.js.map +1 -1
  295. package/dist/components/Prompt/Prompt.module.scss.cjs +14 -14
  296. package/dist/components/Prompt/Prompt.module.scss.js +14 -14
  297. package/dist/components/Prompt/index.cjs +14 -2
  298. package/dist/components/Prompt/index.cjs.map +1 -1
  299. package/dist/components/Prompt/index.d.ts +8 -5
  300. package/dist/components/Prompt/index.d.ts.map +1 -1
  301. package/dist/components/Prompt/index.js +14 -2
  302. package/dist/components/Prompt/index.js.map +1 -1
  303. package/dist/components/RadioGroup/index.cjs +14 -6
  304. package/dist/components/RadioGroup/index.cjs.map +1 -1
  305. package/dist/components/RadioGroup/index.d.ts +12 -2
  306. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  307. package/dist/components/RadioGroup/index.js +14 -6
  308. package/dist/components/RadioGroup/index.js.map +1 -1
  309. package/dist/components/Select/Select.module.scss.cjs +10 -10
  310. package/dist/components/Select/Select.module.scss.js +10 -10
  311. package/dist/components/Select/index.cjs +43 -29
  312. package/dist/components/Select/index.cjs.map +1 -1
  313. package/dist/components/Select/index.d.ts +12 -11
  314. package/dist/components/Select/index.d.ts.map +1 -1
  315. package/dist/components/Select/index.js +43 -29
  316. package/dist/components/Select/index.js.map +1 -1
  317. package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
  318. package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
  319. package/dist/components/Sidebar/index.cjs +73 -26
  320. package/dist/components/Sidebar/index.cjs.map +1 -1
  321. package/dist/components/Sidebar/index.d.ts +23 -35
  322. package/dist/components/Sidebar/index.d.ts.map +1 -1
  323. package/dist/components/Sidebar/index.js +73 -26
  324. package/dist/components/Sidebar/index.js.map +1 -1
  325. package/dist/components/Skeleton/index.cjs +6 -3
  326. package/dist/components/Skeleton/index.cjs.map +1 -1
  327. package/dist/components/Skeleton/index.d.ts +3 -7
  328. package/dist/components/Skeleton/index.d.ts.map +1 -1
  329. package/dist/components/Skeleton/index.js +6 -3
  330. package/dist/components/Skeleton/index.js.map +1 -1
  331. package/dist/components/Slider/Slider.module.scss.cjs +13 -10
  332. package/dist/components/Slider/Slider.module.scss.cjs.map +1 -1
  333. package/dist/components/Slider/Slider.module.scss.js +13 -10
  334. package/dist/components/Slider/Slider.module.scss.js.map +1 -1
  335. package/dist/components/Slider/index.cjs +33 -1
  336. package/dist/components/Slider/index.cjs.map +1 -1
  337. package/dist/components/Slider/index.d.ts +2 -0
  338. package/dist/components/Slider/index.d.ts.map +1 -1
  339. package/dist/components/Slider/index.js +33 -1
  340. package/dist/components/Slider/index.js.map +1 -1
  341. package/dist/components/Stack/index.cjs +12 -2
  342. package/dist/components/Stack/index.cjs.map +1 -1
  343. package/dist/components/Stack/index.d.ts +3 -2
  344. package/dist/components/Stack/index.d.ts.map +1 -1
  345. package/dist/components/Stack/index.js +12 -2
  346. package/dist/components/Stack/index.js.map +1 -1
  347. package/dist/components/Table/Table.module.scss.cjs +16 -16
  348. package/dist/components/Table/Table.module.scss.js +16 -16
  349. package/dist/components/Table/index.d.ts +10 -4
  350. package/dist/components/Table/index.d.ts.map +1 -1
  351. package/dist/components/TableOfContents/index.cjs +8 -5
  352. package/dist/components/TableOfContents/index.cjs.map +1 -1
  353. package/dist/components/TableOfContents/index.d.ts +2 -2
  354. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  355. package/dist/components/TableOfContents/index.js +8 -5
  356. package/dist/components/TableOfContents/index.js.map +1 -1
  357. package/dist/components/Tabs/Tabs.module.scss.cjs +9 -9
  358. package/dist/components/Tabs/Tabs.module.scss.js +9 -9
  359. package/dist/components/Tabs/index.cjs +9 -6
  360. package/dist/components/Tabs/index.cjs.map +1 -1
  361. package/dist/components/Tabs/index.d.ts +4 -1
  362. package/dist/components/Tabs/index.d.ts.map +1 -1
  363. package/dist/components/Tabs/index.js +9 -6
  364. package/dist/components/Tabs/index.js.map +1 -1
  365. package/dist/components/Textarea/index.cjs +61 -43
  366. package/dist/components/Textarea/index.cjs.map +1 -1
  367. package/dist/components/Textarea/index.d.ts +9 -1
  368. package/dist/components/Textarea/index.d.ts.map +1 -1
  369. package/dist/components/Textarea/index.js +61 -43
  370. package/dist/components/Textarea/index.js.map +1 -1
  371. package/dist/components/Theme/index.cjs +3 -1
  372. package/dist/components/Theme/index.cjs.map +1 -1
  373. package/dist/components/Theme/index.d.ts +2 -4
  374. package/dist/components/Theme/index.d.ts.map +1 -1
  375. package/dist/components/Theme/index.js +3 -1
  376. package/dist/components/Theme/index.js.map +1 -1
  377. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +22 -22
  378. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +22 -22
  379. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  380. package/dist/components/Toast/Toast.module.scss.js +20 -20
  381. package/dist/components/Toast/index.cjs +15 -14
  382. package/dist/components/Toast/index.cjs.map +1 -1
  383. package/dist/components/Toast/index.d.ts +9 -5
  384. package/dist/components/Toast/index.d.ts.map +1 -1
  385. package/dist/components/Toast/index.js +15 -14
  386. package/dist/components/Toast/index.js.map +1 -1
  387. package/dist/components/Toggle/Toggle.module.scss.cjs +11 -11
  388. package/dist/components/Toggle/Toggle.module.scss.js +11 -11
  389. package/dist/components/Toggle/index.cjs +1 -1
  390. package/dist/components/Toggle/index.cjs.map +1 -1
  391. package/dist/components/Toggle/index.js +1 -1
  392. package/dist/components/Toggle/index.js.map +1 -1
  393. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  394. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  395. package/dist/components/ToggleGroup/index.cjs +27 -8
  396. package/dist/components/ToggleGroup/index.cjs.map +1 -1
  397. package/dist/components/ToggleGroup/index.d.ts +8 -3
  398. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  399. package/dist/components/ToggleGroup/index.js +27 -8
  400. package/dist/components/ToggleGroup/index.js.map +1 -1
  401. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  402. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  403. package/dist/components/Tooltip/index.cjs +32 -10
  404. package/dist/components/Tooltip/index.cjs.map +1 -1
  405. package/dist/components/Tooltip/index.d.ts +3 -1
  406. package/dist/components/Tooltip/index.d.ts.map +1 -1
  407. package/dist/components/Tooltip/index.js +32 -10
  408. package/dist/components/Tooltip/index.js.map +1 -1
  409. package/dist/components/VisuallyHidden/index.cjs +10 -2
  410. package/dist/components/VisuallyHidden/index.cjs.map +1 -1
  411. package/dist/components/VisuallyHidden/index.d.ts +1 -1
  412. package/dist/components/VisuallyHidden/index.d.ts.map +1 -1
  413. package/dist/components/VisuallyHidden/index.js +10 -2
  414. package/dist/components/VisuallyHidden/index.js.map +1 -1
  415. package/dist/datepicker.cjs +32 -11
  416. package/dist/datepicker.cjs.map +1 -1
  417. package/dist/datepicker.js +32 -11
  418. package/dist/datepicker.js.map +1 -1
  419. package/dist/index.cjs.map +1 -1
  420. package/dist/index.d.ts +2 -1
  421. package/dist/index.d.ts.map +1 -1
  422. package/dist/index.js.map +1 -1
  423. package/dist/markdown.cjs +5 -5
  424. package/dist/markdown.cjs.map +1 -1
  425. package/dist/markdown.js +5 -5
  426. package/dist/markdown.js.map +1 -1
  427. package/dist/table.cjs +19 -3
  428. package/dist/table.cjs.map +1 -1
  429. package/dist/table.js +19 -3
  430. package/dist/table.js.map +1 -1
  431. package/fragments.json +1 -1
  432. package/package.json +2 -2
  433. package/src/blocks/AccountSettings.block.ts +1 -1
  434. package/src/blocks/ActivityFeed.block.ts +1 -1
  435. package/src/blocks/ActivityFeedSkeleton.block.ts +1 -1
  436. package/src/blocks/BlogEditor.block.ts +1 -1
  437. package/src/blocks/ChatInterface.block.ts +1 -1
  438. package/src/blocks/ChatMessages.block.ts +1 -1
  439. package/src/blocks/CheckoutForm.block.ts +1 -1
  440. package/src/blocks/CommandPalette.block.ts +1 -1
  441. package/src/blocks/ContactForm.block.ts +1 -1
  442. package/src/blocks/DashboardLayout.block.ts +1 -1
  443. package/src/blocks/DashboardPage.block.ts +1 -1
  444. package/src/blocks/DashboardSkeleton.block.ts +1 -1
  445. package/src/blocks/DataTable.block.ts +1 -1
  446. package/src/blocks/EmptyState.block.ts +1 -1
  447. package/src/blocks/FAQSection.block.ts +1 -1
  448. package/src/blocks/FeatureGrid.block.ts +1 -1
  449. package/src/blocks/HeroSection.block.ts +1 -1
  450. package/src/blocks/LoginForm.block.ts +1 -1
  451. package/src/blocks/NavigationHeader.block.ts +1 -1
  452. package/src/blocks/PaginatedTable.block.ts +1 -1
  453. package/src/blocks/PricingComparison.block.ts +1 -1
  454. package/src/blocks/ProductCard.block.ts +1 -1
  455. package/src/blocks/RegistrationForm.block.ts +1 -1
  456. package/src/blocks/SettingsDrawer.block.ts +1 -1
  457. package/src/blocks/SettingsPanel.block.ts +1 -1
  458. package/src/blocks/ShoppingCart.block.ts +1 -1
  459. package/src/blocks/StatsCard.block.ts +1 -1
  460. package/src/blocks/StatsCardSkeleton.block.ts +1 -1
  461. package/src/blocks/TableSkeleton.block.ts +1 -1
  462. package/src/blocks/ThinkingStates.block.ts +1 -1
  463. package/src/components/Accordion/Accordion.fragment.tsx +7 -7
  464. package/src/components/Accordion/Accordion.module.scss +2 -2
  465. package/src/components/Accordion/Accordion.test.tsx +41 -5
  466. package/src/components/Accordion/index.tsx +41 -14
  467. package/src/components/Alert/Alert.fragment.tsx +5 -1
  468. package/src/components/Alert/Alert.module.scss +1 -1
  469. package/src/components/Alert/Alert.test.tsx +25 -0
  470. package/src/components/Alert/index.tsx +49 -30
  471. package/src/components/AppShell/AppShell.fragment.tsx +1 -1
  472. package/src/components/AppShell/AppShell.module.scss +5 -5
  473. package/src/components/AppShell/AppShell.test.tsx +12 -0
  474. package/src/components/AppShell/index.tsx +2 -0
  475. package/src/components/Avatar/Avatar.fragment.tsx +7 -1
  476. package/src/components/Avatar/Avatar.test.tsx +24 -2
  477. package/src/components/Avatar/index.tsx +13 -1
  478. package/src/components/Badge/Badge.fragment.tsx +16 -1
  479. package/src/components/Badge/Badge.test.tsx +8 -1
  480. package/src/components/Badge/index.tsx +7 -2
  481. package/src/components/BentoGrid/BentoGrid.fragment.tsx +3 -1
  482. package/src/components/BentoGrid/BentoGrid.module.scss +52 -16
  483. package/src/components/BentoGrid/BentoGrid.test.tsx +20 -0
  484. package/src/components/BentoGrid/index.tsx +9 -12
  485. package/src/components/Box/Box.fragment.tsx +3 -1
  486. package/src/components/Box/Box.test.tsx +14 -0
  487. package/src/components/Box/index.tsx +8 -2
  488. package/src/components/Breadcrumbs/Breadcrumbs.fragment.tsx +19 -1
  489. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +13 -0
  490. package/src/components/Breadcrumbs/index.tsx +5 -1
  491. package/src/components/Button/Button.fragment.tsx +28 -6
  492. package/src/components/Button/Button.module.scss +3 -3
  493. package/src/components/Button/Button.test.tsx +11 -0
  494. package/src/components/Button/index.tsx +16 -6
  495. package/src/components/ButtonGroup/ButtonGroup.fragment.tsx +4 -2
  496. package/src/components/ButtonGroup/ButtonGroup.test.tsx +10 -0
  497. package/src/components/ButtonGroup/index.tsx +3 -3
  498. package/src/components/Card/Card.fragment.tsx +24 -9
  499. package/src/components/Card/Card.module.scss +8 -8
  500. package/src/components/Card/Card.test.tsx +4 -5
  501. package/src/components/Card/index.tsx +8 -38
  502. package/src/components/Chart/Chart.fragment.tsx +5 -3
  503. package/src/components/Chart/Chart.module.scss +1 -1
  504. package/src/components/Chart/index.tsx +12 -10
  505. package/src/components/Checkbox/Checkbox.fragment.tsx +27 -1
  506. package/src/components/Checkbox/Checkbox.module.scss +3 -3
  507. package/src/components/Checkbox/index.tsx +16 -3
  508. package/src/components/Chip/Chip.fragment.tsx +20 -3
  509. package/src/components/Chip/Chip.test.tsx +28 -0
  510. package/src/components/Chip/index.tsx +14 -6
  511. package/src/components/CodeBlock/CodeBlock.fragment.tsx +3 -1
  512. package/src/components/CodeBlock/CodeBlock.module.scss +9 -9
  513. package/src/components/CodeBlock/CodeBlock.test.tsx +21 -0
  514. package/src/components/CodeBlock/index.tsx +23 -9
  515. package/src/components/Collapsible/Collapsible.fragment.tsx +1 -1
  516. package/src/components/Collapsible/Collapsible.module.scss +1 -1
  517. package/src/components/Collapsible/Collapsible.test.tsx +41 -0
  518. package/src/components/Collapsible/index.tsx +53 -16
  519. package/src/components/ColorPicker/ColorPicker.fragment.tsx +1 -1
  520. package/src/components/Combobox/Combobox.fragment.tsx +63 -9
  521. package/src/components/Combobox/Combobox.module.scss +4 -7
  522. package/src/components/Combobox/Combobox.test.tsx +79 -3
  523. package/src/components/Combobox/index.tsx +140 -51
  524. package/src/components/Command/Command.fragment.tsx +3 -3
  525. package/src/components/Command/Command.module.scss +5 -5
  526. package/src/components/Command/Command.test.tsx +110 -0
  527. package/src/components/Command/index.tsx +66 -20
  528. package/src/components/ConversationList/ConversationList.fragment.tsx +4 -3
  529. package/src/components/ConversationList/ConversationList.module.scss +5 -5
  530. package/src/components/ConversationList/ConversationList.test.tsx +21 -0
  531. package/src/components/ConversationList/index.tsx +8 -4
  532. package/src/components/DataTable/DataTable.fragment.tsx +12 -2
  533. package/src/components/DataTable/DataTable.module.scss +3 -3
  534. package/src/components/DataTable/DataTable.test.tsx +34 -4
  535. package/src/components/DataTable/index.tsx +44 -6
  536. package/src/components/DatePicker/DatePicker.fragment.tsx +3 -1
  537. package/src/components/DatePicker/DatePicker.module.scss +1 -1
  538. package/src/components/DatePicker/DatePicker.test.tsx +96 -0
  539. package/src/components/DatePicker/index.tsx +38 -16
  540. package/src/components/Dialog/Dialog.fragment.tsx +28 -1
  541. package/src/components/Dialog/Dialog.module.scss +6 -6
  542. package/src/components/Dialog/Dialog.test.tsx +23 -0
  543. package/src/components/Dialog/index.tsx +38 -21
  544. package/src/components/Drawer/Drawer.fragment.tsx +4 -1
  545. package/src/components/Drawer/Drawer.module.scss +3 -3
  546. package/src/components/Drawer/Drawer.test.tsx +35 -0
  547. package/src/components/Drawer/index.tsx +29 -18
  548. package/src/components/Editor/Editor.fragment.tsx +10 -3
  549. package/src/components/Editor/Editor.module.scss +4 -4
  550. package/src/components/Editor/Editor.test.tsx +68 -1
  551. package/src/components/Editor/index.tsx +60 -9
  552. package/src/components/EmptyState/EmptyState.fragment.tsx +3 -1
  553. package/src/components/EmptyState/EmptyState.module.scss +3 -3
  554. package/src/components/EmptyState/EmptyState.test.tsx +18 -0
  555. package/src/components/EmptyState/index.tsx +16 -16
  556. package/src/components/Field/Field.fragment.tsx +1 -1
  557. package/src/components/Fieldset/Fieldset.fragment.tsx +3 -1
  558. package/src/components/Fieldset/Fieldset.test.tsx +14 -0
  559. package/src/components/Fieldset/index.tsx +3 -4
  560. package/src/components/Form/Form.fragment.tsx +12 -7
  561. package/src/components/Form/index.tsx +13 -17
  562. package/src/components/Grid/Grid.fragment.tsx +4 -3
  563. package/src/components/Grid/Grid.module.scss +3 -3
  564. package/src/components/Grid/index.tsx +11 -6
  565. package/src/components/Header/Header.fragment.tsx +31 -1
  566. package/src/components/Header/Header.module.scss +6 -6
  567. package/src/components/Header/Header.test.tsx +95 -1
  568. package/src/components/Header/index.tsx +95 -46
  569. package/src/components/Icon/Icon.fragment.tsx +21 -8
  570. package/src/components/Icon/Icon.test.tsx +27 -3
  571. package/src/components/Icon/index.tsx +39 -15
  572. package/src/components/Image/Image.fragment.tsx +15 -1
  573. package/src/components/Image/Image.test.tsx +32 -1
  574. package/src/components/Image/index.tsx +24 -4
  575. package/src/components/Input/Input.fragment.tsx +49 -1
  576. package/src/components/Input/Input.module.scss +4 -2
  577. package/src/components/Input/Input.test.tsx +3 -3
  578. package/src/components/Input/index.tsx +103 -37
  579. package/src/components/Link/Link.fragment.tsx +7 -6
  580. package/src/components/Link/Link.test.tsx +17 -1
  581. package/src/components/Link/index.tsx +22 -0
  582. package/src/components/List/List.fragment.tsx +1 -1
  583. package/src/components/Listbox/Listbox.fragment.tsx +3 -3
  584. package/src/components/Listbox/Listbox.module.scss +4 -4
  585. package/src/components/Listbox/Listbox.test.tsx +14 -0
  586. package/src/components/Listbox/index.tsx +12 -2
  587. package/src/components/Loading/Loading.fragment.tsx +1 -1
  588. package/src/components/Markdown/Markdown.fragment.tsx +5 -3
  589. package/src/components/Markdown/Markdown.module.scss +5 -5
  590. package/src/components/Markdown/Markdown.test.tsx +6 -0
  591. package/src/components/Markdown/index.tsx +12 -9
  592. package/src/components/Menu/Menu.fragment.tsx +19 -1
  593. package/src/components/Menu/Menu.module.scss +11 -11
  594. package/src/components/Menu/index.tsx +50 -33
  595. package/src/components/Message/Message.fragment.tsx +1 -1
  596. package/src/components/Message/Message.module.scss +3 -3
  597. package/src/components/NavigationMenu/NavigationMenu.fragment.tsx +10 -2
  598. package/src/components/NavigationMenu/NavigationMenu.module.scss +7 -7
  599. package/src/components/NavigationMenu/NavigationMenu.test.tsx +88 -4
  600. package/src/components/NavigationMenu/NavigationMenuContext.ts +17 -0
  601. package/src/components/NavigationMenu/index.tsx +119 -20
  602. package/src/components/NavigationMenu/useNavigationMenu.ts +4 -0
  603. package/src/components/Pagination/Pagination.fragment.tsx +4 -1
  604. package/src/components/Pagination/Pagination.test.tsx +39 -0
  605. package/src/components/Pagination/index.tsx +36 -10
  606. package/src/components/Popover/Popover.fragment.tsx +18 -1
  607. package/src/components/Popover/Popover.module.scss +13 -13
  608. package/src/components/Popover/Popover.test.tsx +23 -0
  609. package/src/components/Popover/index.tsx +44 -22
  610. package/src/components/Progress/Progress.fragment.tsx +3 -1
  611. package/src/components/Progress/Progress.test.tsx +8 -0
  612. package/src/components/Progress/index.tsx +9 -1
  613. package/src/components/Prompt/Prompt.fragment.tsx +4 -1
  614. package/src/components/Prompt/Prompt.module.scss +3 -3
  615. package/src/components/Prompt/Prompt.test.tsx +19 -0
  616. package/src/components/Prompt/index.tsx +24 -6
  617. package/src/components/RadioGroup/RadioGroup.fragment.tsx +31 -1
  618. package/src/components/RadioGroup/index.tsx +22 -3
  619. package/src/components/ScrollArea/ScrollArea.fragment.tsx +1 -1
  620. package/src/components/Select/Select.fragment.tsx +30 -3
  621. package/src/components/Select/Select.module.scss +3 -3
  622. package/src/components/Select/Select.test.tsx +41 -0
  623. package/src/components/Select/index.tsx +55 -44
  624. package/src/components/Separator/Separator.fragment.tsx +1 -1
  625. package/src/components/Sidebar/Sidebar.fragment.tsx +3 -1
  626. package/src/components/Sidebar/Sidebar.module.scss +20 -20
  627. package/src/components/Sidebar/Sidebar.test.tsx +108 -4
  628. package/src/components/Sidebar/index.tsx +93 -51
  629. package/src/components/Skeleton/Skeleton.fragment.tsx +3 -1
  630. package/src/components/Skeleton/Skeleton.test.tsx +12 -0
  631. package/src/components/Skeleton/index.tsx +6 -7
  632. package/src/components/Slider/Slider.fragment.tsx +21 -1
  633. package/src/components/Slider/Slider.module.scss +31 -0
  634. package/src/components/Slider/Slider.test.tsx +16 -0
  635. package/src/components/Slider/index.tsx +40 -1
  636. package/src/components/Stack/Stack.fragment.tsx +3 -1
  637. package/src/components/Stack/index.tsx +13 -6
  638. package/src/components/Table/Table.fragment.tsx +43 -2
  639. package/src/components/Table/Table.module.scss +2 -2
  640. package/src/components/Table/index.tsx +23 -5
  641. package/src/components/TableOfContents/TableOfContents.fragment.tsx +4 -2
  642. package/src/components/TableOfContents/TableOfContents.test.tsx +34 -9
  643. package/src/components/TableOfContents/index.tsx +9 -5
  644. package/src/components/Tabs/Tabs.fragment.tsx +33 -8
  645. package/src/components/Tabs/Tabs.module.scss +8 -8
  646. package/src/components/Tabs/index.tsx +22 -14
  647. package/src/components/Text/Text.fragment.tsx +1 -1
  648. package/src/components/Textarea/Textarea.fragment.tsx +27 -1
  649. package/src/components/Textarea/index.tsx +39 -14
  650. package/src/components/Theme/Theme.fragment.tsx +3 -1
  651. package/src/components/Theme/Theme.test.tsx +11 -0
  652. package/src/components/Theme/index.tsx +3 -3
  653. package/src/components/ThinkingIndicator/ThinkingIndicator.fragment.tsx +1 -1
  654. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +1 -1
  655. package/src/components/Toast/Toast.fragment.tsx +6 -3
  656. package/src/components/Toast/Toast.module.scss +8 -6
  657. package/src/components/Toast/index.tsx +24 -20
  658. package/src/components/Toggle/Toggle.fragment.tsx +1 -1
  659. package/src/components/Toggle/Toggle.module.scss +61 -21
  660. package/src/components/Toggle/index.tsx +3 -3
  661. package/src/components/ToggleGroup/ToggleGroup.fragment.tsx +33 -8
  662. package/src/components/ToggleGroup/ToggleGroup.module.scss +3 -3
  663. package/src/components/ToggleGroup/index.tsx +29 -9
  664. package/src/components/Tooltip/Tooltip.fragment.tsx +16 -1
  665. package/src/components/Tooltip/Tooltip.module.scss +1 -1
  666. package/src/components/Tooltip/Tooltip.test.tsx +17 -0
  667. package/src/components/Tooltip/index.tsx +60 -31
  668. package/src/components/VisuallyHidden/VisuallyHidden.fragment.tsx +3 -1
  669. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +12 -0
  670. package/src/components/VisuallyHidden/index.tsx +7 -3
  671. package/src/index.ts +3 -2
  672. package/src/tokens/_computed.scss +1 -19
  673. package/src/tokens/_density.scss +0 -42
  674. package/src/tokens/_mixins.scss +4 -0
  675. package/src/tokens/_variables.scss +12 -114
@@ -767,6 +767,8 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
767
767
  export interface CodeBlockTab {
768
768
  /** Label shown in the tab */
769
769
  label: string;
770
+ /** Stable tab value (defaults to label) */
771
+ value?: string;
770
772
  /** Code string to display */
771
773
  code: string;
772
774
  /** Programming language for syntax highlighting */
@@ -776,8 +778,12 @@ export interface CodeBlockTab {
776
778
  export interface TabbedCodeBlockProps {
777
779
  /** Array of code tabs */
778
780
  tabs: CodeBlockTab[];
779
- /** Default selected tab (by label) */
781
+ /** Default selected tab (by tab value, or label when value is omitted) */
780
782
  defaultTab?: string;
783
+ /** Controlled selected tab value */
784
+ value?: string;
785
+ /** Called when the selected tab changes */
786
+ onValueChange?: (value: string) => void;
781
787
  /** Show copy button */
782
788
  showCopy?: boolean;
783
789
  /** Placement of copy button when not using persistent copy */
@@ -801,6 +807,8 @@ export interface TabbedCodeBlockProps {
801
807
  function TabbedCodeBlock({
802
808
  tabs,
803
809
  defaultTab,
810
+ value,
811
+ onValueChange,
804
812
  showCopy = true,
805
813
  copyPlacement = "auto",
806
814
  showLineNumbers = false,
@@ -811,20 +819,25 @@ function TabbedCodeBlock({
811
819
  className,
812
820
  onCopy,
813
821
  }: TabbedCodeBlockProps) {
814
- const defaultValue = defaultTab || tabs[0]?.label || "";
822
+ const defaultValue = defaultTab || tabs[0]?.value || tabs[0]?.label || "";
815
823
 
816
824
  return (
817
825
  <div className={className}>
818
- <TabsRoot defaultValue={defaultValue}>
826
+ <TabsRoot defaultValue={defaultValue} value={value} onValueChange={onValueChange}>
819
827
  <TabsList variant={tabsVariant}>
820
- {tabs.map((tab) => (
821
- <Tab key={tab.label} value={tab.label}>
828
+ {tabs.map((tab, index) => {
829
+ const tabValue = tab.value ?? tab.label;
830
+ return (
831
+ <Tab key={`${tabValue}-${index}`} value={tabValue}>
822
832
  {tab.label}
823
833
  </Tab>
824
- ))}
834
+ );
835
+ })}
825
836
  </TabsList>
826
- {tabs.map((tab) => (
827
- <TabsPanel key={tab.label} value={tab.label} flush className={styles.tabbedPanel}>
837
+ {tabs.map((tab, index) => {
838
+ const tabValue = tab.value ?? tab.label;
839
+ return (
840
+ <TabsPanel key={`${tabValue}-panel-${index}`} value={tabValue} flush className={styles.tabbedPanel}>
828
841
  <CodeBlockBase
829
842
  code={tab.code}
830
843
  language={tab.language}
@@ -837,7 +850,8 @@ function TabbedCodeBlock({
837
850
  onCopy={onCopy ? () => onCopy(tab.label) : undefined}
838
851
  />
839
852
  </TabsPanel>
840
- ))}
853
+ );
854
+ })}
841
855
  </TabsRoot>
842
856
  </div>
843
857
  );
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { defineFragment } from '@fragments-sdk/cli/core';
2
+ import { defineFragment } from '@fragments-sdk/core';
3
3
  import { Collapsible } from '.';
4
4
 
5
5
  export default defineFragment({
@@ -9,7 +9,7 @@
9
9
  display: flex;
10
10
  align-items: center;
11
11
  width: 100%;
12
- padding: var(--fui-padding-item-xs);
12
+ padding: var(--fui-space-1);
13
13
  background: transparent;
14
14
  border: none;
15
15
  border-radius: var(--fui-radius-md, $fui-radius-md);
@@ -96,6 +96,47 @@ describe('Collapsible', () => {
96
96
  expect(screen.queryByText('Collapsible content here')).not.toBeInTheDocument();
97
97
  });
98
98
 
99
+ it('composes child handlers when trigger uses asChild', async () => {
100
+ const user = userEvent.setup();
101
+ const childClick = vi.fn();
102
+ const childKeyDown = vi.fn();
103
+
104
+ render(
105
+ <Collapsible>
106
+ <Collapsible.Trigger asChild>
107
+ <button onClick={childClick} onKeyDown={childKeyDown}>Toggle</button>
108
+ </Collapsible.Trigger>
109
+ <Collapsible.Content>Collapsible content here</Collapsible.Content>
110
+ </Collapsible>
111
+ );
112
+
113
+ const trigger = screen.getByRole('button', { name: /toggle/i });
114
+ await user.click(trigger);
115
+ expect(childClick).toHaveBeenCalled();
116
+ expect(screen.getByText('Collapsible content here')).toBeInTheDocument();
117
+
118
+ await user.keyboard('{Enter}');
119
+ expect(childKeyDown).toHaveBeenCalled();
120
+ });
121
+
122
+ it('forwards html props to root, trigger, and content', async () => {
123
+ const user = userEvent.setup();
124
+ render(
125
+ <Collapsible data-testid="root" data-track="collapsible-root">
126
+ <Collapsible.Trigger data-testid="trigger" aria-label="Toggle section">Toggle</Collapsible.Trigger>
127
+ <Collapsible.Content data-testid="content" data-panel="details">
128
+ Collapsible content here
129
+ </Collapsible.Content>
130
+ </Collapsible>
131
+ );
132
+
133
+ await user.click(screen.getByTestId('trigger'));
134
+
135
+ expect(screen.getByTestId('root')).toHaveAttribute('data-track', 'collapsible-root');
136
+ expect(screen.getByTestId('trigger')).toHaveAttribute('aria-label', 'Toggle section');
137
+ expect(screen.getByTestId('content')).toHaveAttribute('data-panel', 'details');
138
+ });
139
+
99
140
  it('has no accessibility violations', async () => {
100
141
  const { container } = renderCollapsible({ defaultOpen: true });
101
142
  await expectNoA11yViolations(container);
@@ -3,6 +3,17 @@
3
3
  import React, { useState, useCallback, useId, createContext, useContext } from 'react';
4
4
  import styles from './Collapsible.module.scss';
5
5
 
6
+ function composeEventHandlers<E extends { defaultPrevented: boolean }>(
7
+ userHandler: ((event: E) => void) | undefined,
8
+ internalHandler: (event: E) => void
9
+ ) {
10
+ return (event: E) => {
11
+ userHandler?.(event);
12
+ if (event.defaultPrevented) return;
13
+ internalHandler(event);
14
+ };
15
+ }
16
+
6
17
  // Context for sharing state between compound components
7
18
  interface CollapsibleContextValue {
8
19
  isOpen: boolean;
@@ -23,7 +34,7 @@ function useCollapsibleContext() {
23
34
  }
24
35
 
25
36
  // Root component
26
- export interface CollapsibleRootProps {
37
+ export interface CollapsibleRootProps extends React.HTMLAttributes<HTMLDivElement> {
27
38
  children: React.ReactNode;
28
39
  /** Whether the collapsible is initially open */
29
40
  defaultOpen?: boolean;
@@ -33,8 +44,6 @@ export interface CollapsibleRootProps {
33
44
  onOpenChange?: (open: boolean) => void;
34
45
  /** Whether the collapsible is disabled */
35
46
  disabled?: boolean;
36
- /** Additional class name */
37
- className?: string;
38
47
  }
39
48
 
40
49
  function CollapsibleRoot({
@@ -44,6 +53,7 @@ function CollapsibleRoot({
44
53
  onOpenChange,
45
54
  disabled = false,
46
55
  className,
56
+ ...htmlProps
47
57
  }: CollapsibleRootProps) {
48
58
  const [internalOpen, setInternalOpen] = useState(defaultOpen);
49
59
  const isControlled = controlledOpen !== undefined;
@@ -78,6 +88,7 @@ function CollapsibleRoot({
78
88
  return (
79
89
  <CollapsibleContext.Provider value={contextValue}>
80
90
  <div
91
+ {...htmlProps}
81
92
  className={`${styles.root} ${isOpen ? styles.open : ''} ${disabled ? styles.disabled : ''} ${className || ''}`}
82
93
  data-state={isOpen ? 'open' : 'closed'}
83
94
  data-disabled={disabled || undefined}
@@ -89,10 +100,8 @@ function CollapsibleRoot({
89
100
  }
90
101
 
91
102
  // Trigger component
92
- export interface CollapsibleTriggerProps {
103
+ export interface CollapsibleTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
93
104
  children: React.ReactNode;
94
- /** Additional class name */
95
- className?: string;
96
105
  /** Show chevron indicator */
97
106
  showChevron?: boolean;
98
107
  /** Chevron position */
@@ -107,6 +116,9 @@ function CollapsibleTrigger({
107
116
  showChevron = true,
108
117
  chevronPosition = 'end',
109
118
  asChild = false,
119
+ onClick,
120
+ onKeyDown,
121
+ ...htmlProps
110
122
  }: CollapsibleTriggerProps) {
111
123
  const { isOpen, toggle, contentId, triggerId, disabled } = useCollapsibleContext();
112
124
 
@@ -117,6 +129,10 @@ function CollapsibleTrigger({
117
129
  }
118
130
  };
119
131
 
132
+ const handleClick = () => {
133
+ toggle();
134
+ };
135
+
120
136
  const chevronIcon = showChevron && (
121
137
  <svg
122
138
  className={`${styles.chevron} ${isOpen ? styles.chevronOpen : ''}`}
@@ -137,26 +153,47 @@ function CollapsibleTrigger({
137
153
  );
138
154
 
139
155
  if (asChild && React.isValidElement(children)) {
156
+ const childProps = children.props as {
157
+ className?: string;
158
+ onClick?: (event: React.MouseEvent<HTMLElement>) => void;
159
+ onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
160
+ };
161
+
140
162
  return React.cloneElement(children as React.ReactElement<any>, {
141
- id: triggerId,
163
+ ...htmlProps,
164
+ id: (htmlProps.id as string | undefined) ?? triggerId,
142
165
  'aria-expanded': isOpen,
143
166
  'aria-controls': contentId,
144
167
  'aria-disabled': disabled || undefined,
145
- onClick: toggle,
146
- onKeyDown: handleKeyDown,
168
+ onClick: composeEventHandlers(
169
+ (event: React.MouseEvent<HTMLElement>) => {
170
+ childProps.onClick?.(event);
171
+ onClick?.(event as unknown as React.MouseEvent<HTMLButtonElement>);
172
+ },
173
+ () => handleClick()
174
+ ),
175
+ onKeyDown: composeEventHandlers(
176
+ (event: React.KeyboardEvent<HTMLElement>) => {
177
+ childProps.onKeyDown?.(event);
178
+ onKeyDown?.(event as unknown as React.KeyboardEvent<HTMLButtonElement>);
179
+ },
180
+ (event) => handleKeyDown(event as unknown as React.KeyboardEvent)
181
+ ),
182
+ className: [className, childProps.className].filter(Boolean).join(' '),
147
183
  });
148
184
  }
149
185
 
150
186
  return (
151
187
  <button
188
+ {...htmlProps}
152
189
  type="button"
153
- id={triggerId}
190
+ id={(htmlProps.id as string | undefined) ?? triggerId}
154
191
  className={`${styles.trigger} ${className || ''}`}
155
192
  aria-expanded={isOpen}
156
193
  aria-controls={contentId}
157
194
  aria-disabled={disabled || undefined}
158
- onClick={toggle}
159
- onKeyDown={handleKeyDown}
195
+ onClick={composeEventHandlers(onClick, handleClick)}
196
+ onKeyDown={composeEventHandlers(onKeyDown, handleKeyDown)}
160
197
  disabled={disabled}
161
198
  >
162
199
  {chevronPosition === 'start' && chevronIcon}
@@ -167,10 +204,8 @@ function CollapsibleTrigger({
167
204
  }
168
205
 
169
206
  // Content component
170
- export interface CollapsibleContentProps {
207
+ export interface CollapsibleContentProps extends React.HTMLAttributes<HTMLDivElement> {
171
208
  children: React.ReactNode;
172
- /** Additional class name */
173
- className?: string;
174
209
  /** Force mount content even when closed (useful for animations) */
175
210
  forceMount?: boolean;
176
211
  }
@@ -179,6 +214,7 @@ function CollapsibleContent({
179
214
  children,
180
215
  className,
181
216
  forceMount = false,
217
+ ...htmlProps
182
218
  }: CollapsibleContentProps) {
183
219
  const { isOpen, contentId, triggerId } = useCollapsibleContext();
184
220
 
@@ -189,7 +225,8 @@ function CollapsibleContent({
189
225
 
190
226
  return (
191
227
  <div
192
- id={contentId}
228
+ {...htmlProps}
229
+ id={(htmlProps.id as string | undefined) ?? contentId}
193
230
  role="region"
194
231
  aria-labelledby={triggerId}
195
232
  className={`${styles.content} ${isOpen ? styles.contentOpen : styles.contentClosed} ${className || ''}`}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { defineFragment } from '@fragments-sdk/cli/core';
2
+ import { defineFragment } from '@fragments-sdk/core';
3
3
  import { ColorPicker } from '.';
4
4
 
5
5
  function ControlledColorPickerDemo() {
@@ -1,18 +1,49 @@
1
1
  import React, { useState } from 'react';
2
- import { defineFragment } from '@fragments-sdk/cli/core';
3
- import { Combobox } from '.';
2
+ import { defineFragment } from '@fragments-sdk/core';
3
+ import { Combobox, type ComboboxMultipleProps, type ComboboxSingleProps } from '.';
4
4
 
5
5
  // Stateful wrapper for interactive demos
6
- function StatefulCombobox(props: React.ComponentProps<typeof Combobox> & {
7
- children: React.ReactNode;
8
- initialValue?: string | string[];
9
- }) {
6
+ function StatefulCombobox(
7
+ props:
8
+ | (Omit<React.ComponentProps<typeof Combobox>, 'value' | 'onValueChange'> & {
9
+ children: React.ReactNode;
10
+ multiple: true;
11
+ initialValue?: string[];
12
+ })
13
+ | (Omit<React.ComponentProps<typeof Combobox>, 'value' | 'onValueChange'> & {
14
+ children: React.ReactNode;
15
+ multiple?: false;
16
+ initialValue?: string;
17
+ })
18
+ ) {
10
19
  const { initialValue, children, ...rest } = props;
11
- const [value, setValue] = useState<string | string[] | null>(initialValue ?? (props.multiple ? [] : null));
20
+
21
+ if (props.multiple) {
22
+ const [value, setValue] = useState<string[]>(
23
+ Array.isArray(initialValue) ? initialValue : []
24
+ );
25
+ const multiProps = rest as Omit<React.ComponentProps<typeof Combobox>, 'value' | 'onValueChange'> & {
26
+ multiple: true;
27
+ };
28
+ const MultiCombobox = Combobox as unknown as (props: ComboboxMultipleProps) => React.JSX.Element;
29
+ return (
30
+ <MultiCombobox {...(multiProps as ComboboxMultipleProps)} multiple value={value} onValueChange={setValue}>
31
+ {children}
32
+ </MultiCombobox>
33
+ );
34
+ }
35
+
36
+ const [value, setValue] = useState<string | null>(
37
+ typeof initialValue === 'string' ? initialValue : null
38
+ );
39
+ const singleProps = rest as Omit<React.ComponentProps<typeof Combobox>, 'value' | 'onValueChange'> & {
40
+ multiple?: false;
41
+ };
42
+ const SingleCombobox = Combobox as unknown as (props: ComboboxSingleProps) => React.JSX.Element;
12
43
  return (
13
- <Combobox {...rest} value={value} onValueChange={setValue}>
44
+ <SingleCombobox {...(singleProps as ComboboxSingleProps)} value={value} onValueChange={setValue}>
14
45
  {children}
15
- </Combobox>
46
+ </SingleCombobox>
16
47
  );
17
48
  }
18
49
 
@@ -76,6 +107,10 @@ export default defineFragment({
76
107
  type: 'function',
77
108
  description: 'Called when selection changes',
78
109
  },
110
+ onChange: {
111
+ type: 'function',
112
+ description: 'Alias for onValueChange',
113
+ },
79
114
  multiple: {
80
115
  type: 'boolean',
81
116
  description: 'Allow multiple selections with chips',
@@ -120,10 +155,13 @@ export default defineFragment({
120
155
  propsSummary: [
121
156
  'value: string | string[] - controlled selected value',
122
157
  'onValueChange: (value) => void - selection handler',
158
+ 'onChange: (value) => void - alias for onValueChange',
123
159
  'multiple: boolean - enable multi-select with chips',
160
+ 'When multiple=true, value/defaultValue must be string[] (single mode uses string|null)',
124
161
  'placeholder: string - input placeholder text',
125
162
  'disabled: boolean - disable combobox',
126
163
  'autoHighlight: boolean - auto-highlight first match',
164
+ 'Combobox.Input showTrigger: boolean - hide built-in trigger when using Combobox.Trigger explicitly',
127
165
  'maxVisibleItems: number - max visible options before scrolling (default 4)',
128
166
  ],
129
167
  scenarioTags: [
@@ -142,6 +180,7 @@ export default defineFragment({
142
180
  commonPatterns: [
143
181
  '<Combobox placeholder="Search..."><Combobox.Input /><Combobox.Content><Combobox.Item value="opt1">{label1}</Combobox.Item><Combobox.Item value="opt2">{label2}</Combobox.Item></Combobox.Content></Combobox>',
144
182
  '<Combobox multiple placeholder="Select items..."><Combobox.Input /><Combobox.Content><Combobox.Item value="opt1">{label1}</Combobox.Item><Combobox.Item value="opt2">{label2}</Combobox.Item></Combobox.Content></Combobox>',
183
+ '<Combobox placeholder="Search..."><Combobox.Input showTrigger={false} /><Combobox.Trigger aria-label="Open" /><Combobox.Content>...</Combobox.Content></Combobox>',
145
184
  ],
146
185
  },
147
186
 
@@ -274,5 +313,20 @@ export default defineFragment({
274
313
  </Combobox>
275
314
  ),
276
315
  },
316
+ {
317
+ name: 'Explicit Trigger',
318
+ description: 'Hide the built-in input trigger when rendering a separate Combobox.Trigger',
319
+ render: () => (
320
+ <StatefulCombobox placeholder="Search assignees...">
321
+ <Combobox.Input showTrigger={false} />
322
+ <Combobox.Trigger aria-label="Open assignee list" />
323
+ <Combobox.Content>
324
+ <Combobox.Item value="alice">Alice</Combobox.Item>
325
+ <Combobox.Item value="bob">Bob</Combobox.Item>
326
+ <Combobox.Item value="carol">Carol</Combobox.Item>
327
+ </Combobox.Content>
328
+ </StatefulCombobox>
329
+ ),
330
+ },
277
331
  ],
278
332
  });
@@ -175,7 +175,7 @@
175
175
  var(--_item-h) * var(--fui-select-max-items, 4.5) + var(--fui-space-1, #{$fui-space-1}) * 2
176
176
  ) !important;
177
177
  overflow-y: auto !important;
178
- padding: var(--fui-padding-item-xs, $fui-padding-item-xs);
178
+ padding: var(--fui-space-1, $fui-space-1);
179
179
  box-shadow: var(--fui-shadow-md, $fui-shadow-md);
180
180
 
181
181
  // Animation
@@ -207,8 +207,7 @@
207
207
  align-items: center;
208
208
  gap: var(--fui-space-2, $fui-space-2);
209
209
  width: 100%;
210
- padding: var(--fui-padding-item-xs, $fui-padding-item-xs)
211
- var(--fui-padding-item-md, $fui-padding-item-md);
210
+ padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
212
211
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
213
212
  cursor: pointer;
214
213
  outline: none;
@@ -254,8 +253,7 @@
254
253
  display: flex;
255
254
  align-items: center;
256
255
  justify-content: center;
257
- padding: var(--fui-padding-item-lg, $fui-padding-item-lg)
258
- var(--fui-padding-item-md, $fui-padding-item-md);
256
+ padding: var(--fui-space-2, $fui-space-2) var(--fui-space-3, $fui-space-3);
259
257
  color: var(--fui-text-tertiary, $fui-text-tertiary);
260
258
  font-size: var(--fui-font-size-sm, $fui-font-size-sm);
261
259
  }
@@ -271,8 +269,7 @@
271
269
 
272
270
  // Group label
273
271
  .groupLabel {
274
- padding: var(--fui-padding-item-xs, $fui-padding-item-xs)
275
- var(--fui-padding-item-md, $fui-padding-item-md);
272
+ padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
276
273
  font-size: var(--fui-font-size-xs, $fui-font-size-xs);
277
274
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
278
275
  color: var(--fui-text-tertiary, $fui-text-tertiary);
@@ -2,12 +2,33 @@ import { describe, it, expect, vi } from 'vitest';
2
2
  import { render, screen, userEvent, expectNoA11yViolations } from '../../test/utils';
3
3
  import { Combobox } from './index';
4
4
 
5
- function renderCombobox(props: { onValueChange?: (v: string | string[] | null) => void; multiple?: boolean; placeholder?: string } = {}) {
5
+ type RenderComboboxProps =
6
+ | { onValueChange?: (v: string | null) => void; multiple?: false; placeholder?: string }
7
+ | { onValueChange?: (v: string[]) => void; multiple: true; placeholder?: string };
8
+
9
+ function renderCombobox(props: RenderComboboxProps = {}) {
10
+ if (props.multiple) {
11
+ return render(
12
+ <Combobox
13
+ placeholder={props.placeholder ?? 'Search...'}
14
+ onValueChange={props.onValueChange}
15
+ multiple
16
+ >
17
+ <Combobox.Input />
18
+ <Combobox.Content>
19
+ <Combobox.Item value="react">React</Combobox.Item>
20
+ <Combobox.Item value="vue">Vue</Combobox.Item>
21
+ <Combobox.Item value="angular">Angular</Combobox.Item>
22
+ <Combobox.Empty>No results found</Combobox.Empty>
23
+ </Combobox.Content>
24
+ </Combobox>
25
+ );
26
+ }
27
+
6
28
  return render(
7
29
  <Combobox
8
30
  placeholder={props.placeholder ?? 'Search...'}
9
31
  onValueChange={props.onValueChange}
10
- multiple={props.multiple}
11
32
  >
12
33
  <Combobox.Input />
13
34
  <Combobox.Content>
@@ -79,9 +100,29 @@ describe('Combobox', () => {
79
100
  expect(await screen.findByText('Frameworks')).toBeInTheDocument();
80
101
  });
81
102
 
103
+ it('forwards html props to item and labels', async () => {
104
+ const user = userEvent.setup();
105
+ render(
106
+ <Combobox placeholder="Search">
107
+ <Combobox.Input />
108
+ <Combobox.Content>
109
+ <Combobox.Group id="framework-group">
110
+ <Combobox.GroupLabel id="framework-group-label">Frameworks</Combobox.GroupLabel>
111
+ <Combobox.Item id="react-option" value="react">React</Combobox.Item>
112
+ </Combobox.Group>
113
+ </Combobox.Content>
114
+ </Combobox>
115
+ );
116
+
117
+ await user.click(screen.getByRole('combobox'));
118
+ expect(await screen.findByRole('option', { name: 'React' })).toHaveAttribute('id', 'react-option');
119
+ expect(screen.getByText('Frameworks')).toHaveAttribute('id', 'framework-group-label');
120
+ expect(screen.getByText('Frameworks').closest('#framework-group')).toBeInTheDocument();
121
+ });
122
+
82
123
  it('supports multiple selection mode', async () => {
83
124
  const user = userEvent.setup();
84
- const onChange = vi.fn();
125
+ const onChange = vi.fn<(value: string[]) => void>();
85
126
  renderCombobox({ multiple: true, onValueChange: onChange });
86
127
 
87
128
  await user.click(screen.getByRole('combobox'));
@@ -90,6 +131,22 @@ describe('Combobox', () => {
90
131
  expect(onChange).toHaveBeenCalled();
91
132
  });
92
133
 
134
+ it('uses text content for non-string item labels', async () => {
135
+ render(
136
+ <Combobox multiple value={['react']} defaultOpen>
137
+ <Combobox.Input />
138
+ <Combobox.Content>
139
+ <Combobox.Item value="react">
140
+ <span>React</span>
141
+ </Combobox.Item>
142
+ </Combobox.Content>
143
+ </Combobox>
144
+ );
145
+
146
+ expect((await screen.findAllByText('React')).length).toBeGreaterThan(0);
147
+ expect(screen.queryByText('[object Object]')).not.toBeInTheDocument();
148
+ });
149
+
93
150
  it('has no accessibility violations', async () => {
94
151
  const { container } = render(
95
152
  <Combobox placeholder="Search...">
@@ -199,4 +256,23 @@ describe('Combobox', () => {
199
256
  expect(screen.queryByRole('option')).not.toBeInTheDocument();
200
257
  });
201
258
  });
259
+
260
+ it('updates chip label when selected option is removed', async () => {
261
+ const renderDemo = (showReact: boolean) => (
262
+ <Combobox multiple value={['react']} defaultOpen>
263
+ <Combobox.Input />
264
+ <Combobox.Content>
265
+ {showReact && <Combobox.Item value="react">React</Combobox.Item>}
266
+ <Combobox.Item value="vue">Vue</Combobox.Item>
267
+ </Combobox.Content>
268
+ </Combobox>
269
+ );
270
+
271
+ const { rerender } = render(renderDemo(true));
272
+
273
+ await screen.findAllByText('React');
274
+ rerender(renderDemo(false));
275
+
276
+ expect(await screen.findByText('react')).toBeInTheDocument();
277
+ });
202
278
  });