@usefragments/ui 1.7.0 → 2.0.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 (551) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/nav-glyph.cjs +139 -0
  3. package/dist/assets/nav-glyph.d.ts +28 -0
  4. package/dist/assets/nav-glyph.d.ts.map +1 -0
  5. package/dist/assets/nav-glyph.js +139 -0
  6. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  7. package/dist/assets/nav-glyph.module.scss.js +71 -0
  8. package/dist/assets/ui.css +4975 -4959
  9. package/dist/blocks/components/StatsCard.d.ts +1 -1
  10. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  11. package/dist/codeblock.cjs +23 -16
  12. package/dist/codeblock.js +16 -9
  13. package/dist/colorpicker.cjs +1 -0
  14. package/dist/colorpicker.js +1 -0
  15. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  16. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  17. package/dist/components/Alert/Alert.module.scss.cjs +21 -21
  18. package/dist/components/Alert/Alert.module.scss.js +21 -21
  19. package/dist/components/Alert/index.cjs +14 -8
  20. package/dist/components/Alert/index.d.ts +9 -9
  21. package/dist/components/Alert/index.d.ts.map +1 -1
  22. package/dist/components/Alert/index.js +14 -8
  23. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  24. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  25. package/dist/components/AppShell/index.cjs +2 -2
  26. package/dist/components/AppShell/index.js +2 -2
  27. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  28. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  29. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  30. package/dist/components/Badge/Badge.module.scss.js +33 -31
  31. package/dist/components/Badge/index.cjs +13 -3
  32. package/dist/components/Badge/index.d.ts +18 -13
  33. package/dist/components/Badge/index.d.ts.map +1 -1
  34. package/dist/components/Badge/index.js +13 -3
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  36. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  37. package/dist/components/Box/Box.module.scss.cjs +152 -152
  38. package/dist/components/Box/Box.module.scss.js +152 -152
  39. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  40. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  41. package/dist/components/Breadcrumbs/index.cjs +1 -1
  42. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  43. package/dist/components/Breadcrumbs/index.js +1 -1
  44. package/dist/components/Button/Button.module.scss.cjs +36 -27
  45. package/dist/components/Button/Button.module.scss.js +36 -27
  46. package/dist/components/Button/index.cjs +20 -4
  47. package/dist/components/Button/index.d.ts +18 -10
  48. package/dist/components/Button/index.d.ts.map +1 -1
  49. package/dist/components/Button/index.js +20 -4
  50. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  51. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  52. package/dist/components/Card/Card.module.scss.cjs +27 -34
  53. package/dist/components/Card/Card.module.scss.js +27 -34
  54. package/dist/components/Card/index.cjs +13 -8
  55. package/dist/components/Card/index.d.ts +23 -25
  56. package/dist/components/Card/index.d.ts.map +1 -1
  57. package/dist/components/Card/index.js +13 -8
  58. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  59. package/dist/components/Chart/Chart.module.scss.js +15 -15
  60. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  61. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  62. package/dist/components/Checkbox/index.cjs +2 -2
  63. package/dist/components/Checkbox/index.d.ts +4 -6
  64. package/dist/components/Checkbox/index.d.ts.map +1 -1
  65. package/dist/components/Checkbox/index.js +2 -2
  66. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  67. package/dist/components/Chip/Chip.module.scss.js +19 -19
  68. package/dist/components/Chip/index.cjs +1 -2
  69. package/dist/components/Chip/index.d.ts +8 -3
  70. package/dist/components/Chip/index.d.ts.map +1 -1
  71. package/dist/components/Chip/index.js +1 -2
  72. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
  73. package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
  74. package/dist/components/CodeBlock/index.d.ts +3 -2
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  78. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  79. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  80. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  81. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  82. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  83. package/dist/components/Combobox/index.cjs +9 -5
  84. package/dist/components/Combobox/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/index.js +9 -5
  86. package/dist/components/Command/Command.module.scss.cjs +14 -11
  87. package/dist/components/Command/Command.module.scss.js +14 -11
  88. package/dist/components/Command/index.cjs +2 -1
  89. package/dist/components/Command/index.d.ts +6 -1
  90. package/dist/components/Command/index.d.ts.map +1 -1
  91. package/dist/components/Command/index.js +2 -1
  92. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  93. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  94. package/dist/components/ConversationList/index.cjs +2 -2
  95. package/dist/components/ConversationList/index.js +2 -2
  96. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  97. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  98. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  99. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  100. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  101. package/dist/components/DatePicker/index.d.ts.map +1 -1
  102. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  103. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  104. package/dist/components/Dialog/index.cjs +2 -2
  105. package/dist/components/Dialog/index.d.ts +5 -4
  106. package/dist/components/Dialog/index.d.ts.map +1 -1
  107. package/dist/components/Dialog/index.js +2 -2
  108. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  109. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  110. package/dist/components/Drawer/index.cjs +2 -2
  111. package/dist/components/Drawer/index.d.ts +5 -4
  112. package/dist/components/Drawer/index.d.ts.map +1 -1
  113. package/dist/components/Drawer/index.js +2 -2
  114. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  115. package/dist/components/Editor/Editor.module.scss.js +17 -17
  116. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -11
  117. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -11
  118. package/dist/components/EmptyState/index.cjs +9 -4
  119. package/dist/components/EmptyState/index.d.ts +8 -5
  120. package/dist/components/EmptyState/index.d.ts.map +1 -1
  121. package/dist/components/EmptyState/index.js +9 -4
  122. package/dist/components/Field/Field.module.scss.cjs +5 -5
  123. package/dist/components/Field/Field.module.scss.js +5 -5
  124. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  125. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  126. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  127. package/dist/components/Grid/Grid.module.scss.js +54 -54
  128. package/dist/components/Header/Header.module.scss.cjs +33 -33
  129. package/dist/components/Header/Header.module.scss.js +33 -33
  130. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  131. package/dist/components/Icon/Icon.module.scss.js +30 -33
  132. package/dist/components/Icon/index.cjs +15 -14
  133. package/dist/components/Icon/index.d.ts +23 -12
  134. package/dist/components/Icon/index.d.ts.map +1 -1
  135. package/dist/components/Icon/index.js +15 -14
  136. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  137. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  138. package/dist/components/IconButton/index.d.ts +4 -4
  139. package/dist/components/IconButton/index.d.ts.map +1 -1
  140. package/dist/components/Input/Input.module.scss.cjs +15 -21
  141. package/dist/components/Input/Input.module.scss.js +15 -21
  142. package/dist/components/Input/index.cjs +2 -14
  143. package/dist/components/Input/index.d.ts +0 -2
  144. package/dist/components/Input/index.d.ts.map +1 -1
  145. package/dist/components/Input/index.js +2 -14
  146. package/dist/components/Link/Link.module.scss.cjs +24 -16
  147. package/dist/components/Link/Link.module.scss.js +24 -16
  148. package/dist/components/Link/index.cjs +13 -2
  149. package/dist/components/Link/index.d.ts +10 -3
  150. package/dist/components/Link/index.d.ts.map +1 -1
  151. package/dist/components/Link/index.js +13 -2
  152. package/dist/components/List/List.module.scss.cjs +23 -19
  153. package/dist/components/List/List.module.scss.js +23 -19
  154. package/dist/components/List/index.cjs +7 -7
  155. package/dist/components/List/index.d.ts +10 -7
  156. package/dist/components/List/index.d.ts.map +1 -1
  157. package/dist/components/List/index.js +7 -7
  158. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  159. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  160. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  161. package/dist/components/Loading/Loading.module.scss.js +30 -30
  162. package/dist/components/Loading/index.cjs +5 -5
  163. package/dist/components/Loading/index.d.ts +8 -7
  164. package/dist/components/Loading/index.d.ts.map +1 -1
  165. package/dist/components/Loading/index.js +5 -5
  166. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  167. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  168. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  169. package/dist/components/Menu/Menu.module.scss.js +14 -14
  170. package/dist/components/Message/Message.module.scss.cjs +20 -20
  171. package/dist/components/Message/Message.module.scss.js +20 -20
  172. package/dist/components/Message/index.cjs +1 -1
  173. package/dist/components/Message/index.d.ts +1 -1
  174. package/dist/components/Message/index.js +1 -1
  175. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +29 -29
  176. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +29 -29
  177. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  178. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  179. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  180. package/dist/components/Popover/Popover.module.scss.js +10 -10
  181. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  182. package/dist/components/Progress/Progress.module.scss.js +28 -25
  183. package/dist/components/Progress/index.cjs +21 -12
  184. package/dist/components/Progress/index.d.ts +10 -6
  185. package/dist/components/Progress/index.d.ts.map +1 -1
  186. package/dist/components/Progress/index.js +21 -12
  187. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  188. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  189. package/dist/components/Prompt/index.cjs +7 -7
  190. package/dist/components/Prompt/index.d.ts +11 -9
  191. package/dist/components/Prompt/index.d.ts.map +1 -1
  192. package/dist/components/Prompt/index.js +7 -7
  193. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  194. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  195. package/dist/components/RadioGroup/index.cjs +10 -5
  196. package/dist/components/RadioGroup/index.d.ts +11 -7
  197. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  198. package/dist/components/RadioGroup/index.js +10 -5
  199. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  200. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  201. package/dist/components/Select/Select.module.scss.cjs +21 -21
  202. package/dist/components/Select/Select.module.scss.js +21 -21
  203. package/dist/components/Select/index.cjs +26 -20
  204. package/dist/components/Select/index.d.ts +5 -5
  205. package/dist/components/Select/index.d.ts.map +1 -1
  206. package/dist/components/Select/index.js +26 -20
  207. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  208. package/dist/components/Separator/Separator.module.scss.js +25 -19
  209. package/dist/components/Separator/index.cjs +10 -8
  210. package/dist/components/Separator/index.d.ts +4 -2
  211. package/dist/components/Separator/index.d.ts.map +1 -1
  212. package/dist/components/Separator/index.js +10 -8
  213. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  214. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  215. package/dist/components/Sidebar/index.cjs +3 -3
  216. package/dist/components/Sidebar/index.js +3 -3
  217. package/dist/components/Skeleton/Skeleton.module.scss.cjs +46 -46
  218. package/dist/components/Skeleton/Skeleton.module.scss.js +46 -46
  219. package/dist/components/Skeleton/index.cjs +7 -7
  220. package/dist/components/Skeleton/index.d.ts +8 -7
  221. package/dist/components/Skeleton/index.d.ts.map +1 -1
  222. package/dist/components/Skeleton/index.js +7 -7
  223. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  224. package/dist/components/Slider/Slider.module.scss.js +12 -12
  225. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  226. package/dist/components/Switch/Switch.module.scss.js +9 -9
  227. package/dist/components/Table/Table.module.scss.cjs +15 -15
  228. package/dist/components/Table/Table.module.scss.js +15 -15
  229. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  230. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  231. package/dist/components/TableOfContents/index.cjs +1 -1
  232. package/dist/components/TableOfContents/index.js +1 -1
  233. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  234. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  235. package/dist/components/Tabs/index.cjs +5 -6
  236. package/dist/components/Tabs/index.d.ts +8 -6
  237. package/dist/components/Tabs/index.d.ts.map +1 -1
  238. package/dist/components/Tabs/index.js +5 -6
  239. package/dist/components/Text/Text.module.scss.cjs +105 -105
  240. package/dist/components/Text/Text.module.scss.js +105 -105
  241. package/dist/components/Text/index.cjs +5 -9
  242. package/dist/components/Text/index.d.ts +15 -11
  243. package/dist/components/Text/index.d.ts.map +1 -1
  244. package/dist/components/Text/index.js +5 -9
  245. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  246. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  247. package/dist/components/Textarea/index.cjs +3 -10
  248. package/dist/components/Textarea/index.d.ts +0 -2
  249. package/dist/components/Textarea/index.d.ts.map +1 -1
  250. package/dist/components/Textarea/index.js +3 -10
  251. package/dist/components/Theme/index.cjs +20 -4
  252. package/dist/components/Theme/index.d.ts +6 -12
  253. package/dist/components/Theme/index.d.ts.map +1 -1
  254. package/dist/components/Theme/index.js +20 -4
  255. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  256. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  257. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  258. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  259. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -9
  260. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -9
  261. package/dist/components/ThemeToggle/icons.cjs +48 -0
  262. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  263. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  264. package/dist/components/ThemeToggle/icons.js +48 -0
  265. package/dist/components/ThemeToggle/index.cjs +5 -74
  266. package/dist/components/ThemeToggle/index.d.ts +5 -8
  267. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  268. package/dist/components/ThemeToggle/index.js +3 -72
  269. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  270. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  271. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  272. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  273. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  274. package/dist/components/ThinkingIndicator/index.js +7 -8
  275. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  276. package/dist/components/Toast/Toast.module.scss.js +29 -30
  277. package/dist/components/Toast/index.cjs +28 -30
  278. package/dist/components/Toast/index.d.ts +9 -8
  279. package/dist/components/Toast/index.d.ts.map +1 -1
  280. package/dist/components/Toast/index.js +28 -30
  281. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  282. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  283. package/dist/components/ToggleGroup/index.cjs +4 -5
  284. package/dist/components/ToggleGroup/index.d.ts +7 -6
  285. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  286. package/dist/components/ToggleGroup/index.js +4 -5
  287. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  288. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  289. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  290. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  291. package/dist/data-table-virtual.cjs +3 -2
  292. package/dist/data-table-virtual.js +3 -2
  293. package/dist/data-table.cjs +1 -1
  294. package/dist/data-table.js +1 -1
  295. package/dist/datepicker.cjs +23 -11
  296. package/dist/datepicker.js +23 -11
  297. package/dist/index.cjs +5 -1
  298. package/dist/index.d.ts +8 -8
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +6 -2
  301. package/dist/measurements/generated.cjs +37 -93
  302. package/dist/measurements/generated.d.ts +37 -92
  303. package/dist/measurements/generated.d.ts.map +1 -1
  304. package/dist/measurements/generated.js +37 -93
  305. package/dist/measurements/index.d.ts +1 -1
  306. package/dist/measurements/index.d.ts.map +1 -1
  307. package/dist/utils/seed-derivation.cjs +0 -1
  308. package/dist/utils/seed-derivation.d.ts +1 -3
  309. package/dist/utils/seed-derivation.d.ts.map +1 -1
  310. package/dist/utils/seed-derivation.js +0 -1
  311. package/dist/utils/theme-presets.cjs +5 -10
  312. package/dist/utils/theme-presets.d.ts +1 -2
  313. package/dist/utils/theme-presets.d.ts.map +1 -1
  314. package/dist/utils/theme-presets.js +5 -10
  315. package/fragments.json +1 -1
  316. package/package.json +5 -8
  317. package/src/assets/nav-glyph.module.scss +166 -0
  318. package/src/assets/nav-glyph.tsx +188 -0
  319. package/src/components/Accordion/Accordion.module.scss +5 -3
  320. package/src/components/Alert/Alert.contract.json +18 -18
  321. package/src/components/Alert/Alert.module.scss +50 -64
  322. package/src/components/Alert/index.tsx +24 -17
  323. package/src/components/AppShell/AppShell.contract.json +7 -7
  324. package/src/components/AppShell/AppShell.module.scss +49 -17
  325. package/src/components/AppShell/index.tsx +2 -2
  326. package/src/components/Avatar/Avatar.module.scss +0 -1
  327. package/src/components/Badge/Badge.contract.json +58 -22
  328. package/src/components/Badge/Badge.module.scss +72 -47
  329. package/src/components/Badge/index.tsx +34 -17
  330. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  331. package/src/components/Box/Box.module.scss +7 -6
  332. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +15 -5
  333. package/src/components/Breadcrumbs/index.tsx +5 -1
  334. package/src/components/Button/Button.module.scss +261 -186
  335. package/src/components/Button/index.tsx +41 -28
  336. package/src/components/ButtonGroup/ButtonGroup.contract.json +5 -5
  337. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  338. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  339. package/src/components/Card/Card.module.scss +73 -133
  340. package/src/components/Card/index.tsx +41 -36
  341. package/src/components/Chart/Chart.module.scss +6 -5
  342. package/src/components/Checkbox/Checkbox.contract.json +4 -3
  343. package/src/components/Checkbox/Checkbox.module.scss +16 -32
  344. package/src/components/Checkbox/index.tsx +6 -8
  345. package/src/components/Chip/Chip.contract.json +10 -10
  346. package/src/components/Chip/Chip.module.scss +23 -22
  347. package/src/components/Chip/index.tsx +10 -6
  348. package/src/components/CodeBlock/CodeBlock.module.scss +47 -70
  349. package/src/components/CodeBlock/index.tsx +23 -16
  350. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  351. package/src/components/ColorPicker/ColorPicker.module.scss +20 -13
  352. package/src/components/ColorPicker/index.tsx +1 -0
  353. package/src/components/Combobox/Combobox.module.scss +16 -19
  354. package/src/components/Combobox/index.tsx +10 -1
  355. package/src/components/Command/Command.contract.json +7 -1
  356. package/src/components/Command/Command.module.scss +19 -21
  357. package/src/components/Command/index.tsx +7 -1
  358. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  359. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  360. package/src/components/ConversationList/index.tsx +2 -2
  361. package/src/components/DataTable/DataTable.module.scss +12 -9
  362. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  363. package/src/components/DataTable/index.tsx +1 -1
  364. package/src/components/DatePicker/DatePicker.module.scss +32 -42
  365. package/src/components/DatePicker/index.tsx +18 -7
  366. package/src/components/Dialog/Dialog.module.scss +23 -29
  367. package/src/components/Dialog/index.tsx +7 -5
  368. package/src/components/Drawer/Drawer.contract.json +6 -6
  369. package/src/components/Drawer/Drawer.module.scss +123 -64
  370. package/src/components/Drawer/index.tsx +7 -5
  371. package/src/components/Editor/Editor.contract.json +1 -1
  372. package/src/components/Editor/Editor.module.scss +26 -13
  373. package/src/components/EmptyState/EmptyState.contract.json +6 -6
  374. package/src/components/EmptyState/EmptyState.module.scss +31 -23
  375. package/src/components/EmptyState/index.tsx +17 -9
  376. package/src/components/Field/Field.module.scss +2 -1
  377. package/src/components/Fieldset/Fieldset.module.scss +5 -4
  378. package/src/components/Form/Form.contract.json +4 -4
  379. package/src/components/Grid/Grid.module.scss +2 -2
  380. package/src/components/Header/Header.contract.json +2 -2
  381. package/src/components/Header/Header.module.scss +24 -36
  382. package/src/components/Icon/Icon.contract.json +19 -23
  383. package/src/components/Icon/Icon.module.scss +13 -12
  384. package/src/components/Icon/index.tsx +31 -31
  385. package/src/components/IconButton/IconButton.contract.json +8 -8
  386. package/src/components/IconButton/IconButton.module.scss +13 -4
  387. package/src/components/IconButton/index.tsx +4 -4
  388. package/src/components/Input/Input.contract.json +0 -13
  389. package/src/components/Input/Input.module.scss +4 -54
  390. package/src/components/Input/index.tsx +2 -18
  391. package/src/components/Link/Link.contract.json +19 -11
  392. package/src/components/Link/Link.module.scss +24 -10
  393. package/src/components/Link/index.tsx +26 -5
  394. package/src/components/List/List.contract.json +11 -11
  395. package/src/components/List/List.module.scss +10 -5
  396. package/src/components/List/index.tsx +17 -13
  397. package/src/components/Listbox/Listbox.module.scss +14 -20
  398. package/src/components/Loading/Loading.contract.json +6 -6
  399. package/src/components/Loading/Loading.module.scss +29 -26
  400. package/src/components/Loading/index.tsx +13 -12
  401. package/src/components/Markdown/Markdown.module.scss +2 -1
  402. package/src/components/Menu/Menu.contract.json +5 -5
  403. package/src/components/Menu/Menu.module.scss +11 -10
  404. package/src/components/Message/Message.contract.json +5 -5
  405. package/src/components/Message/Message.module.scss +8 -6
  406. package/src/components/Message/index.tsx +2 -2
  407. package/src/components/NavigationMenu/NavigationMenu.module.scss +22 -67
  408. package/src/components/Pagination/Pagination.module.scss +7 -14
  409. package/src/components/Popover/Popover.contract.json +4 -4
  410. package/src/components/Popover/Popover.module.scss +24 -23
  411. package/src/components/Progress/Progress.contract.json +11 -11
  412. package/src/components/Progress/Progress.module.scss +13 -8
  413. package/src/components/Progress/index.tsx +34 -16
  414. package/src/components/Prompt/Prompt.contract.json +12 -12
  415. package/src/components/Prompt/Prompt.module.scss +40 -47
  416. package/src/components/Prompt/index.tsx +17 -15
  417. package/src/components/RadioGroup/RadioGroup.contract.json +6 -4
  418. package/src/components/RadioGroup/RadioGroup.module.scss +38 -32
  419. package/src/components/RadioGroup/index.tsx +23 -10
  420. package/src/components/ScrollArea/ScrollArea.module.scss +30 -33
  421. package/src/components/Select/Select.module.scss +19 -18
  422. package/src/components/Select/index.tsx +26 -24
  423. package/src/components/Separator/Separator.contract.json +10 -10
  424. package/src/components/Separator/Separator.module.scss +24 -40
  425. package/src/components/Separator/index.tsx +16 -11
  426. package/src/components/Sidebar/Sidebar.contract.json +1 -1
  427. package/src/components/Sidebar/Sidebar.module.scss +92 -95
  428. package/src/components/Sidebar/index.tsx +3 -3
  429. package/src/components/Skeleton/Skeleton.contract.json +9 -9
  430. package/src/components/Skeleton/Skeleton.module.scss +23 -16
  431. package/src/components/Skeleton/index.tsx +16 -15
  432. package/src/components/Slider/Slider.module.scss +6 -19
  433. package/src/components/Stack/Stack.contract.json +1 -1
  434. package/src/components/Stack/Stack.module.scss +13 -12
  435. package/src/components/Switch/Switch.module.scss +44 -35
  436. package/src/components/Table/Table.module.scss +9 -13
  437. package/src/components/TableOfContents/TableOfContents.module.scss +12 -18
  438. package/src/components/TableOfContents/index.tsx +1 -1
  439. package/src/components/Tabs/Tabs.contract.json +14 -14
  440. package/src/components/Tabs/Tabs.module.scss +27 -31
  441. package/src/components/Tabs/index.tsx +15 -12
  442. package/src/components/Text/Text.contract.json +36 -14
  443. package/src/components/Text/Text.module.scss +19 -20
  444. package/src/components/Text/index.tsx +23 -21
  445. package/src/components/Textarea/Textarea.contract.json +0 -13
  446. package/src/components/Textarea/Textarea.module.scss +24 -52
  447. package/src/components/Textarea/index.tsx +3 -14
  448. package/src/components/Theme/Theme.contract.json +9 -8
  449. package/src/components/Theme/index.tsx +39 -12
  450. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  451. package/src/components/ThemeToggle/ThemeToggle.module.scss +21 -44
  452. package/src/components/ThemeToggle/icons.tsx +46 -0
  453. package/src/components/ThemeToggle/index.tsx +8 -90
  454. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +11 -10
  455. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  456. package/src/components/ThinkingIndicator/index.tsx +12 -14
  457. package/src/components/Toast/Toast.contract.json +29 -13
  458. package/src/components/Toast/Toast.module.scss +49 -104
  459. package/src/components/Toast/index.tsx +39 -34
  460. package/src/components/ToggleGroup/ToggleGroup.contract.json +13 -13
  461. package/src/components/ToggleGroup/ToggleGroup.module.scss +16 -46
  462. package/src/components/ToggleGroup/index.tsx +11 -11
  463. package/src/components/Tooltip/Tooltip.contract.json +3 -3
  464. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  465. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  466. package/src/index.ts +14 -10
  467. package/src/measurements/MeasurementTargets.module.scss +6 -7
  468. package/src/measurements/generated.ts +38 -96
  469. package/src/measurements/index.ts +0 -1
  470. package/src/measurements/measurements.json +37 -116
  471. package/src/recipes/_action.scss +4 -4
  472. package/src/recipes/_boolean-range.scss +9 -5
  473. package/src/recipes/_feedback.scss +17 -16
  474. package/src/recipes/_field.scss +28 -20
  475. package/src/recipes/_navigation.scss +84 -29
  476. package/src/recipes/_overlay.scss +143 -43
  477. package/src/recipes/_popup.scss +46 -36
  478. package/src/recipes/_prose.scss +35 -23
  479. package/src/recipes/_representation.scss +10 -9
  480. package/src/recipes/_segmented.scss +1 -1
  481. package/src/recipes/_table-chrome.scss +27 -16
  482. package/src/recipes/_target.scss +2 -4
  483. package/src/recipes/_typography.scss +10 -0
  484. package/src/styles/globals.scss +14 -9
  485. package/src/tokens/_component-properties.scss +19 -1
  486. package/src/tokens/_computed.scss +27 -33
  487. package/src/tokens/_measurements.catalog.generated.css +58 -45
  488. package/src/tokens/_measurements.generated.scss +107 -250
  489. package/src/tokens/_mixins.scss +42 -40
  490. package/src/tokens/_palettes.scss +1 -1
  491. package/src/tokens/_property-registrations.scss +9 -0
  492. package/src/tokens/_seeds.scss +1 -12
  493. package/src/tokens/_variables.scss +71 -59
  494. package/src/utils/seed-derivation.ts +1 -8
  495. package/src/utils/theme-presets.ts +5 -12
  496. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  497. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  498. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  499. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  500. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  501. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  502. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  503. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  504. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  505. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  506. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  507. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  508. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  509. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  510. package/dist/blocks/ContactForm.block.d.ts +0 -3
  511. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  512. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  513. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  514. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  515. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  516. package/dist/blocks/DataTable.block.d.ts +0 -3
  517. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  518. package/dist/blocks/EmptyState.block.d.ts +0 -3
  519. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  520. package/dist/blocks/FAQSection.block.d.ts +0 -3
  521. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  522. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  523. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  524. package/dist/blocks/HeroSection.block.d.ts +0 -3
  525. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  526. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  527. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  528. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  529. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  530. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  531. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  532. package/dist/blocks/ProductCard.block.d.ts +0 -3
  533. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  534. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  535. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  536. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  537. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  538. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  539. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  540. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  541. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  542. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  543. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  544. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  545. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  546. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  547. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  548. package/dist/components/Toggle/index.d.ts +0 -3
  549. package/dist/components/Toggle/index.d.ts.map +0 -1
  550. package/src/components/Toggle/index.ts +0 -7
  551. package/src/tokens/_density.scss +0 -85
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usefragments/ui",
3
- "version": "1.7.0",
3
+ "version": "2.0.0",
4
4
  "license": "MIT",
