@usefragments/ui 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -1,22 +1,15 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Loading",
4
- "description": "Versatile loading indicator with multiple variants for showing progress or waiting states",
4
+ "description": "Signals that something is happening when you cannot say how long it will take.",
5
5
  "category": "feedback",
6
- "tags": [
7
- "loading",
8
- "spinner",
9
- "progress",
10
- "feedback",
11
- "indicator",
12
- "async"
13
- ],
6
+ "tags": ["loading", "spinner", "progress", "feedback", "indicator", "async"],
14
7
  "status": "stable",
15
8
  "sourcePath": "src/components/Loading/index.tsx",
16
9
  "exportName": "Loading",
17
10
  "propsSummary": [
18
11
  "size: sm|md|lg|xl (default: md)",
19
- "variant: spinner|dots|pulse (default: spinner)",
12
+ "kind: spinner|dots|pulse (default: spinner)",
20
13
  "label: string (default: Loading...)",
21
14
  "centered: boolean (default: false)",
22
15
  "fill: boolean (default: false)",
@@ -29,23 +22,14 @@
29
22
  "description": "Size of the loading indicator",
30
23
  "default": "md",
31
24
  "required": false,
32
- "values": [
33
- "sm",
34
- "md",
35
- "lg",
36
- "xl"
37
- ]
25
+ "values": ["sm", "md", "lg", "xl"]
38
26
  },
39
- "variant": {
27
+ "kind": {
40
28
  "type": "enum",
41
- "description": "Visual style of the loading animation",
29
+ "description": "Which animation plays",
42
30
  "default": "spinner",
43
31
  "required": false,
44
- "values": [
45
- "spinner",
46
- "dots",
47
- "pulse"
48
- ]
32
+ "values": ["spinner", "dots", "pulse"]
49
33
  },
50
34
  "label": {
51
35
  "type": "string",
@@ -73,90 +57,82 @@
73
57
  },
74
58
  "color": {
75
59
  "type": "enum",
76
- "description": "Color variant - accent uses theme color, current inherits text color",
60
+ "description": "Colour. accent uses the theme accent, current inherits the surrounding text colour",
77
61
  "default": "accent",
78
62
  "required": false,
79
- "values": [
80
- "accent",
81
- "current",
82
- "muted"
83
- ]
63
+ "values": ["accent", "current", "muted"]
84
64
  }
85
65
  },
86
66
  "usage": {
87
67
  "when": [
88
- "Indicating content is being fetched or processed",
89
- "Showing a pending state while waiting for an async operation",
90
- "Displaying loading state for buttons, forms, or page sections",
91
- "Full-screen loading during initial app/page load"
68
+ "Fetching or processing content",
69
+ "Waiting on an async action to come back",
70
+ "Buttons, forms, and page sections mid-request",
71
+ "The first paint of an app or page"
92
72
  ],
93
73
  "whenNot": [
94
- "For showing determinate progress - use Progress component instead",
95
- "For showing skeleton placeholders - use Skeleton component instead",
96
- "For AI-specific thinking states - use ThinkingIndicator instead"
74
+ "You know the percentage use Progress",
75
+ "You know the page shape use Skeleton",
76
+ "AI reasoning states use ThinkingIndicator"
97
77
  ],
98
78
  "guidelines": [
99
- "Use spinner variant for general loading states",
100
- "Use dots variant for chat/messaging contexts",
101
- "Use pulse variant for subtle, ambient loading",
102
- "Always provide a meaningful label for screen readers",
103
- "Consider using Loading.Screen for initial page loads",
104
- "Use Loading.Inline when loading indicator should flow with text"
79
+ "spinner for general waits",
80
+ "dots for chat and messaging",
81
+ "pulse for quiet ambient waiting",
82
+ "Always pass a label describing what is loading",
83
+ "Loading.Screen for first page load, Loading.Inline to sit inside a sentence"
105
84
  ],
106
85
  "accessibility": [
107
- "Component uses role=\"status\" and aria-live=\"polite\"",
108
- "Always provide descriptive label prop for screen readers",
109
- "Animations respect prefers-reduced-motion preference"
86
+ "Announced through role=\"status\" with aria-live=\"polite\"",
87
+ "label is what a screen reader reads — make it specific",
88
+ "Animation stops for prefers-reduced-motion"
110
89
  ]
111
90
  },
