@usefragments/ui 1.5.3 → 1.6.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 (497) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/ui.css +8808 -5810
  3. package/dist/chart.cjs +7 -20
  4. package/dist/chart.js +7 -20
  5. package/dist/colorpicker.cjs +2 -1
  6. package/dist/colorpicker.js +2 -1
  7. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  8. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  9. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  10. package/dist/components/Alert/Alert.module.scss.js +12 -12
  11. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  12. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  13. package/dist/components/AppShell/index.cjs +5 -3
  14. package/dist/components/AppShell/index.d.ts +4 -2
  15. package/dist/components/AppShell/index.d.ts.map +1 -1
  16. package/dist/components/AppShell/index.js +5 -3
  17. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  18. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  19. package/dist/components/Avatar/index.cjs +100 -118
  20. package/dist/components/Avatar/index.d.ts +7 -5
  21. package/dist/components/Avatar/index.d.ts.map +1 -1
  22. package/dist/components/Avatar/index.js +100 -118
  23. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  24. package/dist/components/Badge/Badge.module.scss.js +19 -19
  25. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  26. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  27. package/dist/components/Box/Box.module.scss.cjs +152 -152
  28. package/dist/components/Box/Box.module.scss.js +152 -152
  29. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  30. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  31. package/dist/components/Button/Button.module.scss.cjs +14 -14
  32. package/dist/components/Button/Button.module.scss.js +14 -14
  33. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  34. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  35. package/dist/components/Card/Card.module.scss.cjs +18 -18
  36. package/dist/components/Card/Card.module.scss.js +18 -18
  37. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  38. package/dist/components/Chart/Chart.module.scss.js +15 -15
  39. package/dist/components/Chart/index.d.ts +7 -7
  40. package/dist/components/Chart/index.d.ts.map +1 -1
  41. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  42. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  43. package/dist/components/Checkbox/index.cjs +4 -6
  44. package/dist/components/Checkbox/index.d.ts.map +1 -1
  45. package/dist/components/Checkbox/index.js +4 -6
  46. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  47. package/dist/components/Chip/Chip.module.scss.js +15 -15
  48. package/dist/components/Chip/index.cjs +4 -5
  49. package/dist/components/Chip/index.d.ts +1 -1
  50. package/dist/components/Chip/index.d.ts.map +1 -1
  51. package/dist/components/Chip/index.js +2 -3
  52. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +22 -22
  53. package/dist/components/CodeBlock/CodeBlock.module.scss.js +22 -22
  54. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  55. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  56. package/dist/components/Collapsible/index.cjs +3 -2
  57. package/dist/components/Collapsible/index.d.ts +3 -3
  58. package/dist/components/Collapsible/index.d.ts.map +1 -1
  59. package/dist/components/Collapsible/index.js +3 -2
  60. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  61. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  62. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  63. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  64. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  65. package/dist/components/Combobox/index.cjs +4 -4
  66. package/dist/components/Combobox/index.d.ts.map +1 -1
  67. package/dist/components/Combobox/index.js +4 -4
  68. package/dist/components/Command/Command.module.scss.cjs +11 -11
  69. package/dist/components/Command/Command.module.scss.js +11 -11
  70. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  71. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  72. package/dist/components/ConversationList/index.cjs +40 -44
  73. package/dist/components/ConversationList/index.d.ts +3 -3
  74. package/dist/components/ConversationList/index.d.ts.map +1 -1
  75. package/dist/components/ConversationList/index.js +40 -44
  76. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  77. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  78. package/dist/components/DataTable/index.d.ts +5 -4
  79. package/dist/components/DataTable/index.d.ts.map +1 -1
  80. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  81. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  82. package/dist/components/DatePicker/index.d.ts.map +1 -1
  83. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  84. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  85. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  86. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  87. package/dist/components/Drawer/index.cjs +1 -1
  88. package/dist/components/Drawer/index.js +1 -1
  89. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  90. package/dist/components/Editor/Editor.module.scss.js +23 -23
  91. package/dist/components/EmptyState/EmptyState.module.scss.cjs +12 -12
  92. package/dist/components/EmptyState/EmptyState.module.scss.js +12 -12
  93. package/dist/components/Field/Field.module.scss.cjs +8 -5
  94. package/dist/components/Field/Field.module.scss.js +8 -5
  95. package/dist/components/Field/index.cjs +10 -1
  96. package/dist/components/Field/index.d.ts +9 -2
  97. package/dist/components/Field/index.d.ts.map +1 -1
  98. package/dist/components/Field/index.js +10 -1
  99. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  100. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  101. package/dist/components/Form/Form.module.scss.cjs +5 -2
  102. package/dist/components/Form/Form.module.scss.js +5 -2
  103. package/dist/components/Form/index.cjs +6 -1
  104. package/dist/components/Form/index.d.ts +8 -3
  105. package/dist/components/Form/index.d.ts.map +1 -1
  106. package/dist/components/Form/index.js +6 -1
  107. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  108. package/dist/components/Grid/Grid.module.scss.js +54 -72
  109. package/dist/components/Grid/index.cjs +57 -77
  110. package/dist/components/Grid/index.d.ts +11 -11
  111. package/dist/components/Grid/index.d.ts.map +1 -1
  112. package/dist/components/Grid/index.js +57 -77
  113. package/dist/components/Header/Header.module.scss.cjs +33 -33
  114. package/dist/components/Header/Header.module.scss.js +33 -33
  115. package/dist/components/Header/index.cjs +2 -1
  116. package/dist/components/Header/index.d.ts.map +1 -1
  117. package/dist/components/Header/index.js +2 -1
  118. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  119. package/dist/components/Icon/Icon.module.scss.js +30 -9
  120. package/dist/components/Icon/index.cjs +30 -48
  121. package/dist/components/Icon/index.d.ts +6 -6
  122. package/dist/components/Icon/index.d.ts.map +1 -1
  123. package/dist/components/Icon/index.js +30 -48
  124. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  125. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  126. package/dist/components/Input/Input.module.scss.cjs +19 -25
  127. package/dist/components/Input/Input.module.scss.js +19 -25
  128. package/dist/components/Input/index.cjs +1 -2
  129. package/dist/components/Input/index.d.ts.map +1 -1
  130. package/dist/components/Input/index.js +1 -2
  131. package/dist/components/Link/Link.module.scss.cjs +10 -10
  132. package/dist/components/Link/Link.module.scss.js +10 -10
  133. package/dist/components/List/List.module.scss.cjs +19 -19
  134. package/dist/components/List/List.module.scss.js +19 -19
  135. package/dist/components/List/index.cjs +4 -7
  136. package/dist/components/List/index.d.ts.map +1 -1
  137. package/dist/components/List/index.js +4 -7
  138. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  139. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  140. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  141. package/dist/components/Loading/Loading.module.scss.js +30 -30
  142. package/dist/components/Loading/index.cjs +39 -67
  143. package/dist/components/Loading/index.d.ts +6 -6
  144. package/dist/components/Loading/index.d.ts.map +1 -1
  145. package/dist/components/Loading/index.js +39 -67
  146. package/dist/components/Main/Main.module.scss.cjs +7 -7
  147. package/dist/components/Main/Main.module.scss.js +7 -7
  148. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  149. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  150. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  151. package/dist/components/Menu/Menu.module.scss.js +16 -16
  152. package/dist/components/Menu/index.cjs +19 -61
  153. package/dist/components/Menu/index.d.ts +10 -10
  154. package/dist/components/Menu/index.d.ts.map +1 -1
  155. package/dist/components/Menu/index.js +19 -61
  156. package/dist/components/Message/Message.module.scss.cjs +18 -21
  157. package/dist/components/Message/Message.module.scss.js +18 -21
  158. package/dist/components/Message/index.cjs +15 -2
  159. package/dist/components/Message/index.d.ts.map +1 -1
  160. package/dist/components/Message/index.js +15 -2
  161. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  162. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  163. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  164. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  165. package/dist/components/Pagination/index.cjs +5 -2
  166. package/dist/components/Pagination/index.d.ts +3 -1
  167. package/dist/components/Pagination/index.d.ts.map +1 -1
  168. package/dist/components/Pagination/index.js +5 -2
  169. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  170. package/dist/components/Popover/Popover.module.scss.js +10 -10
  171. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  172. package/dist/components/Progress/Progress.module.scss.js +29 -32
  173. package/dist/components/Progress/geometry.cjs +30 -0
  174. package/dist/components/Progress/geometry.d.ts +8 -0
  175. package/dist/components/Progress/geometry.d.ts.map +1 -0
  176. package/dist/components/Progress/geometry.js +30 -0
  177. package/dist/components/Progress/index.cjs +40 -29
  178. package/dist/components/Progress/index.d.ts +4 -3
  179. package/dist/components/Progress/index.d.ts.map +1 -1
  180. package/dist/components/Progress/index.js +40 -29
  181. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  182. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  183. package/dist/components/Prompt/index.cjs +5 -4
  184. package/dist/components/Prompt/index.d.ts.map +1 -1
  185. package/dist/components/Prompt/index.js +5 -4
  186. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  187. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  188. package/dist/components/RadioGroup/index.cjs +7 -6
  189. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  190. package/dist/components/RadioGroup/index.js +7 -6
  191. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  192. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  193. package/dist/components/ScrollArea/index.cjs +66 -42
  194. package/dist/components/ScrollArea/index.d.ts +3 -2
  195. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  196. package/dist/components/ScrollArea/index.js +66 -42
  197. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  198. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  199. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  200. package/dist/components/ScrollArea/scroll-state.js +58 -0
  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 +3 -2
  204. package/dist/components/Select/index.d.ts.map +1 -1
  205. package/dist/components/Select/index.js +3 -2
  206. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  207. package/dist/components/Separator/Separator.module.scss.js +13 -10
  208. package/dist/components/Separator/index.cjs +37 -38
  209. package/dist/components/Separator/index.d.ts +4 -4
  210. package/dist/components/Separator/index.d.ts.map +1 -1
  211. package/dist/components/Separator/index.js +37 -38
  212. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  213. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  214. package/dist/components/Sidebar/index.cjs +5 -3
  215. package/dist/components/Sidebar/index.d.ts +6 -1
  216. package/dist/components/Sidebar/index.d.ts.map +1 -1
  217. package/dist/components/Sidebar/index.js +5 -3
  218. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -38
  219. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -38
  220. package/dist/components/Skeleton/index.cjs +41 -55
  221. package/dist/components/Skeleton/index.d.ts +7 -7
  222. package/dist/components/Skeleton/index.d.ts.map +1 -1
  223. package/dist/components/Skeleton/index.js +41 -55
  224. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  225. package/dist/components/Slider/Slider.module.scss.js +12 -12
  226. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  227. package/dist/components/Stack/Stack.module.scss.js +25 -45
  228. package/dist/components/Stack/index.cjs +106 -101
  229. package/dist/components/Stack/index.d.ts +7 -7
  230. package/dist/components/Stack/index.d.ts.map +1 -1
  231. package/dist/components/Stack/index.js +106 -101
  232. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  233. package/dist/components/Switch/Switch.module.scss.js +32 -0
  234. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  235. package/dist/components/Switch/index.d.ts +37 -1
  236. package/dist/components/Switch/index.d.ts.map +1 -1
  237. package/dist/components/{Toggle → Switch}/index.js +5 -10
  238. package/dist/components/Table/Table.module.scss.cjs +18 -27
  239. package/dist/components/Table/Table.module.scss.js +18 -27
  240. package/dist/components/Table/index.d.ts +6 -5
  241. package/dist/components/Table/index.d.ts.map +1 -1
  242. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  243. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  244. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  245. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  246. package/dist/components/Tabs/index.cjs +2 -2
  247. package/dist/components/Tabs/index.js +2 -2
  248. package/dist/components/Text/Text.module.scss.cjs +93 -57
  249. package/dist/components/Text/Text.module.scss.js +93 -57
  250. package/dist/components/Text/index.cjs +14 -6
  251. package/dist/components/Text/index.d.ts +25 -15
  252. package/dist/components/Text/index.d.ts.map +1 -1
  253. package/dist/components/Text/index.js +14 -6
  254. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  255. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  256. package/dist/components/Textarea/index.cjs +5 -10
  257. package/dist/components/Textarea/index.d.ts.map +1 -1
  258. package/dist/components/Textarea/index.js +5 -10
  259. package/dist/components/Theme/context.cjs +39 -0
  260. package/dist/components/Theme/context.d.ts +21 -0
  261. package/dist/components/Theme/context.d.ts.map +1 -0
  262. package/dist/components/Theme/context.js +22 -0
  263. package/dist/components/Theme/index.cjs +14 -209
  264. package/dist/components/Theme/index.d.ts +4 -37
  265. package/dist/components/Theme/index.d.ts.map +1 -1
  266. package/dist/components/Theme/index.js +9 -204
  267. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +6 -6
  268. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +23 -0
  269. package/dist/components/ThemeToggle/index.cjs +115 -0
  270. package/dist/components/ThemeToggle/index.d.ts +21 -0
  271. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  272. package/dist/components/ThemeToggle/index.js +115 -0
  273. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  274. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  275. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  276. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  277. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  278. package/dist/components/ThinkingIndicator/index.js +34 -41
  279. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  280. package/dist/components/Toast/Toast.module.scss.js +20 -20
  281. package/dist/components/Toggle/index.d.ts +2 -42
  282. package/dist/components/Toggle/index.d.ts.map +1 -1
  283. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  284. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  285. package/dist/components/ToggleGroup/index.cjs +3 -2
  286. package/dist/components/ToggleGroup/index.d.ts +2 -1
  287. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  288. package/dist/components/ToggleGroup/index.js +3 -2
  289. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  290. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  291. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  292. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  293. package/dist/data-table.cjs +12 -9
  294. package/dist/data-table.js +12 -9
  295. package/dist/datepicker.cjs +2 -1
  296. package/dist/datepicker.js +2 -1
  297. package/dist/index.cjs +100 -98
  298. package/dist/index.d.ts +2 -2
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +4 -2
  301. package/dist/markdown.cjs +1 -1
  302. package/dist/markdown.js +2 -2
  303. package/dist/measurements/generated.cjs +296 -0
  304. package/dist/measurements/generated.d.ts +261 -0
  305. package/dist/measurements/generated.d.ts.map +1 -0
  306. package/dist/measurements/generated.js +296 -0
  307. package/dist/measurements/index.d.ts +2 -0
  308. package/dist/measurements/index.d.ts.map +1 -0
  309. package/dist/measurements.cjs +6 -0
  310. package/dist/measurements.js +6 -0
  311. package/dist/recipes/popup.cjs +14 -0
  312. package/dist/recipes/popup.d.ts +4 -0
  313. package/dist/recipes/popup.d.ts.map +1 -0
  314. package/dist/recipes/popup.js +14 -0
  315. package/dist/recipes/table-chrome.cjs +18 -0
  316. package/dist/recipes/table-chrome.d.ts +10 -0
  317. package/dist/recipes/table-chrome.d.ts.map +1 -0
  318. package/dist/recipes/table-chrome.js +18 -0
  319. package/dist/table.cjs +5 -2
  320. package/dist/table.js +5 -2
  321. package/dist/utils/layout-spacing.cjs +27 -0
  322. package/dist/utils/layout-spacing.d.ts +5 -0
  323. package/dist/utils/layout-spacing.d.ts.map +1 -0
  324. package/dist/utils/layout-spacing.js +27 -0
  325. package/dist/utils/seed-derivation.cjs +4 -42
  326. package/dist/utils/seed-derivation.d.ts +4 -3
  327. package/dist/utils/seed-derivation.d.ts.map +1 -1
  328. package/dist/utils/seed-derivation.js +4 -42
  329. package/dist/utils/theme-presets.cjs +1 -0
  330. package/dist/utils/theme-presets.d.ts +3 -2
  331. package/dist/utils/theme-presets.d.ts.map +1 -1
  332. package/dist/utils/theme-presets.js +1 -0
  333. package/fragments.json +1 -1
  334. package/package.json +23 -4
  335. package/src/components/Accordion/Accordion.module.scss +31 -52
  336. package/src/components/Alert/Alert.module.scss +28 -44
  337. package/src/components/AppShell/AppShell.module.scss +6 -3
  338. package/src/components/AppShell/index.tsx +8 -4
  339. package/src/components/Avatar/Avatar.module.scss +22 -60
  340. package/src/components/Avatar/index.tsx +152 -146
  341. package/src/components/Badge/Badge.module.scss +51 -46
  342. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  343. package/src/components/Box/Box.module.scss +253 -81
  344. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +10 -11
  345. package/src/components/Button/Button.module.scss +52 -57
  346. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  347. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  348. package/src/components/Card/Card.module.scss +211 -175
  349. package/src/components/Chart/Chart.module.scss +28 -29
  350. package/src/components/Chart/index.tsx +40 -53
  351. package/src/components/Checkbox/Checkbox.module.scss +43 -64
  352. package/src/components/Checkbox/index.tsx +4 -9
  353. package/src/components/Chip/Chip.contract.json +4 -3
  354. package/src/components/Chip/Chip.module.scss +23 -34
  355. package/src/components/Chip/index.tsx +3 -4
  356. package/src/components/CodeBlock/CodeBlock.module.scss +102 -215
  357. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  358. package/src/components/Collapsible/index.tsx +22 -26
  359. package/src/components/ColorPicker/ColorPicker.module.scss +42 -24
  360. package/src/components/ColorPicker/index.tsx +2 -1
  361. package/src/components/Combobox/Combobox.module.scss +60 -73
  362. package/src/components/Combobox/index.tsx +7 -5
  363. package/src/components/Command/Command.module.scss +47 -77
  364. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  365. package/src/components/ConversationList/index.tsx +55 -59
  366. package/src/components/DataTable/DataTable.module.scss +76 -216
  367. package/src/components/DataTable/index.tsx +20 -25
  368. package/src/components/DatePicker/DatePicker.module.scss +54 -33
  369. package/src/components/DatePicker/index.tsx +2 -1
  370. package/src/components/Dialog/Dialog.module.scss +42 -66
  371. package/src/components/Drawer/Drawer.module.scss +93 -99
  372. package/src/components/Drawer/index.tsx +1 -1
  373. package/src/components/Editor/Editor.module.scss +115 -220
  374. package/src/components/EmptyState/EmptyState.module.scss +38 -85
  375. package/src/components/Field/Field.contract.json +2 -1
  376. package/src/components/Field/Field.module.scss +9 -11
  377. package/src/components/Field/index.tsx +27 -1
  378. package/src/components/Fieldset/Fieldset.module.scss +14 -6
  379. package/src/components/Form/Form.contract.json +10 -23
  380. package/src/components/Form/Form.module.scss +9 -4
  381. package/src/components/Form/index.tsx +22 -7
  382. package/src/components/Grid/Grid.module.scss +159 -63
  383. package/src/components/Grid/index.tsx +107 -126
  384. package/src/components/Header/Header.module.scss +25 -32
  385. package/src/components/Header/index.tsx +2 -1
  386. package/src/components/Icon/Icon.module.scss +16 -0
  387. package/src/components/Icon/index.tsx +74 -86
  388. package/src/components/IconButton/IconButton.module.scss +11 -21
  389. package/src/components/Input/Input.module.scss +67 -55
  390. package/src/components/Input/index.tsx +1 -2
  391. package/src/components/Link/Link.module.scss +8 -9
  392. package/src/components/List/List.module.scss +16 -21
  393. package/src/components/List/index.tsx +4 -10
  394. package/src/components/Listbox/Listbox.module.scss +26 -54
  395. package/src/components/Loading/Loading.module.scss +23 -33
  396. package/src/components/Loading/index.tsx +68 -97
  397. package/src/components/Main/Main.module.scss +3 -5
  398. package/src/components/Markdown/Markdown.module.scss +36 -184
  399. package/src/components/Markdown/index.tsx +2 -2
  400. package/src/components/Menu/Menu.module.scss +48 -133
  401. package/src/components/Menu/index.tsx +57 -89
  402. package/src/components/Message/Message.module.scss +52 -142
  403. package/src/components/Message/index.tsx +16 -6
  404. package/src/components/NavigationMenu/NavigationMenu.module.scss +59 -52
  405. package/src/components/Pagination/Pagination.module.scss +32 -25
  406. package/src/components/Pagination/index.tsx +7 -2
  407. package/src/components/Popover/Popover.module.scss +37 -73
  408. package/src/components/Progress/Progress.module.scss +61 -41
  409. package/src/components/Progress/geometry.ts +41 -0
  410. package/src/components/Progress/index.tsx +44 -30
  411. package/src/components/Prompt/Prompt.module.scss +45 -82
  412. package/src/components/Prompt/index.tsx +6 -5
  413. package/src/components/RadioGroup/RadioGroup.module.scss +50 -69
  414. package/src/components/RadioGroup/index.tsx +7 -9
  415. package/src/components/ScrollArea/ScrollArea.contract.json +8 -24
  416. package/src/components/ScrollArea/ScrollArea.module.scss +122 -96
  417. package/src/components/ScrollArea/index.tsx +78 -60
  418. package/src/components/ScrollArea/scroll-state.ts +87 -0
  419. package/src/components/Select/Select.module.scss +53 -41
  420. package/src/components/Select/index.tsx +6 -2
  421. package/src/components/Separator/Separator.module.scss +29 -19
  422. package/src/components/Separator/index.tsx +55 -51
  423. package/src/components/Sidebar/Sidebar.contract.json +12 -0
  424. package/src/components/Sidebar/Sidebar.module.scss +101 -99
  425. package/src/components/Sidebar/index.tsx +10 -3
  426. package/src/components/Skeleton/Skeleton.module.scss +26 -26
  427. package/src/components/Skeleton/index.tsx +65 -72
  428. package/src/components/Slider/Slider.module.scss +31 -25
  429. package/src/components/Stack/Stack.module.scss +101 -30
  430. package/src/components/Stack/index.tsx +157 -127
  431. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +1 -1
  432. package/src/components/{Toggle/Toggle.module.scss → Switch/Switch.module.scss} +55 -82
  433. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  434. package/src/components/Table/Table.module.scss +38 -129
  435. package/src/components/Table/index.tsx +13 -6
  436. package/src/components/TableOfContents/TableOfContents.module.scss +20 -177
  437. package/src/components/Tabs/Tabs.module.scss +27 -22
  438. package/src/components/Tabs/index.tsx +2 -2
  439. package/src/components/Text/Text.module.scss +22 -3
  440. package/src/components/Text/index.tsx +56 -21
  441. package/src/components/Textarea/Textarea.module.scss +59 -39
  442. package/src/components/Textarea/index.tsx +5 -12
  443. package/src/components/Theme/context.ts +42 -0
  444. package/src/components/Theme/index.tsx +14 -309
  445. package/src/components/ThemeToggle/ThemeToggle.module.scss +73 -0
  446. package/src/components/ThemeToggle/index.tsx +144 -0
  447. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  448. package/src/components/ThinkingIndicator/index.tsx +44 -54
  449. package/src/components/Toast/Toast.contract.json +5 -21
  450. package/src/components/Toast/Toast.module.scss +61 -138
  451. package/src/components/Toggle/index.ts +7 -0
  452. package/src/components/ToggleGroup/ToggleGroup.contract.json +12 -39
  453. package/src/components/ToggleGroup/ToggleGroup.module.scss +132 -88
  454. package/src/components/ToggleGroup/index.tsx +5 -3
  455. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  456. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  457. package/src/index.ts +2 -1
  458. package/src/measurements/MeasurementTargets.module.scss +229 -0
  459. package/src/measurements/generated.ts +317 -0
  460. package/src/measurements/index.ts +8 -0
  461. package/src/measurements/measurements.json +361 -0
  462. package/src/recipes/_action.scss +138 -0
  463. package/src/recipes/_boolean-range.scss +124 -0
  464. package/src/recipes/_feedback.scss +171 -0
  465. package/src/recipes/_field.scss +98 -0
  466. package/src/recipes/_layout.scss +67 -0
  467. package/src/recipes/_navigation.scss +110 -0
  468. package/src/recipes/_overlay.scss +191 -0
  469. package/src/recipes/_popup.scss +92 -0
  470. package/src/recipes/_prose.scss +174 -0
  471. package/src/recipes/_representation.scss +193 -0
  472. package/src/recipes/_segmented.scss +26 -0
  473. package/src/recipes/_surface.scss +13 -0
  474. package/src/recipes/_table-chrome.scss +105 -0
  475. package/src/recipes/_target.scss +31 -0
  476. package/src/recipes/_typography.scss +38 -0
  477. package/src/recipes/popup.ts +12 -0
  478. package/src/recipes/table-chrome.ts +30 -0
  479. package/src/styles/globals.scss +2 -2
  480. package/src/tokens/_component-properties.scss +2 -2
  481. package/src/tokens/_computed.scss +9 -9
  482. package/src/tokens/_density.scss +41 -132
  483. package/src/tokens/_measurements.catalog.generated.css +91 -0
  484. package/src/tokens/_measurements.generated.scss +604 -0
  485. package/src/tokens/_mixins.scss +0 -276
  486. package/src/tokens/_property-registrations.scss +96 -92
  487. package/src/tokens/_radius.scss +16 -70
  488. package/src/tokens/_seeds.scss +8 -7
  489. package/src/tokens/_variables.scss +163 -148
  490. package/src/utils/layout-spacing.ts +31 -0
  491. package/src/utils/seed-derivation.ts +134 -172
  492. package/src/utils/theme-presets.ts +58 -30
  493. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  494. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  495. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  496. package/src/components/Switch/index.ts +0 -3
  497. package/src/components/Theme/ThemeToggle.module.scss +0 -91
