@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,14 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Breadcrumbs",
4
- "description": "Breadcrumb navigation showing the current page location within a hierarchy. Helps users navigate back through parent pages.",
4
+ "description": "Shows where the user is and links back up the hierarchy.",
5
5
  "category": "navigation",
6
- "tags": [
7
- "breadcrumbs",
8
- "navigation",
9
- "hierarchy",
10
- "wayfinding"
11
- ],
6
+ "tags": ["breadcrumbs", "navigation", "hierarchy", "wayfinding"],
12
7
  "status": "stable",
13
8
  "sourcePath": "src/components/Breadcrumbs/index.tsx",
14
9
  "exportName": "Breadcrumbs",
@@ -44,21 +39,22 @@
44
39
  },
45
40
  "usage": {
46
41
  "when": [
47
- "Showing hierarchical page location (e.g., Home > Category > Product)",
48
- "Allowing quick navigation to parent pages",
49
- "Multi-level content structures like documentation or e-commerce"
42
+ "Nested content more than two levels deep",
43
+ "Jumping back to a parent in one click",
44
+ "Documentation and catalogue hierarchies"
50
45
  ],
51
46
  "whenNot": [
52
- "Flat navigation with no hierarchy (use Tabs or Header nav)",
53
- "Step-by-step wizards (use Stepper)",
47
+ "Flat structures with no parents (use Tabs or header navigation)",
48
+ "Steps in an order (use Stepper)",
54
49
  "Primary navigation (use Sidebar or Header)"
55
50
  ],
56
51
  "guidelines": [
57
- "Always include the current page as the last, non-linked item",
58
- "Keep labels short and descriptive",
59
- "Use maxItems to collapse long paths, keeping first and last visible",
60
- "The separator defaults to \"/\" but can be customized",
61
- "Use the label prop to customize the nav landmark name (defaults to \"Breadcrumb\")"
52
+ "End on the current page, unlinked",
53
+ "Short labels the trail is a path, not a summary",
54
+ "Set maxItems to fold long paths, keeping first and last",
55
+ "The separator defaults to a slash and takes any node",
56
+ "Set label to rename the landmark (defaults to \"Breadcrumb\")",
57
+ "Crumbs truncate at 200px so one long title cannot push the rest out"
62
58
  ],
63
59
  "accessibility": [
64
60
  "Uses <nav aria-label=\"Breadcrumb\"> for landmark navigation",
@@ -70,27 +66,27 @@
70
66
  "examples": [
71
67
  {
72
68
  "name": "Default",
73
- "description": "Basic breadcrumb navigation",
69
+ "description": "Each ancestor links; the last one does not.",
74
70
  "code": "<Breadcrumbs>\n <Breadcrumbs.Item href=\"#\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Products</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Category</Breadcrumbs.Item>\n <Breadcrumbs.Item current>Current Page</Breadcrumbs.Item>\n</Breadcrumbs>"
75
71
  },
76
72
  {
77
73
  "name": "With Icons",
78
- "description": "Breadcrumbs with icons on items",
74
+ "description": "Glyphs mark what kind of thing each level is.",
79
75
  "code": "<Breadcrumbs>\n <Breadcrumbs.Item\n href=\"#\"\n icon={\n <svg viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 1.25l-7 6v7.5c0 .138.112.25.25.25H5.5V10h5v5h4.25a.25.25 0 0 0 .25-.25v-7.5l-7-6z\" />\n </svg>\n }\n >\n Home\n </Breadcrumbs.Item>\n <Breadcrumbs.Item\n href=\"#\"\n icon={\n <svg viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z\" />\n </svg>\n }\n >\n Documents\n </Breadcrumbs.Item>\n <Breadcrumbs.Item current>Report.pdf</Breadcrumbs.Item>\n</Breadcrumbs>"
80
76
  },
81
77
  {
82
78
  "name": "Collapsed",
83
- "description": "Long breadcrumb trail collapsed with ellipsis",
79
+ "description": "Middle levels fold behind an ellipsis.",
84
80
  "code": "<Breadcrumbs maxItems={3}>\n <Breadcrumbs.Item href=\"#\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Category</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Subcategory</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Section</Breadcrumbs.Item>\n <Breadcrumbs.Item current>Current Page</Breadcrumbs.Item>\n</Breadcrumbs>"
85
81
  },
86
82
  {
87
83
  "name": "Custom Separator",
88
- "description": "Breadcrumbs with a custom chevron separator",
84
+ "description": "Any node can replace the slash.",
89
85
  "code": "<Breadcrumbs\n separator={\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06z\" />\n </svg>\n }\n>\n <Breadcrumbs.Item href=\"#\">Home</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Settings</Breadcrumbs.Item>\n <Breadcrumbs.Item current>Profile</Breadcrumbs.Item>\n</Breadcrumbs>"
90
86
  },
91
87
  {
92
88
  "name": "Custom Landmark Label",
93
- "description": "Override the nav landmark label for screen readers",
89
+ "description": "Renames the landmark screen readers announce.",
94
90
  "code": "<Breadcrumbs label=\"Documentation breadcrumbs\">\n <Breadcrumbs.Item href=\"#\">Docs</Breadcrumbs.Item>\n <Breadcrumbs.Item href=\"#\">Components</Breadcrumbs.Item>\n <Breadcrumbs.Item current>Breadcrumbs</Breadcrumbs.Item>\n</Breadcrumbs>"
95
91
  }
96
92
  ],
@@ -115,21 +111,12 @@
115
111
  "Breadcrumbs.Item current: boolean - marks current page",
116
112
  "Breadcrumbs.Item icon: ReactNode - icon before label"
117
113
  ],
118
- "a11yRules": [
119
- "A11Y_NAV_LANDMARK",
120
- "A11Y_ARIA_CURRENT",
121
- "A11Y_TARGET_SIZE_MIN"
122
- ]
114
+ "a11yRules": ["A11Y_NAV_LANDMARK", "A11Y_ARIA_CURRENT", "A11Y_TARGET_SIZE_MIN"]
123
115
  },
