@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
@@ -1,119 +1,83 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/table-chrome" as table-chrome;
5
+ @use "../../recipes/target" as target;
6
+ @use "../../recipes/typography" as typography;
3
7
 
4
8
  .wrapper {
5
- // Tables may have a larger intrinsic width than a narrow flex or grid
6
- // column. Keep that width inside this scroll container instead of allowing
7
- // the container itself to widen the page.
8
- min-width: 0;
9
- max-width: 100%;
10
9
  --fui-data-table-bg: var(--fui-table-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
11
10
  --fui-data-table-header-bg: var(
12
11
  --fui-table-header-bg,
13
12
  color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 5%, transparent)
14
13
  );
15
14
 
15
+ min-inline-size: 0;
16
+ max-inline-size: 100%;
16
17
  overflow-x: auto;
17
18
  -webkit-overflow-scrolling: touch;
18
19
  }
19
20
 
20
21
  .table {
21
- width: 100%;
22
- border-collapse: collapse;
23
- font-family: var(--fui-font-sans, $fui-font-sans);
24
- -webkit-font-smoothing: antialiased;
25
- -moz-osx-font-smoothing: grayscale;
22
+ @include table-chrome.root;
23
+
24
+ @each $density in ("compact", "regular", "relaxed") {
25
+ &[data-density="#{$density}"] {
26
+ @include table-chrome.density($density);
27
+ }
28
+ }
26
29
  }
27
30
 
28
- // Caption for accessibility
29
31
  .caption {
30
- padding: var(--fui-space-3, $fui-space-3) 0;
31
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
32
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
33
- color: var(--fui-text-secondary, $fui-text-secondary);
34
- text-align: left;
35
- caption-side: top;
32
+ @include table-chrome.caption;
36
33
  }
37
34
 
38
- // Visually hidden caption (screen readers only)
39
35
  .captionHidden {
40
36
  @include visually-hidden;
41
37
  }
42
38
 
43
- // Size variants
44
- .sm {
45
- .th,
46
- .td {
47
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
48
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
49
- }
50
- }
51
-
52
- .md {
53
- .th,
54
- .td {
55
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
56
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
57
- }
58
- }
59
-
60
- // Header
61
39
  .thead {
62
40
  position: sticky;
63
- top: 0;
41
+ inset-block-start: 0;
64
42
  z-index: 1;
65
43
  }
66
44
 
