@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
@@ -3,16 +3,14 @@
3
3
  import * as React from "react";
4
4
  import { useResolvedControlSize } from "../ComponentDefaults";
5
5
  import { useTheme, type ThemeMode } from "../Theme/context";
6
+ import { MonitorIcon, MoonIcon, SunIcon } from "./icons";
6
7
  import styles from "./ThemeToggle.module.scss";
7
8
 
9
+ export { ThemeButton, type ThemeButtonProps } from "./ThemeButton";
10
+
8
11
  export interface ThemeToggleProps extends React.HTMLAttributes<HTMLElement> {
9
- /** Size of the toggle button */
12
+ /** Size of the toggle buttons */
10
13
  size?: "sm" | "md" | "lg";
11
- /**
12
- * `group` is the segmented light/dark control. `icon` is a single button
13
- * that shows the current resolved theme and toggles light ↔ dark.
14
- */
15
- appearance?: "group" | "icon";
16
14
  /** Whether to include system mode option (default: false) */
17
15
  showSystem?: boolean;
18
16
  /** Controlled value for custom usage (bypasses theme context) */
@@ -23,60 +21,15 @@ export interface ThemeToggleProps extends React.HTMLAttributes<HTMLElement> {
23
21
  "aria-label"?: string;
24
22
  }
25
23
 
26
- function SunIcon({ size = 20 }: { size?: number }) {
27
- return (
28
- <svg
29
- xmlns="http://www.w3.org/2000/svg"
30
- width={size}
31
- height={size}
32
- viewBox="0 0 256 256"
33
- fill="currentColor"
34
- aria-hidden="true"
35
- >
36
- <path d="M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z" />
37
- </svg>
38
- );
39
- }
40
-
41
- function MoonIcon({ size = 20 }: { size?: number }) {
42
- return (
43
- <svg
44
- xmlns="http://www.w3.org/2000/svg"
45
- width={size}
46
- height={size}
47
- viewBox="0 0 256 256"
48
- fill="currentColor"
49
- aria-hidden="true"
50
- >
51
- <path d="M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z" />
52
- </svg>
53
- );
54
- }
55
-
56
- function MonitorIcon({ size = 20 }: { size?: number }) {
57
- return (
58
- <svg
59
- xmlns="http://www.w3.org/2000/svg"
60
- width={size}
61
- height={size}
62
- viewBox="0 0 256 256"
63
- fill="currentColor"
64
- aria-hidden="true"
65
- >
66
- <path d="M208,40H48A24,24,0,0,0,24,64V176a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V64A24,24,0,0,0,208,40Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H208a8,8,0,0,1,8,8Zm-48,48a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,224Z" />
67
- </svg>
68
- );
69
- }
70
-
71
24
  /**
72
- * Fragmented button group for choosing light, dark, or system theme modes.
25
+ * Segmented control for choosing light, dark, or system theme modes.
26
+ * For a single icon button that flips light and dark, use `ThemeButton`.
73
27
  *
74
28
  * It can read and update ThemeProvider context, or operate as a controlled
75
29
  * light/dark selector through `value` and `onValueChange`.
76
30
  */
77
31
  export function ThemeToggle({
78
32
  size: sizeProp,
79
- appearance = "group",
80
33
  showSystem = false,
81
34
  value: controlledValue,
82
35
  onValueChange,
@@ -85,45 +38,12 @@ export function ThemeToggle({
85
38
  ...htmlProps
86
39
  }: ThemeToggleProps) {
87
40
  const size = useResolvedControlSize(sizeProp);
88
- const {
89
- mode: contextMode,
90
- setMode: setContextMode,
91
- resolvedMode,
92
- toggleMode,
93
- } = useTheme();
41
+ const { mode: contextMode, setMode: setContextMode } = useTheme();
94
42
 
95
43
  const isControlled = controlledValue !== undefined;
96
44
  const currentMode = isControlled ? controlledValue : contextMode;
97
45
  const sizeClass = styles[`size${size.charAt(0).toUpperCase() + size.slice(1)}`];
98
46
 
99
- if (appearance === "icon") {
100
- const resolved = isControlled ? controlledValue : resolvedMode;
101
- const nextMode = resolved === "dark" ? "light" : "dark";
102
- const iconClasses = [styles.toggleButton, styles.iconButton, sizeClass, className]
103
- .filter(Boolean)
104
- .join(" ");
105
-
106
- return (
107
- <button
108
- {...(htmlProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}
109
- type="button"
110
- className={iconClasses}
111
- onClick={() => {
112
- if (isControlled) {
113
- onValueChange?.(nextMode);
114
- } else {
115
- toggleMode();
116
- }
117
- }}
118
- aria-label={
119
- ariaLabel ?? (resolved === "dark" ? "Switch to light mode" : "Switch to dark mode")
120
- }
121
- >
122
- {resolved === "dark" ? <MoonIcon /> : <SunIcon />}
123
- </button>
124
- );
125
- }
126
-
127
47
  const handleModeChange = (newMode: "light" | "dark") => {
128
48
  if (isControlled) {
129
49
  onValueChange?.(newMode);
@@ -132,9 +52,7 @@ export function ThemeToggle({
132
52
  }
133
53
  };
134
54
 
135
- const groupClasses = [styles.toggleGroup, sizeClass, className]
136
- .filter(Boolean)
137
- .join(" ");
55
+ const groupClasses = [styles.toggleGroup, sizeClass, className].filter(Boolean).join(" ");
138
56
 
139
57
  const getButtonClasses = (buttonMode: ThemeMode) => {
140
58
  return [styles.toggleButton, currentMode === buttonMode && styles.toggleButtonActive]
@@ -10,7 +10,7 @@
10
10
  "propsSummary": [
11
11
  "active: boolean (default: true)",
12
12
  "label: string (default: Thinking...)",
13
- "variant: dots|pulse|spinner (default: dots)",
13
+ "kind: dots|pulse|spinner (default: dots)",
14
14
  "showElapsed: boolean (default: false)",
15
15
  "steps: array"
16
16
  ],
@@ -27,7 +27,7 @@
27
27
  "default": "Thinking...",
28
28
  "required": false
29
29
  },
30
- "variant": {
30
+ "kind": {
31
31
  "type": "enum",
32
32
  "description": "Animation style",
33
33
  "default": "dots",
@@ -75,37 +75,37 @@
75
75
  {
76
76
  "name": "Dots (Default)",
77
77
  "description": "Three dots bounce in sequence; the quietest option.",
78
- "code": "<ThinkingIndicator variant=\"dots\" label=\"Thinking...\" />"
78
+ "code": "<ThinkingIndicator kind=\"dots\" label=\"Thinking...\" />"
79
79
  },
80
80
  {
81
81
  "name": "Pulse",
82
82
  "description": "A single ring breathes in place.",
83
- "code": "<ThinkingIndicator variant=\"pulse\" label=\"Processing...\" />"
83
+ "code": "<ThinkingIndicator kind=\"pulse\" label=\"Processing...\" />"
84
84
  },
85
85
  {
86
86
  "name": "Spinner",
87
87
  "description": "A rotating arc, for work with a definite end.",
88
- "code": "<ThinkingIndicator variant=\"spinner\" label=\"Loading...\" />"
88
+ "code": "<ThinkingIndicator kind=\"spinner\" label=\"Loading...\" />"
89
89
  },
90
90
  {
91
91
  "name": "With Elapsed Time",
92
92
  "description": "A live counter reassures the reader during long waits.",
93
- "code": "<ThinkingIndicator\n variant=\"dots\"\n label=\"Generating response...\"\n showElapsed\n/>"
93
+ "code": "<ThinkingIndicator\n kind=\"dots\"\n label=\"Generating response...\"\n showElapsed\n/>"
94
94
  },
95
95
  {
96
96
  "name": "Multi-Step Progress",
97
97
  "description": "Finished, running, and queued stages read at a glance.",
98
- "code": "<ThinkingIndicator\n variant=\"spinner\"\n label=\"Working...\"\n steps={[\n { id: '1', label: 'Analyzing request', status: 'complete' },\n { id: '2', label: 'Searching knowledge base', status: 'active' },\n { id: '3', label: 'Generating response', status: 'pending' },\n ]}\n/>"
98
+ "code": "<ThinkingIndicator\n kind=\"spinner\"\n label=\"Working...\"\n steps={[\n { id: '1', label: 'Analyzing request', status: 'complete' },\n { id: '2', label: 'Searching knowledge base', status: 'pending' },\n { id: '3', label: 'Generating response', status: 'idle' },\n ]}\n/>"
99
99
  },
100
100
  {
101
101
  "name": "With Error Step",
102
102
  "description": "A failed stage turns red while the next one retries.",
103
- "code": "<ThinkingIndicator\n variant=\"spinner\"\n label=\"Retrying...\"\n steps={[\n { id: '1', label: 'Connecting to API', status: 'complete' },\n { id: '2', label: 'Fetching data', status: 'error' },\n { id: '3', label: 'Retrying with fallback', status: 'active' },\n ]}\n/>"
103
+ "code": "<ThinkingIndicator\n kind=\"spinner\"\n label=\"Retrying...\"\n steps={[\n { id: '1', label: 'Connecting to API', status: 'complete' },\n { id: '2', label: 'Fetching data', status: 'error' },\n { id: '3', label: 'Retrying with fallback', status: 'pending' },\n ]}\n/>"
104
104
  },
105
105
  {
106
106
  "name": "Custom Label",
107
107
  "description": "Name the actual task instead of a generic status.",
108
- "code": "<ThinkingIndicator\n variant=\"dots\"\n label=\"Claude is writing code...\"\n/>"
108
+ "code": "<ThinkingIndicator\n kind=\"dots\"\n label=\"Claude is writing code...\"\n/>"
109
109
  }
110
110
  ],
111
111
  "relations": [
@@ -129,7 +129,8 @@
129
129
  "propsSummary": [
130
130
  "active: boolean - whether indicator is visible (default: true)",
131
131
  "label: string - status text (default: \"Thinking...\")",
132
- "variant: \"dots\" | \"pulse\" | \"spinner\" - animation style",
132
+ "kind: \"dots\" | \"pulse\" | \"spinner\" - animation style",
133
+ "steps[].status: \"idle\" | \"pending\" | \"streaming\" | \"complete\" | \"error\" - shared lifecycle axis",
133
134
  "showElapsed: boolean - show elapsed time",
134
135
  "steps: ThinkingStep[] - multi-step progress"
135
136
  ],
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/layout" as layout;
3
4
  @use "../../recipes/representation" as representation;
4
5
  @use "../../recipes/typography" as typography;
@@ -37,7 +38,7 @@
37
38
  // Steps
38
39
  //
39
40
  // NOTE: The dots/pulse/spinner animations live in <Loading>; the three
40
- // ThinkingIndicator variants delegate to it (see index.tsx). No animation
41
+ // ThinkingIndicator kinds delegate to it (see index.tsx). No animation
41
42
  // styles are kept here.
42
43
  // ============================================
43
44
 
@@ -47,7 +48,7 @@
47
48
  gap: layout.gap("xs");
48
49
  margin-inline-start: calc(representation.activity-size("sm") / 2);
49
50
  padding-inline-start: layout.gap("lg");
50
- border-inline-start: var(--fui-stroke-default, 2px) solid var(--fui-border, $fui-border);
51
+ border-inline-start: var(--fui-stroke-default, #{$fui-stroke-default}) solid var(--fui-border, $fui-border);
51
52
  }
52
53
 
53
54
  .step {
@@ -71,11 +72,11 @@
71
72
  }
72
73
 
73
74
  .stepDot {
74
- inline-size: var(--fui-raw-space-8, 8px);
75
- block-size: var(--fui-raw-space-8, 8px);
75
+ inline-size: var(--fui-raw-space-8, #{measurements.raw-space(8)});
76
+ block-size: var(--fui-raw-space-8, #{measurements.raw-space(8)});
76
77
  border-radius: var(--fui-radius-full, $fui-radius-full);
77
78
  background-color: var(--fui-text-tertiary, $fui-text-tertiary);
78
- opacity: 0.5;
79
+ opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
79
80
  }
80
81
 
81
82
  .stepLabel {
@@ -83,11 +84,12 @@
83
84
  }
84
85
 
85
86
  // Step status styles
86
- .stepPending {
87
+ .stepIdle {
87
88
  color: var(--fui-text-tertiary, $fui-text-tertiary);
88
89
  }
89
90
 
90
- .stepActive {
91
+ .stepPending,
92
+ .stepStreaming {
91
93
  color: var(--fui-text-secondary, $fui-text-secondary);
92
94
 
93
95
  .stepIndicator {
@@ -8,8 +8,9 @@ import { Loading } from "../Loading";
8
8
  // Types
9
9
  // ============================================
10
10
 
11
- export type ThinkingVariant = "dots" | "pulse" | "spinner";
12
- export type StepStatus = "pending" | "active" | "complete" | "error";
11
+ export type ThinkingKind = "dots" | "pulse" | "spinner";
12
+ /** Shared lifecycle axis: `idle` waits, `pending`/`streaming` are in flight. */
13
+ export type StepStatus = "idle" | "pending" | "streaming" | "complete" | "error";
13
14
 
14
15
  export interface ThinkingStep {
15
16
  id: string;
@@ -23,7 +24,7 @@ export interface ThinkingIndicatorProps extends React.HTMLAttributes<HTMLDivElem
23
24
  /** Status text */
24
25
  label?: string;
25
26
  /** Animation style */
26
- variant?: ThinkingVariant;
27
+ kind?: ThinkingKind;
27
28
  /** Show elapsed time */
28
29
  showElapsed?: boolean;
29
30
  /** Multi-step progress */
@@ -47,7 +48,7 @@ export interface ThinkingStepProps extends React.HTMLAttributes<HTMLDivElement>
47
48
 
48
49
  interface ThinkingIndicatorContextValue {
49
50
  active: boolean;
50
- variant: ThinkingVariant;
51
+ kind: ThinkingKind;
51
52
  }
52
53
 
53
54
  const ThinkingIndicatorContext = React.createContext<ThinkingIndicatorContextValue | null>(null);
@@ -147,7 +148,7 @@ function ThinkingSteps({ children, className, ...htmlProps }: ThinkingStepsProps
147
148
  );
148
149
  }
149
150
 
150
- function ThinkingStep({ label, status = "pending", className, ...htmlProps }: ThinkingStepProps) {
151
+ function ThinkingStep({ label, status = "idle", className, ...htmlProps }: ThinkingStepProps) {
151
152
  const classes = [
152
153
  styles.step,
153
154
  styles[`step${status.charAt(0).toUpperCase() + status.slice(1)}`],
@@ -161,17 +162,17 @@ function ThinkingStep({ label, status = "pending", className, ...htmlProps }: Th
161
162
  <span className={styles.stepIndicator}>
162
163
  {status === "complete" && <CheckIcon />}
163
164
  {status === "error" && <ErrorIcon />}
164
- {status === "active" && (
165
+ {(status === "pending" || status === "streaming") && (
165
166
  <Loading
166
167
  size="sm"
167
- variant="spinner"
168
+ kind="spinner"
168
169
  color="current"
169
170
  label=""
170
171
  role="presentation"
171
172
  aria-hidden="true"
172
173
  />
173
174
  )}
174
- {status === "pending" && <span className={styles.stepDot} />}
175
+ {status === "idle" && <span className={styles.stepDot} />}
175
176
  </span>
176
177
  <span className={styles.stepLabel}>{label}</span>
177
178
  </div>
@@ -185,7 +186,7 @@ function ThinkingStep({ label, status = "pending", className, ...htmlProps }: Th
185
186
  function ThinkingIndicatorRoot({
186
187
  active = true,
187
188
  label = "Thinking...",
188
- variant = "dots",
189
+ kind = "dots",
189
190
  showElapsed = false,
190
191
  steps,
191
192
  className,
@@ -195,23 +196,20 @@ function ThinkingIndicatorRoot({
195
196
 
196
197
  const contextValue: ThinkingIndicatorContextValue = {
197
198
  active,
198
- variant,
199
+ kind,
199
200
  };
200
201
 
201
202
  if (!active) return null;
202
203
 
203
204
  const classes = [styles.thinkingIndicator, className].filter(Boolean).join(" ");
204
205
 
205
- // Map ThinkingIndicator variants to Loading variants
206
- const loadingVariant = variant === "dots" ? "dots" : variant === "pulse" ? "pulse" : "spinner";
207
-
208
206
  return (
209
207
  <ThinkingIndicatorContext.Provider value={contextValue}>
210
208
  <div {...htmlProps} className={classes} role="status" aria-label={label} aria-live="polite">
211
209
  <div className={styles.main}>
212
210
  <Loading
213
211
  size="sm"
214
- variant={loadingVariant}
212
+ kind={kind}
215
213
  color="muted"
216
214
  label=""
217
215
  role="presentation"
@@ -3,7 +3,12 @@
3
3
  "name": "Toast",
4
4
  "description": "Briefly reports what just happened, without blocking the page.",
5
5
  "category": "feedback",
6
- "tags": ["notification", "alert", "message", "feedback"],
6
+ "tags": [
7
+ "notification",
8
+ "alert",
9
+ "message",
10
+ "feedback"
11
+ ],
7
12
  "status": "stable",
8
13
  "sourcePath": "src/components/Toast/index.tsx",
9
14
  "exportName": "Toast",
@@ -11,7 +16,7 @@
11
16
  "onDismiss: function",
12
17
  "title: string",
13
18
  "description: string",
14
- "variant: default|success|error|warning|info (default: default)",
19
+ "tone: neutral|success|danger|warning|info (default: neutral)",
15
20
  "duration: number",
16
21
  "action: object",
17
22
  "id: string",
@@ -34,12 +39,18 @@
34
39
  "description": "Additional message content",
35
40
  "required": false
36
41
  },
37
- "variant": {
42
+ "tone": {
38
43
  "type": "enum",
39
- "description": "Visual variant indicating message type",
40
- "default": "default",
44
+ "description": "Colour on the shared status ramp; neutral is the plain notification. The useToast().error helper sets tone=\"danger\".",
45
+ "default": "neutral",
41
46
  "required": false,
42
- "values": ["default", "success", "error", "warning", "info"]
47
+ "values": [
48
+ "neutral",
49
+ "success",
50
+ "danger",
51
+ "warning",
52
+ "info"
53
+ ]
43
54
  },
44
55
  "duration": {
45
56
  "type": "number",
@@ -83,7 +94,7 @@
83
94
  ],
84
95
  "guidelines": [
85
96
  "One sentence, plus a title if it helps",
86
- "Match the variant to what actually happened",
97
+ "Match the tone to what actually happened",
87
98
  "Auto-dismiss in three to five seconds",
88
99
  "Anything with an action needs a manual dismiss too",
89
100
  "Two or three on screen at once, no more",
@@ -103,9 +114,9 @@
103
114
  "code": "<Toast\n title=\"Draft saved\"\n description=\"We will keep it until you publish.\"\n/>"
104
115
  },
105
116
  {
106
- "name": "Variants",
117
+ "name": "Tones",
107
118
  "description": "Icon and colour together carry the outcome.",
108
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"column\" gap=\"sm\">\n <Toast\n title=\"Success!\"\n description=\"Your changes have been saved.\"\n variant=\"success\"\n />\n <Toast\n title=\"Error\"\n description=\"Failed to save changes. Please try again.\"\n variant=\"error\"\n />\n <Toast\n title=\"Warning\"\n description=\"This action cannot be undone.\"\n variant=\"warning\"\n />\n <Toast\n title=\"New update\"\n description=\"Version 2.0 is now available.\"\n variant=\"info\"\n />\n</Stack>"
119
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"column\" gap=\"sm\">\n <Toast\n title=\"Success!\"\n description=\"Your changes have been saved.\"\n tone=\"success\"\n />\n <Toast\n title=\"Error\"\n description=\"Failed to save changes. Please try again.\"\n tone=\"danger\"\n />\n <Toast\n title=\"Warning\"\n description=\"This action cannot be undone.\"\n tone=\"warning\"\n />\n <Toast\n title=\"New update\"\n description=\"Version 2.0 is now available.\"\n tone=\"info\"\n />\n</Stack>"
109
120
  },
110
121
  {
111
122
  "name": "With Action",
@@ -115,7 +126,7 @@
115
126
  {
116
127
  "name": "Dismissible",
117
128
  "description": "onDismiss adds a close button for longer messages.",
118
- "code": "<Toast\n title=\"Export running\"\n description=\"We will email you when the file is ready.\"\n variant=\"info\"\n onDismiss={() => {}}\n/>"
129
+ "code": "<Toast\n title=\"Export running\"\n description=\"We will email you when the file is ready.\"\n tone=\"info\"\n onDismiss={() => {}}\n/>"
119
130
  }
120
131
  ],
121
132
  "relations": [
@@ -134,17 +145,22 @@
134
145
  "propsSummary": [
135
146
  "title: string - toast title",
136
147
  "description: string - additional message",
137
- "variant: default|success|error|warning|info",
148
+ "tone: neutral|success|danger|warning|info",
138
149
  "duration: number - ms before auto-dismiss",
139
150
  "action: { label, onClick } - optional action",
140
151
  "ToastInput (useToast): optional id for deterministic creation/replacement flows",
141
152
  "useToast().success/error/warning/info: (title, description?) or ({ title, description, action, duration, id })"
142
153
  ],
143
- "a11yRules": ["A11Y_ALERT_ROLE", "A11Y_TARGET_SIZE_MIN"]
154
+ "a11yRules": [
155
+ "A11Y_ALERT_ROLE",
156
+ "A11Y_TARGET_SIZE_MIN"
157
+ ]
144
158
  },
145
159
  "ai": {
146
160
  "compositionPattern": "compound",
147
- "subComponents": ["Provider"]
161
+ "subComponents": [
162
+ "Provider"
163
+ ]
148
164
  },
149
165
  "provenance": {
150
166
  "source": "migrated",