124
116
  "ai": {
125
117
  "compositionPattern": "compound",
126
- "subComponents": [
127
- "Item",
128
- "Separator"
129
- ],
130
- "requiredChildren": [
131
- "Item"
132
- ],
118
+ "subComponents": ["Item", "Separator"],
119
+ "requiredChildren": ["Item"],
133
120
  "commonPatterns": [
134
121
  "<Breadcrumbs><Breadcrumbs.Item href=\"/\">Home</Breadcrumbs.Item><Breadcrumbs.Item href=\"/products\">Products</Breadcrumbs.Item><Breadcrumbs.Item current>Widget</Breadcrumbs.Item></Breadcrumbs>"
135
122
  ]
@@ -1,11 +1,12 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/target" as target;
5
+ @use "../../recipes/typography" as typography;
3
6
 
4
7
  // Root nav wrapper
5
8
  .root {
6
- font-family: var(--fui-font-sans, $fui-font-sans);
7
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
8
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
9
+ @include typography.role("body-compact");
9
10
  }
10
11
 
11
12
  // Ordered list container
@@ -29,6 +30,8 @@
29
30
 
30
31
  // Link styling
31
32
  .link {
33
+ @include target.hit-area("micro");
34
+
32
35
  display: inline-flex;
33
36
  align-items: center;
34
37
  gap: var(--fui-space-1, $fui-space-1);
@@ -37,11 +40,12 @@
37
40
  white-space: nowrap;
38
41
  overflow: hidden;
39
42
  text-overflow: ellipsis;
43
+ // Intentional truncation width: one long crumb must not push the rest of the
44
+ // trail off screen. Keep in sync with .current below.
40
45
  max-width: 200px;
41
46
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
42
- padding: var(--fui-space-0-5, $fui-space-0-5) var(--fui-space-1, $fui-space-1);
43
- margin: calc(-1 * var(--fui-space-0-5, $fui-space-0-5)) calc(-1 * var(--fui-space-1, $fui-space-1));
44
- transition: color var(--fui-transition-fast, $fui-transition-fast),
47
+ transition:
48
+ color var(--fui-transition-fast, $fui-transition-fast),
45
49
  background-color var(--fui-transition-fast, $fui-transition-fast);
46
50
 
47
51
  &:hover {
@@ -64,6 +68,7 @@
64
68
  white-space: nowrap;
65
69
  overflow: hidden;
66
70
  text-overflow: ellipsis;
71
+ // Intentional truncation width — matches .link above.
67
72
  max-width: 200px;
68
73
  }
69
74
 
@@ -79,21 +84,20 @@
79
84
 
80
85
  // Ellipsis button for collapsed items
81
86
  .ellipsis {
82
- @include touch-target;
87
+ @include action.base;
88
+ @include action.icon-only("micro");
89
+ @include target.hit-area("compact");
83
90
 
84
91
  display: inline-flex;
85
92
  align-items: center;
86
93
  justify-content: center;
87
94
  background: none;
88
- border: 1px solid var(--fui-border, $fui-border);
95
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
89
96
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
90
97
  color: var(--fui-text-secondary, $fui-text-secondary);
91
98
  cursor: pointer;
92
- padding: var(--fui-space-0-5, $fui-space-0-5) var(--fui-space-2, $fui-space-2);
93
- font-family: inherit;
94
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
95
- line-height: 1;
96
- transition: color var(--fui-transition-fast, $fui-transition-fast),
99
+ transition:
100
+ color var(--fui-transition-fast, $fui-transition-fast),
97
101
  background-color var(--fui-transition-fast, $fui-transition-fast);
98
102
 
99
103
  &:hover {
@@ -1,10 +1,11 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action";
3
4
 
4
5
  .button {
5
6
  @include button-reset;
6
7
  @include interactive-base;
7
- @include text-base;
8
+ @include action.base;
8
9
 
9
10
  --_button-bg: transparent;
10
11
  --_button-bg-hover: var(--fui-bg-hover, #{$fui-bg-hover});
@@ -16,18 +17,13 @@
16
17
  --_button-shadow-hover: var(--_button-shadow);
17
18
  --_button-shadow-active: var(--_button-shadow);
18
19
 
19
- display: inline-flex;
20
- align-items: center;
21
- justify-content: center;
22
- gap: var(--fui-space-1, $fui-space-1);
23
- border: 1px solid var(--_button-border);
20
+ border: var(--fui-stroke-hairline, 1px) solid var(--_button-border);
24
21
  border-radius: var(--fui-button-radius, var(--fui-radius-lg, #{$fui-radius-lg}));
25
22
  background: var(--_button-bg);
26
23
  box-shadow: var(--_button-shadow);
27
24
  color: var(--_button-color);
28
25
  font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
29
26
  white-space: nowrap;
30
- user-select: none;
31
27
 
32
28
  // A composed link — `Button asChild` cloning an <a>, or an anchor rendered
33
29
  // as a child — must wear the button's own foreground, never the global
@@ -65,33 +61,36 @@
65
61
  }
66
62
  }
67
63
 
68
- // Sizes
69
- // Note: Button padding intentionally diverges from the control-size mixin
70
- // (md: space-3 vs mixin's space-4, lg: space-4 vs mixin's space-5).
71
- // Buttons need tighter horizontal padding than inputs for visual balance,
72
- // since button text is typically shorter than input content.
73
64
  .xs {
74
- min-height: var(--fui-button-height-xs, $fui-button-height-xs);
75
- padding: 0 var(--fui-space-1, $fui-space-1);
76
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
65
+ @include action.size("micro");
66
+
67
+ > svg {
68
+ @include action.glyph("micro");
69
+ }
77
70
  }
78
71
 
79
72
  .sm {
80
- min-height: var(--fui-button-height-sm, $fui-button-height-sm);
81
- padding: 0 var(--fui-space-2, $fui-space-2);
82
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
73
+ @include action.size("sm");
74
+
75
+ > svg {
76
+ @include action.glyph("sm");
77
+ }
83
78
  }
84
79
 
85
80
  .md {
86
- min-height: var(--fui-button-height-md, $fui-button-height-md);
87
- padding: 0 var(--fui-space-3, $fui-space-3);
88
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
81
+ @include action.size("md");
82
+
83
+ > svg {
84
+ @include action.glyph("md");
85
+ }
89
86
  }
90
87
 
91
88
  .lg {
92
- min-height: var(--fui-button-height-lg, $fui-button-height-lg);
93
- padding: 0 var(--fui-space-4, $fui-space-4);
94
- font-size: var(--fui-font-size-base, $fui-font-size-base);
89
+ @include action.size("lg");
90
+
91
+ > svg {
92
+ @include action.glyph("lg");
93
+ }
95
94
  }
96
95
 
97
96
  // ============================================
@@ -101,20 +100,29 @@
101
100
  // uneven. When an icon leads or trails text, reduce padding on the icon
102
101
  // side so the content appears optically centered.
103
102
  //
104
- // Uses :has() + :first-child/:last-child to detect icon position without
105
- // JS. The negative margin pulls the icon into the padding zone, compensating
106
- // for the icon's inherent visual whitespace.
107
-
108
- .button:not(.icon) {
109
- > svg:first-child:not(:last-child) {
110
- // Leading icon: pull left to optically balance
111
- margin-left: calc(var(--fui-space-1, $fui-space-1) * -0.5);
112
- }
113
-
114
- > svg:last-child:not(:first-child) {
115
- // Trailing icon: pull right to optically balance
116
- margin-right: calc(var(--fui-space-1, $fui-space-1) * -0.5);
117
- }
103
+ .xs:not(.icon):has(> svg:first-child:not(:last-child)) {
104
+ padding-inline-start: action.icon-side-inset("micro");
105
+ }
106
+ .xs:not(.icon):has(> svg:last-child:not(:first-child)) {
107
+ padding-inline-end: action.icon-side-inset("micro");
108
+ }
109
+ .sm:not(.icon):has(> svg:first-child:not(:last-child)) {
110
+ padding-inline-start: action.icon-side-inset("sm");
111
+ }
112
+ .sm:not(.icon):has(> svg:last-child:not(:first-child)) {
113
+ padding-inline-end: action.icon-side-inset("sm");
114
+ }
115
+ .md:not(.icon):has(> svg:first-child:not(:last-child)) {
116
+ padding-inline-start: action.icon-side-inset("md");
117
+ }
118
+ .md:not(.icon):has(> svg:last-child:not(:first-child)) {
119
+ padding-inline-end: action.icon-side-inset("md");
120
+ }
121
+ .lg:not(.icon):has(> svg:first-child:not(:last-child)) {
122
+ padding-inline-start: action.icon-side-inset("lg");
123
+ }
124
+ .lg:not(.icon):has(> svg:last-child:not(:first-child)) {
125
+ padding-inline-end: action.icon-side-inset("lg");
118
126
  }
119
127
 
120
128
  // Variants
@@ -137,8 +145,10 @@
137
145
  --_button-bg: var(--fui-button-neutral-bg);
138
146
  --_button-bg-hover: var(--fui-button-neutral-bg-hover);
139
147
  --_button-bg-active: var(--fui-button-neutral-bg-active);
140
- --_button-border: var(--fui-button-neutral-border);
141
- --_button-border-hover: var(--fui-button-neutral-border-hover);
148
+ // Secondary hierarchy comes from its fill. The transparent border preserves
149
+ // control geometry while leaving visible neutral borders to `.outlined`.
150
+ --_button-border: transparent;
151
+ --_button-border-hover: transparent;
142
152
  --_button-color: var(--fui-button-neutral-color, var(--fui-text-primary, #{$fui-text-primary}));
143
153
  --_button-shadow: var(--fui-button-neutral-shadow);
144
154
  --_button-shadow-hover: var(--fui-button-neutral-shadow);
@@ -188,6 +198,8 @@
188
198
  // takes its hit target from the text and the row's own padding. That makes it
189
199
  // the wrong choice for a standalone action — reach for `ghost` there.
190
200
  .quiet {
201
+ @include action.inline;
202
+
191
203
  --_button-bg: transparent;
192
204
  --_button-bg-hover: transparent;
193
205
  --_button-bg-active: transparent;
@@ -198,8 +210,6 @@
198
210
  --_button-shadow-hover: none;
199
211
  --_button-shadow-active: none;
200
212
 
201
- min-height: 0;
202
- padding: 0;
203
213
  font-weight: var(--fui-font-weight-normal, $fui-font-weight-normal);
204
214
 
205
215
  // Only the custom property is restated: `color` reads it on .button, so the
@@ -257,24 +267,10 @@
257
267
 
258
268
  // Icon-only button (square aspect ratio)
259
269
  .icon {
260
- aspect-ratio: 1;
261
- padding: 0;
262
-
263
- &.xs {
264
- width: var(--fui-button-height-xs, $fui-button-height-xs);
265
- }
266
-
267
- &.sm {
268
- width: var(--fui-button-height-sm, $fui-button-height-sm);
269
- }
270
-
271
- &.md {
272
- width: var(--fui-button-height-md, $fui-button-height-md);
273
- }
274
-
275
- &.lg {
276
- width: var(--fui-button-height-lg, $fui-button-height-lg);
277
- }
270
+ inline-size: var(--_fui-action-track);
271
+ block-size: var(--_fui-action-track);
272
+ min-block-size: var(--_fui-action-track);
273
+ padding-inline: 0;
278
274
  }
279
275
 
280
276
  // Full width
@@ -302,17 +298,17 @@
302
298
 
303
299
  @media (prefers-contrast: more) {
304
300
  .secondary {
305
- border-width: 2px;
301
+ border-width: var(--fui-stroke-default, 2px);
306
302
  border-color: var(--fui-text-primary, $fui-text-primary);
307
303
  }
308
304
 
309
305
  .outlined {
310
- border-width: 2px;
306
+ border-width: var(--fui-stroke-default, 2px);
311
307
  border-color: var(--fui-text-primary, $fui-text-primary);
312
308
  }
313
309
 
314
310
  .ghost {
315
- border-width: 2px;
311
+ border-width: var(--fui-stroke-default, 2px);
316
312
 
317
313
  &:hover:not(:disabled) {
318
314
  border-color: var(--fui-text-primary, $fui-text-primary);
@@ -320,7 +316,7 @@
320
316
  }
321
317
 
322
318
  .link {
323
- border-width: 2px;
319
+ border-width: var(--fui-stroke-default, 2px);
324
320
 
325
321
  &:hover:not(:disabled) {
326
322
  border-color: var(--fui-color-accent, $fui-color-accent);
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "ButtonGroup",
4
- "description": "Groups related buttons together with consistent spacing and alignment. Useful for action bars, toolbars, and related button sets.",
5
- "category": "forms",
6
- "tags": [
7
- "button",
8
- "group",
9
- "toolbar",
10
- "actions",
11
- "layout"
12
- ],
4
+ "description": "Lays out related buttons in a row with one shared gap and alignment.",
5
+ "category": "actions",
6
+ "tags": ["button", "group", "toolbar", "actions", "layout"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/ButtonGroup/index.tsx",
15
9
  "exportName": "ButtonGroup",
@@ -30,12 +24,7 @@
30
24
  "description": "Spacing between buttons",
31
25
  "default": "sm",
32
26
  "required": false,
33
- "values": [
34
- "none",
35
- "xs",
36
- "sm",
37
- "md"
38
- ]
27
+ "values": ["none", "xs", "sm", "md"]
39
28
  },
40
29
  "wrap": {
41
30
  "type": "boolean",
@@ -47,57 +36,57 @@
47
36
  "type": "enum",
48
37
  "description": "Alignment of buttons",
49
38
  "required": false,
50
- "values": [
51
- "start",
52
- "center",
53
- "end"
54
- ]
39
+ "values": ["start", "center", "end"]
55
40
  }
56
41
  },
57
42
  "usage": {
58
43
  "when": [
59
- "Grouping related actions together",
60
- "Creating toolbars or action bars",
61
- "Form submit/cancel button pairs",
44
+ "Confirm/cancel pairs at the end of a form",
45
+ "Toolbars and action bars",
62
46
  "Pagination controls"
63
47
  ],
64
48
  "whenNot": [
65
- "Unrelated buttons (use Stack instead)",
66
- "Navigation links (use nav element)",
67
- "Single button (no grouping needed)"
49
+ "Unrelated buttons use Stack",
50
+ "Navigation links use a nav element",
51
+ "A single button"
68
52
  ],
69
53
  "guidelines": [
70
- "Keep button groups focused on related actions",
71
- "Use consistent button variants within a group",
72
- "Consider visual hierarchy - primary action should stand out",
73
- "Limit to 2-4 buttons per group for clarity",
74
- "Pass role/aria-label/id/data-* directly to ButtonGroup when you need semantic grouping hooks"
54
+ "Two to four buttons; more belongs in a Menu",
55
+ "Confirming action goes last",
56
+ "One primary button per group",
57
+ "align=\"end\" for form footers",
58
+ "Pass role, aria-label, id and data-* straight through to ButtonGroup"
75
59
  ],
76
60
  "accessibility": [
77
- "Group provides semantic relationship between buttons",
78
- "Each button remains individually focusable",
79
- "Consider using role=\"group\" with aria-label for screen readers"
61
+ "Each button stays individually focusable",
62
+ "Add role=\"group\" plus aria-label when the set needs a name",
63
+ "Order buttons the way they read, not the way they look"
80
64
  ]
81
65
  },
82
66
  "examples": [
83
67
  {
84
68
  "name": "Default",
85
- "description": "Basic button group with default spacing",
69
+ "description": "Confirming action sits last in the row.",
86
70
  "code": "<ButtonGroup>\n <Button variant=\"secondary\">Cancel</Button>\n <Button variant=\"primary\">Save</Button>\n</ButtonGroup>"
87
71
  },
88
72
  {
89
- "name": "Gap Variants",
90
- "description": "Different spacing options",
91
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <ButtonGroup gap=\"none\">\n <Button variant=\"secondary\" size=\"sm\">None</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"xs\">\n <Button variant=\"secondary\" size=\"sm\">XS</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"sm\">\n <Button variant=\"secondary\" size=\"sm\">SM</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"md\">\n <Button variant=\"secondary\" size=\"sm\">MD</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n</div>"
73
+ "name": "Spacing",
74
+ "description": "Four gap steps, from touching to airy.",
75
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"column\" gap=\"md\">\n <ButtonGroup gap=\"none\">\n <Button variant=\"secondary\" size=\"sm\">None</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"xs\">\n <Button variant=\"secondary\" size=\"sm\">XS</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"sm\">\n <Button variant=\"secondary\" size=\"sm\">SM</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n <ButtonGroup gap=\"md\">\n <Button variant=\"secondary\" size=\"sm\">MD</Button>\n <Button variant=\"secondary\" size=\"sm\">Gap</Button>\n </ButtonGroup>\n</Stack>"
92
76
  },
93
77
  {
94
78
  "name": "Alignment",
95
- "description": "Different alignment options",
96
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>\n <ButtonGroup align=\"start\">\n <Button variant=\"secondary\" size=\"sm\">Start</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n <ButtonGroup align=\"center\">\n <Button variant=\"secondary\" size=\"sm\">Center</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n <ButtonGroup align=\"end\">\n <Button variant=\"secondary\" size=\"sm\">End</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n</div>"
79
+ "description": "Pins the row to the left, centre, or right of its container.",
80
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"column\" gap=\"md\">\n <ButtonGroup align=\"start\">\n <Button variant=\"secondary\" size=\"sm\">Start</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n <ButtonGroup align=\"center\">\n <Button variant=\"secondary\" size=\"sm\">Center</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n <ButtonGroup align=\"end\">\n <Button variant=\"secondary\" size=\"sm\">End</Button>\n <Button variant=\"secondary\" size=\"sm\">Aligned</Button>\n </ButtonGroup>\n</Stack>"
81
+ },
82
+ {
83
+ "name": "Wrapping",
84
+ "description": "Buttons drop to a second line instead of overflowing.",
85
+ "code": "<ButtonGroup wrap>\n <Button variant=\"secondary\" size=\"sm\">Approve</Button>\n <Button variant=\"secondary\" size=\"sm\">Request changes</Button>\n <Button variant=\"secondary\" size=\"sm\">Reassign reviewer</Button>\n <Button variant=\"secondary\" size=\"sm\">Move to backlog</Button>\n <Button variant=\"secondary\" size=\"sm\">Archive</Button>\n</ButtonGroup>"
97
86
  },
98
87
  {
99
88
  "name": "Form Actions",
100
- "description": "Common pattern for form submit/cancel",
89
+ "description": "Right-aligned pair, named for screen readers.",
101
90
  "code": "<ButtonGroup align=\"end\" role=\"group\" aria-label=\"Form actions\">\n <Button variant=\"ghost\">Cancel</Button>\n <Button variant=\"primary\">Submit</Button>\n</ButtonGroup>"
102
91
  }
103
92
  ],
@@ -121,15 +110,11 @@
121
110
  "align: start|center|end - alignment",
122
111
  "Pass-through DOM props supported on root (id, role, aria-*, data-*, handlers)"
123
112
  ],
124
- "a11yRules": [
125
- "A11Y_GROUP_LABEL"
126
- ]
113
+ "a11yRules": ["A11Y_GROUP_LABEL"]
127
114
  },
128
115
  "ai": {
129
116
  "compositionPattern": "compound",
130
- "subComponents": [
131
- "Root"
132
- ]
117
+ "subComponents": ["Root"]
133
118
  },
134
119
  "provenance": {
135
120
  "source": "migrated",
@@ -1,4 +1,4 @@
1
- @use "../../tokens/variables" as *;
1
+ @use "../../recipes/layout";
2
2
 
3
3
  .group {
4
4
  display: flex;
@@ -14,7 +14,7 @@
14
14
  }
15
15
 
16
16
  > *:not(:first-child) {
17
- margin-left: -1px;
17
+ margin-inline-start: calc(-1 * var(--fui-stroke-hairline, 1px));
18
18
  border-top-left-radius: 0;
19
19
  border-bottom-left-radius: 0;
20
20
  }
@@ -31,15 +31,15 @@
31
31
  }
32
32
 
33
33
  .gap-xs {
34
- gap: var(--fui-space-1, $fui-space-1);
34
+ gap: layout.gap("xs");
35
35
  }
36
36
 
37
37
  .gap-sm {
38
- gap: var(--fui-space-2, $fui-space-2);
38
+ gap: layout.gap("sm");
39
39
  }
40
40
 
41
41
  .gap-md {
42
- gap: var(--fui-space-3, $fui-space-3);
42
+ gap: layout.gap("md");
43
43
  }
44
44
 
45
45
  // Wrap
@@ -0,0 +1,8 @@
1
+ // Deliberately unlayered: this proves ordinary consumer CSS can customize a
2
+ // layered Card without specificity escalation or priority hacks.
3
+ .consumerOverride {
4
+ --fui-card-consumer-fixture: 1;
5
+
6
+ padding: 29px;
7
+ background-color: rgb(9 87 73);
8
+ }