@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
@@ -21,8 +21,7 @@
21
21
  }
22
22
 
23
23
  &[data-disabled] {
24
- cursor: not-allowed;
25
- opacity: 0.5;
24
+ @include disabled-state;
26
25
  }
27
26
  }
28
27
 
@@ -38,20 +37,26 @@
38
37
  flex-shrink: 0;
39
38
  box-sizing: border-box;
40
39
  margin-block-start: var(--_fui-boolean-mark-offset, 0);
41
- background-color: var(--fui-field-bg, $fui-bg-elevated);
42
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-field-border, $fui-border-strong);
40
+ background-color: var(--fui-bg-primary, $fui-bg-primary);
41
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-strong, $fui-border-strong);
43
42
  border-radius: var(--fui-checkbox-radius, var(--fui-radius-sm, #{$fui-radius-sm}));
44
43
  cursor: inherit;
44
+ @include high-contrast-outline;
45
45
 
46
46
  &:hover:not([data-disabled]) {
47
- border-color: var(--fui-field-border-hover, $fui-text-tertiary);
47
+ border-color: var(--fui-text-tertiary, $fui-text-tertiary);
48
+ }
49
+
50
+ &:focus-visible {
51
+ @include field.focus-state;
48
52
  }
49
53
 
50
54
  &[data-checked],
51
55
  &[data-indeterminate] {
52
56
  background-color: var(--fui-control-checked-bg, $fui-color-accent);
53
57
  border-color: var(--fui-control-checked-border, $fui-color-accent);
54
- box-shadow: inset 0 1px 0 color-mix(in srgb, white 24%, transparent);
58
+ box-shadow: inset 0 var(--fui-stroke-hairline, #{$fui-stroke-hairline}) 0
59
+ color-mix(in srgb, var(--fui-control-checked-color, #{$fui-color-on-accent}) 24%, transparent);
55
60
  }
56
61
 
57
62
  &[data-checked]:hover:not([data-disabled]),
@@ -61,13 +66,13 @@
61
66
  }
62
67
 
63
68
  &[data-invalid] {
64
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
69
+ border-color: var(--fui-color-danger, $fui-color-danger);
65
70
  }
66
71
 
67
72
  &[data-invalid][data-checked],
68
73
  &[data-invalid][data-indeterminate] {
69
74
  background-color: var(--fui-color-danger-bg, $fui-color-danger-bg);
70
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
75
+ border-color: var(--fui-color-danger, $fui-color-danger);
71
76
  box-shadow: inset 0 0 0 1px
72
77
  color-mix(in srgb, var(--fui-color-danger-text, #{$fui-color-danger-text}) 35%, transparent);
73
78
  }
@@ -161,11 +166,11 @@
161
166
  }
162
167
 
163
168
  // ============================================
164
- // Card variant: full-width clickable surface that mirrors the RadioGroup
165
- // card variant. Selection state is driven by `:has([data-checked])` so the
169
+ // Outline variant: full-width bordered surface that mirrors the RadioGroup
170
+ // outline variant. Selection state is driven by `:has([data-checked])` so the
166
171
  // styling reacts to the same control state the rest of the component uses.
167
172
  // ============================================
168
- .wrapperCard {
173
+ .wrapperOutline {
169
174
  width: 100%;
170
175
  border-radius: var(--fui-radius-md, $fui-radius-md);
171
176
  border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-default, $fui-border-default);
@@ -214,27 +219,6 @@
214
219
  }
215
220
  }
216
221
 
217
- // ============================================
218
- // Accessibility: High Contrast Mode
219
- // ============================================
220
-
221
- @media (prefers-contrast: more) {
222
- .checkbox {
223
- border-color: var(--fui-text-primary, $fui-text-primary);
224
- outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
225
- outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
226
-
227
- &[data-checked],
228
- &[data-indeterminate] {
229
- border-color: var(--fui-control-checked-border, $fui-color-accent);
230
- }
231
-
232
- &[data-invalid] {
233
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
234
- }
235
- }
236
- }
237
-
238
222
  // ============================================
239
223
  // Accessibility: Reduced Motion
240
224
  // ============================================
@@ -38,13 +38,11 @@ export interface CheckboxProps extends Omit<
38
38
  * @default "md" */
39
39
  size?: "sm" | "md" | "lg";
40
40
  /**
41
- * Visual variant.
42
- * - `default`: inline checkbox next to a label (form-control style).
43
- * - `card`: full-width clickable card with the checkbox tucked inside.
44
- * Useful for multi-select question lists, settings toggles, etc.
45
- * @default "default"
41
+ * Chrome. Omit it for the inline checkbox next to a label (form-control
42
+ * style); `outline` renders a full-width bordered surface with the checkbox
43
+ * tucked inside — multi-select question lists, settings toggles, plan pickers.
46
44
  */
47
- variant?: "default" | "card";
45
+ variant?: "outline";
48
46
  /** Label text */
49
47
  label?: string;
50
48
  /** Helper text shown below the label */
@@ -132,7 +130,7 @@ const CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(function
132
130
  readOnly = false,
133
131
  required = false,
134
132
  size: sizeProp,
135
- variant = "default",
133
+ variant,
136
134
  label,
137
135
  helperText,
138
136
  description,
@@ -169,7 +167,7 @@ const CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(function
169
167
  .filter(Boolean)
170
168
  .join(" ");
171
169
 
172
- const wrapperClasses = [styles.wrapper, variant === "card" && styles.wrapperCard, className]
170
+ const wrapperClasses = [styles.wrapper, variant === "outline" && styles.wrapperOutline, className]
173
171
  .filter(Boolean)
174
172
  .join(" ");
175
173
  const handleCheckedChange = onChange ?? onCheckedChange;
@@ -9,7 +9,7 @@
9
9
  "exportName": "Chip",
10
10
  "propsSummary": [
11
11
  "children: node (required)",
12
- "variant: filled|outlined|outline|soft (default: filled)",
12
+ "variant: solid|outline|soft (default: solid)",
13
13
  "size: xs|sm|md|lg (default: xs)",
14
14
  "selected: boolean (default: false)",
15
15
  "icon: node",
@@ -27,10 +27,10 @@
27
27
  },
28
28
  "variant": {
29
29
  "type": "enum",
30
- "description": "Visual style variant",
31
- "default": "filled",
30
+ "description": "Chrome family. solid is the tinted pill; outline is hairline-bordered; soft is info-tinted for a suggestion",
31
+ "default": "solid",
32
32
  "required": false,
33
- "values": ["filled", "outlined", "outline", "soft"]
33
+ "values": ["solid", "outline", "soft"]
34
34
  },
35
35
  "size": {
36
36
  "type": "enum",
@@ -107,17 +107,17 @@
107
107
  {
108
108
  "name": "Variants",
109
109
  "description": "Tinted, hairline, and accent-soft chrome.",
110
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"filled\">Filled</Chip>\n <Chip variant=\"outlined\">Outlined</Chip>\n <Chip variant=\"soft\">Soft</Chip>\n</Stack>"
110
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"solid\">Solid</Chip>\n <Chip variant=\"outline\">Outline</Chip>\n <Chip variant=\"soft\">Soft</Chip>\n</Stack>"
111
111
  },
112
112
  {
113
113
  "name": "Sizes",
114
114
  "description": "xs for filter rows; larger sizes match taller field tracks.",
115
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" align=\"center\" wrap>\n <Chip variant=\"outlined\" size=\"xs\">Extra small</Chip>\n <Chip variant=\"outlined\" size=\"sm\">Small</Chip>\n <Chip variant=\"outlined\" size=\"md\">Medium</Chip>\n <Chip variant=\"outlined\" size=\"lg\">Large</Chip>\n</Stack>"
115
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" align=\"center\" wrap>\n <Chip variant=\"outline\" size=\"xs\">Extra small</Chip>\n <Chip variant=\"outline\" size=\"sm\">Small</Chip>\n <Chip variant=\"outline\" size=\"md\">Medium</Chip>\n <Chip variant=\"outline\" size=\"lg\">Large</Chip>\n</Stack>"
116
116
  },
117
117
  {
118
118
  "name": "Selected",
119
119
  "description": "All three variants share one selection treatment.",
120
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip selected>Filled</Chip>\n <Chip variant=\"outlined\" selected>Outlined</Chip>\n <Chip variant=\"soft\" selected>Soft</Chip>\n</Stack>"
120
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip selected>Solid</Chip>\n <Chip variant=\"outline\" selected>Outline</Chip>\n <Chip variant=\"soft\" selected>Soft</Chip>\n</Stack>"
121
121
  },
122
122
  {
123
123
  "name": "With Avatar",
@@ -127,7 +127,7 @@
127
127
  {
128
128
  "name": "With Remove",
129
129
  "description": "Trailing dismiss button clears the tag.",
130
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"outlined\" onRemove={() => {}}>React</Chip>\n <Chip variant=\"outlined\" selected onRemove={() => {}}>TypeScript</Chip>\n <Chip variant=\"soft\" onRemove={() => {}}>SCSS</Chip>\n</Stack>"
130
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"outline\" onRemove={() => {}}>React</Chip>\n <Chip variant=\"outline\" selected onRemove={() => {}}>TypeScript</Chip>\n <Chip variant=\"soft\" onRemove={() => {}}>SCSS</Chip>\n</Stack>"
131
131
  },
132
132
  {
133
133
  "name": "Chip Group",
@@ -142,7 +142,7 @@
142
142
  {
143
143
  "name": "Disabled",
144
144
  "description": "Dimmed and unreachable, selected or not.",
145
- "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"outlined\" disabled>Disabled</Chip>\n <Chip variant=\"outlined\" disabled selected>Disabled selected</Chip>\n</Stack>"
145
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"sm\" wrap>\n <Chip variant=\"outline\" disabled>Disabled</Chip>\n <Chip variant=\"outline\" disabled selected>Disabled selected</Chip>\n</Stack>"
146
146
  }
147
147
  ],
148
148
  "relations": [
@@ -165,7 +165,7 @@
165
165
  "contract": {
166
166
  "propsSummary": [
167
167
  "children: ReactNode - chip label (required)",
168
- "variant: filled|outlined|outline|soft - visual style",
168
+ "variant: solid|outline|soft - chrome family",
169
169
  "size: xs|sm|md|lg - chip size (xs by default)",
170
170
  "selected: boolean - selection state",
171
171
  "icon/avatar: ReactNode - leading visual",
@@ -1,5 +1,6 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../tokens/measurements.generated" as measurements;
3
4
  @use "../../recipes/action";
4
5
  @use "../../recipes/layout";
5
6
 
@@ -13,7 +14,7 @@
13
14
 
14
15
  &:active:not(:disabled) {
15
16
  background-color: var(--fui-field-selection-bg-hover, $fui-bg-hover);
16
- box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
17
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, #{$fui-stroke-hairline})
17
18
  var(--fui-field-selection-border, $fui-border-strong);
18
19
  }
19
20
  }
@@ -28,8 +29,8 @@
28
29
  }
29
30
 
30
31
  .withRemove {
31
- border-top-right-radius: 0;
32
- border-bottom-right-radius: 0;
32
+ border-start-end-radius: var(--fui-radius-none, #{$fui-radius-none});
33
+ border-end-end-radius: var(--fui-radius-none, #{$fui-radius-none});
33
34
  }
34
35
 
35
36
  // Sizes
@@ -49,8 +50,8 @@
49
50
  @include action.size("lg");
50
51
  }
51
52
 
52
- // Variants
53
- .filled {
53
+ // Variants — chrome only
54
+ .solid {
54
55
  background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
55
56
  color: var(--fui-text-primary, $fui-text-primary);
56
57
 
@@ -67,10 +68,10 @@
67
68
  }
68
69
  }
69
70
 
70
- .outlined {
71
+ .outline {
71
72
  background-color: transparent;
72
73
  color: var(--fui-text-primary, $fui-text-primary);
73
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
74
+ border: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid var(--fui-border, $fui-border);
74
75
 
75
76
  &:hover:not(:disabled) {
76
77
  background-color: var(--fui-bg-hover, $fui-bg-hover);
@@ -110,23 +111,23 @@
110
111
  align-items: center;
111
112
 
112
113
  img {
113
- width: var(--fui-icon-md, $fui-icon-md);
114
- height: var(--fui-icon-md, $fui-icon-md);
114
+ inline-size: var(--fui-icon-md, $fui-icon-md);
115
+ block-size: var(--fui-icon-md, $fui-icon-md);
115
116
  border-radius: var(--fui-radius-full, $fui-radius-full);
116
117
  object-fit: cover;
117
118
  }
118
119
 
119
120
  .xs & {
120
121
  img {
121
- width: var(--fui-icon-sm, $fui-icon-sm);
122
- height: var(--fui-icon-sm, $fui-icon-sm);
122
+ inline-size: var(--fui-icon-sm, $fui-icon-sm);
123
+ block-size: var(--fui-icon-sm, $fui-icon-sm);
123
124
  }
124
125
  }
125
126
 
126
127
  .sm & {
127
128
  img {
128
- width: var(--fui-icon-sm, $fui-icon-sm);
129
- height: var(--fui-icon-sm, $fui-icon-sm);
129
+ inline-size: var(--fui-icon-sm, $fui-icon-sm);
130
+ block-size: var(--fui-icon-sm, $fui-icon-sm);
130
131
  }
131
132
  }
132
133
  }
@@ -149,13 +150,13 @@
149
150
  @include action.base;
150
151
 
151
152
  color: var(--fui-text-secondary, $fui-text-secondary);
152
- border-top-right-radius: var(--fui-radius-full, $fui-radius-full);
153
- border-bottom-right-radius: var(--fui-radius-full, $fui-radius-full);
154
- border-top-left-radius: 0;
155
- border-bottom-left-radius: 0;
153
+ border-start-end-radius: var(--fui-radius-full, $fui-radius-full);
154
+ border-end-end-radius: var(--fui-radius-full, $fui-radius-full);
155
+ border-start-start-radius: var(--fui-radius-none, #{$fui-radius-none});
156
+ border-end-start-radius: var(--fui-radius-none, #{$fui-radius-none});
156
157
  background-color: transparent;
157
- border: var(--fui-stroke-hairline, 1px) solid transparent;
158
- border-left-color: var(--fui-border, $fui-border);
158
+ border: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid transparent;
159
+ border-inline-start-color: var(--fui-border, $fui-border);
159
160
 
160
161
  .removableChip[data-size="xs"] & {
161
162
  @include action.icon-only("micro");
@@ -180,7 +181,7 @@
180
181
 
181
182
  // Match remove button visuals to chip variant/state so the compound control
182
183
  // remains visually coherent across seeds/themes.
183
- .filled + .remove {
184
+ .solid + .remove {
184
185
  background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
185
186
 
186
187
  &:hover:not(:disabled) {
@@ -192,7 +193,7 @@
192
193
  }
193
194
  }
194
195
 
195
- .outlined + .remove {
196
+ .outline + .remove {
196
197
  background-color: transparent;
197
198
 
198
199
  &:hover:not(:disabled) {
@@ -219,7 +220,7 @@
219
220
 
220
221
  .selected + .remove {
221
222
  @include selected-surface;
222
- border-left-color: transparent;
223
+ border-inline-start-color: transparent;
223
224
  }
224
225
 
225
226
  // Chip.Group
@@ -8,12 +8,18 @@ import { isProductionBuild } from "../../utils/env";
8
8
  * Chip for selections, filters, and tags. Use with Chip.Group for multi-select.
9
9
  * @see https://usefragments.com/components/chip
10
10
  */
11
+ export type ChipVariant = "solid" | "outline" | "soft";
12
+
11
13
  export interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
12
14
  children: React.ReactNode;
13
- /** Visual style variant. `"outline"` is an alias for `"outlined"`.
14
- * @default "filled"
15
+ /** Chrome family.
16
+ *
17
+ * - `solid` (default): tinted pill for filters and tags.
18
+ * - `outline`: hairline-bordered, transparent.
19
+ * - `soft`: info-tinted, for a chip that carries a suggestion.
20
+ * @default "solid"
15
21
  * @see https://usefragments.com/components/chip#variants */
16
- variant?: "filled" | "outlined" | "outline" | "soft";
22
+ variant?: ChipVariant;
17
23
  /** Chip size.
18
24
  * @default "xs" */
19
25
  size?: "xs" | "sm" | "md" | "lg";
@@ -45,7 +51,7 @@ export interface ChipGroupProps extends Omit<
45
51
  const ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(function Chip(
46
52
  {
47
53
  children,
48
- variant: variantProp = "filled",
54
+ variant = "solid",
49
55
  size: sizeProp,
50
56
  selected = false,
51
57
  disabled = false,
@@ -60,8 +66,6 @@ const ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(function Chip(
60
66
  ref
61
67
  ) {
62
68
  const size = sizeProp ?? "xs";
63
- // Resolve alias: "outline" → "outlined"
64
- const variant = variantProp === "outline" ? "outlined" : variantProp;
65
69
 
66
70
  const classes = [
67
71
  styles.chip,
@@ -1,13 +1,13 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../tokens/measurements.generated" as measurements;
3
4
  @use "../../recipes/action" as action;
4
5
  @use "../../recipes/layout" as layout;
5
6
  @use "../../recipes/prose" as prose;
6
- @use "../../recipes/target" as target;
7
7
  @use "../../recipes/typography" as typography;
8
8
 
9
9
  .container {
10
- --_fui-code-inline-inset: var(--fui-raw-space-16, 16px);
10
+ --_fui-code-inline-inset: var(--fui-raw-space-16, #{measurements.raw-space(16)});
11
11
 
12
12
  inline-size: 100%;
13
13
  }
@@ -21,7 +21,6 @@
21
21
 
22
22
  .title {
23
23
  margin-block-end: layout.gap("xs");
24
- text-transform: uppercase;
25
24
  }
26
25
 
27
26
  .wrapper {
@@ -30,7 +29,7 @@
30
29
  // A hairline keeps the block legible on any ground: the light code surface
31
30
  // and the sunken app main share the same tone, so fill alone can vanish.
32
31
  border: var(--fui-stroke-hairline, $fui-stroke-hairline) solid
33
- var(--fui-code-border, var(--fui-border, #{$fui-border}));
32
+ var(--fui-border, $fui-border);
34
33
  border-radius: var(--fui-radius-lg, $fui-radius-lg);
35
34
  background-color: var(--fui-code-bg, $fui-code-bg);
36
35
  color: var(--fui-code-text, var(--fui-text-primary, #{$fui-text-primary}));
@@ -54,52 +53,35 @@
54
53
  min-block-size: action.track("md");
55
54
  padding-inline: layout.gap("lg");
56
55
  border-block-end: var(--fui-stroke-hairline, $fui-stroke-hairline) solid
57
- var(--fui-code-border, var(--fui-border, #{$fui-border}));
56
+ var(--fui-border, $fui-border);
58
57
  }
59
58
 
60
59
  .filename {
61
60
  @include typography.role("code");
62
61
 
63
- color: var(--fui-code-text-muted, var(--fui-text-secondary, #{$fui-text-secondary}));
62
+ color: var(--fui-text-secondary, $fui-text-secondary);
64
63
  }
65
64
 
66
- .copyButton {
67
- @include button-reset;
68
- @include action.base;
69
- @include action.icon-only("sm");
70
- @include target.hit-area("compact");
71
-
72
- border: 0;
73
- border-radius: var(--fui-radius-sm, $fui-radius-sm);
74
- background: transparent;
75
- color: var(--fui-code-text-muted, var(--fui-text-secondary, #{$fui-text-secondary}));
76
- cursor: pointer;
65
+ // Copy affordances are IconButtons (ghost, sm); the kit owns reset, hit area,
66
+ // hover and focus. Only the overlay fade and the copied state live here.
67
+ .wrapper .copyButton {
77
68
  transition:
78
- background var(--fui-transition-fast, $fui-transition-fast),
79
69
  color var(--fui-transition-fast, $fui-transition-fast),
80
70
  opacity var(--fui-transition-fast, $fui-transition-fast);
81
71
 
82
- &:hover {
83
- background: var(--fui-code-copy-bg-hover, var(--fui-bg-hover, #{$fui-bg-hover}));
84
- color: var(--fui-code-tab-text-active, var(--fui-text-primary, #{$fui-text-primary}));
85
- }
86
-
87
- &:focus-visible {
88
- @include focus-ring;
89
- }
90
-
91
- &.copied {
72
+ &.copied,
73
+ &.copied:hover:not(:disabled) {
92
74
  color: var(--fui-color-success-text, $fui-color-success-text);
93
75
  opacity: 1;
94
76
  }
95
77
  }
96
78
 
97
- .copyOverlay {
79
+ .wrapper .copyOverlay {
98
80
  position: absolute;
99
81
  inset-block-start: layout.gap("sm");
100
82
  inset-inline-end: layout.gap("sm");
101
83
  z-index: 2;
102
- background: var(--fui-code-copy-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
84
+ background-color: var(--fui-bg-hover, $fui-bg-hover);
103
85
  opacity: 0;
104
86
  }
105
87
 
@@ -115,7 +97,7 @@
115
97
  @include action.glyph("sm");
116
98
  }
117
99
 
118
- .persistentCopy {
100
+ .wrapper .persistentCopy {
119
101
  inset-block-start: 50%;
120
102
  transform: translateY(-50%);
121
103
  opacity: 1;
@@ -132,7 +114,7 @@
132
114
  .codeContainer :global(.shiki),
133
115
  .loading pre {
134
116
  padding-inline-end: calc(
135
- var(--_fui-code-inline-inset) + #{action.track("sm")} + var(--fui-raw-space-12, 12px)
117
+ var(--_fui-code-inline-inset, var(--fui-raw-space-16, #{measurements.raw-space(16)})) + #{action.track("sm")} + var(--fui-raw-space-12, #{measurements.raw-space(12)})
136
118
  );
137
119
  }
138
120
  }
@@ -141,18 +123,18 @@
141
123
  .codeContainer :global(.shiki) {
142
124
  @include prose.code-block("default");
143
125
 
144
- margin: 0;
145
- border: 0 !important;
146
- border-radius: 0 !important;
126
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
127
+ border: none !important;
128
+ border-radius: var(--fui-radius-none, #{$fui-radius-none}) !important;
147
129
  background-color: transparent !important;
148
130
  color: inherit;
149
131
  }
150
132
 
151
133
  .loading code,
152
134
  .codeContainer :global(.shiki) code {
153
- padding: 0;
154
- border: 0;
155
- border-radius: 0;
135
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
136
+ border: none;
137
+ border-radius: var(--fui-radius-none, #{$fui-radius-none});
156
138
  background: none !important;
157
139
  color: inherit;
158
140
  font: inherit;
@@ -167,14 +149,14 @@
167
149
  :global(.line) {
168
150
  display: inline-block;
169
151
  inline-size: 100%;
170
- min-block-size: var(--fui-type-code-line);
152
+ min-block-size: typography.line-height("code");
171
153
 
172
154
  &:global(.highlighted) {
173
- margin-inline: calc(-1 * var(--_fui-code-inline-inset));
174
- padding-inline: var(--_fui-code-inline-inset);
155
+ margin-inline: calc(-1 * var(--_fui-code-inline-inset, var(--fui-raw-space-16, #{measurements.raw-space(16)})));
156
+ padding-inline: var(--_fui-code-inline-inset, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
175
157
  border-inline-start: var(--fui-stroke-default, $fui-stroke-default) solid
176
158
  var(--fui-color-info-text, $fui-color-info-text);
177
- background-color: var(--fui-code-highlight-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
159
+ background-color: var(--fui-bg-hover, $fui-bg-hover);
178
160
  }
179
161
  }
180
162
 
@@ -182,44 +164,44 @@
182
164
  display: inline-block;
183
165
  inline-size: 2.5em;
184
166
  padding-inline-end: 1em;
185
- color: var(--fui-code-text-muted, var(--fui-text-secondary, #{$fui-text-secondary}));
167
+ color: var(--fui-text-secondary, $fui-text-secondary);
186
168
  text-align: end;
187
169
  user-select: none;
188
- opacity: 0.6;
170
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
189
171
  }
190
172
 
191
173
  *::selection {
192
174
  background: var(--fui-code-selection-bg, $fui-code-selection-bg);
193
- color: var(--fui-code-tab-text-active, var(--fui-text-primary, #{$fui-text-primary}));
175
+ color: var(--fui-text-primary, $fui-text-primary);
194
176
  }
195
177
 
196
178
  :global(.shiki)::-webkit-scrollbar {
197
- block-size: var(--fui-raw-space-4, 4px);
179
+ block-size: var(--fui-raw-space-4, #{measurements.raw-space(4)});
198
180
  }
199
181
 
200
182
  :global(.shiki)::-webkit-scrollbar-thumb {
201
183
  border-radius: var(--fui-radius-full, $fui-radius-full);
202
- background: var(--fui-code-scrollbar-thumb, var(--fui-border-strong, #{$fui-border-strong}));
184
+ background: var(--fui-border-strong, $fui-border-strong);
203
185
  }
204
186
  }
205
187
 
206
188
  .withLineNumbers .codeContainer :global(.shiki) {
207
- padding-inline-start: var(--fui-raw-space-8, 8px);
189
+ padding-inline-start: var(--fui-raw-space-8, #{measurements.raw-space(8)});
208
190
  }
209
191
 
210
192
  .withDiff {
211
193
  :global(.diff-marker) {
212
194
  display: inline-block;
213
195
  inline-size: 1.5em;
214
- color: var(--fui-code-text-muted, var(--fui-text-secondary, #{$fui-text-secondary}));
196
+ color: var(--fui-text-secondary, $fui-text-secondary);
215
197
  text-align: center;
216
198
  user-select: none;
217
199
  }
218
200
 
219
201
  :global(.diff-added),
220
202
  :global(.diff-removed) {
221
- margin-inline: calc(-1 * var(--_fui-code-inline-inset));
222
- padding-inline: var(--_fui-code-inline-inset);
203
+ margin-inline: calc(-1 * var(--_fui-code-inline-inset, var(--fui-raw-space-16, #{measurements.raw-space(16)})));
204
+ padding-inline: var(--_fui-code-inline-inset, var(--fui-raw-space-16, #{measurements.raw-space(16)}));
223
205
  }
224
206
 
225
207
  :global(.diff-added) {
@@ -240,7 +222,7 @@
240
222
  }
241
223
 
242
224
  .compact {
243
- --_fui-code-inline-inset: var(--fui-raw-space-12, 12px);
225
+ --_fui-code-inline-inset: var(--fui-raw-space-12, #{measurements.raw-space(12)});
244
226
 
245
227
  .wrapper {
246
228
  border-radius: var(--fui-radius-md, $fui-radius-md);
@@ -264,33 +246,28 @@
264
246
  margin-block-start: layout.gap("sm");
265
247
  }
266
248
 
267
- .collapseButton {
268
- @include button-reset;
269
- @include action.base;
270
- @include action.size("sm");
271
-
272
- inline-size: 100%;
273
- border-block-start: var(--fui-stroke-hairline, $fui-stroke-hairline) solid
274
- var(--fui-border, $fui-border);
275
- background: var(--fui-code-bg, $fui-code-bg);
276
- color: var(--fui-code-text-muted, var(--fui-text-secondary, #{$fui-text-secondary}));
277
- cursor: pointer;
278
-
279
- &:hover {
280
- color: var(--fui-code-tab-text-active, var(--fui-text-primary, #{$fui-text-primary}));
249
+ // The collapse bar is a ghost Button (sm, fullWidth) squared into the frame;
250
+ // the gradient lets the last visible line fade under it.
251
+ .wrapper .collapseButton {
252
+ border-block-start: none;
253
+ border-radius: var(--fui-radius-none, #{$fui-radius-none});
254
+ background: linear-gradient(to bottom, transparent, var(--fui-code-bg, $fui-code-bg) 40%);
255
+ color: var(--fui-text-secondary, $fui-text-secondary);
256
+
257
+ &:hover:not(:disabled) {
258
+ background: linear-gradient(to bottom, transparent, var(--fui-code-bg, $fui-code-bg) 40%);
259
+ color: var(--fui-text-primary, $fui-text-primary);
281
260
  }
282
261
 
283
262
  &:focus-visible {
284
- outline: var(--fui-focus-ring-width, $fui-focus-ring-width) solid
285
- var(--fui-focus-ring-color, $fui-focus-ring-color);
286
263
  outline-offset: calc(-1 * var(--fui-focus-ring-offset, #{$fui-focus-ring-offset}));
287
264
  }
288
265
  }
289
266
 
290
- .collapseExpand {
267
+ .wrapper .collapseExpand {
291
268
  justify-content: flex-end;
292
269
  }
293
270
 
294
271
  .tabbedPanel {
295
- margin-block-start: 0;
272
+ margin-block-start: var(--fui-raw-space-0, #{measurements.raw-space(0)});
296
273
  }