5
5
  "description": "Customizable UI components built on Base UI headless primitives",
6
6
  "author": "Conan McNicholl",
@@ -240,7 +240,6 @@
240
240
  "@types/react-dom": "^19.0.0",
241
241
  "@vitejs/plugin-react": "^4.3.0",
242
242
  "ajv": "8.17.1",
243
- "chromatic": "^17.1.0",
244
243
  "date-fns": "^4.0.0",
245
244
  "jsdom": "^25.0.0",
246
245
  "react": "^19.0.0",
@@ -255,7 +254,7 @@
255
254
  "vite": "^6.0.0",
256
255
  "vitest": "^2.1.8",
257
256
  "vitest-axe": "^0.1.0",
258
- "@usefragments/core": "1.11.0"
257
+ "@usefragments/core": "2.0.0"
259
258
  },
260
259
  "files": [
261
260
  "src",
@@ -270,14 +269,14 @@
270
269
  "!src/assets/*.svg",
271
270
  "!src/**/*.stories.tsx",
272
271
  "!src/**/*.ui-notes.md",
273
- "!src/components/Cloud/",
272
+ "!src/storybook/",
274
273
  "dist",
275
- "!dist/components/Cloud/",
276
274
  "fragments.json"
277
275
  ],
278
276
  "scripts": {
279
277
  "dev": "storybook dev -p 6006",
280
278
  "generate:measurements": "node scripts/generate-measurements.mjs",
279
+ "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
281
280
  "check:measurements": "node scripts/generate-measurements.mjs --check && node scripts/check-measurement-parity.mjs",
282
281
  "build": "pnpm run check:measurements && vite build && node ./scripts/emit-complete-styles.mjs && tsc -p tsconfig.build.json && pnpm run typecheck:fragments",
283
282
  "typecheck:fragments": "tsc -p tsconfig.fragments.json",
@@ -286,9 +285,7 @@
286
285
  "test:geometry": "node geometry/run.mjs",
287
286
  "test:geometry:self": "node --test geometry/__tests__/*.test.mjs",
288
287
  "test:geometry:types": "tsc -p geometry/tsconfig.json --noEmit",
289
- "build-storybook": "storybook build",
290
- "chromatic": "chromatic",
291
- "chromatic:ci": "chromatic --build-script-name build-storybook"
288
+ "build-storybook": "storybook build"
292
289
  },
