@usefragments/ui 1.5.4 → 1.7.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 (667) hide show
  1. package/README.md +4 -4
  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/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  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 +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -1,33 +1,32 @@
1
1
  @use "../../tokens/variables" as *;
2
- @use "../../tokens/mixins" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
3
+ @use "../../recipes/typography" as typography;
3
4
 
4
5
  // Root container
5
6
  .root {
6
7
  display: flex;
7
8
  flex-direction: column;
8
- gap: var(--fui-space-1, $fui-space-1);
9
- width: 100%;
10
- font-family: var(--fui-font-sans, $fui-font-sans);
9
+ gap: var(--fui-raw-space-4, #{measurements.raw-space(4)});
10
+ inline-size: 100%;
11
11
  }
12
12
 
13
13
  // Header with label and value
14
14
  .header {
15
+ @include typography.role("ui-standard");
16
+
15
17
  display: flex;
16
18
  align-items: center;
17
19
  justify-content: space-between;
18
- gap: var(--fui-space-2, $fui-space-2);
20
+ gap: var(--fui-raw-space-8, #{measurements.raw-space(8)});
19
21
  }
20
22
 
21
23
  // Label text
22
24
  .label {
23
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
24
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
25
25
  color: var(--fui-text-primary, $fui-text-primary);
26
26
  }
27
27
 
28
28
  // Value display
29
29
  .value {
30
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
31
30
  color: var(--fui-text-secondary, $fui-text-secondary);
32
31
  font-variant-numeric: tabular-nums;
33
32
  }
@@ -35,31 +34,40 @@
35
34
  // Track (background bar)
36
35
  .track {
37
36
  position: relative;
38
- width: 100%;
37
+ inline-size: 100%;
38
+ block-size: var(--_progress-track-size);
39
39
  overflow: hidden;
40
40
  background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
41
41
  border-radius: var(--fui-radius-full, $fui-radius-full);
42
42
  }
43
43
 
44
- // Size variants for track (using closest 7px grid values)
45
44
  .trackSm {
46
- height: calc(var(--fui-space-1, $fui-space-1) / 2); // ~3.5px
45
+ --_progress-track-size: var(
46
+ --fui-progress-track-sm,
47
+ var(--fui-raw-space-4, #{measurements.raw-space(4)})
48
+ );
47
49
  }
48
50
 
49
51
  .trackMd {
50
- height: var(--fui-space-1, $fui-space-1); // 7px
52
+ --_progress-track-size: var(
53
+ --fui-progress-track-md,
54
+ var(--fui-raw-space-6, #{measurements.raw-space(6)})
55
+ );
51
56
  }
52
57
 
53
58
  .trackLg {
54
- height: var(--fui-space-2, $fui-space-2); // 14px
59
+ --_progress-track-size: var(
60
+ --fui-progress-track-lg,
61
+ var(--fui-raw-space-8, #{measurements.raw-space(8)})
62
+ );
55
63
  }
56
64
 
57
65
  // Indicator (filled portion)
58
66
  .indicator {
59
- height: 100%;
67
+ block-size: 100%;
60
68
  background-color: var(--fui-color-accent, $fui-color-accent);
61
69
  border-radius: var(--fui-radius-full, $fui-radius-full);
62
- transition: width var(--fui-transition-normal, $fui-transition-normal);
70
+ transition: inline-size var(--fui-transition-normal, $fui-transition-normal);
63
71
  }
64
72
 
65
73
  // Color variants
@@ -81,8 +89,8 @@
81
89
 
82
90
  // Indeterminate animation
83
91
  .indicatorIndeterminate {
84
- width: 50% !important;
85
- animation: indeterminate 1.5s ease-in-out infinite;
92
+ inline-size: 50%;
93
+ animation: indeterminate var(--fui-duration-pulse, $fui-duration-pulse) ease-in-out infinite;
86
94
  }
87
95
 
88
96
  @keyframes indeterminate {
@@ -97,20 +105,19 @@
97
105
  }
98
106
  }
99
107
 
100
- // Complete state
101
- .root[data-complete] .indicator:not(.indicatorNeutral) {
102
- background-color: var(--fui-color-success-text, $fui-color-success-text);
103
- }
104
-
105
108
  // Circular progress variant
106
109
  .circular {
107
110
  position: relative;
108
111
  display: inline-flex;
109
112
  align-items: center;
110
113
  justify-content: center;
114
+ inline-size: var(--_progress-diameter);
115
+ block-size: var(--_progress-diameter);
111
116
  }
112
117
 
113
118
  .circularSvg {
119
+ inline-size: 100%;
120
+ block-size: 100%;
114
121
  transform: rotate(-90deg);
115
122
  }
116
123
 
@@ -123,6 +130,7 @@
123
130
  stroke: var(--fui-color-accent, $fui-color-accent);
124
131
  fill: none;
125
132
  stroke-linecap: round;
133
+ transform-origin: center;
126
134
  transition: stroke-dashoffset var(--fui-transition-normal, $fui-transition-normal);
127
135
  }
128
136
 
@@ -139,51 +147,64 @@
139
147
  }
140
148
 
141
149
  .circularIndicatorIndeterminate {
142
- animation: circularIndeterminate 1.5s ease-in-out infinite;
150
+ animation: circularIndeterminate var(--fui-duration-pulse, $fui-duration-pulse) ease-in-out
151
+ infinite;
143
152
  }
144
153
 
145
154
  @keyframes circularIndeterminate {
146
155
  0% {
147
- stroke-dashoffset: 280;
156
+ stroke-dashoffset: var(--_progress-dash-full);
148
157
  transform: rotate(0deg);
149
158
  }
150
159
  50% {
151
- stroke-dashoffset: 70;
160
+ stroke-dashoffset: var(--_progress-dash-quarter);
152
161
  }
153
162
  100% {
154
- stroke-dashoffset: 280;
163
+ stroke-dashoffset: var(--_progress-dash-full);
155
164
  transform: rotate(360deg);
156
165
  }
157
166
  }
158
167
 
159
168
  .circularValue {
160
169
  position: absolute;
161
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
162
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
163
170
  color: var(--fui-text-primary, $fui-text-primary);
164
171
  font-variant-numeric: tabular-nums;
165
172
  }
166
173
 
167
- // Size variants for circular (using closest 7px grid values)
168
- .circularSm {
169
- width: var(--fui-space-4, $fui-space-4); // 28px
170
- height: var(--fui-space-4, $fui-space-4);
174
+ .circularValueCompact {
175
+ @include typography.role("ui-compact");
176
+ }
171
177
 
172
- .circularValue {
173
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
174
- }
178
+ .circularValueStandard {
179
+ @include typography.role("ui-standard");
175
180
  }
176
181
 
177
- .circularMd {
178
- width: var(--fui-space-6, $fui-space-6); // 42px
179
- height: var(--fui-space-6, $fui-space-6);
182
+ @media (prefers-reduced-motion: reduce) {
183
+ .indicator,
184
+ .circularIndicator {
185
+ transition: none;
186
+ }
187
+
188
+ .indicatorIndeterminate,
189
+ .circularIndicatorIndeterminate {
190
+ animation: none;
191
+ }
180
192
  }
181
193
 
182
- .circularLg {
183
- width: var(--fui-space-8, $fui-space-8); // 56px
184
- height: var(--fui-space-8, $fui-space-8);
194
+ @media (forced-colors: active) {
195
+ .track {
196
+ background-color: GrayText;
197
+ }
198
+
199
+ .indicator {
200
+ background-color: Highlight;
201
+ }
202
+
203
+ .circularTrack {
204
+ stroke: GrayText;
205
+ }
185
206
 
186
- .circularValue {
187
- font-size: var(--fui-font-size-base, $fui-font-size-base);
207
+ .circularIndicator {
208
+ stroke: Highlight;
188
209
  }
189
210
  }
@@ -0,0 +1,41 @@
1
+ import { MEASUREMENT_PROFILES, measurementPx } from "../../measurements";
2
+
3
+ export type ProgressSize = "sm" | "md" | "lg";
4
+
5
+ export interface CircularProgressGeometry {
6
+ diameter: number;
7
+ strokeWidth: number;
8
+ }
9
+
10
+ const defaultStrokeWidths: Readonly<Record<ProgressSize, number>> = {
11
+ sm: 3,
12
+ md: 4,
13
+ lg: 5,
14
+ };
15
+
16
+ export const CIRCULAR_PROGRESS_GEOMETRY: Readonly<Record<ProgressSize, CircularProgressGeometry>> =
17
+ Object.freeze({
18
+ sm: Object.freeze({
19
+ diameter: measurementPx(MEASUREMENT_PROFILES.rawSpace[32], "rawSpace.32"),
20
+ strokeWidth: defaultStrokeWidths.sm,
21
+ }),
22
+ md: Object.freeze({
23
+ diameter: measurementPx(MEASUREMENT_PROFILES.rawSpace[48], "rawSpace.48"),
24
+ strokeWidth: defaultStrokeWidths.md,
25
+ }),
26
+ lg: Object.freeze({
27
+ diameter: measurementPx(MEASUREMENT_PROFILES.rawSpace[64], "rawSpace.64"),
28
+ strokeWidth: defaultStrokeWidths.lg,
29
+ }),
30
+ });
31
+
32
+ export function resolveCircularStrokeWidth(
33
+ geometry: CircularProgressGeometry,
34
+ requested?: number
35
+ ): number {
36
+ if (requested === undefined || !Number.isFinite(requested) || requested <= 0) {
37
+ return geometry.strokeWidth;
38
+ }
39
+
40
+ return Math.min(requested, geometry.diameter / 2);
41
+ }
@@ -2,6 +2,11 @@
2
2
 
3
3
  import * as React from "react";
4
4
  import { Progress as BaseProgress } from "@base-ui/react/progress";
5
+ import {
6
+ CIRCULAR_PROGRESS_GEOMETRY,
7
+ resolveCircularStrokeWidth,
8
+ type ProgressSize,
9
+ } from "./geometry";
5
10
  import styles from "./Progress.module.scss";
6
11
 
7
12
  // ============================================
@@ -16,7 +21,7 @@ export interface ProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>
16
21
  /** Maximum value */
17
22
  max?: number;
18
23
  /** Size of the progress bar */
19
- size?: "sm" | "md" | "lg";
24
+ size?: ProgressSize;
20
25
  /** Color variant */
21
26
  variant?: "default" | "neutral" | "success" | "warning" | "danger";
22
27
  /** Label text */
@@ -31,7 +36,7 @@ export interface CircularProgressProps extends React.HTMLAttributes<HTMLDivEleme
31
36
  /** Current progress value (0-100). Null for indeterminate. */
32
37
  value?: number | null;
33
38
  /** Size of the circular progress */
34
- size?: "sm" | "md" | "lg";
39
+ size?: ProgressSize;
35
40
  /** Color variant */
36
41
  variant?: "default" | "success" | "warning" | "danger";
37
42
  /** Show percentage in center */
@@ -61,7 +66,13 @@ function ProgressRoot({
61
66
  }: ProgressProps) {
62
67
  const isIndeterminate = value === null;
63
68
  const range = max - min;
64
- const normalizedPercentage = isIndeterminate ? 0 : range <= 0 ? 0 : ((value - min) / range) * 100;
69
+ const clampedValue = isIndeterminate
70
+ ? null
71
+ : !Number.isFinite(value) || range <= 0
72
+ ? min
73
+ : Math.min(max, Math.max(min, value));
74
+ const normalizedPercentage =
75
+ clampedValue === null || range <= 0 ? 0 : ((clampedValue - min) / range) * 100;
65
76
  const percentage = isIndeterminate
66
77
  ? 0
67
78
  : Math.round(Math.min(100, Math.max(0, normalizedPercentage)));
@@ -97,7 +108,7 @@ function ProgressRoot({
97
108
  return (
98
109
  <BaseProgress.Root
99
110
  {...htmlProps}
100
- value={value}
111
+ value={clampedValue}
101
112
  min={min}
102
113
  max={max}
103
114
  className={rootClasses}
@@ -115,7 +126,7 @@ function ProgressRoot({
115
126
  <BaseProgress.Track className={trackClasses}>
116
127
  <BaseProgress.Indicator
117
128
  className={indicatorClasses}
118
- style={isIndeterminate ? undefined : { width: `${percentage}%` }}
129
+ style={isIndeterminate ? undefined : { inlineSize: `${percentage}%` }}
119
130
  />
120
131
  </BaseProgress.Track>
121
132
  </BaseProgress.Root>
@@ -126,12 +137,6 @@ function ProgressRoot({
126
137
  // Circular Progress
127
138
  // ============================================
128
139
 
129
- const CIRCLE_SIZES = {
130
- sm: { size: 32, strokeWidth: 3 },
131
- md: { size: 48, strokeWidth: 4 },
132
- lg: { size: 64, strokeWidth: 5 },
133
- };
134
-
135
140
  function CircularProgressRoot({
136
141
  value = null,
137
142
  size = "md",
@@ -139,24 +144,23 @@ function CircularProgressRoot({
139
144
  showValue = false,
140
145
  strokeWidth: customStrokeWidth,
141
146
  className,
147
+ style: styleProp,
142
148
  "aria-label": ariaLabel,
143
149
  "aria-labelledby": ariaLabelledBy,
144
150
  "aria-valuetext": ariaValueText,
145
151
  ...htmlProps
146
152
  }: CircularProgressProps) {
147
153
  const isIndeterminate = value === null;
148
- const percentage = isIndeterminate ? 0 : Math.min(100, Math.max(0, value));
154
+ const percentage =
155
+ isIndeterminate || !Number.isFinite(value) ? 0 : Math.min(100, Math.max(0, value));
149
156
 
150
- const { size: svgSize, strokeWidth: defaultStrokeWidth } = CIRCLE_SIZES[size];
151
- const strokeWidth = customStrokeWidth ?? defaultStrokeWidth;
157
+ const geometry = CIRCULAR_PROGRESS_GEOMETRY[size];
158
+ const strokeWidth = resolveCircularStrokeWidth(geometry, customStrokeWidth);
152
159
 
153
- const radius = (svgSize - strokeWidth) / 2;
160
+ const radius = (geometry.diameter - strokeWidth) / 2;
154
161
  const circumference = 2 * Math.PI * radius;
155
162
  const offset = circumference - (percentage / 100) * circumference;
156
163
 
157
- const sizeClass =
158
- size === "sm" ? styles.circularSm : size === "lg" ? styles.circularLg : styles.circularMd;
159
-
160
164
  const indicatorClasses = [
161
165
  styles.circularIndicator,
162
166
  variant === "success" && styles.circularIndicatorSuccess,
@@ -167,20 +171,27 @@ function CircularProgressRoot({
167
171
  .filter(Boolean)
168
172
  .join(" ");
169
173
 
170
- const rootClasses = [styles.circular, sizeClass, className].filter(Boolean).join(" ");
174
+ const rootClasses = [styles.circular, className].filter(Boolean).join(" ");
171
175
 
172
176
  // Default value text for screen readers
173
177
  const effectiveValueText =
174
178
  ariaValueText || (isIndeterminate ? "Loading" : `${Math.round(percentage)} percent`);
179
+ const circularStyle = {
180
+ "--_progress-diameter": `${geometry.diameter}px`,
181
+ "--_progress-dash-full": circumference,
182
+ "--_progress-dash-quarter": circumference / 4,
183
+ ...styleProp,
184
+ } as React.CSSProperties;
175
185
 
176
186
  return (
177
187
  <BaseProgress.Root
178
188
  {...htmlProps}
179
- value={value}
189
+ value={isIndeterminate ? null : percentage}
180
190
  min={0}
181
191
  max={100}
182
192
  className={rootClasses}
183
- aria-label={ariaLabel}
193
+ style={circularStyle}
194
+ aria-label={ariaLabel ?? (ariaLabelledBy ? undefined : "Progress")}
184
195
  aria-labelledby={ariaLabelledBy}
185
196
  aria-valuenow={isIndeterminate ? undefined : percentage}
186
197
  aria-valuemin={0}
@@ -190,33 +201,36 @@ function CircularProgressRoot({
190
201
  >
191
202
  <svg
192
203
  className={styles.circularSvg}
193
- width={svgSize}
194
- height={svgSize}
195
- viewBox={`0 0 ${svgSize} ${svgSize}`}
204
+ viewBox={`0 0 ${geometry.diameter} ${geometry.diameter}`}
196
205
  aria-hidden="true"
197
206
  >
198
207
  {/* Track circle */}
199
208
  <circle
200
209
  className={styles.circularTrack}
201
- cx={svgSize / 2}
202
- cy={svgSize / 2}
210
+ cx={geometry.diameter / 2}
211
+ cy={geometry.diameter / 2}
203
212
  r={radius}
204
213
  strokeWidth={strokeWidth}
205
214
  />
206
215
  {/* Indicator circle */}
207
216
  <circle
208
217
  className={indicatorClasses}
209
- cx={svgSize / 2}
210
- cy={svgSize / 2}
218
+ cx={geometry.diameter / 2}
219
+ cy={geometry.diameter / 2}
211
220
  r={radius}
212
221
  strokeWidth={strokeWidth}
213
222
  strokeDasharray={circumference}
214
223
  strokeDashoffset={isIndeterminate ? undefined : offset}
215
- style={isIndeterminate ? { transformOrigin: "center" } : undefined}
216
224
  />
217
225
  </svg>
218
226
  {showValue && !isIndeterminate && (
219
- <span className={styles.circularValue} aria-hidden="true">
227
+ <span
228
+ className={[
229
+ styles.circularValue,
230
+ size === "sm" ? styles.circularValueCompact : styles.circularValueStandard,
231
+ ].join(" ")}
232
+ aria-hidden="true"
233
+ >
220
234
  {Math.round(percentage)}%
221
235
  </span>
222
236
  )}
@@ -1,16 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Prompt",
4
- "description": "Multi-line input with toolbar for AI/chat interfaces",
4
+ "description": "Collects multi-line input for AI and chat interfaces.",
5
5
  "category": "ai",
6
- "tags": [
7
- "prompt",
8
- "chat",
9
- "ai",
10
- "input",
11
- "textarea",
12
- "form"
13
- ],
6
+ "tags": ["prompt", "chat", "ai", "input", "textarea", "form"],
14
7
  "status": "stable",
15
8
  "sourcePath": "src/components/Prompt/index.tsx",
16
9
  "exportName": "Prompt",
@@ -106,11 +99,7 @@
106
99
  "description": "Visual/positioning variant",
107
100
  "default": "default",
108
101
  "required": false,
109
- "values": [
110
- "default",
111
- "fixed",
112
- "sticky"
113
- ]
102
+ "values": ["default", "fixed", "sticky"]
114
103
  },
115
104
  "onFiles": {
116
105
  "type": "function",
@@ -127,37 +116,30 @@
127
116
  "description": "How the card is divided up. \"panel\" keeps the toolbar as a filled footer under a rule; \"seamless\" makes the whole card one writing surface with the controls floating on it.",
128
117
  "default": "panel",
129
118
  "required": false,
130
- "values": [
131
- "panel",
132
- "seamless"
133
- ]
119
+ "values": ["panel", "seamless"]
134
120
  }
135
121
  },
136
122
  "usage": {
137
123
  "when": [
138
- "Building chat or AI assistant interfaces",
139
- "Need multi-line input with submit action",
140
- "Require toolbar with actions like attachments or model selection"
124
+ "Chat and AI assistant interfaces",
125
+ "Multi-line input with a submit action",
126
+ "Toolbars carrying attachments or a model picker"
141
127
  ],
142
128
  "whenNot": [
143
- "Simple single-line text input (use Input)",
144
- "Basic multi-line without toolbar (use Textarea)",
145
- "Search-only interface (use Input with search variant)"
129
+ "Single-line text (use Input)",
130
+ "Multi-line with no toolbar (use Textarea)",
131
+ "Search-only fields (use Input with the search variant)"
146
132
  ],
147
133
  "guidelines": [
148
- "Always provide an onSubmit handler",
149
- "Use loading state during API calls",
150
- "Prompt.Textarea forwards native textarea props (autoComplete, inputMode, aria-*, data-*, handlers)",
151
- "Prompt.Textarea composes your onChange/onKeyDown handlers with built-in submit and auto-resize behavior",
152
- "Use appearance=\"seamless\" for agent composers where the controls should float on the writing surface rather than sit in a footer",
153
- "Seamless controls share the dense 32px token scale with body-sized labels and standard glyphs so mixed Prompt.Select, Prompt.Attach and Prompt.Submit rows remain optically aligned",
154
- "Seamless secondary controls keep transparent hover and open states so they read as inline tools; only Prompt.Submit carries a persistent filled shape",
155
- "Seamless Prompt.Submit mirrors the trailing ink gutter established by Prompt.Attach at the leading edge",
156
- "Prompt.Submit uses a neutral inverse surface by default so the primary action stays visible without consuming semantic brand color",
157
- "Use Prompt.ModeButton for a setting you toggle and Prompt.Select for one you pick from a list",
158
- "Wire onFiles once: the attach button, pasting a screenshot and dropping on the card all go through it",
159
- "Render Prompt.Attachments above Prompt.Textarea — attachments are part of the message, not a setting on it",
160
- "Consider showing usage/token limits for AI contexts"
134
+ "Always pass an onSubmit handler",
135
+ "Set loading while the request is in flight to block duplicate sends",
136
+ "Prompt.Textarea forwards native textarea props and composes your own handlers",
137
+ "appearance=\"seamless\" floats the controls on the writing surface instead of a footer",
138
+ "Seamless secondary controls stay transparent; only Prompt.Submit keeps a filled shape",
139
+ "Prompt.Submit uses a neutral inverse surface, never semantic brand color",
140
+ "Prompt.ModeButton toggles a setting; Prompt.Select picks one from a list",
141
+ "Wire onFiles once the attach button, paste, and drop all route through it",
142
+ "Render Prompt.Attachments above Prompt.Textarea; they are part of the message"
161
143
  ],
162
144
  "accessibility": [
163
145
  "Enter submits, Shift+Enter for newline",
@@ -168,32 +150,37 @@
168
150
  "examples": [
169
151
  {
170
152
  "name": "Basic",
171
- "description": "Simple prompt with submit button",
153
+ "description": "A textarea and a submit button, nothing else.",
172
154
  "code": "<Prompt onSubmit={(value) => console.log(value)}>\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions />\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
173
155
  },
174
156
  {
175
157
  "name": "With Actions",
176
- "description": "Prompt with attachment and mode buttons",
158
+ "description": "Attach and mode controls sit to the left of submit.",
177
159
  "code": "<Prompt onSubmit={(value) => console.log(value)}>\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.ActionButton aria-label=\"Add attachment\">\n +\n </Prompt.ActionButton>\n <Prompt.ModeButton>Auto</Prompt.ModeButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
178
160
  },
179
161
  {
180
162
  "name": "With Usage",
181
- "description": "Shows token usage indicator",
163
+ "description": "A quota readout sits beside the submit button.",
182
164
  "code": "<Prompt onSubmit={(value) => console.log(value)}>\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.ActionButton aria-label=\"Add attachment\">\n +\n </Prompt.ActionButton>\n <Prompt.ModeButton active>Auto</Prompt.ModeButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Usage>52% used</Prompt.Usage>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
183
165
  },
184
166
  {
185
167
  "name": "Agent Composer",
186
- "description": "Seamless surface with the scope of the run chosen on the toolbar",
168
+ "description": "Controls float on the writing surface instead of a footer.",
187
169
  "code": "<Prompt\n appearance=\"seamless\"\n submitOnEnter={false}\n minRows={3}\n onSubmit={(value) => console.log(value)}\n>\n <Prompt.Textarea placeholder=\"What should be true when this is done?\" />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.Select\n aria-label=\"Model\"\n defaultValue=\"claude-opus-4-8\"\n options={[{ value: 'claude-opus-4-8', label: 'Opus 4.8' }, { value: 'claude-sonnet-5', label: 'Sonnet 5' }]}\n />\n <Prompt.ModeButton>Plan</Prompt.ModeButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
188
170
  },
171
+ {
172
+ "name": "With Attachments",
173
+ "description": "Staged files list above the text they belong to.",
174
+ "code": "<Prompt onSubmit={(value) => console.log(value)}>\n <Prompt.Attachments\n items={[\n { id: '1', name: 'findings-export.csv', size: 20480 },\n { id: '2', name: 'dashboard.png', size: 153600 },\n ]}\n onRemove={(id) => console.log(id)}\n />\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.ActionButton aria-label=\"Add attachment\">\n +\n </Prompt.ActionButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
175
+ },
189
176
  {
190
177
  "name": "Loading State",
191
- "description": "During API submission",
178
+ "description": "Input locks and submit spins while the request runs.",
192
179
  "code": "<Prompt\n onSubmit={(value) => console.log(value)}\n loading\n defaultValue=\"Tell me about the weather...\"\n>\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.ActionButton aria-label=\"Add attachment\">\n +\n </Prompt.ActionButton>\n <Prompt.ModeButton>Auto</Prompt.ModeButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Usage>52% used</Prompt.Usage>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
193
180
  },
194
181
  {
195
182
  "name": "Disabled",
196
- "description": "Non-interactive prompt",
183
+ "description": "Everything dims and stops responding to input.",
197
184
  "code": "<Prompt onSubmit={(value) => console.log(value)} disabled>\n <Prompt.Textarea />\n <Prompt.Toolbar>\n <Prompt.Actions>\n <Prompt.ActionButton aria-label=\"Add attachment\">\n +\n </Prompt.ActionButton>\n </Prompt.Actions>\n <Prompt.Info>\n <Prompt.Submit />\n </Prompt.Info>\n </Prompt.Toolbar>\n</Prompt>"
198
185
  }
199
186
  ],
@@ -220,10 +207,7 @@
220
207
  "submitOnEnter: boolean - Enter key behavior (default: true)",
221
208
  "Prompt.Textarea accepts native textarea props and optional aria-label override"
222
209
  ],
223
- "a11yRules": [
224
- "A11Y_TEXTAREA_LABEL",
225
- "A11Y_BUTTON_LABEL"
226
- ]
210
+ "a11yRules": ["A11Y_TEXTAREA_LABEL", "A11Y_BUTTON_LABEL"]
227
211
  },
228
212
  "ai": {
229
213
  "compositionPattern": "compound",