@@ -1,98 +1,85 @@
1
- 'use client';
1
+ "use client";
2
2
 
3
- import * as React from 'react';
4
- import styles from './Icon.module.scss';
5
-
6
- // Pixel values of the shared `--fui-icon-*` ladder (also exported as CSS vars
7
- // from the token layer). The icon library `size` prop needs a numeric px value,
8
- // so the same ladder is mirrored here as the single source instead of a bespoke
9
- // per-component scale.
10
- const FUI_ICON_PX = {
11
- xs: 12,
12
- sm: 14,
13
- md: 16,
14
- lg: 20,
15
- xl: 24,
16
- '2xl': 32,
17
- } as const;
3
+ import * as React from "react";
4
+ import { MEASUREMENT_PROFILES, measurementPx } from "../../measurements";
5
+ import styles from "./Icon.module.scss";
18
6
 
19
7
  type AnyIconComponent = React.ComponentType<any>;
20
8
  type IconComponentProps<TIcon extends AnyIconComponent> = React.ComponentPropsWithoutRef<TIcon>;
21
9
 
22
- export type IconProps<TIcon extends AnyIconComponent = AnyIconComponent> =
23
- Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'> & {
24
- /** The icon component to render */
25
- icon: TIcon;
26
- /** Size of the icon */
27
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
28
- /** Optional style/weight hint forwarded when the icon component supports a `weight` prop */
29
- weight?: string;
30
- /** Semantic color variant */
31
- variant?: 'default' | 'primary' | 'secondary' | 'tertiary' | 'accent' | 'success' | 'warning' | 'error';
32
- /** @deprecated Use variant instead */
33
- color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'success' | 'warning' | 'error';
34
- /** Additional props forwarded to the underlying icon component (typed from `icon`) */
35
- iconProps?: Partial<IconComponentProps<TIcon>>;
36
- };
37
-
38
- // Sourced from the shared `--fui-icon-*` ladder (12/14/16/20/24/32px) so this
39
- // stops being a separate hardcoded size scale. NOTE: Icon's public size names
40
- // are offset by one step from the icon-token names — Icon `xs/sm/md/lg/xl` map
41
- // to icon `xs/md/lg/xl/2xl` (skipping icon-sm=14). Preserved to keep the
42
- // rendered px identical for existing consumers.
43
- const sizeMap: Record<NonNullable<IconProps['size']>, number> = {
44
- xs: FUI_ICON_PX['xs'], // 12
45
- sm: FUI_ICON_PX['md'], // 16
46
- md: FUI_ICON_PX['lg'], // 20
47
- lg: FUI_ICON_PX['xl'], // 24
48
- xl: FUI_ICON_PX['2xl'], // 32
10
+ export type IconProps<TIcon extends AnyIconComponent = AnyIconComponent> = Omit<
11
+ React.HTMLAttributes<HTMLSpanElement>,
12
+ "color"
13
+ > & {
14
+ /** The icon component to render */
15
+ icon: TIcon;
16
+ /** Size of the icon */
17
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
18
+ /** Optional style/weight hint forwarded when the icon component supports a `weight` prop */
19
+ weight?: string;
20
+ /** Semantic color variant */
21
+ variant?:
22
+ | "default"
23
+ | "primary"
24
+ | "secondary"
25
+ | "tertiary"
26
+ | "accent"
27
+ | "success"
28
+ | "warning"
29
+ | "error";
30
+ /** @deprecated Use variant instead */
31
+ color?: "primary" | "secondary" | "tertiary" | "accent" | "success" | "warning" | "error";
32
+ /** Additional props forwarded to the underlying icon component (typed from `icon`) */
33
+ iconProps?: Partial<IconComponentProps<TIcon>>;
49
34
  };
50
35
 
51
- const IconRoot = React.forwardRef<HTMLSpanElement, IconProps>(
52
- function Icon(
53
- {
54
- icon: IconComponent,
55
- size = 'md',
56
- weight = 'regular',
57
- variant,
58
- color,
59
- iconProps,
60
- className,
61
- style,
62
- ...htmlProps
63
- },
64
- ref
65
- ) {
66
- // Support deprecated color prop (variant takes precedence)
67
- const colorVariant = variant || color;
36
+ const iconTargets = MEASUREMENT_PROFILES.targets.icon;
37
+ type IconSize = NonNullable<IconProps["size"]>;
68
38
 
69
- const classes = [
70
- styles.icon,
71
- colorVariant && colorVariant !== 'default' && styles[colorVariant],
72
- className,
73
- ]
74
- .filter(Boolean)
75
- .join(' ');
39
+ const IconRoot = React.forwardRef<HTMLSpanElement, IconProps>(function Icon(
40
+ {
41
+ icon: IconComponent,
42
+ size = "md",
43
+ weight = "regular",
44
+ variant,
45
+ color,
46
+ iconProps,
47
+ className,
48
+ style,
49
+ ...htmlProps
50
+ },
51
+ ref
52
+ ) {
53
+ // Support deprecated color prop (variant takes precedence)
54
+ const colorVariant = variant || color;
76
55
 
77
- const resolvedIconProps = {
78
- ...(iconProps as Record<string, unknown> | undefined),
79
- };
56
+ const classes = [
57
+ styles.icon,
58
+ size === "2xl" ? styles.size2xl : styles[size as Exclude<IconSize, "2xl">],
59
+ colorVariant && colorVariant !== "default" && styles[colorVariant],
60
+ className,
61
+ ]
62
+ .filter(Boolean)
63
+ .join(" ");
80
64
 
81
- // Provide sensible defaults for icon libraries that support common props.
82
- if (!('size' in resolvedIconProps)) {
83
- resolvedIconProps.size = sizeMap[size];
84
- }
85
- if (weight && !('weight' in resolvedIconProps)) {
86
- resolvedIconProps.weight = weight;
87
- }
65
+ const resolvedIconProps = {
66
+ ...(iconProps as Record<string, unknown> | undefined),
67
+ };
88
68
 
89
- return (
90
- <span ref={ref} {...htmlProps} className={classes} style={style}>
91
- <IconComponent {...resolvedIconProps} />
92
- </span>
93
- );
69
+ // Provide sensible defaults for icon libraries that support common props.
70
+ if (!("size" in resolvedIconProps)) {
71
+ resolvedIconProps.size = measurementPx(iconTargets[size], `targets.icon.${size}`);
94
72
  }
95
- );
73
+ if (weight && !("weight" in resolvedIconProps)) {
74
+ resolvedIconProps.weight = weight;
75
+ }
76
+
77
+ return (
78
+ <span ref={ref} {...htmlProps} className={classes} style={style}>
79
+ <IconComponent {...resolvedIconProps} />
80
+ </span>
81
+ );
82
+ });
96
83
 
97
84
  type IconComponentSignature = <TIcon extends AnyIconComponent = AnyIconComponent>(
98
85
  props: IconProps<TIcon> & React.RefAttributes<HTMLSpanElement>
@@ -100,6 +87,7 @@ type IconComponentSignature = <TIcon extends AnyIconComponent = AnyIconComponent
100
87
 
101
88
  export const Icon = Object.assign(IconRoot, {
102
89
  Root: IconRoot,
103
- }) as typeof IconRoot & IconComponentSignature & {
104
- Root: typeof IconRoot;
105
- };
90
+ }) as typeof IconRoot &
91
+ IconComponentSignature & {
92
+ Root: typeof IconRoot;
93
+ };
@@ -1,17 +1,16 @@
1
1
  @use '../../tokens/variables' as *;
2
2
  @use '../../tokens/mixins' as *;
3
+ @use '../../recipes/action';
4
+ @use '../../recipes/target';
3
5
 
4
6
  .iconButton {
5
7
  @include button-reset;
6
8
  @include interactive-base;
9
+ @include action.base;
7
10
 
8
- display: inline-flex;
9
- align-items: center;
10
- justify-content: center;
11
- aspect-ratio: 1 / 1;
12
11
  border-radius: var(--fui-radius-md, $fui-radius-md);
13
12
  color: var(--fui-text-secondary, $fui-text-secondary);
14
- border: 1px solid transparent;
13
+ border: var(--fui-stroke-hairline, 1px) solid transparent;
15
14
  background-color: transparent;
16
15
  flex-shrink: 0;
17
16
 
@@ -24,37 +23,28 @@
24
23
  }
25
24
  }
