@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
@@ -13,7 +13,7 @@
13
13
  "value: string",
14
14
  "onValueChange: function",
15
15
  "orientation: horizontal|vertical (default: horizontal)",
16
- "variant: underline|pills (default: underline)"
16
+ "variant: ghost|soft (default: ghost)"
17
17
  ],
18
18
  "props": {
19
19
  "children": {
@@ -45,10 +45,10 @@
45
45
  },
46
46
  "variant": {
47
47
  "type": "enum",
48
- "description": "Default visual style for Tabs.List (can be overridden on Tabs.List)",
49
- "default": "underline",
48
+ "description": "Default chrome for Tabs.List (can be overridden on Tabs.List): ghost draws a rule under the active tab, soft is a filled rail with a selected segment",
49
+ "default": "ghost",
50
50
  "required": false,
51
- "values": ["underline", "pills"]
51
+ "values": ["ghost", "soft"]
52
52
  }
53
53
  },
54
54
  "usage": {
@@ -69,7 +69,7 @@
69
69
  "Order by how often each panel is used",
70
70
  "Past five or six tabs, split the page instead",
71
71
  "Keep panels comparable in depth",
72
- "Pills inside cards, underline at page level"
72
+ "Soft rails inside cards, ghost at page level"
73
73
  ],
74
74
  "accessibility": [
75
75
  "Keyboard navigation with arrow keys",
@@ -79,24 +79,24 @@
79
79
  },
80
80
  "examples": [
81
81
  {
82
- "name": "Underline",
82
+ "name": "Ghost",
83
83
  "description": "A rule tracks the active panel.",
84
- "code": "<Tabs defaultValue=\"overview\" variant=\"underline\">\n <Tabs.List>\n <Tabs.Tab value=\"overview\">Overview</Tabs.Tab>\n <Tabs.Tab value=\"analytics\">Analytics</Tabs.Tab>\n <Tabs.Tab value=\"settings\">Settings</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"overview\">\n <p>Overview content goes here.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"analytics\">\n <p>Analytics content goes here.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"settings\">\n <p>Settings content goes here.</p>\n </Tabs.Panel>\n</Tabs>"
84
+ "code": "<Tabs defaultValue=\"overview\" variant=\"ghost\">\n <Tabs.List>\n <Tabs.Tab value=\"overview\">Overview</Tabs.Tab>\n <Tabs.Tab value=\"analytics\">Analytics</Tabs.Tab>\n <Tabs.Tab value=\"settings\">Settings</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"overview\">\n <p>Overview content goes here.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"analytics\">\n <p>Analytics content goes here.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"settings\">\n <p>Settings content goes here.</p>\n </Tabs.Panel>\n</Tabs>"
85
85
  },
86
86
  {
87
- "name": "Pills",
88
- "description": "A filled track suits panels inside a card.",
89
- "code": "<Tabs defaultValue=\"all\" variant=\"pills\">\n <Tabs.List>\n <Tabs.Tab value=\"all\">All</Tabs.Tab>\n <Tabs.Tab value=\"active\">Active</Tabs.Tab>\n <Tabs.Tab value=\"archived\">Archived</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"all\">\n <p>Showing all items.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"active\">\n <p>Showing active items only.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"archived\">\n <p>Showing archived items.</p>\n </Tabs.Panel>\n</Tabs>"
87
+ "name": "Soft",
88
+ "description": "A filled rail suits panels inside a card.",
89
+ "code": "<Tabs defaultValue=\"all\" variant=\"soft\">\n <Tabs.List>\n <Tabs.Tab value=\"all\">All</Tabs.Tab>\n <Tabs.Tab value=\"active\">Active</Tabs.Tab>\n <Tabs.Tab value=\"archived\">Archived</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"all\">\n <p>Showing all items.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"active\">\n <p>Showing active items only.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"archived\">\n <p>Showing archived items.</p>\n </Tabs.Panel>\n</Tabs>"
90
90
  },
91
91
  {
92
92
  "name": "With Disabled",
93
93
  "description": "An unavailable panel stays visible but unreachable.",
94
- "code": "<Tabs defaultValue=\"general\" variant=\"underline\">\n <Tabs.List>\n <Tabs.Tab value=\"general\">General</Tabs.Tab>\n <Tabs.Tab value=\"security\">Security</Tabs.Tab>\n <Tabs.Tab value=\"billing\" disabled>Billing</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"general\">\n <p>General settings panel.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"security\">\n <p>Security settings panel.</p>\n </Tabs.Panel>\n</Tabs>"
94
+ "code": "<Tabs defaultValue=\"general\" variant=\"ghost\">\n <Tabs.List>\n <Tabs.Tab value=\"general\">General</Tabs.Tab>\n <Tabs.Tab value=\"security\">Security</Tabs.Tab>\n <Tabs.Tab value=\"billing\" disabled>Billing</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"general\">\n <p>General settings panel.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"security\">\n <p>Security settings panel.</p>\n </Tabs.Panel>\n</Tabs>"
95
95
  },
96
96
  {
97
97
  "name": "List Variant Override",
98
98
  "description": "One list can opt out of the root's style.",
99
- "code": "<Tabs defaultValue=\"overview\" variant=\"pills\">\n <Tabs.List variant=\"underline\">\n <Tabs.Tab value=\"overview\">Overview</Tabs.Tab>\n <Tabs.Tab value=\"activity\">Activity</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"overview\">\n <p>Root sets pills, but this list overrides to underline.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"activity\">\n <p>Per-list variant override example.</p>\n </Tabs.Panel>\n</Tabs>"
99
+ "code": "<Tabs defaultValue=\"overview\" variant=\"soft\">\n <Tabs.List variant=\"ghost\">\n <Tabs.Tab value=\"overview\">Overview</Tabs.Tab>\n <Tabs.Tab value=\"activity\">Activity</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"overview\">\n <p>Root sets soft, but this list overrides to ghost.</p>\n </Tabs.Panel>\n <Tabs.Panel value=\"activity\">\n <p>Per-list variant override example.</p>\n </Tabs.Panel>\n</Tabs>"
100
100
  }
101
101
  ],
