@usefragments/ui 1.5.4 → 1.7.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 (667) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -6,8 +6,10 @@ import { useState, useCallback, useEffect, useMemo } from "react";
6
6
  // Lazy-loaded dependency (shiki)
7
7
  // ============================================
8
8
 
9
+ type ShikiThemeInput = string | typeof import("./css-variables-theme").FUI_CSS_VARIABLES_THEME;
10
+
9
11
  let _codeToHtml:
10
- | ((code: string, options: { lang: string; theme: string }) => Promise<string>)
12
+ | ((code: string, options: { lang: string; theme: ShikiThemeInput }) => Promise<string>)
11
13
  | null = null;
12
14
  let _shikiLoadPromise: Promise<void> | null = null;
13
15
  let _shikiFailed = false;
@@ -28,7 +30,9 @@ async function loadShikiDeps() {
28
30
  await _shikiLoadPromise;
29
31
  }
30
32
  import { TabsRoot, TabsList, Tab, TabsPanel } from "../Tabs";
33
+ import { FUI_CSS_VARIABLES_THEME } from "./css-variables-theme";
31
34
  import styles from "./CodeBlock.module.scss";
35
+ import { isDevelopmentBuild, isProductionBuild } from "../../utils/env";
32
36
 
33
37
  export type CodeBlockLanguage =
34
38
  | "tsx"
@@ -76,6 +80,7 @@ const LANGUAGE_ALIASES: Partial<Record<CodeBlockLanguage, string>> = {
76
80
 
77
81
  /** Available syntax highlighting themes */
78
82
  export type CodeBlockTheme =
83
+ | "css-variables"
79
84
  | "synthwave-84"
80
85
  | "github-dark"
81
86
  | "github-light"
@@ -95,7 +100,7 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
95
100
  code: string;
96
101
  /** Programming language for syntax highlighting */
97
102
  language?: CodeBlockLanguage;
98
- /** Syntax highlighting theme */
103
+ /** Syntax highlighting theme. Default follows `--fui-code-token-*` via shiki css-variables. */
99
104
  theme?: CodeBlockTheme;
100
105
  /** Show copy button */
101
106
  showCopy?: boolean;
@@ -125,6 +130,12 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
125
130
  defaultCollapsed?: boolean;
126
131
  /** Number of lines to show when collapsed */
127
132
  collapsedLines?: number;
133
+ /**
134
+ * Collapse control copy. `lines` keeps “Show N more lines” / “Show less”
135
+ * (docs prose). `expand` is one right-aligned Expand / Collapse control
136
+ * for preview+code capsules.
137
+ */
138
+ collapseAction?: "lines" | "expand";
128
139
  /** Compact mode with reduced padding */
129
140
  compact?: boolean;
130
141
  /** Show a persistent copy button (always visible, uses Button component) */
@@ -547,14 +558,22 @@ function processShikiHtml(html: string, options: ProcessOptions): string {
547
558
  const lineClass = lineClasses.join(" ");
548
559
  const diffMarker = isAdded ? "+" : isRemoved ? "-" : " ";
549
560
 
550
- if (showLineNumbers || hasDiff) {
551
- const lineNumHtml = showLineNumbers
552
- ? `<span class="line-number">${displayLineNum}</span>`
561
+ const lineNumHtml =
562
+ showLineNumbers || hasDiff
563
+ ? `${showLineNumbers ? `<span class="line-number">${displayLineNum}</span>` : ""}${
564
+ hasDiff ? `<span class="diff-marker">${diffMarker}</span>` : ""
565
+ }`
553
566
  : "";
554
- const diffMarkerHtml = hasDiff ? `<span class="diff-marker">${diffMarker}</span>` : "";
555
- return `<span class="${lineClass}">${lineNumHtml}${diffMarkerHtml}${line}</span>`;
567
+
568
+ // Shiki already wraps each row in <span class="line">; merge into that span
569
+ // instead of nesting a second .line (which breaks the inline-block row layout).
570
+ if (/^<span class="line([^"]*)">/.test(line)) {
571
+ return line.replace(
572
+ /^<span class="line([^"]*)">/,
573
+ `<span class="${lineClass}$1">${lineNumHtml}`
574
+ );
556
575
  }
