@usefragments/ui 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usefragments/ui",
3
- "version": "1.6.0",
3
+ "version": "2.0.0",
4
4
  "license": "MIT",
5
5
  "description": "Customizable UI components built on Base UI headless primitives",
6
6
  "author": "Conan McNicholl",
@@ -220,7 +220,7 @@
220
220
  "@phosphor-icons/react": "^2.1.10"
221
221
  },
222
222
  "devDependencies": {
223
- "@fontsource-variable/inter": "5.2.8",
223
+ "@fontsource-variable/onest": "5.3.0",
224
224
  "@fontsource-variable/jetbrains-mono": "5.2.8",
225
225
  "@playwright/test": "1.58.2",
226
226
  "@storybook/addon-a11y": "^8",
@@ -240,7 +240,6 @@
240
240
  "@types/react-dom": "^19.0.0",
241
241
  "@vitejs/plugin-react": "^4.3.0",
242
242
  "ajv": "8.17.1",
243
- "chromatic": "^17.1.0",
244
243
  "date-fns": "^4.0.0",
245
244
  "jsdom": "^25.0.0",
246
245
  "react": "^19.0.0",
@@ -255,7 +254,7 @@
255
254
  "vite": "^6.0.0",
256
255
  "vitest": "^2.1.8",
257
256
  "vitest-axe": "^0.1.0",
258
- "@usefragments/core": "1.10.2"
257
+ "@usefragments/core": "2.0.0"
259
258
  },
260
259
  "files": [
261
260
  "src",
@@ -269,24 +268,24 @@
269
268
  "!src/blocks/",
270
269
  "!src/assets/*.svg",
271
270
  "!src/**/*.stories.tsx",
272
- "!src/components/Cloud/",
271
+ "!src/**/*.ui-notes.md",
272
+ "!src/storybook/",
273
273
  "dist",
274
- "!dist/components/Cloud/",
275
274
  "fragments.json"
276
275
  ],
277
276
  "scripts": {
278
277
  "dev": "storybook dev -p 6006",
279
278
  "generate:measurements": "node scripts/generate-measurements.mjs",
279
+ "typecheck": "tsc --noEmit -p tsconfig.typecheck.json",
280
280
  "check:measurements": "node scripts/generate-measurements.mjs --check && node scripts/check-measurement-parity.mjs",
281
- "build": "pnpm run check:measurements && vite build && node ./scripts/emit-complete-styles.mjs && tsc -p tsconfig.build.json",
281
+ "build": "pnpm run check:measurements && vite build && node ./scripts/emit-complete-styles.mjs && tsc -p tsconfig.build.json && pnpm run typecheck:fragments",
282
+ "typecheck:fragments": "tsc -p tsconfig.fragments.json",
282
283
  "lint": "eslint src geometry",
283
284
  "test": "vitest run",
284
285
  "test:geometry": "node geometry/run.mjs",
285
286
  "test:geometry:self": "node --test geometry/__tests__/*.test.mjs",
286
287
  "test:geometry:types": "tsc -p geometry/tsconfig.json --noEmit",
287
- "build-storybook": "storybook build",
288
- "chromatic": "chromatic",
289
- "chromatic:ci": "chromatic --build-script-name build-storybook"
288
+ "build-storybook": "storybook build"
290
289
  },
291
290
  "module": "dist/index.js"
292
291
  }
