@usefragments/ui 1.6.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 (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -1,25 +1,19 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Text",
4
- "description": "Typography component for rendering text with consistent styling. Supports various sizes, weights, colors, and semantic elements.",
4
+ "description": "Applies the type scale to any text element, without hand-rolling font rules.",
5
5
  "category": "display",
6
- "tags": [
7
- "text",
8
- "typography",
9
- "heading",
10
- "paragraph",
11
- "font"
12
- ],
6
+ "tags": ["text", "typography", "heading", "paragraph", "font"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Text/index.tsx",
15
9
  "exportName": "Text",
16
10
  "propsSummary": [
17
11
  "children: node (required)",
18
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)",
19
- "variant: section-label",
20
- "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",
21
15
  "weight: normal|medium|semibold|bold (default: \"normal\")",
22
- "color: primary|secondary|tertiary|muted|success|warning|danger (default: \"primary\")",
16
+ "color: primary|secondary|tertiary|muted|accent|success|warning|danger (default: \"primary\")",
23
17
  "font: sans|mono (default: sans)",
24
18
  "truncate: boolean",
25
19
  "lineClamp: number",
@@ -63,46 +57,40 @@
63
57
  "abbr"
64
58
  ]
65
59
  },
66
- "variant": {
60
+ "role": {
67
61
  "type": "enum",
68
- "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.",
69
63
  "required": false,
70
64
  "values": [
71
- "section-label"
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"
72
76
  ]
73
77
  },
74
- "size": {
78
+ "scale": {
75
79
  "type": "enum",
76
- "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).",
77
81
  "required": false,
78
- "values": [
79
- "2xs",
80
- "xs",
81
- "sm",
82
- "base",
83
- "md",
84
- "lg",
85
- "xl",
86
- "2xl",
87
- "3xl",
88
- "4xl"
89
- ]
82
+ "values": ["2xs", "xs", "sm", "base", "md", "lg", "xl", "2xl", "3xl", "4xl"]
90
83
  },
91
84
  "weight": {
92
85
  "type": "enum",
93
86
  "description": "Font weight",
94
87
  "default": "\"normal\"",
95
88
  "required": false,
96
- "values": [
97
- "normal",
98
- "medium",
99
- "semibold",
100
- "bold"
101
- ]
89
+ "values": ["normal", "medium", "semibold", "bold"]
102
90
  },
103
91
  "color": {
104
92
  "type": "enum",
105
- "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 \u2014 prefer Badge or Alert when the state deserves a container)",
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)",
106
94
  "default": "\"primary\"",
107
95
  "required": false,
108
96
  "values": [
@@ -110,6 +98,7 @@
110
98
  "secondary",
111
99
  "tertiary",
112
100
  "muted",
101
+ "accent",
113
102
  "success",
114
103
  "warning",
115
104
  "danger"
@@ -120,10 +109,7 @@
120
109
  "description": "Font family",
121
110
  "default": "sans",
122
111
  "required": false,
123
- "values": [
124
- "sans",
125
- "mono"
126
- ]
112
+ "values": ["sans", "mono"]
127
113
  },
128
114
  "truncate": {
129
115
  "type": "boolean",
@@ -143,57 +129,55 @@
143
129
  },
144
130
  "usage": {
145
131
  "when": [
146
- "Displaying text with specific typography styles",
147
- "Creating headings, paragraphs, or labels",
148
- "Text that needs truncation or line clamping",
149
- "Consistent typography across the application"
132
+ "Any text that should sit on the type scale",
133
+ "Headings and paragraphs that need real tags",
134
+ "Text that must truncate or clamp"
150
135
  ],
151
136
  "whenNot": [
152
- "Complex rich text (use a rich text editor)",
153
- "Code display (use CodeBlock)",
154
- "Interactive text (use Link or Button)"
137
+ "Rich or authored content (use Markdown)",
138
+ "Code (use CodeBlock)",
139
+ "Anything clickable (use Link or Button)"
155
140
  ],
156
141
  "guidelines": [
157
- "Use semantic elements (h1-h6, p) via the \"as\" prop",
158
- "Maintain heading hierarchy for accessibility",
159
- "Use color variants sparingly for visual hierarchy",
160
- "Consider truncation for user-generated content"
142
+ "Pick the tag with as, the look with role (or scale) they are separate decisions",
143
+ "Never skip heading levels to get a smaller heading",
144
+ "Color is for hierarchy and state, not decoration",
145
+ "Truncated text needs the full string in title or a tooltip"
161
146
  ],
162
147
  "accessibility": [
163
- "Use proper heading levels (h1-h6) for document structure",
164
- "Semantic elements convey meaning to screen readers",
165
- "Truncated text should have full content in title/tooltip"
148
+ "as keeps the document outline intact for screen readers",
149
+ "Clamped text still exposes its full content to assistive tech"
166
150
  ]
167
151
  },
168
152
  "examples": [
169
153
  {
170
- "name": "Sizes",
171
- "description": "Different text sizes",
172
- "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>"
154
+ "name": "Scale",
155
+ "description": "Ten steps from caption to hero, all on the same scale.",
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>"
173
157
  },
174
158
  {
175
159
  "name": "Weights",
176
- "description": "Different font weights",
160
+ "description": "Four weights — reach past semibold only for real emphasis.",
177
161
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text weight=\"normal\">Normal weight</Text>\n <Text weight=\"medium\">Medium weight</Text>\n <Text weight=\"semibold\">Semibold weight</Text>\n <Text weight=\"bold\">Bold weight</Text>\n</div>"
178
162
  },
179
163
  {
180
164
  "name": "Colors",
181
- "description": "Different text colors",
165
+ "description": "Dimmer tones push text back; success and danger carry state.",
182
166
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <Text color=\"primary\">Primary color (default)</Text>\n <Text color=\"secondary\">Secondary color</Text>\n <Text color=\"tertiary\">Tertiary color</Text>\n <Text color=\"muted\">Muted color (alias for tertiary)</Text>\n</div>"
183
167
  },
184
168
  {
185
169
  "name": "Semantic Elements",
186
- "description": "Using appropriate HTML elements",
187
- "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>"
170
+ "description": "The as prop picks the tag, so the outline stays correct.",
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>"
188
172
  },
189
173
  {
190
174
  "name": "Monospace",
191
- "description": "Monospace font for code-like text",
192
- "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>"
175
+ "description": "Fixed width for IDs, keys, and anything meant to be compared.",
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>"
193
177
  },
194
178
  {
195
179
  "name": "Truncation",
196
- "description": "Text truncation with ellipsis",
180
+ "description": "One line with an ellipsis, or clamp to a set number of lines.",
197
181
  "code": "<div style={{ width: '200px', display: 'flex', flexDirection: 'column', gap: '12px' }}>\n <Text truncate>\n This is a very long text that will be truncated with an ellipsis when it overflows.\n </Text>\n <Text truncate lineClamp={2}>\n This text will be clamped to two lines. Any content beyond two lines\n will be hidden and replaced with an ellipsis at the end.\n </Text>\n</div>"
198
182
  }
199
183
  ],
@@ -217,23 +201,19 @@
217
201
  "contract": {
218
202
  "propsSummary": [
219
203
  "as: string - HTML element",
220
- "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)",
221
206
  "weight: normal|medium|semibold|bold - font weight",
222
- "color: primary|secondary|tertiary|muted|success|warning|danger - text color (muted = tertiary; semantic colours for inline state)",
207
+ "color: primary|secondary|tertiary|muted|accent|success|warning|danger - text color (muted = tertiary; accent = brand spend; semantic colours for inline state)",
223
208
  "font: sans|mono - font family",
224
209
  "truncate: boolean - enable truncation",
225
210
  "lineClamp: number - max lines"
226
211
  ],
227
- "a11yRules": [
228
- "A11Y_HEADING_HIERARCHY",
229
- "A11Y_SEMANTIC_ELEMENTS"
230
- ]
212
+ "a11yRules": ["A11Y_HEADING_HIERARCHY", "A11Y_SEMANTIC_ELEMENTS"]
231
213
  },
232
214
  "ai": {
233
215
  "compositionPattern": "compound",
234
- "subComponents": [
235
- "Root"
236
- ]
216
+ "subComponents": ["Root"]
237
217
  },
238
218
  "provenance": {
239
219
  "source": "migrated",
@@ -1,18 +1,28 @@
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
 
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 {
21
+ @include typography.role("caption");
22
+ font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
23
+ color: var(--fui-text-tertiary, $fui-text-tertiary);
24
+ }
25
+
16
26
  @each $role
17
27
  in (
18
28
  "caption",
@@ -23,6 +33,7 @@
23
33
  "title-sm",
24
34
  "title-md",
25
35
  "title-lg",
36
+ "display",
26
37
  "code"
27
38
  )
28
39
  {
@@ -31,46 +42,46 @@
31
42
  }
32
43
  }
33
44
 
34
- // Font sizes
35
- .size-2xs {
45
+ // Scale steps, for text with no role
46
+ .scale-2xs {
36
47
  font-size: var(--fui-font-size-2xs, $fui-font-size-2xs);
37
48
  }
38
49
 
39
- .size-xs {
50
+ .scale-xs {
40
51
  font-size: var(--fui-font-size-xs, $fui-font-size-xs);
41
52
  }
42
53
 
43
- .size-sm {
54
+ .scale-sm {
44
55
  font-size: var(--fui-font-size-sm, $fui-font-size-sm);
45
56
  }
46
57
 
47
- .size-base {
58
+ .scale-base {
48
59
  font-size: var(--fui-font-size-base, $fui-font-size-base);
49
60
  }
50
61
 
51
- .size-md {
62
+ .scale-md {
52
63
  font-size: var(--fui-font-size-md, $fui-font-size-md);
53
64
  }
54
65
 
55
- .size-lg {
66
+ .scale-lg {
56
67
  font-size: var(--fui-font-size-lg, $fui-font-size-lg);
57
68
  }
58
69
 
59
- .size-xl {
70
+ .scale-xl {
60
71
  font-size: var(--fui-font-size-xl, $fui-font-size-xl);
61
72
  }
62
73
 
63
- .size-2xl {
74
+ .scale-2xl {
64
75
  font-size: var(--fui-font-size-2xl, $fui-font-size-2xl);
65
76
  }
66
77
 
67
- .size-3xl {
78
+ .scale-3xl {
68
79
  font-size: var(--fui-font-size-3xl, $fui-font-size-3xl);
69
80
  line-height: var(--fui-line-height-display, $fui-line-height-display);
70
81
  letter-spacing: var(--fui-letter-spacing-display, $fui-letter-spacing-display);
71
82
  }
72
83
 
73
- .size-4xl {
84
+ .scale-4xl {
74
85
  font-size: var(--fui-font-size-4xl, $fui-font-size-4xl);
75
86
  line-height: var(--fui-line-height-display, $fui-line-height-display);
76
87
  letter-spacing: var(--fui-letter-spacing-display, $fui-letter-spacing-display);
@@ -107,22 +118,27 @@
107
118
  color: var(--fui-text-tertiary, $fui-text-tertiary);
108
119
  }
109
120
 
121
+ .color-accent {
122
+ color: var(--fui-color-accent, $fui-color-accent);
123
+ }
124
+
110
125
  // Semantic colours, for a run of text that carries a state on its own — a
111
126
  // count going over budget, an inline "expired", a figure in the red. Where
112
127
  // there is a component for the job (Badge, Alert, Callout) use that instead:
113
128
  // this is for the cases where the state is one word inside a line, and
114
129
  // wrapping it in a box would be more chrome than the fact is worth. Colour is
115
- // never the only carrier — the words still have to say it.
130
+ // never the only carrier — the words still have to say it. Text uses the
131
+ // same *-text stop as Badge so inline ink and chips stay one family.
116
132
  .color-success {
117
- color: var(--fui-color-success, $fui-color-success);
133
+ color: var(--fui-color-success-text, $fui-color-success-text);
118
134
  }
119
135
 
120
136
  .color-warning {
121
- color: var(--fui-color-warning, $fui-color-warning);
137
+ color: var(--fui-color-warning-text, $fui-color-warning-text);
122
138
  }
123
139
 
124
140
  .color-danger {
125
- color: var(--fui-color-danger, $fui-color-danger);
141
+ color: var(--fui-color-danger-text, $fui-color-danger-text);
126
142
  }
127
143
 
128
144
  // Font family
@@ -1,127 +1,167 @@
1
- import * as React from 'react';
2
- import styles from './Text.module.scss';
1
+ import * as React from "react";
2
+ import styles from "./Text.module.scss";
3
+ import { isProductionBuild } from "../../utils/env";
3
4
 
4
5
  /**
5
6
  * Typography component for rendering text with consistent styling.
6
7
  * @see https://usefragments.com/components/text
7
8
  */
8
9
  export type TextRole =
9
- | 'caption'
10
- | 'ui-compact'
11
- | 'ui-standard'
12
- | 'body-compact'
13
- | 'body-relaxed'
14
- | 'title-sm'
15
- | 'title-md'
16
- | 'title-lg'
17
- | 'code';
10
+ | "caption"
11
+ | "ui-compact"
12
+ | "ui-standard"
13
+ | "body-compact"
14
+ | "body-relaxed"
15
+ | "title-sm"
16
+ | "title-md"
17
+ | "title-lg"
18
+ | "display"
19
+ | "code"
20
+ | "section-label"
21
+ | "eyebrow";
18
22
 
19
- export type TextSize = '2xs' | 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
20
- export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
21
- export type TextFont = 'sans' | 'mono';
22
- export type TextTracking = 'normal' | 'tight' | 'tighter' | 'tightest';
23
+ export type TextScale = "2xs" | "xs" | "sm" | "base" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
24
+ export type TextWeight = "normal" | "medium" | "semibold" | "bold";
25
+ export type TextFont = "sans" | "mono";
26
+ export type TextTracking = "normal" | "tight" | "tighter" | "tightest";
23
27
 
24
- type TextSharedProps = Omit<React.HTMLAttributes<HTMLElement>, 'color' | 'role'> & {
28
+ type TextSharedProps = Omit<React.HTMLAttributes<HTMLElement>, "color" | "role"> & {
25
29
  children: React.ReactNode;
26
30
  /** HTML element to render.
27
31
  * @default "span" */
28
- 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';
29
- /** Text color. `"muted"` is an alias for `"tertiary"`. `"success" | "warning" | "danger"`
32
+ as?:
33
+ | "h1"
34
+ | "h2"
35
+ | "h3"
36
+ | "h4"
37
+ | "h5"
38
+ | "h6"
39
+ | "p"
40
+ | "span"
41
+ | "label"
42
+ | "div"
43
+ | "strong"
44
+ | "em"
45
+ | "small"
46
+ | "mark"
47
+ | "del"
48
+ | "ins"
49
+ | "sub"
50
+ | "sup"
51
+ | "time"
52
+ | "address"
53
+ | "blockquote"
54
+ | "cite"
55
+ | "code"
56
+ | "abbr";
57
+ /** Text color. `"muted"` is an alias for `"tertiary"`. `"accent"` is the brand
58
+ * spend for one word inside a line (a repo name). `"success" | "warning" | "danger"`
30
59
  * are for a run of text that carries a state on its own; prefer Badge or Alert when the
31
60
  * state deserves a container.
32
61
  * @default "primary" */
33
- color?: 'primary' | 'secondary' | 'tertiary' | 'muted' | 'success' | 'warning' | 'danger';
62
+ color?:
63
+ | "primary"
64
+ | "secondary"
65
+ | "tertiary"
66
+ | "muted"
67
+ | "accent"
68
+ | "success"
69
+ | "warning"
70
+ | "danger";
34
71
  /** Truncate text with ellipsis when it overflows */
35
72
  truncate?: boolean;
36
73
  /** Number of lines before truncating (requires truncate=true) */
37
74
  lineClamp?: number;
38
- /** Letter-spacing preset. `"tight"` suits dense UI chrome labels (-0.01em);
39
- * `"tighter"` suits headings and stat values (-0.02em); `"tightest"` suits
40
- * display numerics (-0.025em). Omit for the font's default tracking. */
41
75
  /** Use tabular (fixed-width) numerals so digits align in columns. Ideal for
42
76
  * stat values, tables, timestamps, and any updating number. */
43
77
  tabularNums?: boolean;
44
78
  };
45
79
 
46
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. */
47
86
  role: TextRole;
48
- size?: never;
49
- variant?: never;
87
+ scale?: never;
50
88
  weight?: never;
51
89
  font?: never;
52
90
  letterSpacing?: never;
53
91
  };
54
92
 
55
- type TextLegacyScaleProps = {
93
+ type TextScaleProps = {
56
94
  role?: never;
57
- size?: TextSize;
58
- variant?: 'section-label';
95
+ /** Step on the type scale, for text that has no role. */
96
+ scale?: TextScale;
59
97
  weight?: TextWeight;
60
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. */
61
102
  letterSpacing?: TextTracking;
62
103
  };
63
104
 
64
- export type TextProps = TextSharedProps & (TextRoleProps | TextLegacyScaleProps);
105
+ export type TextProps = TextSharedProps & (TextRoleProps | TextScaleProps);
65
106
 
66
- const TextRoot = React.forwardRef<HTMLElement, TextProps>(
67
- function Text(
68
- {
69
- children,
70
- as: Component = 'span',
71
- role,
72
- variant,
73
- size,
74
- weight,
75
- color,
76
- font,
77
- truncate,
78
- lineClamp,
79
- letterSpacing,
80
- tabularNums,
81
- className,
82
- style,
83
- ...htmlProps
84
- },
85
- ref
86
- ) {
87
- const ignoredLegacyProps = role
88
- ? [size, variant, weight, font, letterSpacing].some((value) => value !== undefined)
89
- : false;
107
+ const TextRoot = React.forwardRef<HTMLElement, TextProps>(function Text(
108
+ {
109
+ children,
110
+ as: Component = "span",
111
+ role,
112
+ scale,
113
+ weight,
114
+ color,
115
+ font,
116
+ truncate,
117
+ lineClamp,
118
+ letterSpacing,
119
+ tabularNums,
120
+ className,
121
+ style,
122
+ ...htmlProps
123
+ },
124
+ ref
125
+ ) {
126
+ const ignoredScaleProps = role
127
+ ? [scale, weight, font, letterSpacing].some((value) => value !== undefined)
128
+ : false;
90
129
 
91
- if (process.env.NODE_ENV !== 'production' && ignoredLegacyProps) {
92
- console.warn(
93
- '[Text] Semantic role takes precedence over size, variant, weight, font, and letterSpacing.'
94
- );
95
- }
130
+ if (!isProductionBuild() && ignoredScaleProps) {
131
+ console.warn("[Text] A role takes precedence over scale, weight, font, and letterSpacing.");
132
+ }
96
133
 
97
- const classes = [
98
- styles.text,
99
- role && styles[`role-${role}`],
100
- !role && variant && styles[`variant-${variant}`],
101
- !role && size && styles[`size-${size}`],
102
- !role && weight && styles[`weight-${weight}`],
103
- color && styles[`color-${color}`],
104
- !role && font === 'mono' && styles.mono,
105
- truncate && styles.truncate,
106
- lineClamp && styles.lineClamp,
107
- !role && letterSpacing && styles[`tracking-${letterSpacing}`],
108
- tabularNums && styles.tabularNums,
109
- className,
110
- ]
111
- .filter(Boolean)
112
- .join(' ');
134
+ const classes = [
135
+ styles.text,
136
+ role && styles[`role-${role}`],
137
+ !role && scale && styles[`scale-${scale}`],
138
+ !role && weight && styles[`weight-${weight}`],
139
+ color && styles[`color-${color}`],
140
+ !role && font === "mono" && styles.mono,
141
+ truncate && styles.truncate,
142
+ lineClamp && styles.lineClamp,
143
+ !role && letterSpacing && styles[`tracking-${letterSpacing}`],
144
+ tabularNums && styles.tabularNums,
145
+ className,
146
+ ]
147
+ .filter(Boolean)
148
+ .join(" ");
113
149
 
114
- const lineClampStyle = lineClamp
115
- ? { '--fui-line-clamp': lineClamp, ...style } as React.CSSProperties
116
- : style;
150
+ const lineClampStyle = lineClamp
151
+ ? ({ "--fui-line-clamp": lineClamp, ...style } as React.CSSProperties)
152
+ : style;
117
153
 
118
- return (
119
- <Component ref={ref as React.Ref<never>} className={classes} style={lineClampStyle} {...htmlProps}>
120
- {children}
121
- </Component>
122
- );
123
- }
124
- );
154
+ return (
155
+ <Component
156
+ ref={ref as React.Ref<never>}
157
+ className={classes}
158
+ style={lineClampStyle}
159
+ {...htmlProps}
160
+ >
161
+ {children}
162
+ </Component>
163
+ );
164
+ });
125
165
 
126
166
  export const Text = Object.assign(TextRoot, {
127
167
  Root: TextRoot,