557
- return `<span class="${lineClass}">${line}</span>`;
576
+ return `<span class="${lineClass}">${lineNumHtml}${line}</span>`;
558
577
  });
559
578
 
560
579
  // Reconstruct the HTML
@@ -565,7 +584,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
565
584
  {
566
585
  code,
567
586
  language = "tsx",
568
- theme = "one-dark-pro",
587
+ theme = "css-variables",
569
588
  showCopy = true,
570
589
  title,
571
590
  filename,
@@ -580,6 +599,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
580
599
  collapsible = false,
581
600
  defaultCollapsed = false,
582
601
  collapsedLines = 5,
602
+ collapseAction = "lines",
583
603
  compact = false,
584
604
  persistentCopy = false,
585
605
  copyPlacement = "auto",
@@ -591,7 +611,10 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
591
611
  ref
592
612
  ) {
593
613
  const [copied, setCopied] = useState(false);
594
- const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({ html: '', loading: true });
614
+ const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({
615
+ html: "",
616
+ loading: true,
617
+ });
595
618
  const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);
596
619
 
597
620
  const trimmedCode = useMemo(() => normalizeCode(code, language), [code, language]);
@@ -624,7 +647,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
624
647
  const fallbackHtml = `<pre class="shiki"><code>${escapeHtml(visibleCode)}</code></pre>`;
625
648
 