26
25
 
27
- // Sizes — square targets share the Button height ladder so an IconButton
28
- // lines up with its sibling Buttons in toolbars. Icon sizing is driven by
29
- // the button height so a single <IconButton size="sm"><Icon /></> always
30
- // renders a correctly-scaled glyph without consumer math.
31
26
  .sm {
32
- width: var(--fui-button-height-sm, $fui-button-height-sm);
33
- height: var(--fui-button-height-sm, $fui-button-height-sm);
27
+ @include action.icon-only("sm");
28
+ @include target.hit-area("compact");
34
29
 
35
30
  svg {
36
- width: var(--fui-icon-sm, $fui-icon-sm);
37
- height: var(--fui-icon-sm, $fui-icon-sm);
31
+ @include action.glyph("sm");
38
32
  }
39
33
  }
40
34
 
41
35
  .md {
42
- width: var(--fui-button-height-md, $fui-button-height-md);
43
- height: var(--fui-button-height-md, $fui-button-height-md);
36
+ @include action.icon-only("md");
44
37
 
45
38
  svg {
46
- width: var(--fui-icon-md, $fui-icon-md);
47
- height: var(--fui-icon-md, $fui-icon-md);
39
+ @include action.glyph("md");
48
40
  }
49
41
  }
50
42
 