102
102
  "relations": [
@@ -116,8 +116,8 @@
116
116
  "value: string - controlled active tab",
117
117
  "defaultValue: string - initial active tab",
118
118
  "onValueChange: (value) => void - tab change handler",
119
- "variant: underline|pills - default style for Tabs.List",
120
- "Tabs.List variant?: underline|pills - optional per-list override"
119
+ "variant: ghost|soft - default chrome for Tabs.List",
120
+ "Tabs.List variant?: ghost|soft - optional per-list override"
121
121
  ],
122
122
  "a11yRules": ["A11Y_TABS_KEYBOARD", "A11Y_TABS_LABELS"]
123
123
  },
@@ -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/layout";
4
5
  @use "../../recipes/segmented";
5
6
 
@@ -14,37 +15,39 @@
14
15
  }
15
16
  }
16
17
 
17
- // Tab list container
18
+ // Tab list container (ghost: a rule under the row, the indicator tracks the active tab)
18
19
  .list {
19
20
  position: relative;
20
21
  display: flex;
21
22
  align-items: center;
22
23
  gap: layout.gap("xs");
23
- border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
24
+ border-bottom: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid
25
+ var(--fui-border, $fui-border);
24
26
  padding-inline: layout.gap("xs");
25
27
 
26
28
  &[data-orientation="vertical"] {
27
29
  flex-direction: column;
28
30
  align-items: stretch;
29
31
  border-bottom: none;
30
- border-right: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
32
+ border-right: var(--fui-stroke-hairline, #{$fui-stroke-hairline}) solid
33
+ var(--fui-border, $fui-border);
31
34
  padding-block: layout.gap("xs");
32
- padding-inline: 0;
35
+ padding-inline: var(--fui-raw-space-0, #{measurements.raw-space(0)});
33
36
  }
34
37
  }
35
38
 
36
- // Variant: pills (shadcn-style with background container)
37
- .listPills {
39
+ // Variant: soft (filled rail with a selected segment)
40
+ .listSoft {
38
41
  border-bottom: none;
39
42
  border: 0;
40
43
  background-color: var(
41
44
  --fui-tabs-pills-bg,
42
45
  color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 5%, transparent)
43
46
  );
44
- border-radius: var(--fui-radius-lg, $fui-radius-lg);
45
- padding: 0;
46
- gap: 0;
47
- box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
47
+ border-radius: var(--fui-radius-l1, $fui-radius-l1);
48
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
49
+ gap: var(--fui-raw-space-0, #{measurements.raw-space(0)});
50
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, #{$fui-stroke-hairline})
48
51
  var(
49
52
  --fui-tabs-pills-border,
50
53
  color-mix(in srgb, var(--fui-border, #{$fui-border}) 72%, transparent)
@@ -52,11 +55,6 @@
52
55
  width: fit-content;
53
56
  }
54
57
 
55
- // Variant: underline (default, with indicator line)
56
- .listUnderline {
57
- // Default styles already applied to .list
58
- }
59
-
60
58
  // Individual tab button
61
59
  .tab {
62
60
  @include button-reset;
@@ -65,7 +63,7 @@
65
63
  position: relative;
66
64
  color: var(--fui-text-secondary, $fui-text-secondary);
67
65
  white-space: nowrap;
68
- border-radius: var(--fui-radius-sm, $fui-radius-sm);
66
+ border-radius: var(--fui-radius-l3, $fui-radius-l3);
69
67
 
70
68
  &:hover:not([data-disabled]) {
71
69
  color: var(--fui-text-primary, $fui-text-primary);
@@ -105,18 +103,18 @@
105
103
  }
106
104
  }
107
105
 
108
- // Tab in underline variant
109
- .tabUnderline {
110
- border-radius: 0;
106
+ // Tab in the ghost variant: the indicator carries the selection, the tab stays flat
107
+ .tabGhost {
108
+ border-radius: var(--fui-radius-none, #{$fui-radius-none});
111
109
 
112
110
  &:hover:not([data-disabled]) {
113
111
  background-color: transparent;
114
112
  }
115
113
  }
116
114
 
117
- // Tab in pills variant (shadcn-style)
118
- .tabPills {
119
- border-radius: var(--fui-radius-md, $fui-radius-md);
115
+ // Tab in the soft variant: a segment on the rail
116
+ .tabSoft {
117
+ border-radius: var(--fui-radius-l2, $fui-radius-l2);
120
118
  transition:
121
119
  background-color var(--fui-transition-fast, $fui-transition-fast),
122
120
  color var(--fui-transition-fast, $fui-transition-fast),
@@ -128,18 +126,16 @@
128
126
  }
129
127
 
130
128
  &[data-active] {
131
- background-color: var(--fui-tabs-pill-active-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
132
- color: var(--fui-text-primary, $fui-text-primary);
133
- box-shadow: var(--fui-tabs-pill-active-shadow, none);
129
+ @include segmented-selection;
134
130
  }
135
131
  }
136
132
 
137
- // Animated indicator (underline variant)
133
+ // Animated indicator (ghost variant)
138
134
  .indicator {
139
135
  position: absolute;
140
136
  bottom: 0;
141
137
  left: 0;
142
- height: var(--fui-stroke-default, 2px);
138
+ height: var(--fui-stroke-default, #{$fui-stroke-default});
143
139
  background-color: var(--fui-color-accent, $fui-color-accent);
144
140
  border-radius: var(--fui-radius-full, $fui-radius-full);
145
141
 
@@ -155,7 +151,7 @@
155
151
  left: auto;
156
152
  right: 0;
157
153
  top: 0;
158
- width: var(--fui-stroke-default, 2px);
154
+ width: var(--fui-stroke-default, #{$fui-stroke-default});
159
155
  height: var(--active-tab-height);
160
156
  transform: translateY(var(--active-tab-top));
161
157
  }
@@ -164,7 +160,7 @@
164
160
  // Tab panel content
165
161
  .panel {
166
162
  padding-block: layout.gap("sm");
167
- padding-inline: 0;
163
+ padding-inline: var(--fui-raw-space-0, #{measurements.raw-space(0)});
168
164
  outline: none;
169
165
 
170
166
  &[data-hidden] {
@@ -174,11 +170,11 @@
174
170
  // Focus visible for keyboard navigation
175
171
  &:focus-visible {
176
172
  @include focus-ring;
177
- border-radius: var(--fui-radius-md, $fui-radius-md);
173
+ border-radius: var(--fui-radius-l2, $fui-radius-l2);
178
174
  }
179
175
  }
180
176
 
181
177
  // Panel with no padding (for custom layouts)
182
178
  .panelFlush {
183
- padding: 0;
179
+ padding: var(--fui-raw-space-0, #{measurements.raw-space(0)});
184
180
  }
@@ -10,6 +10,7 @@ import styles from "./Tabs.module.scss";
10
10
  // ============================================
11
11
 
12
12
  export type TabValue = string;
13
+ export type TabsVariant = "ghost" | "soft";
13
14
  export type TabsChangeEventDetails = Parameters<
14
15
  NonNullable<React.ComponentProps<typeof BaseTabs.Root>["onValueChange"]>
15
16
  >[1];
@@ -29,19 +30,20 @@ export interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "d
29
30
  /** Tab layout direction.
30
31
  * @default "horizontal" */
31
32
  orientation?: "horizontal" | "vertical";
32
- /** Tab list visual style (default for Tabs.List).
33
- * @default "underline" */
34
- variant?: "underline" | "pills";
33
+ /** Tab list chrome (default for Tabs.List): `ghost` draws a rule under the
34
+ * active tab, `soft` is a filled rail with a selected segment.
35
+ * @default "ghost" */
36
+ variant?: TabsVariant;
35
37
  /** Tab control size. Defaults to the component-default control size. */
36
38
  size?: ControlSize;
37
39
  }
38
40
 
39
41
  export interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {
40
42
  children: React.ReactNode;
41
- /** Tab list visual style.
42
- * @default "underline"
43
+ /** Tab list chrome.
44
+ * @default "ghost"
43
45
  * @see https://usefragments.com/components/tabs#variants */
44
- variant?: "underline" | "pills";
46
+ variant?: TabsVariant;
45
47
  /** Tab control size. Defaults to the nearest Tabs root or provider default. */
46
48
  size?: ControlSize;
47
49
  }
@@ -64,7 +66,7 @@ export interface TabsPanelProps extends React.HTMLAttributes<HTMLDivElement> {
64
66
  // Context for variant
65
67
  // ============================================
66
68
 
67
- const TabsVariantContext = React.createContext<"underline" | "pills">("underline");
69
+ const TabsVariantContext = React.createContext<TabsVariant>("ghost");
68
70
  const TabsSizeContext = React.createContext<ControlSize>("md");
69
71
 
70
72
  // ============================================
@@ -77,7 +79,7 @@ function TabsRoot({
77
79
  value,
78
80
  onValueChange,
79
81
  orientation = "horizontal",
80
- variant = "underline",
82
+ variant = "ghost",
81
83
  size: sizeProp,
82
84
  className,
83
85
  ...htmlProps
@@ -109,8 +111,9 @@ function TabsList({ children, variant, size: sizeProp, className, ...htmlProps }
109
111
  const rootSize = React.useContext(TabsSizeContext);
110
112
  const size = sizeProp ?? rootSize;
111
113
  const resolvedVariant = variant ?? rootVariant;
112
- const variantClass = resolvedVariant === "pills" ? styles.listPills : styles.listUnderline;
113
- const classes = [styles.list, variantClass, className].filter(Boolean).join(" ");
114
+ const classes = [styles.list, resolvedVariant === "soft" && styles.listSoft, className]
115
+ .filter(Boolean)
116
+ .join(" ");
114
117
 
115
118
  return (
116
119
  <TabsVariantContext.Provider value={resolvedVariant}>
@@ -122,7 +125,7 @@ function TabsList({ children, variant, size: sizeProp, className, ...htmlProps }
122
125
  data-variant={resolvedVariant}
123
126
  >
124
127
  {children}
125
- {resolvedVariant === "underline" && <BaseTabs.Indicator className={styles.indicator} />}
128
+ {resolvedVariant === "ghost" && <BaseTabs.Indicator className={styles.indicator} />}
126
129
  </BaseTabs.List>
127
130
  </TabsSizeContext.Provider>
128
131
  </TabsVariantContext.Provider>
@@ -132,7 +135,7 @@ function TabsList({ children, variant, size: sizeProp, className, ...htmlProps }
132
135
  function Tab({ children, value, disabled, className }: TabProps) {
133
136
  const variant = React.useContext(TabsVariantContext);
134
137
  const size = React.useContext(TabsSizeContext);
135
- const variantClass = variant === "pills" ? styles.tabPills : styles.tabUnderline;
138
+ const variantClass = variant === "soft" ? styles.tabSoft : styles.tabGhost;
136
139
  const sizeClass = size === "sm" ? styles.tabSm : size === "lg" ? styles.tabLg : styles.tabMd;
137
140
  const classes = [styles.tab, sizeClass, variantClass, className].filter(Boolean).join(" ");
138
141
 
@@ -10,8 +10,8 @@
10
10
  "propsSummary": [
11
11
  "children: node (required)",
12
12
  "as: h1|h2|h3|h4|h5|h6|p|span|label|div|strong|em|small|mark|del|ins|sub|sup|time|address|blockquote|cite|code|abbr (default: span)",
13
- "variant: section-label",
14
- "size: 2xs|xs|sm|base|md|lg|xl|2xl|3xl|4xl",
13
+ "role: caption|ui-compact|ui-standard|body-compact|body-relaxed|title-sm|title-md|title-lg|code|section-label|eyebrow",
14
+ "scale: 2xs|xs|sm|base|md|lg|xl|2xl|3xl|4xl",
15
15
  "weight: normal|medium|semibold|bold (default: \"normal\")",
16
16
  "color: primary|secondary|tertiary|muted|accent|success|warning|danger (default: \"primary\")",
17
17
  "font: sans|mono (default: sans)",
@@ -57,15 +57,27 @@
57
57
  "abbr"
58
58
  ]
59
59
  },
60
- "variant": {
60
+ "role": {
61
61
  "type": "enum",
62
- "description": "Preset text variant",
62
+ "description": "Typography role: one named setting of size, weight, line height and tracking. section-label is the small list heading; eyebrow is the small semibold label above a statement. A role owns the whole setting, so scale, weight, font and letterSpacing are unavailable beside it.",
63
63
  "required": false,
64
- "values": ["section-label", "eyebrow"]
64
+ "values": [
65
+ "caption",
66
+ "ui-compact",
67
+ "ui-standard",
68
+ "body-compact",
69
+ "body-relaxed",
70
+ "title-sm",
71
+ "title-md",
72
+ "title-lg",
73
+ "code",
74
+ "section-label",
75
+ "eyebrow"
76
+ ]
65
77
  },
66
- "size": {
78
+ "scale": {
67
79
  "type": "enum",
68
- "description": "Font size. 2xs (10), xs (12), sm/base (14), md (15 prose body), lg (20), xl (24), 2xl (30), 3xl (36 page title), 4xl (48 hero).",
80
+ "description": "Type-scale step for text with no role. 2xs (10), xs (12), sm/base (14), md (15 prose body), lg (20), xl (24), 2xl (30), 3xl (36 page title), 4xl (48 hero).",
69
81
  "required": false,
70
82
  "values": ["2xs", "xs", "sm", "base", "md", "lg", "xl", "2xl", "3xl", "4xl"]
71
83
  },
@@ -81,7 +93,16 @@
81
93
  "description": "Text color (muted is an alias for tertiary; success/warning/danger are for a run of text that carries a state on its own — prefer Badge or Alert when the state deserves a container)",
82
94
  "default": "\"primary\"",
83
95
  "required": false,
84
- "values": ["primary", "secondary", "tertiary", "muted", "accent", "success", "warning", "danger"]
96
+ "values": [
97
+ "primary",
98
+ "secondary",
99
+ "tertiary",
100
+ "muted",
101
+ "accent",
102
+ "success",
103
+ "warning",
104
+ "danger"
105
+ ]
85
106
  },
86
107
  "font": {
87
108
  "type": "enum",
@@ -118,7 +139,7 @@
118
139
  "Anything clickable (use Link or Button)"
119
140
  ],
120
141
  "guidelines": [
121
- "Pick the tag with as, the look with size — they are separate decisions",
142
+ "Pick the tag with as, the look with role (or scale) — they are separate decisions",
122
143
  "Never skip heading levels to get a smaller heading",
123
144
  "Color is for hierarchy and state, not decoration",
124
145
  "Truncated text needs the full string in title or a tooltip"
@@ -130,9 +151,9 @@
130
151
  },
131
152
  "examples": [
132
153
  {
133
- "name": "Sizes",
154
+ "name": "Scale",
134
155
  "description": "Ten steps from caption to hero, all on the same scale.",
135
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text size=\"2xs\">Extra extra small (2xs — 10px)</Text>\n <Text size=\"xs\">Extra small (xs — 12px)</Text>\n <Text size=\"sm\">Small (sm — 14px)</Text>\n <Text size=\"base\">Base size (14px)</Text>\n <Text size=\"md\">Medium prose body (md — 15px)</Text>\n <Text size=\"lg\">Large (lg — 20px)</Text>\n <Text size=\"xl\">Extra large (xl — 24px)</Text>\n <Text size=\"2xl\">Extra extra large (2xl — 30px)</Text>\n <Text size=\"3xl\">Page title (3xl — 36px)</Text>\n <Text size=\"4xl\">Hero display (4xl — 48px)</Text>\n</div>"
156
+ "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text scale=\"2xs\">Extra extra small (2xs — 10px)</Text>\n <Text scale=\"xs\">Extra small (xs — 12px)</Text>\n <Text scale=\"sm\">Small (sm — 14px)</Text>\n <Text scale=\"base\">Base size (14px)</Text>\n <Text scale=\"md\">Medium prose body (md — 15px)</Text>\n <Text scale=\"lg\">Large (lg — 20px)</Text>\n <Text scale=\"xl\">Extra large (xl — 24px)</Text>\n <Text scale=\"2xl\">Extra extra large (2xl — 30px)</Text>\n <Text scale=\"3xl\">Page title (3xl — 36px)</Text>\n <Text scale=\"4xl\">Hero display (4xl — 48px)</Text>\n</div>"
136
157
  },
137
158
  {
138
159
  "name": "Weights",
@@ -147,12 +168,12 @@
147
168
  {
148
169
  "name": "Semantic Elements",
149
170
  "description": "The as prop picks the tag, so the outline stays correct.",
150
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>\n <Text as=\"h1\" size=\"3xl\" weight=\"semibold\">Heading 1</Text>\n <Text as=\"h2\" size=\"xl\" weight=\"semibold\">Heading 2</Text>\n <Text as=\"h3\" size=\"lg\" weight=\"semibold\">Heading 3</Text>\n <Text as=\"p\" size=\"md\" color=\"secondary\">\n This is a paragraph of text that demonstrates the Text component\n with semantic paragraph element.\n </Text>\n</div>"
171
+ "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>\n <Text as=\"h1\" scale=\"3xl\" weight=\"semibold\">Heading 1</Text>\n <Text as=\"h2\" scale=\"xl\" weight=\"semibold\">Heading 2</Text>\n <Text as=\"h3\" scale=\"lg\" weight=\"semibold\">Heading 3</Text>\n <Text as=\"p\" scale=\"md\" color=\"secondary\">\n This is a paragraph of text that demonstrates the Text component\n with semantic paragraph element.\n </Text>\n</div>"
151
172
  },
152
173
  {
153
174
  "name": "Monospace",
154
175
  "description": "Fixed width for IDs, keys, and anything meant to be compared.",
155
- "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text font=\"mono\" size=\"sm\">const greeting = \"Hello, World!\";</Text>\n <Text font=\"mono\" size=\"sm\" color=\"secondary\">npm install @usefragments/ui</Text>\n</div>"
176
+ "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text font=\"mono\" scale=\"sm\">const greeting = \"Hello, World!\";</Text>\n <Text font=\"mono\" scale=\"sm\" color=\"secondary\">npm install @usefragments/ui</Text>\n</div>"
156
177
  },
157
178
  {
158
179
  "name": "Truncation",
@@ -180,7 +201,8 @@
180
201
  "contract": {
181
202
  "propsSummary": [
182
203
  "as: string - HTML element",
183
- "size: 2xs|xs|sm|base|md|lg|xl|2xl|3xl|4xl - font size (px: 10/12/14/14/15/20/24/30/36/48)",
204
+ "role: caption|ui-compact|ui-standard|body-compact|body-relaxed|title-sm|title-md|title-lg|code|section-label|eyebrow - typography role (owns size, weight, line height, tracking)",
205
+ "scale: 2xs|xs|sm|base|md|lg|xl|2xl|3xl|4xl - type-scale step for text with no role (px: 10/12/14/14/15/20/24/30/36/48)",
184
206
  "weight: normal|medium|semibold|bold - font weight",
185
207
  "color: primary|secondary|tertiary|muted|accent|success|warning|danger - text color (muted = tertiary; accent = brand spend; semantic colours for inline state)",
186
208
  "font: sans|mono - font family",
@@ -1,26 +1,25 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../tokens/measurements.generated" as measurements;
3
4
  @use "../../recipes/typography" as typography;
4
5
 
5
6
  .text {
6
7
  font-family: var(--fui-font-sans, $fui-font-sans);
7
8
  color: var(--fui-text-primary, $fui-text-primary);
8
- margin: 0;
9
+ margin: var(--fui-raw-space-0, #{measurements.raw-space(0)});
9
10
  }
10
11
 
11
- // Variants
12
- .variant-section-label {
12
+ // Label roles: the small list heading and the eyebrow.
13
+ .role-section-label {
13
14
  @include typography.role("ui-compact");
14
15
  }
15
16
 
16
- // Eyebrow: the small-caps label that names a surface above its statement
17
- // (page label, card section head). Always tertiary ink it is never the
18
- // thing the reader is meant to look at.
19
- .variant-eyebrow {
17
+ // Eyebrow: the small label that names a surface above its statement (page
18
+ // label, card section head). Caption size, semibold, natural case, always
19
+ // tertiary ink — it is never the thing the reader is meant to look at.
20
+ .role-eyebrow {
20
21
  @include typography.role("caption");
21
22
  font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
22
- letter-spacing: var(--fui-letter-spacing-wide, $fui-letter-spacing-wide);
23
- text-transform: uppercase;
24
23
  color: var(--fui-text-tertiary, $fui-text-tertiary);
25
24
  }
26
25
 
@@ -43,46 +42,46 @@
43
42
  }
44
43
  }
45
44
 
46
- // Font sizes
47
- .size-2xs {
45
+ // Scale steps, for text with no role
46
+ .scale-2xs {
48
47
  font-size: var(--fui-font-size-2xs, $fui-font-size-2xs);
49
48
  }
50
49
 
51
- .size-xs {
50
+ .scale-xs {
52
51
  font-size: var(--fui-font-size-xs, $fui-font-size-xs);
53
52
  }
54
53
 
55
- .size-sm {
54
+ .scale-sm {
56
55
  font-size: var(--fui-font-size-sm, $fui-font-size-sm);
57
56
  }
58
57
 
59
- .size-base {
58
+ .scale-base {
60
59
  font-size: var(--fui-font-size-base, $fui-font-size-base);
61
60
  }
62
61
 
63
- .size-md {
62
+ .scale-md {
64
63
  font-size: var(--fui-font-size-md, $fui-font-size-md);
65
64
  }
66
65
 
67
- .size-lg {
66
+ .scale-lg {
68
67
  font-size: var(--fui-font-size-lg, $fui-font-size-lg);
69
68
  }
70
69
 
71
- .size-xl {
70
+ .scale-xl {
72
71
  font-size: var(--fui-font-size-xl, $fui-font-size-xl);
73
72
  }
74
73
 
75
- .size-2xl {
74
+ .scale-2xl {
76
75
  font-size: var(--fui-font-size-2xl, $fui-font-size-2xl);
77
76
  }
78
77
 
79
- .size-3xl {
78
+ .scale-3xl {
80
79
  font-size: var(--fui-font-size-3xl, $fui-font-size-3xl);
81
80
  line-height: var(--fui-line-height-display, $fui-line-height-display);
82
81
  letter-spacing: var(--fui-letter-spacing-display, $fui-letter-spacing-display);
83
82
  }
84
83
 
85
- .size-4xl {
84
+ .scale-4xl {
86
85
  font-size: var(--fui-font-size-4xl, $fui-font-size-4xl);
87
86
  line-height: var(--fui-line-height-display, $fui-line-height-display);
88
87
  letter-spacing: var(--fui-letter-spacing-display, $fui-letter-spacing-display);
@@ -16,9 +16,11 @@ export type TextRole =
16
16
  | "title-md"
17
17
  | "title-lg"
18
18
  | "display"
19
- | "code";
19
+ | "code"
20
+ | "section-label"
21
+ | "eyebrow";
20
22
 
21
- export type TextSize = "2xs" | "xs" | "sm" | "base" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
23
+ export type TextScale = "2xs" | "xs" | "sm" | "base" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
22
24
  export type TextWeight = "normal" | "medium" | "semibold" | "bold";
23
25
  export type TextFont = "sans" | "mono";
24
26
  export type TextTracking = "normal" | "tight" | "tighter" | "tightest";
@@ -70,41 +72,44 @@ type TextSharedProps = Omit<React.HTMLAttributes<HTMLElement>, "color" | "role">
70
72
  truncate?: boolean;
71
73
  /** Number of lines before truncating (requires truncate=true) */
72
74
  lineClamp?: number;
73
- /** Letter-spacing preset. `"tight"` suits dense UI chrome labels (-0.01em);
74
- * `"tighter"` suits headings and stat values (-0.02em); `"tightest"` suits
75
- * display numerics (-0.025em). Omit for the font's default tracking. */
76
75
  /** Use tabular (fixed-width) numerals so digits align in columns. Ideal for
77
76
  * stat values, tables, timestamps, and any updating number. */
78
77
  tabularNums?: boolean;
79
78
  };
80
79
 
81
80
  type TextRoleProps = {
81
+ /** Typography role: one named setting of size, weight, line height and
82
+ * tracking. `section-label` is the small list heading; `eyebrow` is the
83
+ * small semibold label that names a surface above its statement. A role owns the
84
+ * whole setting, so `scale`, `weight`, `font` and `letterSpacing` are
85
+ * unavailable beside it. */
82
86
  role: TextRole;
83
- size?: never;
84
- variant?: never;
87
+ scale?: never;
85
88
  weight?: never;
86
89
  font?: never;
87
90
  letterSpacing?: never;
88
91
  };
89
92
 
90
- type TextLegacyScaleProps = {
93
+ type TextScaleProps = {
91
94
  role?: never;
92
- size?: TextSize;
93
- variant?: "section-label" | "eyebrow";
95
+ /** Step on the type scale, for text that has no role. */
96
+ scale?: TextScale;
94
97
  weight?: TextWeight;
95
98
  font?: TextFont;
99
+ /** Letter-spacing preset. `"tight"` suits dense UI chrome labels (-0.01em);
100
+ * `"tighter"` suits headings and stat values (-0.02em); `"tightest"` suits
101
+ * display numerics (-0.025em). Omit for the font's default tracking. */
96
102
  letterSpacing?: TextTracking;
97
103
  };
98
104
 
99
- export type TextProps = TextSharedProps & (TextRoleProps | TextLegacyScaleProps);
105
+ export type TextProps = TextSharedProps & (TextRoleProps | TextScaleProps);
100
106
 
101
107
  const TextRoot = React.forwardRef<HTMLElement, TextProps>(function Text(
102
108
  {
103
109
  children,
104
110
  as: Component = "span",
105
111
  role,
106
- variant,
107
- size,
112
+ scale,
108
113
  weight,
109
114
  color,
110
115
  font,
@@ -118,21 +123,18 @@ const TextRoot = React.forwardRef<HTMLElement, TextProps>(function Text(
118
123
  },
119
124
  ref
120
125
  ) {
121
- const ignoredLegacyProps = role
122
- ? [size, variant, weight, font, letterSpacing].some((value) => value !== undefined)
126
+ const ignoredScaleProps = role
127
+ ? [scale, weight, font, letterSpacing].some((value) => value !== undefined)
123
128
  : false;
124
129
 
125
- if (!isProductionBuild() && ignoredLegacyProps) {
126
- console.warn(
127
- "[Text] Semantic role takes precedence over size, variant, weight, font, and letterSpacing."
128
- );
130
+ if (!isProductionBuild() && ignoredScaleProps) {
131
+ console.warn("[Text] A role takes precedence over scale, weight, font, and letterSpacing.");
129
132
  }
130
133
 
131
134
  const classes = [
132
135
  styles.text,
133
136
  role && styles[`role-${role}`],
134
- !role && variant && styles[`variant-${variant}`],
135
- !role && size && styles[`size-${size}`],
137
+ !role && scale && styles[`scale-${scale}`],
136
138
  !role && weight && styles[`weight-${weight}`],
137
139
  color && styles[`color-${color}`],
138
140
  !role && font === "mono" && styles.mono,