626
649
  if (_shikiFailed || !_codeToHtml) {
627
- if (_shikiFailed && process.env.NODE_ENV === "development") {
650
+ if (_shikiFailed && isDevelopmentBuild()) {
628
651
  console.warn(
629
652
  "[@usefragments/ui] CodeBlock: shiki is not installed. " +
630
653
  "Install it with: npm install shiki"
@@ -635,7 +658,9 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
635
658
 
636
659
  try {
637
660
  const resolvedLang = LANGUAGE_ALIASES[language] || language;
638
- const html = await _codeToHtml(visibleCode, { lang: resolvedLang, theme });
661
+ const shikiTheme: ShikiThemeInput =
662
+ theme === "css-variables" ? FUI_CSS_VARIABLES_THEME : theme;
663
+ const html = await _codeToHtml(visibleCode, { lang: resolvedLang, theme: shikiTheme });
639
664
  return processShikiHtml(html, {
640
665
  showLineNumbers,
641
666
  startLineNumber,
@@ -644,7 +669,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
644
669
  removedLines: removedSet,
645
670
  });
646
671
  } catch (err) {
647
- if (process.env.NODE_ENV !== "production") {
672
+ if (!isProductionBuild()) {
648
673
  console.error("Syntax highlighting failed:", err);
649
674
  }
650
675
  return fallbackHtml;
@@ -679,7 +704,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
679
704
  setTimeout(() => setCopied(false), 2000);
680
705
  onCopy?.();
681
706
  } catch (err) {
682
- if (process.env.NODE_ENV !== "production") {
707
+ if (!isProductionBuild()) {
683
708
  console.error("Failed to copy:", err);
684
709
  }
685
710
  }
@@ -714,9 +739,13 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
714
739
  : undefined;
715
740
 
716
741
  return (
717
- <div ref={ref} {...htmlProps} className={classNames} data-theme="dark">
718
- {title && <div className={styles.title}>{title}</div>}
719
- <div className={wrapperClasses} style={wrapperStyle}>
742
+ <div ref={ref} {...htmlProps} className={classNames} data-slot="code-block">
743
+ {title && (
744
+ <div className={styles.title} data-slot="code-block-title">
745
+ {title}
746
+ </div>
747
+ )}
748
+ <div className={wrapperClasses} style={wrapperStyle} data-slot="code-block-frame">
720
749
  {shouldRenderHeader && (
721
750
  <div className={styles.header}>
722
751
  <span className={styles.filename}>{filename ?? ""}</span>
@@ -773,11 +802,17 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
773
802
  <button
774
803
  type="button"
775
804
  onClick={toggleCollapsed}
776
- className={styles.collapseButton}
805
+ className={
806
+ collapseAction === "expand"
807
+ ? `${styles.collapseButton} ${styles.collapseExpand}`
808
+ : styles.collapseButton
809
+ }
777
810
  aria-expanded={!isCollapsed}
778
811
  aria-label={isCollapsed ? "Expand code" : "Collapse code"}
779
812
  >
780
- {isCollapsed ? (
813
+ {collapseAction === "expand" ? (
814
+ <span>{isCollapsed ? "Expand" : "Collapse"}</span>
815
+ ) : isCollapsed ? (
781
816
  <>
782
817
  <ChevronDownIcon className={styles.icon} />
783
818
  <span>Show {totalLines - collapsedLines} more lines</span>
@@ -834,6 +869,14 @@ export interface TabbedCodeBlockProps {
834
869
  wordWrap?: boolean;
835
870
  /** Maximum height in pixels (enables scrolling) */
836
871
  maxHeight?: number;
872
+ /** Allow collapsing/expanding each tab's code (forwarded to every panel) */
873
+ collapsible?: boolean;
874
+ /** Initial collapsed state (only applies when collapsible is true) */
875
+ defaultCollapsed?: boolean;
876
+ /** Number of lines to show when collapsed */
877
+ collapsedLines?: number;
878
+ /** Forwarded to every panel (see CodeBlock `collapseAction`) */
879
+ collapseAction?: "lines" | "expand";
837
880
  /** Additional class name */
838
881
  className?: string;
839
882
  /** Callback fired when a tab's copy button is clicked. Receives the tab label. */
@@ -852,6 +895,10 @@ function TabbedCodeBlock({
852
895
  tabsVariant = "pills",
853
896
  wordWrap,
854
897
  maxHeight,
898
+ collapsible,
899
+ defaultCollapsed,
900
+ collapsedLines,
901
+ collapseAction,
855
902
  className,
856
903
  onCopy,
857
904
  }: TabbedCodeBlockProps) {
@@ -864,28 +911,37 @@ function TabbedCodeBlock({
864
911
  {tabs.map((tab, index) => {
865
912
  const tabValue = tab.value ?? tab.label;
866
913
  return (
867
- <Tab key={`${tabValue}-${index}`} value={tabValue}>
868
- {tab.label}
869
- </Tab>
914
+ <Tab key={`${tabValue}-${index}`} value={tabValue}>
915
+ {tab.label}
916
+ </Tab>
870
917
  );
871
918
  })}
872
919
  </TabsList>
873
920
  {tabs.map((tab, index) => {
874
921
  const tabValue = tab.value ?? tab.label;
875
922
  return (
876
- <TabsPanel key={`${tabValue}-panel-${index}`} value={tabValue} flush className={styles.tabbedPanel}>
877
- <CodeBlockBase
878
- code={tab.code}
879
- language={tab.language}
880
- theme={theme}
881
- showCopy={showCopy}
882
- copyPlacement={copyPlacement}
883
- showLineNumbers={showLineNumbers}
884
- wordWrap={wordWrap}
885
- maxHeight={maxHeight}
886
- onCopy={onCopy ? () => onCopy(tab.label) : undefined}
887
- />
888
- </TabsPanel>
923
+ <TabsPanel
924
+ key={`${tabValue}-panel-${index}`}
925
+ value={tabValue}
926
+ flush
927
+ className={styles.tabbedPanel}
928
+ >
929
+ <CodeBlockBase
930
+ code={tab.code}
931
+ language={tab.language}
932
+ theme={theme}
933
+ showCopy={showCopy}
934
+ copyPlacement={copyPlacement}
935
+ showLineNumbers={showLineNumbers}
936
+ wordWrap={wordWrap}
937
+ maxHeight={maxHeight}
938
+ collapsible={collapsible}
939
+ defaultCollapsed={defaultCollapsed}
940
+ collapsedLines={collapsedLines}
941
+ collapseAction={collapseAction}
942
+ onCopy={onCopy ? () => onCopy(tab.label) : undefined}
943
+ />
944
+ </TabsPanel>
889
945
  );
890
946
  })}
891
947
  </TabsRoot>
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Collapsible",
4
- "description": "An interactive component that expands/collapses to show or hide content",
4
+ "description": "Shows or hides one region of content behind a trigger.",
5
5
  "category": "layout",
6
- "tags": [
7
- "collapsible",
8
- "expandable",
9
- "accordion",
10
- "disclosure",
11
- "toggle"
12
- ],
6
+ "tags": ["collapsible", "expandable", "accordion", "disclosure", "toggle"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Collapsible/index.tsx",
15
9
  "exportName": "Collapsible",
@@ -51,22 +45,21 @@
51
45
  },
52
46
  "usage": {
53
47
  "when": [
54
- "Showing/hiding additional content on demand",
55
- "Building accordions or expandable sections",
56
- "Collapsible navigation sections",
57
- "FAQ sections with expandable answers",
58
- "Settings panels with grouped options"
48
+ "Detail most readers do not need",
49
+ "Optional or advanced settings",
50
+ "Navigation sections that fold away",
51
+ "Building a disclosure the other components do not cover"
59
52
  ],
60
53
  "whenNot": [
61
- "Single item disclosure (use Accordion instead)",
62
- "Navigation menus with complex interactions (use Menu)",
63
- "Modal or overlay content (use Dialog or Popover)"
54
+ "Several sections that should coordinate (use Accordion)",
55
+ "Content that must overlay the page (use Dialog or Popover)",
56
+ "Action lists (use Menu)"
64
57
  ],
65
58
  "guidelines": [
66
- "Use clear trigger labels that indicate expandable content",
67
- "Consider defaultOpen for primary content users often need",
68
- "Keep trigger text concise but descriptive",
69
- "Use chevron icons consistently to indicate collapsible state"
59
+ "The trigger should say what opens, not 'click here'",
60
+ "defaultOpen for content most users want on arrival",
61
+ "Keep the trigger to a short phrase",
62
+ "Keep the chevron direction consistent across the page"
70
63
  ],
71
64
  "accessibility": [
72
65
  "Trigger must have aria-expanded to indicate state",
@@ -78,32 +71,32 @@
78
71
  "examples": [
79
72
  {
80
73
  "name": "Default",
81
- "description": "Basic collapsible with trigger and content",
74
+ "description": "Starts closed and opens on click.",
82
75
  "code": "<Collapsible>\n <Collapsible.Trigger>Click to expand</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is hidden by default and revealed when the trigger is clicked.</p>\n </Collapsible.Content>\n</Collapsible>"
83
76
  },
84
77
  {
85
78
  "name": "Default Open",
86
- "description": "Collapsible that starts in the expanded state",
79
+ "description": "Starts open for content most users want.",
87
80
  "code": "<Collapsible defaultOpen>\n <Collapsible.Trigger>Section Title</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is visible by default. Click the trigger to collapse.</p>\n </Collapsible.Content>\n</Collapsible>"
88
81
  },
89
82
  {
90
83
  "name": "Chevron Start",
91
- "description": "Collapsible with chevron icon on the left",
84
+ "description": "Marker leads the label instead of trailing it.",
92
85
  "code": "<Collapsible>\n <Collapsible.Trigger chevronPosition=\"start\">Navigation</Collapsible.Trigger>\n <Collapsible.Content>\n <ul style={{ margin: 0, paddingLeft: '1.5rem' }}>\n <li>Dashboard</li>\n <li>Settings</li>\n <li>Profile</li>\n </ul>\n </Collapsible.Content>\n</Collapsible>"
93
86
  },
94
87
  {
95
88
  "name": "No Chevron",
96
- "description": "Collapsible without chevron indicator",
89
+ "description": "Bare trigger when the surrounding layout signals enough.",
97
90
  "code": "<Collapsible>\n <Collapsible.Trigger showChevron={false}>Show more details</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Hidden details that appear when triggered.</p>\n </Collapsible.Content>\n</Collapsible>"
98
91
  },
99
92
  {
100
93
  "name": "Disabled",
101
- "description": "Collapsible in disabled state",
94
+ "description": "Locked shut and skipped by the keyboard.",
102
95
  "code": "<Collapsible disabled>\n <Collapsible.Trigger>Cannot toggle (disabled)</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content cannot be shown because the collapsible is disabled.</p>\n </Collapsible.Content>\n</Collapsible>"
103
96
  },
104
97
  {
105
98
  "name": "Multiple Sections",
106
- "description": "Multiple independent collapsible sections",
99
+ "description": "Independent regions that ignore each other.",
107
100
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n <Collapsible defaultOpen>\n <Collapsible.Trigger>Getting Started</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Introduction and setup instructions.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>Advanced Usage</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Advanced configuration options.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>API Reference</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Complete API documentation.</p>\n </Collapsible.Content>\n </Collapsible>\n</div>"
108
101
  }
109
102
  ],
@@ -131,19 +124,11 @@
131
124
  "onOpenChange: (open: boolean) => void - state change callback",
132
125
  "disabled: boolean - prevents interaction"
133
126
  ],
134
- "a11yRules": [
135
- "A11Y_EXPANDED_STATE",
136
- "A11Y_REGION_LABEL",
137
- "A11Y_KEYBOARD_NAV"
138
- ]
127
+ "a11yRules": ["A11Y_EXPANDED_STATE", "A11Y_REGION_LABEL", "A11Y_KEYBOARD_NAV"]
139
128
  },
140
129
  "ai": {
141
130
  "compositionPattern": "compound",
142
- "subComponents": [
143
- "Root",
144
- "Trigger",
145
- "Content"
146
- ]
131
+ "subComponents": ["Root", "Trigger", "Content"]
147
132
  },
148
133
  "provenance": {
149
134
  "source": "migrated",
@@ -1,25 +1,22 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/feedback" as feedback;
3
4
 
4
5
  .root {
5
6
  width: 100%;
6
7
  }
7
8
 
8
9
  .trigger {
9
- display: flex;
10
- align-items: center;
11
- width: 100%;
12
- padding: var(--fui-space-1, $fui-space-1);
13
- background: transparent;
14
- border: none;
10
+ @include button-reset;
11
+ @include interactive-base;
12
+ @include feedback.disclosure-row;
13
+
14
+ inline-size: 100%;
15
15
  border-radius: var(--fui-radius-md, $fui-radius-md);
16
16
  color: var(--fui-text-primary, $fui-text-primary);
17
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
18
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
19
- text-align: left;
17
+ text-align: start;
20
18
  cursor: pointer;
21
19
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
22
- gap: var(--fui-space-2, $fui-space-2);
23
20
 
24
21
  &:hover:not(:disabled) {
25
22
  background-color: var(--fui-bg-hover, $fui-bg-hover);
@@ -37,13 +34,12 @@
37
34
 
38
35
  .triggerContent {
39
36
  flex: 1;
40
- min-width: 0;
37
+ min-inline-size: 0;
41
38
  }
42
39
 
43
40
  .chevron {
44
- flex-shrink: 0;
45
- width: var(--fui-icon-md, $fui-icon-md);
46
- height: var(--fui-icon-md, $fui-icon-md);
41
+ @include feedback.disclosure-glyph;
42
+
47
43
  color: var(--fui-text-secondary, $fui-text-secondary);
48
44
  transition: transform var(--fui-transition-normal, $fui-transition-normal);
49
45
  }
@@ -53,67 +49,37 @@
53
49
  }
54
50
 
55
51
  .content {
52
+ display: grid;
53
+ grid-template-rows: 0fr;
56
54
  overflow: hidden;
55
+ opacity: 0;
57
56
  transition:
58
- max-height var(--fui-transition-normal, $fui-transition-normal),
57
+ grid-template-rows var(--fui-transition-normal, $fui-transition-normal),
59
58
  opacity var(--fui-transition-normal, $fui-transition-normal);
60
59
  }
61
60
 
62
61
  .contentOpen {
63
- max-height: 2000px; // Large enough for most content
62
+ grid-template-rows: 1fr;
64
63
  opacity: 1;
65
64
  }
66
65
 
67
- .contentClosed {
68
- max-height: 0;
69
- opacity: 0;
70
- }
71
-
72
66
  .contentInner {
73
- padding-top: var(--fui-space-1, $fui-space-1);
74
- }
67
+ @include feedback.disclosure-panel;
75
68
 
76
- .disabled {
77
- .trigger {
78
- opacity: 0.5;
79
- cursor: not-allowed;
80
- }
81
- }
82
-
83
- // Animation variant using CSS animation instead of max-height
84
- // Can be used with forceMount for smoother animations
85
- .root[data-animated='true'] {
86
- // Duration + easing come from --fui-transition-normal (matches the
87
- // max-height/opacity transition above); fill-mode keeps the end state.
88
- .contentOpen {
89
- animation: collapsibleSlideDown var(--fui-transition-normal, $fui-transition-normal)
90
- forwards;
91
- }
92
-
93
- .contentClosed {
94
- animation: collapsibleSlideUp var(--fui-transition-normal, $fui-transition-normal)
95
- forwards;
96
- }
69
+ min-block-size: 0;
70
+ overflow: hidden;
71
+ color: var(--fui-text-secondary, $fui-text-secondary);
97
72
  }
98
73
 
99
- @keyframes collapsibleSlideDown {
100
- from {
101
- max-height: 0;
102
- opacity: 0;
103
- }
104
- to {
105
- max-height: var(--collapsible-content-height, 2000px);
106
- opacity: 1;
107
- }
74
+ .disabled .trigger {
75
+ opacity: 0.5;
76
+ cursor: not-allowed;
108
77
  }
109
78
 
110
- @keyframes collapsibleSlideUp {
111
- from {
112
- max-height: var(--collapsible-content-height, 2000px);
113
- opacity: 1;
114
- }
115
- to {
116
- max-height: 0;
117
- opacity: 0;
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .trigger,
81
+ .chevron,
82
+ .content {
83
+ transition: none;
118
84
  }
119
85
  }
@@ -1,7 +1,7 @@
1
- 'use client';
1
+ "use client";
2
2
 
3
- import React, { useState, useCallback, useId, createContext, useContext } from 'react';
4
- import styles from './Collapsible.module.scss';
3
+ import React, { useState, useCallback, useId, createContext, useContext } from "react";
4
+ import styles from "./Collapsible.module.scss";
5
5
 
6
6
  function composeEventHandlers<E extends { defaultPrevented: boolean }>(
7
7
  userHandler: ((event: E) => void) | undefined,
@@ -28,7 +28,7 @@ const CollapsibleContext = createContext<CollapsibleContextValue | null>(null);
28
28
  function useCollapsibleContext() {
29
29
  const context = useContext(CollapsibleContext);
30
30
  if (!context) {
31
- throw new Error('Collapsible compound components must be used within Collapsible.Root');
31
+ throw new Error("Collapsible compound components must be used within Collapsible.Root");
32
32
  }
33
33
  return context;
34
34
  }
@@ -89,8 +89,8 @@ function CollapsibleRoot({
89
89
  <CollapsibleContext.Provider value={contextValue}>
90
90
  <div
91
91
  {...htmlProps}
92
- className={`${styles.root} ${isOpen ? styles.open : ''} ${disabled ? styles.disabled : ''} ${className || ''}`}
93
- data-state={isOpen ? 'open' : 'closed'}
92
+ className={`${styles.root} ${isOpen ? styles.open : ""} ${disabled ? styles.disabled : ""} ${className || ""}`}
93
+ data-state={isOpen ? "open" : "closed"}
94
94
  data-disabled={disabled || undefined}
95
95
  >
96
96
  {children}
@@ -105,7 +105,7 @@ export interface CollapsibleTriggerProps extends React.ButtonHTMLAttributes<HTML
105
105
  /** Show chevron indicator */
106
106
  showChevron?: boolean;
107
107
  /** Chevron position */
108
- chevronPosition?: 'start' | 'end';
108
+ chevronPosition?: "start" | "end";
109
109
  /** Render as child element (for custom triggers) */
110
110
  asChild?: boolean;
111
111
  }
@@ -114,7 +114,7 @@ function CollapsibleTrigger({
114
114
  children,
115
115
  className,
116
116
  showChevron = true,
117
- chevronPosition = 'end',
117
+ chevronPosition = "end",
118
118
  asChild = false,
119
119
  onClick,
120
120
  onKeyDown,
@@ -123,7 +123,7 @@ function CollapsibleTrigger({
123
123
  const { isOpen, toggle, contentId, triggerId, disabled } = useCollapsibleContext();
124
124
 
125
125
  const handleKeyDown = (e: React.KeyboardEvent) => {
126
- if (e.key === 'Enter' || e.key === ' ') {
126
+ if (e.key === "Enter" || e.key === " ") {
127
127
  e.preventDefault();
128
128
  toggle();
129
129
  }
@@ -135,7 +135,7 @@ function CollapsibleTrigger({
135
135
 
136
136
  const chevronIcon = showChevron && (
137
137
  <svg
138
- className={`${styles.chevron} ${isOpen ? styles.chevronOpen : ''}`}
138
+ className={`${styles.chevron} ${isOpen ? styles.chevronOpen : ""}`}
139
139
  viewBox="0 0 16 16"
140
140
  fill="none"
141
141
  aria-hidden="true"
@@ -160,9 +160,9 @@ function CollapsibleTrigger({
160
160
  return React.cloneElement(children as React.ReactElement<any>, {
161
161
  ...htmlProps,
162
162
  id: (htmlProps.id as string | undefined) ?? triggerId,
163
- 'aria-expanded': isOpen,
164
- 'aria-controls': contentId,
165
- 'aria-disabled': disabled || undefined,
163
+ "aria-expanded": isOpen,
164
+ "aria-controls": contentId,
165
+ "aria-disabled": disabled || undefined,
166
166
  onClick: composeEventHandlers(
167
167
  (event: React.MouseEvent<HTMLElement>) => {
168
168
  childProps.onClick?.(event);
@@ -177,7 +177,7 @@ function CollapsibleTrigger({
177
177
  },
178
178
  (event) => handleKeyDown(event as unknown as React.KeyboardEvent)
179
179
  ),
180
- className: [className, childProps.className].filter(Boolean).join(' '),
180
+ className: [styles.trigger, className, childProps.className].filter(Boolean).join(" "),
181
181
  });
182
182
  }
183
183
 
@@ -186,7 +186,7 @@ function CollapsibleTrigger({
186
186
  {...htmlProps}
187
187
  type="button"
188
188
  id={(htmlProps.id as string | undefined) ?? triggerId}
189
- className={`${styles.trigger} ${className || ''}`}
189
+ className={`${styles.trigger} ${className || ""}`}
190
190
  aria-expanded={isOpen}
191
191
  aria-controls={contentId}
192
192
  aria-disabled={disabled || undefined}
@@ -194,9 +194,9 @@ function CollapsibleTrigger({
194
194
  onKeyDown={composeEventHandlers(onKeyDown, handleKeyDown)}
195
195
  disabled={disabled}
196
196
  >
197
- {chevronPosition === 'start' && chevronIcon}
197
+ {chevronPosition === "start" && chevronIcon}
198
198
  <span className={styles.triggerContent}>{children}</span>
199
- {chevronPosition === 'end' && chevronIcon}
199
+ {chevronPosition === "end" && chevronIcon}
200
200
  </button>
201
201
  );
202
202
  }
@@ -227,9 +227,10 @@ function CollapsibleContent({
227
227
  id={(htmlProps.id as string | undefined) ?? contentId}
228
228
  role="region"
229
229
  aria-labelledby={triggerId}
230
- className={`${styles.content} ${isOpen ? styles.contentOpen : styles.contentClosed} ${className || ''}`}
231
- data-state={isOpen ? 'open' : 'closed'}
232
- hidden={!isOpen && !forceMount}
230
+ aria-hidden={!isOpen || undefined}
231
+ inert={!isOpen || undefined}
232
+ className={`${styles.content} ${isOpen ? styles.contentOpen : styles.contentClosed} ${className || ""}`}
233
+ data-state={isOpen ? "open" : "closed"}
233
234
  >
234
235
  <div className={styles.contentInner}>{children}</div>
235
236
  </div>
@@ -244,11 +245,6 @@ export const Collapsible = Object.assign(CollapsibleRoot, {
244
245
  });
245
246
 
246
247
  // Named exports for direct imports
247
- export {
248
- CollapsibleRoot,
249
- CollapsibleTrigger,
250
- CollapsibleContent,
251
- useCollapsibleContext,
252
- };
248
+ export { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent, useCollapsibleContext };
253
249
 
254
250
  export type CollapsibleProps = CollapsibleRootProps;