@@ -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. */
@@ -0,0 +1,166 @@
1
+ @use "../tokens/variables" as *;
2
+
3
+ // ================================================================
4
+ // NavGlyph motion — one small verb per glyph, played when the row the
5
+ // glyph sits in is hovered or focused. Nothing moves at rest; the verb
6
+ // answers the pointer and returns the glyph to its drawn state. Keyframe
7
+ // names are referenced statically so CSS Modules rewrites reference and
8
+ // definition together.
9
+ // ================================================================
10
+
11
+ .glyph {
12
+ display: block;
13
+ overflow: visible;
14
+ }
15
+
16
+ // fragments-allow FUI2015: per-element motion parameters set by the glyph, not design tokens
17
+ $_beat: 420ms;
18
+ $_step: 70ms;
19
+ $_ease: cubic-bezier(0.4, 0, 0.2, 1);
20
+
21
+ @mixin verb($name, $duration: $_beat, $ease: $_ease) {
22
+ :is(a, button):is(:hover, :focus-visible) & {
23
+ animation-name: $name;
24
+ animation-duration: $duration;
25
+ animation-timing-function: $ease;
26
+ // fragments-allow FUI2015: stagger between sibling parts of one glyph
27
+ animation-delay: calc(var(--i, 0) * #{$_step});
28
+ }
29
+ }
30
+
31
+ @media (prefers-reduced-motion: no-preference) {
32
+ .motion {
33
+ transform-box: fill-box;
34
+ transform-origin: center;
35
+ }
36
+
37
+ // Overview: the four tiles dip in turn.
38
+ .tile {
39
+ @include verb(hop, 360ms);
40
+ }
41
+
42
+ // Repository: the spine cracks open a hair.
43
+ .spine {
44
+ @include verb(open);
45
+ }
46
+
47
+ // Pull request: the branch draws into the base, then its head pops.
48
+ .branch {
49
+ @include verb(draw);
50
+ }
51
+
52
+ .head {
53
+ @include verb(pop, 240ms);
54
+ }
55
+
56
+ // Finding: the fly waves once on the pole.
57
+ .fly {
58
+ transform-origin: 0 0;
59
+
60
+ @include verb(wave, 520ms);
61
+ }
62
+
63
+ // Contract: the signature lines write themselves.
64
+ .line {
65
+ @include verb(draw, 320ms);
66
+ }
67
+
68
+ // Adoption: the bars rise from the baseline.
69
+ .bar {
70
+ transform-origin: 50% 100%;
71
+
72
+ @include verb(rise, 360ms);
73
+ }
74
+
75
+ // Component: the cube's inner edges redraw.
76
+ .edge {
77
+ @include verb(draw, 320ms);
78
+ }
79
+
80
+ // Setup: the prompt nudges and the cursor blinks.
81
+ .caret {
82
+ @include verb(nudge);
83
+ }
84
+
85
+ .cursor {
86
+ @include verb(blink, 600ms, steps(1, end));
87
+ }
88
+
89
+ // Settings: each knob slides along its rail and settles back.
90
+ .knob {
91
+ @include verb(slide);
92
+ }
93
+ }
94
+
95
+ @keyframes hop {
96
+ 50% {
97
+ transform: scale(0.72);
98
+ }
99
+ }
100
+
101
+ @keyframes open {
102
+ 50% {
103
+ transform: translateX(1.5px);
104
+ }
105
+ }
106
+
107
+ @keyframes draw {
108
+ from {
109
+ stroke-dasharray: 1;
110
+ stroke-dashoffset: 1;
111
+ }
112
+
113
+ to {
114
+ stroke-dasharray: 1;
115
+ stroke-dashoffset: 0;
116
+ }
117
+ }
118
+
119
+ @keyframes pop {
120
+ from {
121
+ transform: scale(0);
122
+ }
123
+
124
+ 60% {
125
+ transform: scale(1.25);
126
+ }
127
+
128
+ to {
129
+ transform: scale(1);
130
+ }
131
+ }
132
+
133
+ @keyframes wave {
134
+ 30% {
135
+ transform: rotate(-9deg);
136
+ }
137
+
138
+ 65% {
139
+ transform: rotate(5deg);
140
+ }
141
+ }
142
+
143
+ @keyframes rise {
144
+ from {
145
+ transform: scaleY(0);
146
+ }
147
+ }
148
+
149
+ @keyframes nudge {
150
+ 50% {
151
+ transform: translateX(1.5px);
152
+ }
153
+ }
154
+
155
+ @keyframes blink {
156
+ 25%,
157
+ 75% {
158
+ opacity: 0;
159
+ }
160
+ }
161
+
162
+ @keyframes slide {
163
+ 50% {
164
+ transform: translateX(var(--dx, 2px));
165
+ }
166
+ }
@@ -0,0 +1,188 @@
1
+ import * as React from "react";
2
+ import styles from "./nav-glyph.module.scss";
3
+
4
+ /**
5
+ * The navigation glyph set: one 16px stroke glyph per governance destination.
6
+ * Drawn on a 16-unit grid with a 1.5 stroke, round caps and joins, and
7
+ * `currentColor` ink, so a glyph takes the colour of the row it sits in. The
8
+ * component glyph is the isometric cube the illustrated cards use, so the
9
+ * sidebar and the cards share one object language.
10
+ *
11
+ * Each glyph has one motion verb (see the module stylesheet) that plays when
12
+ * the link or button it sits in is hovered or focused. Parts that move carry
13
+ * `motion` plus their verb class; `--i` staggers siblings.
14
+ */
15
+ export type NavGlyphName =
16
+ | "overview"
17
+ | "repository"
18
+ | "pullRequest"
19
+ | "finding"
20
+ | "contract"
21
+ | "adoption"
22
+ | "component"
23
+ | "setup"
24
+ | "settings";
25
+
26
+ type Part = { className: string; style?: React.CSSProperties };
27
+
28
+ /** A moving part: `motion` plus its verb class, and its stagger index. */
29
+ function part(verb: string, index?: number, vars?: Record<string, string>): Part {
30
+ const style =
31
+ index === undefined && !vars
32
+ ? undefined
33
+ : ({ ...(index === undefined ? {} : { "--i": index }), ...vars } as React.CSSProperties);
34
+ return { className: [styles.motion, styles[verb]].join(" "), style };
35
+ }
36
+
37
+ /** A stroke that draws itself: normalised length so the verb is one keyframe. */
38
+ function stroke(verb: string, index?: number): Part & { pathLength: number } {
39
+ return { ...part(verb, index), pathLength: 1 };
40
+ }
41
+
42
+ const GLYPHS: Record<NavGlyphName, React.ReactNode> = {
43
+ // Four tiles; the first is inked — the place you are standing.
44
+ overview: (
45
+ <>
46
+ <rect
47
+ x="2.5"
48
+ y="2.5"
49
+ width="4.5"
50
+ height="4.5"
51
+ rx="1"
52
+ fill="currentColor"
53
+ stroke="none"
54
+ {...part("tile", 0)}
55
+ />
56
+ <rect x="9" y="2.5" width="4.5" height="4.5" rx="1" {...part("tile", 1)} />
57
+ <rect x="9" y="9" width="4.5" height="4.5" rx="1" {...part("tile", 2)} />
58
+ <rect x="2.5" y="9" width="4.5" height="4.5" rx="1" {...part("tile", 3)} />
59
+ </>
60
+ ),
61
+ // A bound volume with its spine.
62
+ repository: (
63
+ <>
64
+ <rect x="3" y="2.5" width="10" height="11" rx="1.5" />
65
+ <path d="M6 2.5v11" {...part("spine")} />
66
+ </>
67
+ ),
68
+ // Two commits on the base branch, one on the branch merging in.
69
+ pullRequest: (
70
+ <>
71
+ <circle cx="4.5" cy="4" r="1.75" />
72
+ <circle cx="4.5" cy="12" r="1.75" />
73
+ <path d="M4.5 5.75v4.5" />
74
+ <path d="M8 4h1.75A1.75 1.75 0 0 1 11.5 5.75v4.5" {...stroke("branch")} />
75
+ <circle cx="11.5" cy="12" r="1.75" {...part("head", 4)} />
76
+ </>
77
+ ),
78
+ // A planted flag with a notched fly.
79
+ finding: (
80
+ <>
81
+ <path d="M4 14V2.5" />
82
+ <path d="M4 3h7.5l-1.75 2.5L11.5 8H4" {...part("fly")} />
83
+ </>
84
+ ),
85
+ // A signed sheet with a folded corner.
86
+ contract: (
87
+ <>
88
+ <path d="M4.5 2.5h5l3 3v7.5a1 1 0 0 1-1 1h-7a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1z" />
89
+ <path d="M9.5 2.5v3h3" />
90
+ <path d="M6.5 8.5h3" {...stroke("line", 0)} />
91
+ <path d="M6.5 11h3.5" {...stroke("line", 2)} />
92
+ </>
93
+ ),
94
+ // Three bars climbing.
95
+ adoption: (
96
+ <>
97
+ <path d="M2.25 13.5h11.5" />
98
+ <path d="M4 13.5V9.5" {...part("bar", 0)} />
99
+ <path d="M8 13.5V6" {...part("bar", 1)} />
100
+ <path d="M12 13.5V2.75" {...part("bar", 2)} />
101
+ </>
102
+ ),
103
+ // The isometric cube from the card art.
104
+ component: (
105
+ <>
106
+ <path d="M8 1.75l5.5 3.15v6.2L8 14.25l-5.5-3.15v-6.2z" />
107
+ <path d="M8 8.05l5.5-3.15" {...stroke("edge", 0)} />
108
+ <path d="M8 8.05L2.5 4.9" {...stroke("edge", 1)} />
109
+ <path d="M8 8.05v6.2" {...stroke("edge", 2)} />
110
+ </>
111
+ ),
112
+ // A terminal with its prompt.
113
+ setup: (
114
+ <>
115
+ <rect x="2" y="3" width="12" height="10" rx="1.5" />
116
+ <path d="M5 6.75l2 1.5-2 1.5" {...part("caret")} />
117
+ <path d="M8.75 10.25h2.5" {...part("cursor")} />
118
+ </>
119
+ ),
120
+ // Three sliders, each knob somewhere different.
121
+ settings: (
122
+ <>
123
+ <path d="M2.5 4.5h11" />
124
+ <circle
125
+ cx="10"
126
+ cy="4.5"
127
+ r="1.5"
128
+ fill="currentColor"
129
+ stroke="none"
130
+ {...part("knob", 0, { "--dx": "2px" })}
131
+ />
132
+ <path d="M2.5 8h11" />
133
+ <circle
134
+ cx="6"
135
+ cy="8"
136
+ r="1.5"
137
+ fill="currentColor"
138
+ stroke="none"
139
+ {...part("knob", 1, { "--dx": "-2px" })}
140
+ />
141
+ <path d="M2.5 11.5h11" />
142
+ <circle
143
+ cx="9.5"
144
+ cy="11.5"
145
+ r="1.5"
146
+ fill="currentColor"
147
+ stroke="none"
148
+ {...part("knob", 2, { "--dx": "1.5px" })}
149
+ />
150
+ </>
151
+ ),
152
+ };
153
+
154
+ export const NAV_GLYPH_NAMES = Object.keys(GLYPHS) as NavGlyphName[];
155
+
156
+ export interface NavGlyphProps extends Omit<React.SVGAttributes<SVGSVGElement>, "name"> {
157
+ /** Which glyph to draw. */
158
+ name: NavGlyphName;
159
+ /** Rendered box in px; the glyph inherits `currentColor`. */
160
+ size?: number | string;
161
+ }
162
+
163
+ /**
164
+ * A navigation glyph. Decorative by default (`aria-hidden`): the label beside
165
+ * it names the destination. Pass `aria-label` and `role="img"` when the glyph
166
+ * stands alone. Its verb plays when the enclosing link or button is hovered
167
+ * or focused, and never under `prefers-reduced-motion: reduce`.
168
+ */
169
+ export function NavGlyph({ name, size = 16, className, ...rest }: NavGlyphProps) {
170
+ return (
171
+ <svg
172
+ width={size}
173
+ height={size}
174
+ viewBox="0 0 16 16"
175
+ fill="none"
176
+ stroke="currentColor"
177
+ strokeWidth={1.5}
178
+ strokeLinecap="round"
179
+ strokeLinejoin="round"
180
+ aria-hidden="true"
181
+ focusable="false"
182
+ className={[styles.glyph, className].filter(Boolean).join(" ")}
183
+ {...rest}
184
+ >
185
+ {GLYPHS[name]}
186
+ </svg>
187
+ );
188
+ }
@@ -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
  ]