112
91
  "examples": [
113
92
  {
114
93
  "name": "Default",
115
- "description": "Default spinner loading indicator",
116
- "code": "<Loading />"
94
+ "description": "Spinner at medium size, accent coloured.",
95
+ "code": "<Loading label=\"Loading content\" />"
117
96
  },
118
97
  {
119
98
  "name": "Sizes",
120
- "description": "Loading indicators in different sizes",
121
- "code": "<div style={{ display: 'flex', alignItems: 'center', gap: '24px' }}>\n <Loading size=\"sm\" />\n <Loading size=\"md\" />\n <Loading size=\"lg\" />\n <Loading size=\"xl\" />\n</div>"
99
+ "description": "sm inside controls, xl for a whole page.",
100
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"lg\" align=\"center\">\n <Loading size=\"sm\" label=\"Loading\" />\n <Loading size=\"md\" label=\"Loading\" />\n <Loading size=\"lg\" label=\"Loading\" />\n <Loading size=\"xl\" label=\"Loading\" />\n</Stack>"
122
101
  },
123
102
  {
124
103
  "name": "Dots",
125
- "description": "Bouncing dots animation",
126
- "code": "<Loading variant=\"dots\" />"
104
+ "description": "Three bouncing dots, at home in a message thread.",
105
+ "code": "<Loading kind=\"dots\" label=\"Sending message\" />"
127
106
  },
128
107
  {
129
108
  "name": "Pulse",
130
- "description": "Pulsing circle animation",
131
- "code": "<Loading variant=\"pulse\" />"
109
+ "description": "One breathing dot for ambient background work.",
110
+ "code": "<Loading kind=\"pulse\" label=\"Syncing\" />"
132
111
  },
133
112
  {
134
113
  "name": "Colors",
135
- "description": "Different color variants",
136
- "code": "<div style={{ display: 'flex', alignItems: 'center', gap: '24px' }}>\n <Loading color=\"accent\" />\n <Loading color=\"muted\" />\n <span style={{ color: '#3b82f6' }}>\n <Loading color=\"current\" />\n </span>\n</div>"
114
+ "description": "Accent, muted, or whatever the surrounding text is.",
115
+ "code": "import { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"lg\" align=\"center\">\n <Loading color=\"accent\" label=\"Loading\" />\n <Loading color=\"muted\" label=\"Loading\" />\n <span style={{ color: 'var(--fui-color-info)' }}>\n <Loading color=\"current\" label=\"Loading\" />\n </span>\n</Stack>"
137
116
  },
138
117
  {
139
118
  "name": "Inline",
140
- "description": "Inline loading indicator that flows with text",
141
- "code": "<p style={{ margin: 0 }}>\n Processing your request <Loading.Inline /> please wait...\n</p>"
119
+ "description": "Sits on the text baseline mid-sentence.",
120
+ "code": "<p style={{ margin: 0 }}>\n Processing your request <Loading.Inline label=\"Processing\" /> please wait…\n</p>"
142
121
  },
143
122
  {
144
123
  "name": "Centered",
145
- "description": "Centered in container",
146
- "code": "<div style={{ width: '200px', height: '100px', border: '1px dashed #ccc', borderRadius: '8px' }}>\n <Loading centered fill />\n</div>"
124
+ "description": "Fills its container and centres in it.",
125
+ "code": "<div\n style={{\n width: '200px',\n height: '100px',\n border: '1px dashed var(--fui-border)',\n borderRadius: 'var(--fui-radius-md)',\n }}\n>\n <Loading centered fill label=\"Loading section\" />\n</div>"
147
126
  },
148
127
  {
149
128
  "name": "Screen",
150
- "description": "Full-screen loading state with optional label",
151
- "code": "<div style={{ position: 'relative', width: '300px', height: '200px', border: '1px solid #ccc', borderRadius: '8px', overflow: 'hidden', transform: 'scale(1)' }}>\n <Loading.Screen size=\"lg\" label=\"Loading application...\" showLabel />\n</div>"
129
+ "description": "Covers the surface it sits on and names the wait.",
130
+ "code": "<div\n style={{\n position: 'relative',\n contain: 'layout',\n width: '300px',\n height: '200px',\n border: '1px solid var(--fui-border)',\n borderRadius: 'var(--fui-radius-md)',\n overflow: 'hidden',\n }}\n>\n <Loading.Screen size=\"lg\" label=\"Loading application…\" showLabel />\n</div>"
152
131
  }
153
132
  ],