51
43
  .lg {
52
- width: var(--fui-button-height-lg, $fui-button-height-lg);
53
- height: var(--fui-button-height-lg, $fui-button-height-lg);
44
+ @include action.icon-only("lg");
54
45
 
55
46
  svg {
56
- width: var(--fui-icon-lg, $fui-icon-lg);
57
- height: var(--fui-icon-lg, $fui-icon-lg);
47
+ @include action.glyph("lg");
58
48
  }
59
49
  }
60
50
 
@@ -1,13 +1,34 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action";
4
+ @use "../../recipes/field";
5
+ @use "../../recipes/typography";
3
6
 
4
- // Form field wrapper (label + helper + error)
5
- @include form-field-wrapper;
7
+ .wrapper {
8
+ @include field.wrapper;
9
+ }
10
+
11
+ .label {
12
+ @include field.label;
13
+ }
14
+
15
+ .required {
16
+ margin-inline-start: var(--fui-raw-space-2, 2px);
17
+ color: var(--fui-color-danger-text, $fui-color-danger-text);
18
+ }
19
+
20
+ .helper {
21
+ @include field.helper;
22
+ }
23
+
24
+ .helperError,
25
+ .errorMessage {
26
+ @include field.error;
27
+ }
6
28
 
7
29
  .input {
8
- @include text-base;
9
30
  @include interactive-base;
10
- @include field-shell;
31
+ @include field.shell;
11
32
 
12
33
  display: block;
13
34
  width: 100%;
@@ -17,25 +38,21 @@
17
38
  }