45
+ .headerRow,
46
+ .row {
47
+ @include table-chrome.row;
48
+ }
49
+
67
50
  .headerRow {
68
- border-bottom: 1px solid var(--fui-table-header-border, var(--fui-border, #{$fui-border}));
51
+ border-block-end-color: var(--fui-table-header-border, var(--fui-border, #{$fui-border}));
69
52
  }
70
53
 
71
54
  .th {
72
- text-align: left;
73
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
74
- color: var(--fui-text-secondary, $fui-text-secondary);
75
- white-space: nowrap;
76
- vertical-align: middle;
77
- user-select: none;
78
- // Opaque so the sticky header doesn't let rows bleed through on scroll,
79
- // while inheriting the table surface instead of forcing the page background.
55
+ @include table-chrome.header-cell;
56
+
80
57
  background: var(
81
58
  --fui-data-table-header-bg,
82
59
  var(--fui-data-table-bg, var(--fui-bg-primary, #{$fui-bg-primary}))
83
60
  );
84
-
85
- &:first-child {
86
- border-top-left-radius: var(--fui-radius-md, $fui-radius-md);
87
- }
88
-
89
- &:last-child {
90
- border-top-right-radius: var(--fui-radius-md, $fui-radius-md);
91
- }
61
+ white-space: nowrap;
62
+ user-select: none;
92
63
  }
93
64
 
94
- .headerContent {
65
+ .headerContent,
66
+ .sortButton {
95
67
  display: flex;
96
68
  align-items: center;
97
- gap: var(--fui-space-1, $fui-space-1);
98
- }
99
-
100
- // Sortable header cell (for focus styles)
101
- .thSortable {
102
- padding: 0;
69
+ gap: var(--fui-raw-space-4, 4px);
103
70
  }
104
71
 
105
72
  .sortButton {
106
73
  @include button-reset;
107
74
  @include interactive-base;
108
75
 
109
- display: flex;
110
- align-items: center;
111
76
  justify-content: space-between;
112
- gap: var(--fui-space-1, $fui-space-1);
113
- width: 100%;
114
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-3, $fui-space-3);
77
+ inline-size: 100%;
78
+ padding: 0;
115
79
  color: inherit;
116
- text-align: left;
80
+ text-align: start;
117
81
  transition: color var(--fui-transition-fast, $fui-transition-fast);
118
82
 
119
83
  &:hover {
@@ -126,21 +90,15 @@
126
90
  align-items: center;
127
91
  color: var(--fui-text-tertiary, $fui-text-tertiary);
128
92
  flex-shrink: 0;
129
-
130
- svg {
131
- width: var(--fui-icon-xs, $fui-icon-xs);
132
- height: var(--fui-icon-xs, $fui-icon-xs);
133
- }
134
- // Quiet by default; the neutral glyph appears on hover/focus, and the
135
- // active direction arrow stays visible (revealed via aria-sort below).
136
93
  opacity: 0;
137
94
  transition: opacity var(--fui-transition-fast, $fui-transition-fast);
138
95
 
139
- .sortButton:hover & {
140
- color: var(--fui-text-secondary, $fui-text-secondary);
141
- opacity: 1;
96
+ svg {
97
+ inline-size: var(--fui-icon-xs, $fui-icon-xs);
98
+ block-size: var(--fui-icon-xs, $fui-icon-xs);
142
99
  }
143
100
 
101
+ .sortButton:hover &,
144
102
  .sortButton:focus-visible & {
145
103
  opacity: 1;
146
104
  }
@@ -151,20 +109,11 @@
151
109
  opacity: 1;
152
110
  }
153
111
 
154
- // Body
155
- .tbody {
156
- .td {
157
- padding-top: var(--fui-space-2, $fui-space-2);
158
- padding-bottom: var(--fui-space-2, $fui-space-2);
159
- }
160
- }
161
-
162
112
  .row {
163
- border-bottom: 1px solid var(--fui-table-border, var(--fui-border, #{$fui-border}));
164
113
  transition: background-color var(--fui-transition-fast, $fui-transition-fast);
165
114
 
166
115
  &:last-child {
167
- border-bottom: none;
116
+ border-block-end: 0;
168
117
  }
169
118
 
170
119
  &:hover {
@@ -172,13 +121,17 @@
172
121
  }
173
122
  }
174
123
 
124
+ .td {
125
+ @include table-chrome.body-cell;
126
+ }
127
+
128
+ .treeCell {
129
+ @include table-chrome.tree-cell;
130
+ }
131
+
175
132
  .clickable {
176
133
  cursor: pointer;
177
134
 
178
- &:hover {
179
- background-color: var(--fui-table-row-hover-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
180
- }
181
-
182
135
  &:focus-visible {
183
136
  @include focus-ring;
184
137
  }
@@ -193,92 +146,53 @@
193
146
  --fui-table-row-selected-bg,
194
147
  color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 8%, transparent)
195
148
  );
196
- box-shadow: inset 1px 0 0
197
- var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
198
149
 
199
- &:hover {
200
- background-color: var(
201
- --fui-table-row-selected-bg,
202
- color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 10%, transparent)
203
- );
150
+ .td:first-child {
151
+ box-shadow: inset var(--fui-table-divider-size) 0 0
152
+ var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
204
153
  }
205
- }
206
154
 
207
- .td {
208
- color: var(--fui-text-primary, $fui-text-primary);
209
- vertical-align: middle;
210
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
155
+ &:dir(rtl) .td:first-child {
156
+ box-shadow: inset calc(-1 * var(--fui-table-divider-size)) 0 0
157
+ var(--fui-table-row-selected-border, var(--fui-border-strong, #{$fui-border-strong}));
158
+ }
211
159
  }
212
160
 
213
- // Striped rows
214
161
  .striped {
215
162
  .row:nth-child(even) {
216
163
  background-color: var(--fui-table-subrow-bg, var(--fui-bg-subtle, #{$fui-bg-subtle}));
217
164
  }
218
165
 
219
- // Hover and selected override stripe
220
166
  .clickable:hover {
221
167
  background-color: var(--fui-table-row-hover-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
222
168
  }
223
169
 
224
- .clickable:active {
225
- background-color: var(--fui-table-row-active-bg, var(--fui-bg-active, #{$fui-bg-active}));
226
- }
227
-
228
170
  .selected {
229
171
  background-color: var(
230
172
  --fui-table-row-selected-bg,
231
173
  color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 8%, transparent)
232
174
  );
233
-
234
- &:hover {
235
- background-color: var(
236
- --fui-table-row-selected-bg,
237
- color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 10%, transparent)
238
- );
239
- }
240
175
  }
241
176
  }
242
177
 
243
- // Bordered
244
178
  .bordered {
245
- border: 1px solid var(--fui-table-border, var(--fui-border, #{$fui-border}));
179
+ /* Keep the rounded corners clipping the table, but never trap the
180
+ horizontal scroll the wrapper needs for wide tables. */
181
+ overflow-x: auto;
182
+ overflow-y: hidden;
183
+ border: var(--fui-table-divider-size, var(--fui-stroke-hairline, $fui-stroke-hairline)) solid
184
+ var(--fui-table-border, var(--fui-border, #{$fui-border}));
246
185
  border-radius: var(--fui-radius-md, $fui-radius-md);
247
186
  background: var(--fui-data-table-bg, var(--fui-bg-primary, #{$fui-bg-primary}));
248
- overflow: hidden;
249
187
  }
250
188
 
251
- // Fixed layout for explicit column sizes
252
189
  .fixedLayout {
253
190
  table-layout: fixed;
254
191
  }
255
192
 
256
- // ============================================
257
- // Density presets — condensed / regular / relaxed
258
- // ============================================
259
-
260
- // Fixed density rails. Off the 7px spacing grid by design (no row-height
261
- // token set exists yet); kept as literals so the three steps stay an even
262
- // 40/48/56 ladder. Snap to row-height tokens once they land.
263
- .densityCondensed .row {
264
- height: 40px;
265
- }
266
-
267
- .densityRegular .row {
268
- height: 48px;
269
- }
270
-
271
- .densityRelaxed .row {
272
- height: 56px;
273
- }
274
-
275
- // ============================================
276
- // Per-column alignment (numbers align right)
277
- // ============================================
278
-
279
193
  .th[data-align="right"],
280
194
  .td[data-align="right"] {
281
- text-align: right;
195
+ text-align: end;
282
196
  }
283
197
 
284
198
  .th[data-align="right"] .headerContent,
@@ -296,23 +210,15 @@
296
210
  justify-content: center;
297
211
  }
298
212
 
299
- // ============================================
300
- // Truncation (single line + ellipsis; pairs with a column width)
301
- // ============================================
302
-
303
213
  .truncate {
304
214
  overflow: hidden;
305
215
  white-space: nowrap;
306
216
  text-overflow: ellipsis;
307
217
  }
308
218
 
309
- // ============================================
310
- // Loading skeleton
311
- // ============================================
312
-
313
219
  .skeletonBar {
314
220
  display: block;
315
- height: 10px;
221
+ block-size: var(--fui-raw-space-10, 10px);
316
222
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
317
223
  background: linear-gradient(
318
224
  90deg,
@@ -321,60 +227,44 @@
321
227
  color-mix(in srgb, currentColor 8%, transparent) 75%
322
228
  );
323
229
  background-size: 200% 100%;
324
- animation: dataTableShimmer 1.4s ease-in-out infinite;
230
+ animation: dataTableShimmer var(--fui-duration-shimmer, $fui-duration-shimmer) ease-in-out
231
+ infinite;
325
232
  }
326
233
 
327
234
  @keyframes dataTableShimmer {
328
235
  from {
329
236
  background-position: 200% 0;
330
237
  }
238
+
331
239
  to {
332
240
  background-position: -200% 0;
333
241
  }
334
242
  }
335
243
 
336
- @media (prefers-reduced-motion: reduce) {
337
- .skeletonBar {
338
- animation: none;
339
- }
340
-
341
- .sortIndicator {
342
- transition: none;
343
- }
344
- }
345
-
346
- // Checkbox column
347
244
  .checkboxCell {
348
245
  display: flex;
349
246
  align-items: center;
350
247
  justify-content: center;
351
248
  }
352
249
 
353
- // Expandable rows
354
250
  .expandCell {
355
251
  display: inline-flex;
356
252
  align-items: center;
357
- gap: var(--fui-space-1, $fui-space-1);
253
+ gap: var(--fui-raw-space-4, 4px);
358
254
  }
359
255
 
360
256
  .expandButton {
361
257
  @include button-reset;
258
+ @include action.base;
259
+ @include action.icon-only("sm");
260
+ @include target.hit-area("compact");
362
261
 
363
- display: inline-flex;
364
- align-items: center;
365
- justify-content: center;
366
- width: var(--fui-icon-lg, $fui-icon-lg);
367
- height: var(--fui-icon-lg, $fui-icon-lg);
368
- flex-shrink: 0;
369
262
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
370
263
  color: var(--fui-text-tertiary, $fui-text-tertiary);
371
- transition:
372
- color var(--fui-transition-fast, $fui-transition-fast),
373
- background-color var(--fui-transition-fast, $fui-transition-fast);
374
264
 
375
265
  &:hover {
376
- color: var(--fui-text-primary, $fui-text-primary);
377
266
  background-color: var(--fui-bg-hover, $fui-bg-hover);
267
+ color: var(--fui-text-primary, $fui-text-primary);
378
268
  }
379
269
 
380
270
  &:focus-visible {
@@ -383,8 +273,8 @@
383
273
  }
384
274
 
385
275
  .expandIcon {
386
- width: var(--fui-icon-xs, $fui-icon-xs);
387
- height: var(--fui-icon-xs, $fui-icon-xs);
276
+ @include action.glyph("sm");
277
+
388
278
  transition: transform var(--fui-transition-fast, $fui-transition-fast);
389
279
  }
390
280
 
@@ -394,64 +284,38 @@
394
284
 
395
285
  .subRow {
396
286
  background-color: var(--fui-table-subrow-bg, var(--fui-bg-subtle, #{$fui-bg-subtle}));
397
-
398
- &:hover {
399
- background-color: var(--fui-table-row-hover-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
400
- }
401
287
  }
402
288
 
403
- // Empty state
404
289
  .emptyState {
405
290
  display: flex;
406
291
  align-items: center;
407
292
  justify-content: center;
408
- padding: var(--fui-space-12, $fui-space-12) var(--fui-space-6, $fui-space-6);
293
+ padding-block: var(--fui-raw-space-48, 48px);
294
+ padding-inline: var(--fui-raw-space-24, 24px);
409
295
  }
410
296
 
411
297
  .emptyMessage {
412
- font-family: var(--fui-font-sans, $fui-font-sans);
413
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
414
- color: var(--fui-text-tertiary, $fui-text-tertiary);
415
- }
298
+ @include typography.role("body-compact");
416
299
 
417
- // Responsive: allow horizontal scroll on small screens
418
- @include below-sm {
419
- .wrapper {
420
- margin-left: calc(-1 * var(--fui-space-4, $fui-space-4));
421
- margin-right: calc(-1 * var(--fui-space-4, $fui-space-4));
422
- padding-left: var(--fui-space-4, $fui-space-4);
423
- padding-right: var(--fui-space-4, $fui-space-4);
424
- }
300
+ color: var(--fui-text-tertiary, $fui-text-tertiary);
425
301
  }
426
302
 
427
- // ============================================
428
- // Accessibility: High Contrast Mode
429
- // ============================================
430
-
431
303
  @media (prefers-contrast: more) {
432
- .headerRow {
433
- border-bottom-width: 2px;
434
- }
435
-
304
+ .headerRow,
436
305
  .row {
437
- border-bottom-width: 2px;
438
- }
439
-
440
- .sortButton:focus-visible {
441
- outline-width: 3px;
306
+ border-block-end-color: CanvasText;
442
307
  }
443
308
  }
444
309
 
445
- // ============================================
446
- // Accessibility: Reduced Motion
447
- // ============================================
448
-
449
310
  @media (prefers-reduced-motion: reduce) {
450
- .row {
311
+ .row,
312
+ .sortButton,
313
+ .sortIndicator,
314
+ .expandIcon {
451
315
  transition: none;
452
316
  }
453
317
 
454
- .sortButton {
455
- transition: none;
318
+ .skeletonBar {
319
+ animation: none;
456
320
  }
457
321
  }
@@ -1,10 +1,12 @@
1
1
  "use client";
2
2
 
3
3
  import * as React from "react";
4
+ import { resolveTableDensity, type TableDensityInput } from "../../recipes/table-chrome";
4
5
  import styles from "./DataTable.module.scss";
5
6
  import { Checkbox } from "../Checkbox";
6
7
  import { ExpandIcon, SortAscIcon, SortDescIcon, SortIcon } from "./DataTable.icons";
7
8
  import { DataTableSkeletonRows, useArrowKeyRowNav } from "./DataTable.support";
9
+ import { isDevelopmentBuild } from "../../utils/env";
8
10
 
9
11
  // ============================================
10
12
  // Dependency (@tanstack/react-table) — lazy import()
@@ -35,7 +37,7 @@ function loadReactTable(): Promise<void> {
35
37
  _reactTable = (await import("@tanstack/react-table")) as unknown as ReactTableModule;
36
38
  } catch {
37
39
  _reactTableFailed = true;
38
- if (process.env.NODE_ENV === "development") {
40
+ if (isDevelopmentBuild()) {
39
41
  console.warn(
40
42
  "[@usefragments/ui] DataTable: @tanstack/react-table is not installed. " +
41
43
  "Rendering a static table without sorting, selection, or expansion. " +
@@ -66,8 +68,8 @@ function useReactTableDeps(): "ready" | "pending" | "failed" {
66
68
 
67
69
  /** Horizontal alignment for a column's header + cells. */
68
70
  export type ColumnAlign = "left" | "right" | "center";
69
- /** Row density preset condensed 40px / regular 48px / relaxed 56px. */
70
- export type DataTableDensity = "condensed" | "regular" | "relaxed";
71
+ /** Row density preset. `condensed` is retained as an alias for `compact`. */
72
+ export type DataTableDensity = TableDensityInput;
71
73
 
72
74
  // ============================================
73
75
  // Types (self-owned — no external dependency for types)
@@ -140,11 +142,11 @@ export interface DataTableProps<T> extends Omit<React.HTMLAttributes<HTMLTableEl
140
142
  loading?: boolean;
141
143
  /** Number of skeleton rows to show while loading (default 6). */
142
144
  skeletonRows?: number;
143
- /** Row density preset — condensed 40 / regular 48 / relaxed 56. */
145
+ /** Canonical row density. `condensed` is a deprecated alias for `compact`. */
144
146
  density?: DataTableDensity;
145
147
  /** Hide the column header row (e.g. stacked per-group tables share one). */
146
148
  hideHeader?: boolean;
147
- /** Size variant (cell padding). */
149
+ /** @deprecated Use density. Retained until the next major-version review. */
148
150
  size?: "sm" | "md";
149
151
  /** Visible caption for the table (recommended for accessibility) */
150
152
  caption?: string;
@@ -181,8 +183,6 @@ function getColumnSizeStyle(column: {
181
183
  }
182
184
 
183
185
  function computeTableClasses(opts: {
184
- size: "sm" | "md";
185
- density?: DataTableDensity;
186
186
  striped: boolean;
187
187
  bordered: boolean;
188
188
  hasExplicitColumnSizing: boolean;
@@ -190,20 +190,9 @@ function computeTableClasses(opts: {
190
190
  wrapperClassName?: string;
191
191
  wrapperPropsClassName?: string;
192
192
  }): { rootClasses: string; wrapperClasses: string } {
193
- const densityClass =
194
- opts.density === "condensed"
195
- ? styles.densityCondensed
196
- : opts.density === "regular"
197
- ? styles.densityRegular
198
- : opts.density === "relaxed"
199
- ? styles.densityRelaxed
200
- : undefined;
201
-
202
193
  const rootClasses = [
203
194
  styles.table,
204
195
  opts.hasExplicitColumnSizing && styles.fixedLayout,
205
- styles[opts.size],
206
- densityClass,
207
196
  opts.striped && styles.striped,
208
197
  opts.className,
209
198
  ]
@@ -360,9 +349,8 @@ function DataTableLive<T>({
360
349
 
361
350
  const isEmpty = !loading && data.length === 0;
362
351
  const { className: wrapperPropsClassName, ...restWrapperProps } = wrapperProps ?? {};
352
+ const resolvedDensity = resolveTableDensity({ density, size });
363
353
  const { rootClasses, wrapperClasses } = computeTableClasses({
364
- size,
365
- density,
366
354
  striped,
367
355
  bordered,
368
356
  hasExplicitColumnSizing,
@@ -377,6 +365,7 @@ function DataTableLive<T>({
377
365
  <table
378
366
  {...htmlProps}
379
367
  className={rootClasses}
368
+ data-density={resolvedDensity}
380
369
  aria-label={ariaLabel}
381
370
  aria-describedby={ariaDescribedBy}
382
371
  >
@@ -405,6 +394,7 @@ function DataTableLive<T>({
405
394
  {...htmlProps}
406
395
  ref={tableRef}
407
396
  className={rootClasses}
397
+ data-density={resolvedDensity}
408
398
  aria-label={ariaLabel}
409
399
  aria-describedby={ariaDescribedBy}
410
400
  aria-busy={loading || undefined}
@@ -480,9 +470,9 @@ function DataTableLive<T>({
480
470
  <DataTableSkeletonRows
481
471
  rowCount={skeletonRows}
482
472
  columnCount={columns.length}
483
- rowClassName={styles.row}
484
- cellClassName={styles.td}
485
- barClassName={styles.skeletonBar}
473
+ rowClassName={styles.row ?? ""}
474
+ cellClassName={styles.td ?? ""}
475
+ barClassName={styles.skeletonBar ?? ""}
486
476
  />
487
477
  ) : (
488
478
  table.getRowModel().rows.map((row: any) => {
@@ -545,15 +535,19 @@ function DataTableLive<T>({
545
535
  return (
546
536
  <td
547
537
  key={cell.id}
548
- className={[styles.td, truncate && styles.truncate]
538
+ className={[
539
+ styles.td,
540
+ isFirstDataCell && styles.treeCell,
541
+ truncate && styles.truncate,
542
+ ]
549
543
  .filter(Boolean)
550
544
  .join(" ")}
551
545
  data-align={colDef.align}
552
546
  title={typeof rawValue === "string" ? rawValue : undefined}
553
547
  style={{
554
548
  ...getColumnSizeStyle(cell.column),
555
- ...(isFirstDataCell && depth > 0
556
- ? { paddingLeft: `${depth * 24 + 12}px` }
549
+ ...(isFirstDataCell
550
+ ? ({ "--_fui-table-tree-depth": depth } as React.CSSProperties)
557
551
  : undefined),
558
552
  }}
559
553
  >
@@ -663,9 +657,8 @@ function DataTableStatic<T>({
663
657
  column.size !== undefined || column.minSize !== undefined || column.maxSize !== undefined
664
658
  );
665
659
  const { className: wrapperPropsClassName, ...restWrapperProps } = wrapperProps ?? {};
660
+ const resolvedDensity = resolveTableDensity({ density, size });
666
661
  const { rootClasses, wrapperClasses } = computeTableClasses({
667
- size,
668
- density,
669
662
  striped,
670
663
  bordered,
671
664
  hasExplicitColumnSizing,
@@ -683,6 +676,7 @@ function DataTableStatic<T>({
683
676
  <table
684
677
  {...htmlProps}
685
678
  className={rootClasses}
679
+ data-density={resolvedDensity}
686
680
  aria-label={ariaLabel}
687
681
  aria-describedby={ariaDescribedBy}
688
682
  aria-busy={showSkeleton || undefined}
@@ -704,7 +698,9 @@ function DataTableStatic<T>({
704
698
  data-align={col.align}
705
699
  >
706
700
  <div className={styles.headerContent}>
707
- {typeof col.header === "string" ? col.header : (col.id ?? col.accessorKey ?? "")}
701
+ {typeof col.header === "string"
702
+ ? col.header
703
+ : (col.id ?? col.accessorKey ?? "")}
708
704
  </div>
709
705
  </th>
710
706
  ))}
@@ -716,9 +712,9 @@ function DataTableStatic<T>({
716
712
  <DataTableSkeletonRows
717
713
  rowCount={skeletonRows}
718
714
  columnCount={columnCount}
719
- rowClassName={styles.row}
720
- cellClassName={styles.td}
721
- barClassName={styles.skeletonBar}
715
+ rowClassName={styles.row ?? ""}
716
+ cellClassName={styles.td ?? ""}
717
+ barClassName={styles.skeletonBar ?? ""}
722
718
  />
723
719
  ) : isEmpty ? (
724
720
  <tr className={styles.row}>