154
133
  "ai": {
155
134
  "compositionPattern": "compound",
156
- "subComponents": [
157
- "Inline",
158
- "Screen"
159
- ]
135
+ "subComponents": ["Inline", "Screen"]
160
136
  },
161
137
  "provenance": {
162
138
  "source": "migrated",
@@ -1,4 +1,5 @@
1
1
  @use "../../tokens/variables" as *;
2
+ @use "../../tokens/measurements.generated" as measurements;
2
3
  @use "../../recipes/representation" as representation;
3
4
  @use "../../recipes/typography" as typography;
4
5
 
@@ -58,17 +59,17 @@
58
59
  }
59
60
 
60
61
  // ============================================
61
- // Spinner Variant
62
+ // Spinner kind
62
63
  // ============================================
63
64
 
64
65
  .spinnerIcon {
65
66
  inline-size: 100%;
66
67
  block-size: 100%;
67
- animation: spin 0.8s linear infinite;
68
+ animation: spin var(--fui-duration-spin, $fui-duration-spin) linear infinite;
68
69
 
69
70
  @media (prefers-reduced-motion: reduce) {
70
71
  animation: none;
71
- opacity: 0.7;
72
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
72
73
  }
73
74
  }
74
75
 
@@ -82,10 +83,13 @@
82
83
  }
83
84
 
84
85
  // ============================================
85
- // Dots Variant
86
+ // Dots kind
86
87
  // ============================================
87
88
 
