@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usefragments/ui",
3
- "version": "1.5.4",
3
+ "version": "1.7.0",
4
4
  "license": "MIT",
5
5
  "description": "Customizable UI components built on Base UI headless primitives",
6
6
  "author": "Conan McNicholl",
@@ -29,6 +29,16 @@
29
29
  "default": "./dist/index.cjs"
30
30
  }
31
31
  },
32
+ "./measurements": {
33
+ "import": {
34
+ "types": "./dist/measurements/index.d.ts",
35
+ "default": "./dist/measurements.js"
36
+ },
37
+ "require": {
38
+ "types": "./dist/measurements/index.d.ts",
39
+ "default": "./dist/measurements.cjs"
40
+ }
41
+ },
32
42
  "./datepicker": {
33
43
  "import": {
34
44
  "types": "./dist/components/DatePicker/index.d.ts",
@@ -210,6 +220,9 @@
210
220
  "@phosphor-icons/react": "^2.1.10"
211
221
  },
212
222
  "devDependencies": {
223
+ "@fontsource-variable/onest": "5.3.0",
224
+ "@fontsource-variable/jetbrains-mono": "5.2.8",
225
+ "@playwright/test": "1.58.2",
213
226
  "@storybook/addon-a11y": "^8",
214
227
  "@storybook/addon-essentials": "^8",
215
228
  "@storybook/react": "^8",
@@ -226,6 +239,7 @@
226
239
  "@types/react": "^19.0.0",
227
240
  "@types/react-dom": "^19.0.0",
228
241
  "@vitejs/plugin-react": "^4.3.0",
242
+ "ajv": "8.17.1",
229
243
  "chromatic": "^17.1.0",
230
244
  "date-fns": "^4.0.0",
231
245
  "jsdom": "^25.0.0",
@@ -241,7 +255,7 @@
241
255
  "vite": "^6.0.0",
242
256
  "vitest": "^2.1.8",
243
257
  "vitest-axe": "^0.1.0",
244
- "@usefragments/core": "1.10.1"
258
+ "@usefragments/core": "1.11.0"
245
259
  },
246
260
  "files": [
247
261
  "src",
@@ -255,6 +269,7 @@
255
269
  "!src/blocks/",
256
270
  "!src/assets/*.svg",
257
271
  "!src/**/*.stories.tsx",
272
+ "!src/**/*.ui-notes.md",
258
273
  "!src/components/Cloud/",
259
274
  "dist",
260
275
  "!dist/components/Cloud/",
@@ -262,9 +277,15 @@
262
277
  ],
263
278
  "scripts": {
264
279
  "dev": "storybook dev -p 6006",
265
- "build": "vite build && node ./scripts/emit-complete-styles.mjs && tsc -p tsconfig.build.json",
266
- "lint": "eslint src",
280
+ "generate:measurements": "node scripts/generate-measurements.mjs",
281
+ "check:measurements": "node scripts/generate-measurements.mjs --check && node scripts/check-measurement-parity.mjs",
282
+ "build": "pnpm run check:measurements && vite build && node ./scripts/emit-complete-styles.mjs && tsc -p tsconfig.build.json && pnpm run typecheck:fragments",
283
+ "typecheck:fragments": "tsc -p tsconfig.fragments.json",
284
+ "lint": "eslint src geometry",
267
285
  "test": "vitest run",
286
+ "test:geometry": "node geometry/run.mjs",
287
+ "test:geometry:self": "node --test geometry/__tests__/*.test.mjs",
288
+ "test:geometry:types": "tsc -p geometry/tsconfig.json --noEmit",
268
289
  "build-storybook": "storybook build",
269
290
  "chromatic": "chromatic",
270
291
  "chromatic:ci": "chromatic --build-script-name build-storybook"
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import * as React from "react";
2
2
 
3
3
  export interface FragmentsLogoProps {
4
4
  /** Size of the logo in pixels */
@@ -19,7 +19,7 @@ export function FragmentsLogo({ size = 20, className }: FragmentsLogoProps) {
19
19
  role="img"
20
20
  aria-label="Fragments"
21
21
  style={{
22
- display: 'block',
22
+ display: "block",
23
23
  }}
24
24
  >
25
25
  <path
@@ -4,11 +4,13 @@ import * as React from "react";
4
4
  // stored as a monochrome alpha mask so it can be filled with currentColor. That
5
5
  // keeps the lockup themeable — it renders in the current text color, matching
6
6
  // the light and dark brand versions from a single asset.
7
+ // Icon height is optically matched to the wordmark (~1.18× glyph box) — the
8
+ // original export’s star was ~1.7× taller and dominated the type.
7
9
  const WORDMARK_MASK =
8
- "data:image/png;base64,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";
10
+ "data:image/png;base64,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";
9
11
 
10
12
  /** Aspect ratio (width / height) of the trimmed lockup. */
11
- const WORDMARK_ASPECT = 4.000;
13
+ const WORDMARK_ASPECT = 4.7812;
12
14
 
13
15
  export interface FragmentsWordmarkProps {
14
16
  /** Rendered height in px; width follows the lockup aspect ratio. */
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Accordion",
4
- "description": "Vertically stacked, collapsible content sections. Use for organizing related content that can be progressively disclosed.",
4
+ "description": "Stacks sections that expand one at a time, or several at once.",
5
5
  "category": "layout",
6
- "tags": [
7
- "accordion",
8
- "collapse",
9
- "expand",
10
- "disclosure",
11
- "faq"
12
- ],
6
+ "tags": ["accordion", "collapse", "expand", "disclosure", "faq"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Accordion/index.tsx",
15
9
  "exportName": "Accordion",
@@ -28,10 +22,7 @@
28
22
  "description": "Whether one or multiple items can be open",
29
23
  "default": "single",
30
24
  "required": false,
31
- "values": [
32
- "single",
33
- "multiple"
34
- ]
25
+ "values": ["single", "multiple"]
35
26
  },
36
27
  "value": {
37
28
  "type": "union",
@@ -64,34 +55,28 @@
64
55
  "description": "Semantic heading level for accordion triggers",
65
56
  "default": "3",
66
57
  "required": false,
67
- "values": [
68
- "2",
69
- "3",
70
- "4",
71
- "5",
72
- "6"
73
- ]
58
+ "values": ["2", "3", "4", "5", "6"]
74
59
  }
75
60
  },
76
61
  "usage": {
77
62
  "when": [
78
- "FAQ pages with multiple questions and answers",
79
- "Settings panels with grouped options",
80
- "Long forms that benefit from progressive disclosure",
81
- "Navigation menus with nested items"
63
+ "Answers most readers skip",
64
+ "Settings grouped by area",
65
+ "Long forms broken into stages",
66
+ "Navigation with nested children"
82
67
  ],
83
68
  "whenNot": [
84
- "Primary content that all users need to see",
85
- "Very short content (just display inline)",
86
- "Sequential steps (use Stepper or wizard)",
87
- "Tab-like navigation (use Tabs instead)"
69
+ "Content everyone needs to read",
70
+ "A line or two — just show it",
71
+ "Steps in an order (use Stepper)",
72
+ "Switching between panels (use Tabs)"
88
73
  ],
89
74
  "guidelines": [
90
- "Keep section headers concise and descriptive",
91
- "Use single mode when only one section should be open at a time",
92
- "Use multiple mode when users may need to compare sections",
93
- "Consider defaulting important sections to open",
94
- "Avoid nesting accordions more than one level deep"
75
+ "Headers should say what is inside",
76
+ "Single mode when one answer at a time is enough",
77
+ "Multiple mode when sections get compared",
78
+ "Open the section most readers came for",
79
+ "Never nest an accordion inside an accordion"
95
80
  ],
96
81
  "accessibility": [
97
82
  "Keyboard navigation with Enter/Space to toggle",
@@ -102,18 +87,18 @@
102
87
  "examples": [
103
88
  {
104
89
  "name": "Basic",
105
- "description": "Single accordion with collapsible sections",
90
+ "description": "Opening one section closes the last.",
106
91
  "code": "import { Accordion } from '@/components/Accordion';\n\n<Accordion type=\"single\" collapsible defaultValue=\"item-1\">\n <Accordion.Item value=\"item-1\">\n <Accordion.Trigger>What is Fragments UI?</Accordion.Trigger>\n <Accordion.Content>\n Fragments UI is a modern React component library built on Base UI primitives, providing accessible and customizable components.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"item-2\">\n <Accordion.Trigger>How do I install it?</Accordion.Trigger>\n <Accordion.Content>\n Install via npm or pnpm: pnpm add @usefragments/ui\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"item-3\">\n <Accordion.Trigger>Is it accessible?</Accordion.Trigger>\n <Accordion.Content>\n Yes! All components follow WAI-ARIA guidelines and support keyboard navigation.\n </Accordion.Content>\n </Accordion.Item>\n</Accordion>"
107
92
  },
108
93
  {
109
94
  "name": "Multiple Open",
110
- "description": "Allows multiple sections to be open simultaneously",
95
+ "description": "Sections stay open so answers can be compared.",
111
96
  "code": "import { Accordion } from '@/components/Accordion';\n\n<Accordion type=\"multiple\" defaultValue={['features', 'pricing']}>\n <Accordion.Item value=\"features\">\n <Accordion.Trigger>Features</Accordion.Trigger>\n <Accordion.Content>\n Comprehensive component library with theming support, accessibility built-in, and TypeScript-first development.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"pricing\">\n <Accordion.Trigger>Pricing</Accordion.Trigger>\n <Accordion.Content>\n Free and open source. MIT licensed for both personal and commercial use.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"support\">\n <Accordion.Trigger>Support</Accordion.Trigger>\n <Accordion.Content>\n Community support via GitHub issues and discussions.\n </Accordion.Content>\n </Accordion.Item>\n</Accordion>"
112
97
  },
113
98
  {
114
99
  "name": "With Disabled",
115
- "description": "Accordion with a disabled item",
116
- "code": "import { Accordion } from '@/components/Accordion';\n\n<Accordion type=\"single\" collapsible>\n <Accordion.Item value=\"available\">\n <Accordion.Trigger>Available Section</Accordion.Trigger>\n <Accordion.Content>\n This section can be expanded and collapsed.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"disabled\" disabled>\n <Accordion.Trigger>Disabled Section</Accordion.Trigger>\n <Accordion.Content>\n This content is not accessible because the item is disabled.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"another\">\n <Accordion.Trigger>Another Section</Accordion.Trigger>\n <Accordion.Content>\n This section is also available for interaction.\n </Accordion.Content>\n </Accordion.Item>\n</Accordion>"
100
+ "description": "An unavailable section stays visible but inert.",
101
+ "code": "import { Accordion } from '@/components/Accordion';\n\n<Accordion type=\"single\" collapsible defaultValue=\"available\">\n <Accordion.Item value=\"available\">\n <Accordion.Trigger>Notification preferences</Accordion.Trigger>\n <Accordion.Content>\n Choose which events send you an email and how often digests arrive.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"disabled\" disabled>\n <Accordion.Trigger>Billing history</Accordion.Trigger>\n <Accordion.Content>\n Unavailable until a payment method is on file.\n </Accordion.Content>\n </Accordion.Item>\n <Accordion.Item value=\"another\">\n <Accordion.Trigger>Connected accounts</Accordion.Trigger>\n <Accordion.Content>\n Review the services linked to this workspace and revoke the ones you no longer use.\n </Accordion.Content>\n </Accordion.Item>\n</Accordion>"
117
102
  }
118
103
  ],
119
104
  "relations": [
@@ -141,21 +126,12 @@
141
126
  "collapsible: boolean - allow all closed in single mode",
142
127
  "Accordion.Trigger forwards button props and defaults type=\"button\""
143
128
  ],
144
- "a11yRules": [
145
- "A11Y_DISCLOSURE_KEYBOARD",
146
- "A11Y_FOCUS_VISIBLE"
147
- ]
129
+ "a11yRules": ["A11Y_DISCLOSURE_KEYBOARD", "A11Y_FOCUS_VISIBLE"]
148
130
  },
149
131
  "ai": {
150
132
  "compositionPattern": "compound",
151
- "subComponents": [
152
- "Item",
153
- "Trigger",
154
- "Content"
155
- ],
156
- "requiredChildren": [
157
- "Item"
158
- ],
133
+ "subComponents": ["Item", "Trigger", "Content"],
134
+ "requiredChildren": ["Item"],
159
135
  "commonPatterns": [
160
136
  "<Accordion type=\"single\" collapsible><Accordion.Item value=\"item-1\"><Accordion.Trigger>{title}</Accordion.Trigger><Accordion.Content>{content}</Accordion.Content></Accordion.Item></Accordion>"
161
137
  ]
@@ -1,14 +1,12 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/feedback" as feedback;
3
4
 
4
5
  .accordion {
5
- font-family: var(--fui-font-sans, $fui-font-sans);
6
6
  width: 100%;
7
7
 
8
- // Borders target direct children (BaseCollapsible.Root wrappers)
9
- // so :first-child/:last-child selectors work correctly
10
8
  > * {
11
- border-bottom: 1px solid var(--fui-border, $fui-border);
9
+ border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
12
10
 
13
11
  &:last-child {
14
12
  border-bottom: none;
@@ -16,48 +14,45 @@
16
14
  }
17
15
  }
18
16
 
19
- .item {
20
- &[data-disabled] {
21
- opacity: 0.5;
22
- pointer-events: none;
23
- }
17
+ .item[data-disabled] {
18
+ opacity: 0.5;
19
+ pointer-events: none;
24
20
  }
25
21
 
26
- // Reset heading styles (semantic wrapper for trigger)
27
22
  .heading {
28
23
  margin: 0;
29
- font-size: inherit;
30
- font-weight: inherit;
24
+ font: inherit;
31
25
  }
32
26
 
33
27
  .trigger {
34
28
  @include button-reset;
35
29
  @include interactive-base;
30
+ @include feedback.disclosure-row;
36
31
 
37
- display: flex;
38
- align-items: center;
39
32
  justify-content: space-between;
40
- width: 100%;
41
- padding: var(--fui-space-2, $fui-space-2) 0;
42
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
43
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
33
+ inline-size: 100%;
44
34
  color: var(--fui-text-primary, $fui-text-primary);
45
- text-align: left;
35
+ text-align: start;
36
+
37
+ &:hover:not(:disabled) {
38
+ background-color: var(--fui-bg-hover, $fui-bg-hover);
39
+ }
46
40
 
47
41
  &:focus-visible {
48
42
  @include focus-ring;
43
+
49
44
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
50
45
  }
51
46
  }
52
47
 
53
48
  .triggerContent {
54
49
  flex: 1;
50
+ min-inline-size: 0;
55
51
  }
56
52
 
57
53
  .chevron {
58
- flex-shrink: 0;
59
- width: var(--fui-icon-md, $fui-icon-md);
60
- height: var(--fui-icon-md, $fui-icon-md);
54
+ @include feedback.disclosure-glyph;
55
+
61
56
  color: var(--fui-text-secondary, $fui-text-secondary);
62
57
  transition: transform var(--fui-transition-normal, $fui-transition-normal);
63
58
 
@@ -67,47 +62,31 @@
67
62
  }
68
63
 
69
64
  .content {
65
+ display: grid;
66
+ grid-template-rows: 0fr;
70
67
  overflow: hidden;
71
-
72
- // Base UI Collapsible handles height animation via CSS
73
- // We need to handle the collapsed state
74
- &[data-state="closed"] {
75
- height: 0;
76
- }
68
+ opacity: 0;
69
+ transition:
70
+ grid-template-rows var(--fui-transition-normal, $fui-transition-normal),
71
+ opacity var(--fui-transition-normal, $fui-transition-normal);
77
72
 
78
73
  &[data-state="open"] {
79
- height: auto;
80
- }
81
-
82
- // Smooth animation using Base UI's built-in transition
83
- &[data-starting-style],
84
- &[data-ending-style] {
85
- transition:
86
- height var(--fui-transition-normal, $fui-transition-normal),
87
- padding var(--fui-transition-normal, $fui-transition-normal);
74
+ grid-template-rows: 1fr;
75
+ opacity: 1;
88
76
  }
89
77
  }
90
78
 
91
79
  .contentInner {
92
- padding-bottom: var(--fui-space-1, $fui-space-1);
93
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
80
+ @include feedback.disclosure-panel;
81
+
82
+ min-block-size: 0;
83
+ overflow: hidden;
94
84
  color: var(--fui-text-secondary, $fui-text-secondary);
95
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
96
85
  }
97
86
 
98
- // ============================================
99
- // Accessibility: Reduced Motion
100
- // ============================================
101
-
102
87
  @media (prefers-reduced-motion: reduce) {
103
- .chevron {
104
- transition: none;
105
- }
106
-
88
+ .chevron,
107
89
  .content {
108
- &[data-starting-style],
109
- &[data-ending-style] {
110
- transition: none;
111
- }
90
+ transition: none;
112
91
  }
113
92
  }
@@ -1,21 +1,16 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Alert",
4
- "description": "Contextual feedback messages for user actions or system status. Supports multiple severity levels with optional actions and dismissibility.",
4
+ "description": "Tells the user what just happened, or what is about to.",
5
5
  "category": "feedback",
6
- "tags": [
7
- "notification",
8
- "message",
9
- "feedback",
10
- "banner",
11
- "toast"
12
- ],
6
+ "tags": ["notification", "message", "feedback", "banner", "toast"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Alert/index.tsx",
15
9
  "exportName": "Alert",
16
10
  "propsSummary": [
17
11
  "children: node (required)",
18
- "severity: info|success|warning|error (default: info)"
12
+ "severity: info|success|warning|error (default: info)",
13
+ "emphasis: tint|surface (default: tint)"
19
14
  ],
20
15
  "props": {
21
16
  "children": {
@@ -28,73 +23,72 @@
28
23
  "description": "Visual severity level",
29
24
  "default": "info",
30
25
  "required": false,
31
- "values": [
32
- "info",
33
- "success",
34
- "warning",
35
- "error"
36
- ]
26
+ "values": ["info", "success", "warning", "error"]
27
+ },
28
+ "emphasis": {
29
+ "type": "enum",
30
+ "description": "How much surface the severity claims. `tint` washes the card in the severity colour; `surface` keeps the page background and colours only the hairline and title.",
31
+ "default": "tint",
32
+ "required": false,
33
+ "values": ["tint", "surface"]
37
34
  }
38
35
  },
39
36
  "usage": {
40
37
  "when": [
41
- "Communicating the result of a user action (success, error)",
42
- "Warning about potential issues before they occur",
43
- "Providing important contextual information inline",
44
- "System status notifications that require attention"
38
+ "Reporting the outcome of something the user did",
39
+ "Flagging a risk before the user hits it",
40
+ "Standing status that must stay on screen"
45
41
  ],
46
42
  "whenNot": [
47
- "Brief status labels (use Badge instead)",
48
- "Transient notifications (use Toast/Snackbar)",
49
- "Form-field-level errors (use Input error prop)",
50
- "Confirmation before destructive actions (use Dialog)"
43
+ "A one-word status (use Badge)",
44
+ "A message that should fade away (use Toast)",
45
+ "An invalid field (use the Input error prop)",
46
+ "A decision the user must make first (use Dialog)"
51
47
  ],
52
48
  "guidelines": [
53
- "Match severity to the actual importance: info for context, warning for potential issues, error for failures",
54
- "Always provide actionable guidance in error alerts",
55
- "Use Alert.Title for complex messages; skip titles for brief one-liners",
56
- "Limit to one action per alert to avoid decision paralysis",
57
- "Use Alert.Close only for non-critical information",
58
- "Alert.Action and Alert.Close render buttons with type=\"button\" by default (safe inside forms)",
59
- "Alert.Close composes your onClick handler with built-in dismiss behavior and respects preventDefault()",
60
- "Alert sub-components forward DOM props (aria-*, data-*, id, handlers) to their rendered elements"
49
+ "Match severity to real stakes \u2014 an error that is not an error trains people to ignore you",
50
+ "Every error alert says what to do next",
51
+ "Add Alert.Title only when the message needs two lines",
52
+ "One action per alert",
53
+ "Only dismissible when losing the message costs nothing",
54
+ "Alert.Action and Alert.Close default to type=\"button\", so they are safe inside a form",
55
+ "Alert.Close runs your onClick and still respects preventDefault()"
61
56
  ],
62
57
  "accessibility": [
63
- "Uses role=\"alert\" for screen reader announcement",
64
- "Error and warning alerts are announced immediately by assistive technology",
65
- "Alert.Close must have an accessible label",
66
- "Color alone must not convey meaning - icons and text reinforce severity"
58
+ "role=\"alert\" means assistive tech announces it on arrival",
59
+ "Alert.Close needs its own label",
60
+ "Icon plus wording carry the severity \u2014 never color alone"
67
61
  ]
68
62
  },
69
63
  "examples": [
70
64
  {
71
65
  "name": "Info",
72
- "description": "Informational context for the user",
66
+ "description": "Neutral context \u2014 nothing went wrong, nothing needs doing.",
73
67
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n Your session will expire in 15 minutes. Save your work to avoid losing changes.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
74
68
  },
75
69
  {
76
70
  "name": "Success",
77
- "description": "Positive confirmation of completed action",
71
+ "description": "Confirms the thing the user just did actually landed.",
78
72
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"success\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Payment processed</Alert.Title>\n <Alert.Content>\n Your order #12345 has been confirmed. You will receive a confirmation email shortly.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
79
73
  },
80
74
  {
81
75
  "name": "Warning",
82
- "description": "Caution about potential issues",
76
+ "description": "Nothing is broken yet \u2014 act before it is.",
83
77
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Storage almost full</Alert.Title>\n <Alert.Content>\n You have used 90% of your storage quota. Consider deleting unused files.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
84
78
  },
85
79
  {
86
80
  "name": "Error",
87
- "description": "Error state requiring user attention",
81
+ "description": "Something failed; say what to do about it.",
88
82
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"error\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Upload failed</Alert.Title>\n <Alert.Content>\n The file could not be uploaded. Check your connection and try again.\n </Alert.Content>\n </Alert.Body>\n</Alert>"
89
83
  },
90
84
  {
91
85
  "name": "With Action",
92
- "description": "Alert with an actionable button",
86
+ "description": "One button, one job \u2014 more than one stalls the reader.",
93
87
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"warning\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Title>Update available</Alert.Title>\n <Alert.Content>\n A new version is available with important security fixes.\n </Alert.Content>\n <Alert.Actions>\n <Alert.Action onClick={() => {}}>Update now</Alert.Action>\n </Alert.Actions>\n </Alert.Body>\n</Alert>"
94
88
  },
95
89
  {
96
90
  "name": "Dismissible",
97
- "description": "Alert that can be closed by the user",
91
+ "description": "A close button suits news the user can safely ignore.",
98
92
  "code": "import { Alert } from '@/components/Alert';\n\n<Alert severity=\"info\">\n <Alert.Icon />\n <Alert.Body>\n <Alert.Content>\n You can customize your notification preferences in Settings.\n </Alert.Content>\n </Alert.Body>\n <Alert.Close />\n</Alert>"
99
93
  }
100
94
  ],
@@ -130,18 +124,8 @@
130
124
  },
131
125
  "ai": {
132
126
  "compositionPattern": "compound",
133
- "subComponents": [
134
- "Icon",
135
- "Body",
136
- "Title",
137
- "Content",
138
- "Actions",
139
- "Action",
140
- "Close"
141
- ],
142
- "requiredChildren": [
143
- "Body"
144
- ],
127
+ "subComponents": ["Icon", "Body", "Title", "Content", "Actions", "Action", "Close"],
128
+ "requiredChildren": ["Body"],
145
129
  "commonPatterns": [
146
130
  "<Alert severity=\"info\"><Alert.Icon /><Alert.Body><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",
147
131
  "<Alert severity=\"warning\"><Alert.Icon /><Alert.Body><Alert.Title>{title}</Alert.Title><Alert.Content>{message}</Alert.Content></Alert.Body></Alert>",