293
290
  "module": "dist/index.js"
294
291
  }
@@ -0,0 +1,166 @@
1
+ @use "../tokens/variables" as *;
2
+
3
+ // ================================================================
4
+ // NavGlyph motion — one small verb per glyph, played when the row the
5
+ // glyph sits in is hovered or focused. Nothing moves at rest; the verb
6
+ // answers the pointer and returns the glyph to its drawn state. Keyframe
7
+ // names are referenced statically so CSS Modules rewrites reference and
8
+ // definition together.
9
+ // ================================================================
10
+
11
+ .glyph {
12
+ display: block;
13
+ overflow: visible;
14
+ }
15
+
16
+ // fragments-allow FUI2015: per-element motion parameters set by the glyph, not design tokens
17
+ $_beat: 420ms;
18
+ $_step: 70ms;
19
+ $_ease: cubic-bezier(0.4, 0, 0.2, 1);
20
+
21
+ @mixin verb($name, $duration: $_beat, $ease: $_ease) {
22
+ :is(a, button):is(:hover, :focus-visible) & {
23
+ animation-name: $name;
24
+ animation-duration: $duration;
25
+ animation-timing-function: $ease;
26
+ // fragments-allow FUI2015: stagger between sibling parts of one glyph
27
+ animation-delay: calc(var(--i, 0) * #{$_step});
28
+ }
29
+ }
30
+
31
+ @media (prefers-reduced-motion: no-preference) {
32
+ .motion {
33
+ transform-box: fill-box;
34
+ transform-origin: center;
35
+ }
36
+
37
+ // Overview: the four tiles dip in turn.
38
+ .tile {
39
+ @include verb(hop, 360ms);
40
+ }
41
+
42
+ // Repository: the spine cracks open a hair.
43
+ .spine {
44
+ @include verb(open);
45
+ }
46
+
47
+ // Pull request: the branch draws into the base, then its head pops.
48
+ .branch {
49
+ @include verb(draw);
50
+ }
51
+
52
+ .head {
53
+ @include verb(pop, 240ms);
54
+ }
55
+
56
+ // Finding: the fly waves once on the pole.
57
+ .fly {
58
+ transform-origin: 0 0;
59
+
60
+ @include verb(wave, 520ms);
61
+ }
62
+
63
+ // Contract: the signature lines write themselves.
64
+ .line {
65
+ @include verb(draw, 320ms);
66
+ }
67
+
68
+ // Adoption: the bars rise from the baseline.
69
+ .bar {
70
+ transform-origin: 50% 100%;
71
+
72
+ @include verb(rise, 360ms);
73
+ }
74
+
75
+ // Component: the cube's inner edges redraw.
76
+ .edge {
77
+ @include verb(draw, 320ms);
78
+ }
79
+
80
+ // Setup: the prompt nudges and the cursor blinks.
81
+ .caret {
82
+ @include verb(nudge);
83
+ }
84
+
85
+ .cursor {
86
+ @include verb(blink, 600ms, steps(1, end));
87
+ }
88
+
89
+ // Settings: each knob slides along its rail and settles back.
90
+ .knob {
91
+ @include verb(slide);
92
+ }
93
+ }
94
+
95
+ @keyframes hop {
96
+ 50% {
97
+ transform: scale(0.72);
98
+ }
99
+ }
100
+
101
+ @keyframes open {
102
+ 50% {
103
+ transform: translateX(1.5px);
104
+ }
105
+ }
106
+
107
+ @keyframes draw {
108
+ from {
109
+ stroke-dasharray: 1;
110
+ stroke-dashoffset: 1;
111
+ }
112
+
113
+ to {
114
+ stroke-dasharray: 1;
115
+ stroke-dashoffset: 0;
116
+ }
117
+ }
118
+
119
+ @keyframes pop {
120
+ from {
121
+ transform: scale(0);
122
+ }
123
+
124
+ 60% {
125
+ transform: scale(1.25);
126
+ }
127
+
128
+ to {
129
+ transform: scale(1);
130
+ }
131
+ }
132
+
133
+ @keyframes wave {
134
+ 30% {
135
+ transform: rotate(-9deg);
136
+ }
137
+
138
+ 65% {
139
+ transform: rotate(5deg);
140
+ }
141
+ }
142
+
143
+ @keyframes rise {
144
+ from {
145
+ transform: scaleY(0);
146
+ }
147
+ }
148
+
149
+ @keyframes nudge {
150
+ 50% {
151
+ transform: translateX(1.5px);
152
+ }
153
+ }
154
+
155
+ @keyframes blink {
156
+ 25%,
157
+ 75% {
158
+ opacity: 0;
159
+ }
160
+ }
161
+
162
+ @keyframes slide {
163
+ 50% {
164
+ transform: translateX(var(--dx, 2px));
165
+ }
166
+ }
@@ -0,0 +1,188 @@
1
+ import * as React from "react";
2
+ import styles from "./nav-glyph.module.scss";
3
+
4
+ /**
5
+ * The navigation glyph set: one 16px stroke glyph per governance destination.
6
+ * Drawn on a 16-unit grid with a 1.5 stroke, round caps and joins, and
7
+ * `currentColor` ink, so a glyph takes the colour of the row it sits in. The
8
+ * component glyph is the isometric cube the illustrated cards use, so the
9
+ * sidebar and the cards share one object language.
10
+ *
11
+ * Each glyph has one motion verb (see the module stylesheet) that plays when
12
+ * the link or button it sits in is hovered or focused. Parts that move carry
13
+ * `motion` plus their verb class; `--i` staggers siblings.
14
+ */
15
+ export type NavGlyphName =
16
+ | "overview"
17
+ | "repository"
18
+ | "pullRequest"
19
+ | "finding"
20
+ | "contract"
21
+ | "adoption"
22
+ | "component"
23
+ | "setup"
24
+ | "settings";
25
+
26
+ type Part = { className: string; style?: React.CSSProperties };
27
+
28
+ /** A moving part: `motion` plus its verb class, and its stagger index. */
29
+ function part(verb: string, index?: number, vars?: Record<string, string>): Part {
30
+ const style =
31
+ index === undefined && !vars
32
+ ? undefined
33
+ : ({ ...(index === undefined ? {} : { "--i": index }), ...vars } as React.CSSProperties);
34
+ return { className: [styles.motion, styles[verb]].join(" "), style };
35
+ }
36
+
37
+ /** A stroke that draws itself: normalised length so the verb is one keyframe. */
38
+ function stroke(verb: string, index?: number): Part & { pathLength: number } {
39
+ return { ...part(verb, index), pathLength: 1 };
40
+ }
41
+
42
+ const GLYPHS: Record<NavGlyphName, React.ReactNode> = {
43
+ // Four tiles; the first is inked — the place you are standing.
44
+ overview: (
45
+ <>
46
+ <rect
47
+ x="2.5"
48
+ y="2.5"
49
+ width="4.5"
50
+ height="4.5"
51
+ rx="1"
52
+ fill="currentColor"
53
+ stroke="none"
54
+ {...part("tile", 0)}
55
+ />
56
+ <rect x="9" y="2.5" width="4.5" height="4.5" rx="1" {...part("tile", 1)} />
57
+ <rect x="9" y="9" width="4.5" height="4.5" rx="1" {...part("tile", 2)} />
58
+ <rect x="2.5" y="9" width="4.5" height="4.5" rx="1" {...part("tile", 3)} />
59
+ </>
60
+ ),
61
+ // A bound volume with its spine.
62
+ repository: (
63
+ <>
64
+ <rect x="3" y="2.5" width="10" height="11" rx="1.5" />
65
+ <path d="M6 2.5v11" {...part("spine")} />
66
+ </>
67
+ ),
68
+ // Two commits on the base branch, one on the branch merging in.
69
+ pullRequest: (
70
+ <>
71
+ <circle cx="4.5" cy="4" r="1.75" />
72
+ <circle cx="4.5" cy="12" r="1.75" />
73
+ <path d="M4.5 5.75v4.5" />
74
+ <path d="M8 4h1.75A1.75 1.75 0 0 1 11.5 5.75v4.5" {...stroke("branch")} />
75
+ <circle cx="11.5" cy="12" r="1.75" {...part("head", 4)} />
76
+ </>
77
+ ),
78
+ // A planted flag with a notched fly.
79
+ finding: (
80
+ <>
81
+ <path d="M4 14V2.5" />
82
+ <path d="M4 3h7.5l-1.75 2.5L11.5 8H4" {...part("fly")} />
83
+ </>
84
+ ),
85
+ // A signed sheet with a folded corner.
86
+ contract: (
87
+ <>
88
+ <path d="M4.5 2.5h5l3 3v7.5a1 1 0 0 1-1 1h-7a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1z" />
89
+ <path d="M9.5 2.5v3h3" />
90
+ <path d="M6.5 8.5h3" {...stroke("line", 0)} />
91
+ <path d="M6.5 11h3.5" {...stroke("line", 2)} />
92
+ </>
93
+ ),
94
+ // Three bars climbing.
95
+ adoption: (
96
+ <>
97
+ <path d="M2.25 13.5h11.5" />
98
+ <path d="M4 13.5V9.5" {...part("bar", 0)} />
99
+ <path d="M8 13.5V6" {...part("bar", 1)} />
100
+ <path d="M12 13.5V2.75" {...part("bar", 2)} />
101
+ </>
102
+ ),
103
+ // The isometric cube from the card art.
104
+ component: (
105
+ <>
106
+ <path d="M8 1.75l5.5 3.15v6.2L8 14.25l-5.5-3.15v-6.2z" />
107
+ <path d="M8 8.05l5.5-3.15" {...stroke("edge", 0)} />
108
+ <path d="M8 8.05L2.5 4.9" {...stroke("edge", 1)} />
109
+ <path d="M8 8.05v6.2" {...stroke("edge", 2)} />
110
+ </>
111
+ ),
112
+ // A terminal with its prompt.
113
+ setup: (
114
+ <>
115
+ <rect x="2" y="3" width="12" height="10" rx="1.5" />
116
+ <path d="M5 6.75l2 1.5-2 1.5" {...part("caret")} />
117
+ <path d="M8.75 10.25h2.5" {...part("cursor")} />
118
+ </>
119
+ ),
120
+ // Three sliders, each knob somewhere different.
121
+ settings: (
122
+ <>
123
+ <path d="M2.5 4.5h11" />
124
+ <circle
125
+ cx="10"
126
+ cy="4.5"
127
+ r="1.5"
128
+ fill="currentColor"
129
+ stroke="none"
130
+ {...part("knob", 0, { "--dx": "2px" })}
131
+ />
132
+ <path d="M2.5 8h11" />
133
+ <circle
134
+ cx="6"
135
+ cy="8"
136
+ r="1.5"
137
+ fill="currentColor"
138
+ stroke="none"
139
+ {...part("knob", 1, { "--dx": "-2px" })}
140
+ />
141
+ <path d="M2.5 11.5h11" />
142
+ <circle
143
+ cx="9.5"
144
+ cy="11.5"
145
+ r="1.5"
146
+ fill="currentColor"
147
+ stroke="none"
148
+ {...part("knob", 2, { "--dx": "1.5px" })}
149
+ />
150
+ </>
151
+ ),
152
+ };
153
+
154
+ export const NAV_GLYPH_NAMES = Object.keys(GLYPHS) as NavGlyphName[];
155
+
156
+ export interface NavGlyphProps extends Omit<React.SVGAttributes<SVGSVGElement>, "name"> {
157
+ /** Which glyph to draw. */
158
+ name: NavGlyphName;
159
+ /** Rendered box in px; the glyph inherits `currentColor`. */
160
+ size?: number | string;
161
+ }
162
+
163
+ /**
164
+ * A navigation glyph. Decorative by default (`aria-hidden`): the label beside
165
+ * it names the destination. Pass `aria-label` and `role="img"` when the glyph
166
+ * stands alone. Its verb plays when the enclosing link or button is hovered
167
+ * or focused, and never under `prefers-reduced-motion: reduce`.
168
+ */
169
+ export function NavGlyph({ name, size = 16, className, ...rest }: NavGlyphProps) {
170
+ return (
171
+ <svg
172
+ width={size}
173
+ height={size}
174
+ viewBox="0 0 16 16"
175
+ fill="none"
176
+ stroke="currentColor"
177
+ strokeWidth={1.5}
178
+ strokeLinecap="round"
179
+ strokeLinejoin="round"
180
+ aria-hidden="true"
181
+ focusable="false"
182
+ className={[styles.glyph, className].filter(Boolean).join(" ")}
183
+ {...rest}
184
+ >
185
+ {GLYPHS[name]}
186
+ </svg>
187
+ );
188
+ }
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../tokens/mixins" as *;
3
4
  @use "../../recipes/feedback" as feedback;
4
5
 
@@ -6,7 +7,7 @@
6
7
  width: 100%;
7
8
 
8
9
  > * {
9
- border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
10
+ border-bottom: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid var(--fui-border, $fui-border);
10
11
 
11
12
  &:last-child {
12
13
  border-bottom: none;
@@ -15,12 +16,13 @@
15
16
  }
16
17
 
17
18
  .item[data-disabled] {
18
- opacity: 0.5;
19
+ @include disabled-state;
20
+
19
21
  pointer-events: none;
20
22
  }
21
23
 
22
24
  .heading {
23
- margin: 0;
25
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
24
26
  font: inherit;
25
27
  }
26
28
 
@@ -9,7 +9,7 @@
9
9
  "exportName": "Alert",
10
10
  "propsSummary": [
11
11
  "children: node (required)",
12
- "severity: info|success|warning|error (default: info)",
12
+ "tone: info|success|warning|danger (default: info)",
13
13
  "emphasis: tint|surface (default: tint)"
14
14
  ],
15
15
  "props": {
@@ -18,16 +18,16 @@
18
18
  "description": "Alert content - use Alert.Icon, Alert.Body, Alert.Title, Alert.Content, Alert.Actions, Alert.Close sub-components",
19
19
  "required": true
20
20
  },
21
- "severity": {
21
+ "tone": {
22
22
  "type": "enum",
23
- "description": "Visual severity level",
23
+ "description": "Tone; controls colour, icon and live-region role",
24
24
  "default": "info",
25
25
  "required": false,
26
- "values": ["info", "success", "warning", "error"]
26
+ "values": ["info", "success", "warning", "danger"]
27
27
  },
28
28
  "emphasis": {
29
29
  "type": "enum",
30
- "description": "How much surface the severity claims. `tint` washes the card in the severity colour; `surface` keeps the page background and colours only the hairline and title.",
30
+ "description": "How much surface the tone claims. `tint` washes the card in the tone colour; `surface` keeps the page background and colours only the hairline and title.",
31
31
  "default": "tint",
32
32
  "required": false,
33
33
  "values": ["tint", "surface"]
@@ -46,8 +46,8 @@
46
46
  "A decision the user must make first (use Dialog)"
47
47
  ],
48
48
  "guidelines": [
49
- "Match severity to real stakes \u2014 an error that is not an error trains people to ignore you",
50
- "Every error alert says what to do next",
49
+ "Match tone to real stakes \u2014 an error that is not an error trains people to ignore you",
50
+ "Every danger alert says what to do next",
51
51
  "Add Alert.Title only when the message needs two lines",
52
52
  "One action per alert",
53
53
  "Only dismissible when losing the message costs nothing",
@@ -57,39 +57,39 @@
57
57
  "accessibility": [
58
58
  "role=\"alert\" means assistive tech announces it on arrival",
59
59
  "Alert.Close needs its own label",
60
- "Icon plus wording carry the severity \u2014 never color alone"
60
+ "Icon plus wording carry the tone \u2014 never color alone"
61
61
  ]
62
62
  },
63
63
  "examples": [
64
64
  {
65
65
  "name": "Info",
66
66
  "description": "Neutral context \u2014 nothing went wrong, nothing needs doing.",
67
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n Your session will expire in 15 minutes. Save your work to avoid losing changes.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
67
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n Your session will expire in 15 minutes. Save your work to avoid losing changes.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
68
68
  },
69
69
  {
70
70
  "name": "Success",
71
71
  "description": "Confirms the thing the user just did actually landed.",
72
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"success\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Payment processed</Alert.Title>\n <Alert.Content>\n Your order #12345 has been confirmed. You will receive a confirmation email shortly.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
72
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"success\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Payment processed</Alert.Title>\n <Alert.Content>\n Your order #12345 has been confirmed. You will receive a confirmation email shortly.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
73
73
  },
74
74
  {
75
75
  "name": "Warning",
76
76
  "description": "Nothing is broken yet \u2014 act before it is.",
77
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Storage almost full</Alert.Title>\n <Alert.Content>\n You have used 90% of your storage quota. Consider deleting unused files.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
77
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Storage almost full</Alert.Title>\n <Alert.Content>\n You have used 90% of your storage quota. Consider deleting unused files.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
78
78
  },
79
79
  {
80
80
  "name": "Error",
81
81
  "description": "Something failed; say what to do about it.",
82
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"error\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Upload failed</Alert.Title>\n <Alert.Content>\n The file could not be uploaded. Check your connection and try again.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
82
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"danger\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Upload failed</Alert.Title>\n <Alert.Content>\n The file could not be uploaded. Check your connection and try again.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
83
83
  },
84
84
  {
85
85
  "name": "With Action",
86
86
  "description": "One button, one job \u2014 more than one stalls the reader.",
87
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Update available</Alert.Title>\n <Alert.Content>\n A new version is available with important security fixes.\n </Alert.Content>\n <Alert.Actions>\n <Alert.Action onClick={() => {}}>Update now</Alert.Action>\n </Alert.Actions>\n </Alert.Body>\n</Alert>"
87
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Update available</Alert.Title>\n <Alert.Content>\n A new version is available with important security fixes.\n </Alert.Content>\n <Alert.Actions>\n <Alert.Action onClick={() => {}}>Update now</Alert.Action>\n </Alert.Actions>\n </Alert.Body>\n</Alert>"
88
88
  },
89
89
  {
90
90
  "name": "Dismissible",
91
91
  "description": "A close button suits news the user can safely ignore.",
92
- "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n You can customize your notification preferences in Settings.\n </Alert.Content>\n </Alert.Body>\n <Alert.Close />\n</Alert>"
92
+ "code": "import { Alert } from '@/components/Alert';\n\n<Alert tone=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n You can customize your notification preferences in Settings.\n </Alert.Content>\n </Alert.Body>\n <Alert.Close />\n</Alert>"
93
93
  }
94
94
  ],
95
95
  "relations": [
@@ -111,7 +111,7 @@
111
111
  ],
112
112
  "contract": {
113
113
  "propsSummary": [
114
- "severity: info|success|warning|error - visual severity",
114
+ "tone: info|success|warning|danger - colour, icon and live-region role",
115
115
  "Sub-components: Alert.Icon, Alert.Body, Alert.Title, Alert.Content, Alert.Actions, Alert.Action, Alert.Close",
116
116
  "Alert.Action / Alert.Close accept button props and default type=\"button\""
117
117
  ],
@@ -127,9 +127,9 @@
127
127
  "subComponents": ["Icon", "Body", "Title", "Content", "Actions", "Action", "Close"],
128
128
  "requiredChildren": ["Body"],
129
129
  "commonPatterns": [
130
- "<Alert severity=\"info\"><Alert.Icon /><Alert.Body><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",
131
- "<Alert severity=\"warning\"><Alert.Icon /><Alert.Body><Alert.Title>{title}</Alert.Title><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",
132
- "<Alert severity=\"error\"><Alert.Icon /><Alert.Body><Alert.Title>{title}</Alert.Title><Alert.Content>{message}</Alert.Content></Alert.Body><Alert.Close /></Alert>"
130
+ "<Alert tone=\"info\"><Alert.Icon /><Alert.Body><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",
131
+ "<Alert tone=\"warning\"><Alert.Icon /><Alert.Body><Alert.Title>{title}</Alert.Title><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",
132
+ "<Alert tone=\"danger\"><Alert.Icon /><Alert.Body><Alert.Title>{title}</Alert.Title><Alert.Content>{message}</Alert.Content></Alert.Body><Alert.Close /></Alert>"
133
133
  ]
134
134
  },
135
135
  "provenance": {