88
- .dots {
89
+ // `.dots`/`.pulse` on the root are kind hooks only — sizing lives on the
90
+ // inner track. Sharing one class between root and track let the track's
91
+ // 100% × 100% override the root's fixed activity footprint (rendered 0 × 0).
92
+ .dotsTrack {
89
93
  display: flex;
90
94
  align-items: center;
91
95
  justify-content: space-between;
@@ -98,23 +102,23 @@
98
102
  block-size: 25%;
99
103
  border-radius: var(--fui-radius-full, $fui-radius-full);
100
104
  background-color: currentColor;
101
- animation: bounce 1.4s ease-in-out infinite;
105
+ animation: bounce var(--fui-duration-pulse, $fui-duration-pulse) ease-in-out infinite;
102
106
 
103
107
  &:nth-child(1) {
104
- animation-delay: 0s;
108
+ animation-delay: var(--fui-raw-space-0, #{measurements.raw-space(0)});
105
109
  }
106
110
 
107
111
  &:nth-child(2) {
108
- animation-delay: 0.2s;
112
+ animation-delay: calc(var(--fui-duration-pulse, #{$fui-duration-pulse}) / 8);
109
113
  }
110
114
 
111
115
  &:nth-child(3) {
112
- animation-delay: 0.4s;
116
+ animation-delay: calc(var(--fui-duration-pulse, #{$fui-duration-pulse}) / 4);
113
117
  }
114
118
 
115
119
  @media (prefers-reduced-motion: reduce) {
116
120
  animation: none;
117
- opacity: 0.6;
121
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
118
122
  }
119
123
  }
120
124
 
@@ -123,7 +127,7 @@
123
127
  60%,
124
128
  100% {
125
129
  transform: translateY(0);
126
- opacity: 0.4;
130
+ opacity: var(--fui-opacity-disabled, #{$fui-opacity-disabled});
127
131
  }
128
132
  30% {
129
133
  transform: translateY(-30%);
@@ -132,10 +136,10 @@
132
136
  }
133
137
 
134
138
  // ============================================
135
- // Pulse Variant
139
+ // Pulse kind
136
140
  // ============================================
137
141
 
138
- .pulse {
142
+ .pulseTrack {
139
143
  position: relative;
140
144
  inline-size: 100%;
141
145
  block-size: 100%;
@@ -146,22 +150,22 @@
146
150
 
147
151
  .pulseRing {
148
152
  position: absolute;
149
- width: 100%;
150
- height: 100%;
153
+ inline-size: 100%;
154
+ block-size: 100%;
151
155
  border-radius: var(--fui-radius-full, $fui-radius-full);
152
156
  background-color: currentColor;
153
- opacity: 0.3;
154
- animation: pulseRing 1.5s ease-out infinite;
157
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
158
+ animation: pulseRing var(--fui-duration-pulse, $fui-duration-pulse) ease-out infinite;
155
159
 
156
160
  @media (prefers-reduced-motion: reduce) {
157
161
  animation: none;
158
- opacity: 0.2;
162
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
159
163
  }
160
164
  }
161
165
 
162
166
  .pulseDot {
163
- width: 50%;
164
- height: 50%;
167
+ inline-size: 50%;
168
+ block-size: 50%;
165
169
  border-radius: var(--fui-radius-full, $fui-radius-full);
166
170
  background-color: currentColor;
167
171
  z-index: 1;
@@ -170,7 +174,7 @@
170
174
  @keyframes pulseRing {
171
175
  0% {
172
176
  transform: scale(0.5);
173
- opacity: 0.5;
177
+ opacity: var(--fui-opacity-faint, #{$fui-opacity-faint});
174
178
  }
175
179
  100% {
176
180
  transform: scale(1.5);
@@ -189,7 +193,7 @@
189
193
  align-items: center;
190
194
  justify-content: center;
191
195
  background-color: var(--fui-backdrop, $fui-backdrop);
192
- z-index: 50;
196
+ z-index: var(--fui-overlay-layer-backdrop, #{$fui-overlay-layer-backdrop});
193
197
  }
194
198
 
195
199
  .overlay {
@@ -197,7 +201,7 @@
197
201
  }
198
202
 
199
203
  // ============================================
200
- // Inline Variant
204
+ // Inline
201
205
  // ============================================
202
206
 
203
207
  .inline {
@@ -206,23 +210,25 @@
206
210
  vertical-align: middle;
207
211
  }
208
212
 
213
+ // The inline spinner scales with the surrounding text, so its box is an em
214
+ // measure rather than a glyph step; the md icon is the fallback.
209
215
  .inline-sm {
210
- --inline-size: 0.875em; // Relative to surrounding text
216
+ --_loading-inline-size: 0.875em;
211
217
  }
212
218
 
213
219
  .inline-md {
214
- --inline-size: 1.125em;
220
+ --_loading-inline-size: 1.125em;
215
221
  }
216
222
 
217
223
  .inlineSpinner {
218
- width: var(--inline-size);
219
- height: var(--inline-size);
220
- animation: spin 0.8s linear infinite;
224
+ inline-size: var(--_loading-inline-size, var(--fui-icon-md, #{$fui-icon-md}));
225
+ block-size: var(--_loading-inline-size, var(--fui-icon-md, #{$fui-icon-md}));
226
+ animation: spin var(--fui-duration-spin, $fui-duration-spin) linear infinite;
221
227
  color: currentColor;
222
228
 
223
229
  @media (prefers-reduced-motion: reduce) {
224
230
  animation: none;
225
- opacity: 0.7;
231
+ opacity: var(--fui-opacity-muted, #{$fui-opacity-muted});
226
232
  }
227
233
  }
228
234
 
@@ -237,9 +243,9 @@
237
243
  flex-direction: column;
238
244
  align-items: center;
239
245
  justify-content: center;
240
- gap: var(--fui-raw-space-12, 12px);
246
+ gap: var(--fui-raw-space-12, #{measurements.raw-space(12)});
241
247
  background-color: var(--fui-bg-primary, $fui-bg-primary);
242
- z-index: 100;
248
+ z-index: var(--fui-overlay-layer-modal, #{$fui-overlay-layer-modal});
243
249
  }
244
250
 
245
251
  .screenLabel {
@@ -8,13 +8,14 @@ import styles from "./Loading.module.scss";
8
8
  // ============================================
9
9
 
10
10
  export type LoadingSize = "sm" | "md" | "lg" | "xl";
11
- export type LoadingVariant = "spinner" | "dots" | "pulse";
11
+ export type LoadingKind = "spinner" | "dots" | "pulse";
12
12
 
13
13
  export interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {
14
14
  /** Size of the loading indicator */
15
15
  size?: LoadingSize;
16
- /** Visual style of the loading indicator */
17
- variant?: LoadingVariant;
16
+ /** Which animation plays. Not chrome, so it is `kind`, not `variant`.
17
+ * @default "spinner" */
18
+ kind?: LoadingKind;
18
19
  /** Accessible label for screen readers */
19
20
  label?: string;
20
21
  /** Whether to center the loading indicator in its container */
@@ -23,7 +24,7 @@ export interface LoadingProps extends React.HTMLAttributes<HTMLDivElement> {
23
24
  fill?: boolean;
24
25
  /** Whether to show the loading indicator with a backdrop overlay */
25
26
  overlay?: boolean;
26
- /** Color variant - uses accent color by default, 'current' inherits text color */
27
+ /** Colour. `accent` by default; `current` inherits the surrounding text colour */
27
28
  color?: "accent" | "current" | "muted";
28
29
  }
29
30
 
@@ -37,8 +38,8 @@ export interface LoadingInlineProps extends React.HTMLAttributes<HTMLSpanElement
37
38
  export interface LoadingScreenProps extends React.HTMLAttributes<HTMLDivElement> {
38
39
  /** Loading indicator size */
39
40
  size?: LoadingSize;
40
- /** Loading indicator variant */
41
- variant?: LoadingVariant;
41
+ /** Which animation plays */
42
+ kind?: LoadingKind;
42
43
  /** Optional label text to display */
43
44
  label?: string;
44
45
  /** Whether to show the label text visually */
@@ -93,7 +94,7 @@ function PulseAnimation({ className }: { className?: string }) {
93
94
  const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function LoadingRoot(
94
95
  {
95
96
  size = "md",
96
- variant = "spinner",
97
+ kind = "spinner",
97
98
  label = "Loading...",
98
99
  centered = false,
99
100
  fill = false,
@@ -107,7 +108,7 @@ const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function Load
107
108
  const classes = [
108
109
  styles.loading,
109
110
  styles[size],
110
- styles[variant],
111
+ styles[kind],
111
112
  styles[`color-${color}`],
112
113
  centered && styles.centered,
113
114
  fill && styles.fill,
@@ -118,10 +119,10 @@ const LoadingRoot = React.forwardRef<HTMLDivElement, LoadingProps>(function Load
118
119
  .join(" ");
119
120
 
120
121
  const animation =
121
- variant === "dots" ? (
122
- <DotsAnimation className={styles.dots} />
123
- ) : variant === "pulse" ? (
124
- <PulseAnimation className={styles.pulse} />
122
+ kind === "dots" ? (
123
+ <DotsAnimation className={styles.dotsTrack} />
124
+ ) : kind === "pulse" ? (
125
+ <PulseAnimation className={styles.pulseTrack} />
125
126
  ) : (
126
127
  <SpinnerIcon className={styles.spinnerIcon} />
127
128
  );
@@ -171,7 +172,7 @@ function LoadingInline({
171
172
 
172
173
  function LoadingScreen({
173
174
  size = "lg",
174
- variant = "spinner",
175
+ kind = "spinner",
175
176
  label = "Loading...",
176
177
  showLabel = false,
177
178
  className,
@@ -181,7 +182,7 @@ function LoadingScreen({
181
182
 
182
183
  return (
183
184
  <div className={classes} role="status" aria-label={label} aria-live="polite" {...htmlProps}>
184
- <LoadingRoot size={size} variant={variant} label={label} />
185
+ <LoadingRoot size={size} kind={kind} label={label} />
185
186
  {showLabel && <span className={styles.screenLabel}>{label}</span>}
186
187
  </div>
187
188
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Main",
4
- "description": "Canonical page composition owning gutter, measure, and vertical rhythm.",
4
+ "description": "Owns a page's gutters, reading measure, and vertical rhythm.",
5
5
  "category": "layout",
6
6
  "tags": ["main", "page", "layout", "compound"],
7
7
  "status": "stable",
@@ -45,11 +45,19 @@
45
45
  }
46
46
  },
47
47
  "usage": {
48
- "when": ["Composing a page header, description, content, and footer"],
49
- "whenNot": ["Application shell navigation (use AppShell)"],
48
+ "when": [
49
+ "Laying out a page's header, description, content, and footer",
50
+ "Giving a page one consistent gutter and measure"
51
+ ],
52
+ "whenNot": [
53
+ "Shell-level navigation chrome (use AppShell)",
54
+ "Arbitrary spacing inside a component (use Stack or Box)"
55
+ ],
50
56
  "guidelines": [
51
- "Use one Main gutter owner per page",
52
- "Compose page regions with Main.Header, Main.Description, Main.Content, and Main.Footer"
57
+ "One Main per page owns the gutters — do not nest them",
58
+ "measure=\"narrow\" caps content for reading; \"full\" uses the whole canvas",
59
+ "Compose regions with Main.Header, Main.Description, Main.Content, Main.Footer",
60
+ "Main.Description caps itself at 68ch regardless of measure"
53
61
  ],
54
62
  "accessibility": [
55
63
  "Use the default main element unless an existing shell already owns the main landmark"
@@ -58,13 +66,13 @@
58
66
  "examples": [
59
67
  {
60
68
  "name": "Full Measure",
61
- "description": "Page composition that uses the full available canvas",
62
- "code": "<Main measure=\"full\">\n <Main.Header>Page statement</Main.Header>\n <Main.Description>Supporting page context.</Main.Description>\n <Main.Content>Page content</Main.Content>\n <Main.Footer>Page actions</Main.Footer>\n</Main>"
69
+ "description": "Content fills the canvas, inset only by the page gutter.",
70
+ "code": "import { Box } from '@/components/Box';\nimport { Main } from '@/components/Main';\n\n<Box width=\"100%\" border rounded=\"md\">\n <Main measure=\"full\">\n <Main.Header>Findings</Main.Header>\n <Main.Description>\n Every governance finding raised against this repository, newest first.\n </Main.Description>\n <Main.Content>\n Content stretches edge to edge, inset only by the page gutter.\n </Main.Content>\n <Main.Footer>Export report</Main.Footer>\n </Main>\n</Box>"
63
71
  },
64
72
  {
65
73
  "name": "Narrow Measure",
66
- "description": "Readable page composition constrained to the canonical 800px measure",
67
- "code": "<Main measure=\"narrow\">\n <Main.Header>Settings</Main.Header>\n <Main.Description>Manage the workspace contract.</Main.Description>\n <Main.Content>Settings content</Main.Content>\n <Main.Footer>Save changes</Main.Footer>\n</Main>"
74
+ "description": "Caps content at the reading measure and centres it on wide screens.",
75
+ "code": "import { Box } from '@/components/Box';\nimport { Main } from '@/components/Main';\n\n<Box width=\"100%\" border rounded=\"md\">\n <Main measure=\"narrow\">\n <Main.Header>Settings</Main.Header>\n <Main.Description>\n Manage the workspace contract, canonical components, and token files.\n </Main.Description>\n <Main.Content>\n Content is capped at the reading measure and centred, so long prose stays\n comfortable to read on wide displays.\n </Main.Content>\n <Main.Footer>Save changes</Main.Footer>\n </Main>\n</Box>"
68
76
  }
69
77
  ],
70
78
  "ai": {
@@ -1,16 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Markdown",
4
- "description": "Renders markdown strings as styled prose using react-markdown and remark-gfm. Supports headings, lists, tables, code blocks, blockquotes, and more.",
4
+ "description": "Turns a Markdown string into styled headings, lists, tables, code, and quotes.",
5
5
  "category": "display",
6
- "tags": [
7
- "markdown",
8
- "prose",
9
- "content",
10
- "text",
11
- "ai",
12
- "chat"
13
- ],
6
+ "tags": ["markdown", "prose", "content", "text", "ai", "chat"],
14
7
  "status": "stable",
15
8
  "dependencies": [
16
9
  {
@@ -26,11 +19,7 @@
26
19
  ],
27
20
  "sourcePath": "src/components/Markdown/index.tsx",
28
21
  "exportName": "Markdown",
29
- "propsSummary": [
30
- "content: string (required)",
31
- "components: object",
32
- "className: string"
33
- ],
22
+ "propsSummary": ["content: string (required)", "components: object", "className: string"],
34
23
  "props": {
35
24
  "content": {
36
25
  "type": "string",
@@ -50,50 +39,45 @@
50
39
  },
51
40
  "usage": {
52
41
  "when": [
53
- "Rendering AI/LLM response content",
54
- "Displaying user-authored markdown text",
55
- "Showing documentation or readme content",
56
- "Rich text display without a WYSIWYG editor"
42
+ "Rendering an LLM reply",
43
+ "Showing text a user wrote in Markdown",
44
+ "Docs or readme content inside the app"
57
45
  ],
58
46
  "whenNot": [
59
- "Plain text without formatting (use Text)",
60
- "Editing markdown (use a markdown editor component)",
61
- "Rendering trusted HTML directly (use dangerouslySetInnerHTML)"
47
+ "The string has no formatting (use Text)",
48
+ "The user needs to edit it (use an editor)"
62
49
  ],
63
50
  "guidelines": [
64
- "Install react-markdown and remark-gfm as peer dependencies",
65
- "Use the components prop to override default element rendering",
66
- "Content is sanitized by react-markdown by default",
67
- "The parser is loaded on demand, so the first render on a page is the plain-text fallback and parsed output arrives a tick later; call Markdown.preload() at startup to skip that frame",
68
- "Falls back to plain text paragraphs if react-markdown is not installed",
69
- "Standard div props (id, style, aria-*, data-*) are forwarded to the Markdown wrapper"
51
+ "react-markdown and remark-gfm are peer dependencies — install both",
52
+ "The parser loads on demand, so the first frame is plain text; call Markdown.preload() at startup to skip it",
53
+ "Without react-markdown installed it degrades to plain paragraphs",
54
+ "components overrides how any element renders",
55
+ "react-markdown sanitises the content for you"
70
56
  ],
71
57
  "accessibility": [
72
- "Rendered HTML follows semantic structure (headings, lists, tables)",
73
- "Links are rendered as proper anchor elements",
74
- "Images include alt text from markdown syntax",
75
- "Tables use proper th/td structure for screen readers"
58
+ "Output is real headings, lists, and tables",
59
+ "Links render as anchors, images keep their alt text"
76
60
  ]
77
61
  },
78
62
  "examples": [
79
63
  {
80
64
  "name": "Default",
81
- "description": "Basic markdown with headings, paragraphs, inline code, lists, and blockquote",
65
+ "description": "Headings, emphasis, lists, and quotes all pick up the type scale.",
82
66
  "code": "<Markdown content={`# Hello World\n\nThis is a paragraph with **bold text** and *italic text*.\n\nHere is some \\`inline code\\` within a sentence.\n\n- First item\n- Second item\n- Third item\n\n> A blockquote for emphasis.\n`} />"
83
67
  },
84
68
  {
85
69
  "name": "GFM Table",
86
- "description": "GitHub Flavored Markdown with tables and task lists",
70
+ "description": "remark-gfm adds tables and checkbox items on top of the basics.",
87
71
  "code": "<Markdown content={`## Data Overview\n\n| Feature | Status | Priority |\n|------------|-----------|----------|\n| Markdown | Done | High |\n| Tables | Done | Medium |\n| Task Lists | Planned | Low |\n\nNotes:\n- [x] Support GFM tables\n- [x] Support task lists\n- [ ] Syntax highlighting\n`} />"
88
72
  },
89
73
  {
90
74
  "name": "Code Block",
91
- "description": "Markdown with fenced code blocks and inline code",
92
- "code": "<Markdown content={`## Code Example\\n\\nHere is a JavaScript function:\\n\\n```js\\nfunction greet(name) {\\n return \\`Hello, ${name}!\\`;\\n}\\n```\\n\\nAnd some inline code: \\`const x = 42;\\``} />"
75
+ "description": "Fenced blocks get the same code surface as CodeBlock.",
76
+ "code": "<Markdown content={`## Code Example\n\nHere is a JavaScript function:\n\n```js\nfunction greet(name) {\n return 'Hello, ' + name;\n}\n```\n\nAnd some inline code: \\`const x = 42;\\``} />"
93
77
  },
94
78
  {
95
79
  "name": "Mixed Content",
96
- "description": "Complex markdown mixing headings, lists, tables, blockquotes, and task lists",
80
+ "description": "A realistic document the worst case worth checking.",
97
81
  "code": "<Markdown content={`# Project Update\n\n## Summary\n\nThe project is progressing well. Here are the **key highlights**:\n\n1. Completed the *design system* components\n2. Added markdown rendering support\n3. Integrated with the documentation site\n\n### Performance Metrics\n\n| Metric | Before | After |\n|-------------|--------|-------|\n| Bundle Size | 142kb | 98kb |\n| Load Time | 1.2s | 0.8s |\n| Lighthouse | 72 | 95 |\n\n> These improvements were achieved through tree-shaking and code splitting.\n\n### Next Steps\n\n- [ ] Add syntax highlighting\n- [ ] Support custom themes\n- [x] GFM table support\n`} />"
98
82
  }
99
83
  ],
@@ -121,16 +105,11 @@
121
105
  "className: string - Additional CSS class",
122
106
  "Forwards standard HTML div attributes to the wrapper element"
123
107
  ],
124
- "a11yRules": [
125
- "A11Y_SEMANTIC_HTML"
126
- ]
108
+ "a11yRules": ["A11Y_SEMANTIC_HTML"]
127
109
  },
128
110
  "ai": {
129
111
  "compositionPattern": "compound",
130
- "subComponents": [
131
- "Root",
132
- "preload"
133
- ]
112
+ "subComponents": ["Root", "preload"]
134
113
  },
135
114
  "provenance": {
136
115
  "source": "migrated",