18
39
 
19
40
  &:focus-visible {
20
- @include field-shell-focus;
41
+ @include field.focus-state;
21
42
  }
22
43
  }
23
44
 
24
- // Size variants — shared control-size path (matches Select/DatePicker)
45
+ // Size variants — shared control-size + field-padding path
25
46
  .sm {
26
- @include control-size("sm", "input");
47
+ @include field.size("sm");
27
48
  }
28
49
 
29
50
  .md {
30
- @include control-size("md", "input");
51
+ @include field.size("md");
31
52
  }
32
53
 
33
54
  .lg {
34
- @include control-size("lg", "input");
35
- }
36
-
37
- .labelSm {
38
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
55
+ @include field.size("lg");
39
56
  }
40
57
 
41
58
  // Error state via :has() — detects aria-invalid on the input element.
@@ -43,7 +60,7 @@
43
60
  // The .error class is kept as a fallback for direct usage.
44
61
  .error,
45
62
  .input[aria-invalid] {
46
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
63
+ @include field.invalid-state;
47
64
 
48
65
  &:focus-visible {
49
66
  border-color: var(--fui-color-danger-text, $fui-color-danger-text);
@@ -80,40 +97,36 @@
80
97
  position: relative;
81
98
  display: flex;
82
99
  align-items: center;
83
-
84
- // Auto-detect shortcut kbd via :has() — replaces JS class toggle: `shortcut && styles.hasShortcut`
85
- &:has(> .shortcut):not(.hasAdornment) .input {
86
- padding-right: var(--fui-kbd-reserved-width, 2.714rem);
87
- padding-left: var(--fui-space-2, $fui-space-2);
88
- }
100
+ width: 100%;
89
101
  }
90
102
 
91
- // Adornment container wraps input with start/end adornments inside field-shell border
92
- .hasAdornment {
93
- @include field-shell;
103
+ // Adornments and shortcuts share one painted shell. The input remains the
104
+ // semantic control while every sibling participates intrinsically in layout.
105
+ .hasAdornment,
106
+ .inputContainer:has(> .shortcut) {
107
+ @include field.size("md");
108
+ @include field.shell;
94
109
 
95
- height: var(--fui-input-height, $fui-input-height);
96
- min-height: var(--fui-target-size-min, $fui-target-size-min);
97
- gap: var(--fui-space-2, $fui-space-2);
98
- padding: 0 var(--fui-space-2, $fui-space-2);
99
- border-radius: var(--fui-radius-md, $fui-radius-md);
110
+ gap: action.gap("md");
100
111
 
101
112
  &:has(.sm) {
102
- height: var(--fui-input-height-sm, $fui-input-height-sm);
113
+ @include field.size("sm");
114
+
115
+ gap: action.gap("sm");
103
116
  }
104
117
 
105
- &:has(.lg) {
106
- height: var(--fui-input-height-lg, $fui-input-height-lg);
118
+ &:has(.md) {
119
+ @include field.size("md");
107
120
  }
108
121
 
109
- &:has(> .shortcut) {
110
- padding-right: calc(
111
- var(--fui-space-2, #{$fui-space-2}) + var(--fui-kbd-reserved-width, 2.714rem)
112
- );
122
+ &:has(.lg) {
123
+ @include field.size("lg");
124
+
125
+ gap: action.gap("lg");
113
126
  }
114
127
 
115
128
  &:focus-within {
116
- @include field-shell-focus;
129
+ @include field.focus-state;
117
130
  }
118
131
 
119
132
  // Strip the input's own shell when inside adornment container
@@ -122,7 +135,7 @@
122
135
  height: 100%;
123
136
  border: none;
124
137
  background: transparent;
125
- padding: 0;
138
+ padding-inline: 0;
126
139
  box-shadow: none;
127
140
 
128
141
  &:focus-visible {
@@ -133,7 +146,7 @@
133
146
 
134
147
  // Error state on adornment container
135
148
  &:has(.error) {
136
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
149
+ @include field.invalid-state;
137
150
 
138
151
  &:focus-within {
139
152
  border-color: var(--fui-color-danger-text, $fui-color-danger-text);
@@ -159,36 +172,35 @@
159
172
  color: var(--fui-text-secondary, $fui-text-secondary);
160
173
 
161
174
  svg {
162
- width: var(--fui-icon-sm, $fui-icon-sm);
163
- height: var(--fui-icon-sm, $fui-icon-sm);
175
+ @include action.glyph("md");
164
176
  }
165
177
  }
166
178
 
167
- // Kept as fallback for direct usage
168
- .hasShortcut {
169
- padding-right: var(--fui-kbd-reserved-width, 2.714rem);
179
+ .hasAdornment:has(.sm) .adornment svg {
180
+ @include action.glyph("sm");
181
+ }
182
+
183
+ .hasAdornment:has(.lg) .adornment svg {
184
+ @include action.glyph("lg");
170
185
  }
171
186
 
172
187
  .shortcut {
173
- position: absolute;
174
- right: var(--fui-space-1, $fui-space-1);
175
- top: 50%;
176
- transform: translateY(-50%);
188
+ @include typography.role("caption");
189
+
177
190
  display: inline-flex;
178
191
  align-items: center;
179
192
  justify-content: center;
180
- gap: var(--fui-kbd-gap, calc(var(--fui-space-px, #{$fui-space-px}) * 2));
181
- min-width: var(--fui-kbd-min-width, 1.714rem);
182
- height: var(--fui-kbd-height, 1.286rem);
183
- padding: 0 var(--fui-kbd-padding-x, $fui-space-0-75);
193
+ flex: 0 0 auto;
194
+ gap: var(--fui-raw-space-2, 2px);
195
+ min-inline-size: var(--fui-raw-space-24, 24px);
196
+ block-size: var(--fui-raw-space-20, 20px);
197
+ margin-inline-start: auto;
198
+ padding-inline: var(--fui-raw-space-4, 4px);
184
199
  font-family: var(--fui-font-mono, $fui-font-mono);
185
- font-size: var(--fui-kbd-font-size, $fui-font-size-2xs);
186
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
187
- line-height: 1;
188
200
  font-variant-numeric: tabular-nums;
189
201
  color: var(--fui-kbd-color, var(--fui-text-tertiary, #{$fui-text-tertiary}));
190
202
  background: var(--fui-kbd-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
191
- border: 1px solid var(--fui-kbd-border, var(--fui-border, #{$fui-border}));
203
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-kbd-border, var(--fui-border, #{$fui-border}));
192
204
  border-radius: var(--fui-kbd-radius, var(--fui-radius-sm, #{$fui-radius-sm}));
193
205
  box-shadow: var(--fui-kbd-shadow, none);
194
206
  pointer-events: none;
@@ -179,7 +179,6 @@ const InputRoot = React.forwardRef<HTMLInputElement, InputProps>(function Input(
179
179
  styles[size],
180
180
  error && styles.error,
181
181
  success && styles.success,
182
- shortcut && styles.hasShortcut,
183
182
  inputClassName,
184
183
  ]
185
184
  .filter(Boolean)
@@ -194,7 +193,7 @@ const InputRoot = React.forwardRef<HTMLInputElement, InputProps>(function Input(
194
193
  .join(" ");
195
194
 
196
195
  const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(" ");
197
- const labelClasses = [styles.label, size === "sm" && styles.labelSm].filter(Boolean).join(" ");
196
+ const labelClasses = styles.label;
198
197
 
199
198
  const sharedInputProps = {
200
199
  ...nativeInputProps,
@@ -1,15 +1,14 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action";
4
+ @use "../../recipes/prose";
3
5
 
4
6
  .link {
5
7
  @include interactive-base;
8
+ @include action.inline;
9
+ @include prose.link;
6
10
 
7
11
  display: inline;
8
- font-family: inherit;
9
- font-size: inherit;
10
- font-weight: inherit;
11
- line-height: inherit;
12
- text-decoration: none;
13
12
  cursor: pointer;
14
13
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
15
14
 
@@ -46,7 +45,7 @@
46
45
  // Underline styles
47
46
  .underline-always {
48
47
  text-decoration: underline;
49
- text-underline-offset: 2px;
48
+ text-underline-offset: var(--fui-raw-space-2);
50
49
  }
51
50
 
52
51
  .underline-hover {
@@ -54,7 +53,7 @@
54
53
 
55
54
  &:hover {
56
55
  text-decoration: underline;
57
- text-underline-offset: 2px;
56
+ text-underline-offset: var(--fui-raw-space-2);
58
57
  }
59
58
  }
60
59
 
@@ -1,50 +1,48 @@
1
- @use '../../tokens/variables' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../recipes/layout" as layout;
3
+ @use "../../recipes/prose" as prose;
2
4
 
3
5
  .list {
4
6
  margin: 0;
5
7
  padding: 0;
6
- display: flex;
7
- flex-direction: column;
8
8
  }
9
9
 
10
10
  // Variants
11
11
  .none {
12
- list-style: none;
12
+ @include prose.list("none");
13
13
  }
14
14
 
15
15
  .disc {
16
- list-style: disc;
17
- padding-left: var(--fui-space-2, $fui-space-2);
16
+ @include prose.list("disc");
18
17
  }
19
18
 
20
19
  .decimal {
21
- list-style: decimal;
22
- padding-left: var(--fui-space-2, $fui-space-2);
20
+ @include prose.list("decimal");
23
21
  }
24
22
 
25
23
  .icon {
26
- list-style: none;
24
+ @include prose.list("icon");
27
25
  }
28
26
 
29
27
  // Gap variants
30
28
  .gap-none {
31
- gap: 0;
29
+ row-gap: layout.gap("none");
32
30
  }
33
31
 
34
32
  .gap-xs {
35
- gap: var(--fui-space-1, $fui-space-1);
33
+ row-gap: layout.gap("xs");
36
34
  }
37
35
 
38
36
  .gap-sm {
39
- gap: var(--fui-space-2, $fui-space-2);
37
+ row-gap: layout.gap("sm");
40
38
  }
41
39
 
42
40
  .gap-md {
43
- gap: var(--fui-space-3, $fui-space-3);
41
+ row-gap: layout.gap("md");
44
42
  }
45
43
 
46
44
  .gap-lg {
47
- gap: var(--fui-space-4, $fui-space-4);
45
+ row-gap: layout.gap("lg");
48
46
  }
49
47
 
50
48
  // List item
@@ -53,19 +51,16 @@
53
51
  }
54
52
 
55
53
  .iconItem {
56
- display: flex;
57
- align-items: flex-start;
58
- gap: var(--fui-space-2, $fui-space-2);
54
+ align-items: start;
59
55
  }
60
56
 
61
57
  .iconWrapper {
62
- display: flex;
58
+ display: inline-flex;
63
59
  align-items: center;
64
60
  justify-content: center;
65
- flex-shrink: 0;
66
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
61
+ min-inline-size: var(--fui-raw-space-12);
67
62
  }
68
63
 
69
64
  .itemContent {
70
- flex: 1;
65
+ min-inline-size: 0;
71
66
  }
@@ -79,18 +79,12 @@ function ListItem({ children, icon, className, style, ...htmlProps }: ListItemPr
79
79
  .filter(Boolean)
80
80
  .join(' ');
81
81
 
82
- if (variant === 'icon' && icon) {
83
- return (
84
- <li {...htmlProps} className={classes} style={style}>
85
- <span className={styles.iconWrapper}>{icon}</span>
86
- <span className={styles.itemContent}>{children}</span>
87
- </li>
88
- );
89
- }
90
-
91
82
  return (
92
83
  <li {...htmlProps} className={classes} style={style}>
93
- {children}
84
+ {variant === 'icon' && icon ? (
85
+ <span className={styles.iconWrapper}>{icon}</span>
86
+ ) : null}
87
+ <span className={styles.itemContent}>{children}</span>
94
88
  </li>
95
89
  );
96
90
  }