@usefragments/ui 1.5.4 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -1,250 +1,140 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
3
-
4
- // ============================================
5
- // Markdown Prose Container
6
- // ============================================
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../recipes/prose" as prose;
7
3
 
8
4
  .markdown {
9
- @include text-base;
10
- word-wrap: break-word;
11
- // Prose colour is a hook, not a constant. Markdown is routinely rendered on a
12
- // surface that carries its own foreground — a Message bubble on the accent
13
- // fill, an Alert, a Callout — and a fixed grey there is unreadable rather than
14
- // quiet. Those surfaces point the hook at `currentColor`; on a plain page it
15
- // still resolves to the secondary ramp prose has always used.
16
- color: var(--fui-markdown-text, var(--fui-text-secondary, #{$fui-text-secondary}));
17
- font-size: var(--fui-font-size-md, $fui-font-size-md);
18
- line-height: var(--fui-line-height-prose, $fui-line-height-prose);
19
-
20
- // Outer spacing belongs to whatever holds the prose — a Message bubble's
21
- // padding, a Card's, a page's rhythm. The block's own first and last margins
22
- // would add to it, or collapse through it, and either way the container ends
23
- // up looking mis-padded through no fault of its own.
24
- > :first-child {
25
- margin-top: 0;
26
- }
27
-
28
- > :last-child {
29
- margin-bottom: 0;
30
- }
31
-
32
- // ----------------------------------------
33
- // Headings
34
- // ----------------------------------------
35
-
36
- h1,
37
- h2,
38
- h3,
39
- h4,
40
- h5,
41
- h6 {
42
- margin-top: var(--fui-space-4, $fui-space-4);
43
- margin-bottom: var(--fui-space-2, $fui-space-2);
44
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
45
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
46
- color: var(--fui-text-primary, $fui-text-primary);
47
-
48
- &:first-child {
49
- margin-top: 0;
50
- }
51
- }
52
-
53
- h1 {
54
- font-size: var(--fui-font-size-3xl, $fui-font-size-3xl);
55
- line-height: var(--fui-line-height-display, $fui-line-height-display);
56
- letter-spacing: var(--fui-letter-spacing-display, $fui-letter-spacing-display);
57
- }
58
-
59
- h2 {
60
- font-size: var(--fui-font-size-xl, $fui-font-size-xl);
61
- letter-spacing: var(--fui-letter-spacing-tight, $fui-letter-spacing-tight);
62
- margin-top: var(--fui-space-8, $fui-space-8);
63
- }
5
+ @include prose.root;
64
6
 
65
- h3 {
66
- font-size: var(--fui-font-size-lg, $fui-font-size-lg);
67
- letter-spacing: var(--fui-letter-spacing-tight, $fui-letter-spacing-tight);
68
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
69
- }
70
-
71
- h4 {
72
- font-size: var(--fui-font-size-md, $fui-font-size-md);
73
- }
7
+ overflow-wrap: anywhere;
8
+ color: var(--fui-markdown-text, var(--fui-text-secondary, #{$fui-text-secondary}));
74
9
 
75
- h5,
76
- h6 {
77
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
10
+ p {
11
+ @include prose.paragraph;
78
12
  }
79
13
 
80
- // ----------------------------------------
81
- // Paragraphs
82
- // ----------------------------------------
83
-
84
- p {
85
- margin: 0;
86
- line-height: var(--fui-line-height-prose, $fui-line-height-prose);
14
+ @for $level from 1 through 6 {
15
+ h#{$level} {
16
+ @include prose.heading($level);
87
17
 
88
- & + p {
89
- margin-top: var(--fui-space-3, $fui-space-3);
18
+ color: var(--fui-text-primary, $fui-text-primary);
90
19
  }
91
20
  }
92
21
 
93
- // ----------------------------------------
94
- // Links
95
- // ----------------------------------------
96
-
97
22
  a {
98
- color: var(--fui-color-accent, $fui-color-accent);
99
- text-decoration: underline;
100
- text-underline-offset: 2px;
23
+ @include prose.link;
24
+
25
+ color: var(--fui-link-ink, #{$fui-link-ink});
101
26
 
102
27
  &:hover {
103
- opacity: 0.8;
28
+ text-decoration: underline;
104
29
  }
105
30
  }
106
31
 
107
- // ----------------------------------------
108
- // Lists
109
- // ----------------------------------------
32
+ ul {
33
+ @include prose.list("disc");
34
+ }
110
35
 
111
- ul,
112
36
  ol {
113
- margin: var(--fui-space-2, $fui-space-2) 0;
114
- padding-left: var(--fui-space-4, $fui-space-4);
37
+ @include prose.list("decimal");
115
38
  }
116
39
 
117
- li {
118
- margin-bottom: var(--fui-space-1, $fui-space-1);
119
- line-height: var(--fui-line-height-prose, $fui-line-height-prose);
120
-
121
- &:last-child {
122
- margin-bottom: 0;
40
+ // Markdown's tight list items carry one inline run of text + <strong> +
41
+ // <code>. The prose recipe's per-item subgrid fragments that run: every
42
+ // element child becomes its own grid row and the bare text auto-places into
43
+ // the marker column. Markdown lists therefore fall back to block items with
44
+ // a hanging absolute marker (the recipe still supplies the marker content
45
+ // and counter).
46
+ ul,
47
+ ol {
48
+ display: block;
49
+ padding-inline-start: calc(var(--fui-raw-space-20, 20px) + var(--fui-raw-space-8, 8px));
50
+
51
+ > li {
52
+ position: relative;
53
+ display: block;
54
+ min-inline-size: 0;
55
+
56
+ &::before {
57
+ position: absolute;
58
+ inset-inline-start: calc(
59
+ -1 * (var(--fui-raw-space-20, 20px) + var(--fui-raw-space-8, 8px))
60
+ );
61
+ inline-size: var(--fui-raw-space-20, 20px);
62
+ text-align: end;
63
+ }
123
64
  }
124
65
  }
125
66
 
126
- // Nested lists
127
- li > ul,
128
- li > ol {
129
- margin-top: var(--fui-space-1, $fui-space-1);
130
- margin-bottom: 0;
67
+ li + li {
68
+ margin-block-start: var(--fui-raw-space-4, 4px);
131
69
  }
132
70
 
133
- // ----------------------------------------
134
- // Inline Code
135
- // ----------------------------------------
71
+ // GFM task items are `<li><input type="checkbox"> label text</li>`. The
72
+ // checkbox replaces the bullet; block items already keep it inline with the
73
+ // label. `task-list-item` is remark-gfm's runtime class, so the selector
74
+ // must stay global — a module-scoped `.task-list-item` gets hashed and
75
+ // never matches.
76
+ li:global(.task-list-item) {
77
+ &::before {
78
+ content: none;
79
+ }
80
+ }
136
81
 
137
82
  code {
138
- font-family: var(--fui-font-mono, $fui-font-mono);
139
- font-size: 0.9em;
140
- padding: 0.125em 0.375em;
141
- border-radius: var(--fui-radius-sm, $fui-radius-sm);
142
- background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
83
+ @include prose.inline-code;
143
84
  }
144
85
 
145
- // ----------------------------------------
146
- // Code Blocks
147
- // ----------------------------------------
148
-
149
86
  pre {
150
- margin: var(--fui-space-2, $fui-space-2) 0;
151
- padding: var(--fui-space-2);
87
+ @include prose.code-block("default");
88
+
152
89
  border-radius: var(--fui-radius-md, $fui-radius-md);
153
90
  background-color: var(--fui-code-bg, $fui-code-bg);
154
- overflow-x: auto;
155
91
 
156
92
  code {
157
93
  padding: 0;
158
94
  background: none;
159
- font-size: var(--fui-font-size-xs, $fui-font-size-xs);
95
+ font: inherit;
96
+ letter-spacing: inherit;
160
97
  }
161
98
  }
162
99
 
163
- // Only target the immediate parent wrapper of a <pre> block
164
- div:has(> div > div > pre) {
165
- margin: var(--fui-space-3, $fui-space-3) 0;
166
- }
167
-
168
- // ----------------------------------------
169
- // Blockquotes
170
- // ----------------------------------------
171
-
172
100
  blockquote {
173
- margin: var(--fui-space-2, $fui-space-2) 0;
174
- padding: var(--fui-space-1) var(--fui-space-3);
175
- border-left: 3px solid var(--fui-border, $fui-border);
176
- color: var(--fui-text-secondary, $fui-text-secondary);
101
+ @include prose.blockquote;
177
102
 
178
- p {
179
- margin: 0;
180
- }
103
+ color: var(--fui-text-secondary, $fui-text-secondary);
181
104
  }
182
105
 
183
- // ----------------------------------------
184
- // Horizontal Rule
185
- // ----------------------------------------
186
-
187
106
  hr {
188
- margin: var(--fui-space-4, $fui-space-4) 0;
189
- border: none;
190
- border-top: 1px solid var(--fui-border, $fui-border);
107
+ @include prose.rule;
191
108
  }
192
109
 
193
- // ----------------------------------------
194
- // Tables (GFM)
195
- // ----------------------------------------
196
-
197
110
  table {
198
- width: 100%;
199
- margin: var(--fui-space-2, $fui-space-2) 0;
111
+ @include prose.table;
112
+
113
+ inline-size: 100%;
200
114
  border-collapse: collapse;
201
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
202
115
  }
203
116
 
204
117
  th,
205
118
  td {
206
- padding: var(--fui-space-1) var(--fui-space-2);
207
- border: 1px solid var(--fui-border, $fui-border);
208
- text-align: left;
119
+ border: var(--fui-stroke-hairline, $fui-stroke-hairline) solid var(--fui-border, $fui-border);
120
+ text-align: start;
209
121
  }
210
122
 
211
123
  th {
212
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
213
124
  background-color: var(--fui-bg-secondary, $fui-bg-secondary);
214
125
  }
215
126
 
216
- // ----------------------------------------
217
- // Images
218
- // ----------------------------------------
219
-
220
127
  img {
221
- max-width: 100%;
222
- height: auto;
128
+ @include prose.media;
129
+
223
130
  border-radius: var(--fui-radius-md, $fui-radius-md);
224
131
  }
225
132
 
226
- // ----------------------------------------
227
- // Task Lists (GFM)
228
- // ----------------------------------------
229
-
230
- input[type='checkbox'] {
231
- margin-right: var(--fui-space-1, $fui-space-1);
133
+ input[type="checkbox"] {
134
+ margin-inline-end: var(--fui-raw-space-4, 4px);
232
135
  }
233
136
 
234
- // ----------------------------------------
235
- // Strong & Emphasis
236
- // ----------------------------------------
237
-
238
137
  strong {
239
138
  font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
240
139
  }
241
-
242
- // Remove top margin from first child and bottom margin from last child
243
- > *:first-child {
244
- margin-top: 0;
245
- }
246
-
247
- > *:last-child {
248
- margin-bottom: 0;
249
- }
250
140
  }
@@ -1,7 +1,8 @@
1
- 'use client';
1
+ "use client";
2
2
 
3
- import * as React from 'react';
4
- import styles from './Markdown.module.scss';
3
+ import * as React from "react";
4
+ import styles from "./Markdown.module.scss";
5
+ import { isDevelopmentBuild } from "../../utils/env";
5
6
 
6
7
  // ============================================
7
8
  // Types
@@ -10,7 +11,7 @@ import styles from './Markdown.module.scss';
10
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
12
  type MarkdownComponentMap = Record<string, React.ComponentType<any>>;
12
13
 
13
- export interface MarkdownProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
14
+ export interface MarkdownProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
14
15
  /** Markdown string to render */
15
16
  content: string;
16
17
  /** Override map for markdown element components */
@@ -47,22 +48,22 @@ function loadDeps(): Promise<void> {
47
48
  if (!loadPromise) {
48
49
  loadPromise = (async () => {
49
50
  try {
50
- const mod = await import('react-markdown');
51
+ const mod = await import("react-markdown");
51
52
  ReactMarkdown = ((mod as { default?: ReactMarkdownType }).default ??
52
53
  mod) as ReactMarkdownType;
53
54
  } catch {
54
55
  loadFailed = true;
55
- if (process.env.NODE_ENV === 'development') {
56
+ if (isDevelopmentBuild()) {
56
57
  console.warn(
57
- '[@usefragments/ui] Markdown: react-markdown is not installed. ' +
58
- 'Install it with: npm install react-markdown remark-gfm'
58
+ "[@usefragments/ui] Markdown: react-markdown is not installed. " +
59
+ "Install it with: npm install react-markdown remark-gfm"
59
60
  );
60
61
  }
61
62
  return;
62
63
  }
63
64
 
64
65
  try {
65
- const mod = await import('remark-gfm');
66
+ const mod = await import("remark-gfm");
66
67
  remarkGfm = (mod as { default?: unknown }).default ?? mod;
67
68
  } catch {
68
69
  // remark-gfm is optional; markdown still works without it
@@ -79,11 +80,11 @@ function loadDeps(): Promise<void> {
79
80
  function FallbackRenderer({ content }: { content: string }) {
80
81
  const paragraphs = content.split(/\n{2,}/);
81
82
  return (
82
- <div>
83
- {paragraphs.map((p) => (
84
- <p key={p}>{p}</p>
83
+ <>
84
+ {paragraphs.map((p, index) => (
85
+ <p key={index}>{p}</p>
85
86
  ))}
86
- </div>
87
+ </>
87
88
  );
88
89
  }
89
90
 
@@ -91,49 +92,47 @@ function FallbackRenderer({ content }: { content: string }) {
91
92
  // Component
92
93
  // ============================================
93
94
 
94
- const MarkdownRoot = React.forwardRef<HTMLDivElement, MarkdownProps>(
95
- function Markdown({ content, components: componentOverrides, className, ...htmlProps }, ref) {
96
- // The parser resolves asynchronously, so the first mount on a page renders
97
- // the fallback and then swaps. Both module-level results are cached, so
98
- // every later mount is synchronous; an app that knows prose is coming can
99
- // skip even the first swap by calling Markdown.preload() up front.
100
- const [, rerender] = React.useReducer((n: number) => n + 1, 0);
101
-
102
- React.useEffect(() => {
103
- if (ReactMarkdown || loadFailed) return;
104
- let active = true;
105
- void loadDeps().then(() => {
106
- if (active) rerender();
107
- });
108
- return () => {
109
- active = false;
110
- };
111
- }, []);
112
-
113
- const classes = [styles.markdown, className].filter(Boolean).join(' ');
114
-
115
- if (!ReactMarkdown) {
116
- return (
117
- <div ref={ref} {...htmlProps} className={classes}>
118
- <FallbackRenderer content={content} />
119
- </div>
120
- );
121
- }
122
-
123
- const plugins = remarkGfm ? [remarkGfm] : [];
124
-
95
+ const MarkdownRoot = React.forwardRef<HTMLDivElement, MarkdownProps>(function Markdown(
96
+ { content, components: componentOverrides, className, ...htmlProps },
97
+ ref
98
+ ) {
99
+ // The parser resolves asynchronously, so the first mount on a page renders
100
+ // the fallback and then swaps. Both module-level results are cached, so
101
+ // every later mount is synchronous; an app that knows prose is coming can
102
+ // skip even the first swap by calling Markdown.preload() up front.
103
+ const [, rerender] = React.useReducer((n: number) => n + 1, 0);
104
+
105
+ React.useEffect(() => {
106
+ if (ReactMarkdown || loadFailed) return;
107
+ let active = true;
108
+ void loadDeps().then(() => {
109
+ if (active) rerender();
110
+ });
111
+ return () => {
112
+ active = false;
113
+ };
114
+ }, []);
115
+
116
+ const classes = [styles.markdown, className].filter(Boolean).join(" ");
117
+
118
+ if (!ReactMarkdown) {
125
119
  return (
126
120
  <div ref={ref} {...htmlProps} className={classes}>
127
- <ReactMarkdown
128
- remarkPlugins={plugins}
129
- components={componentOverrides}
130
- >
131
- {content}
132
- </ReactMarkdown>
121
+ <FallbackRenderer content={content} />
133
122
  </div>
134
123
  );
135
124
  }
136
- );
125
+
126
+ const plugins = remarkGfm ? [remarkGfm] : [];
127
+
128
+ return (
129
+ <div ref={ref} {...htmlProps} className={classes}>
130
+ <ReactMarkdown remarkPlugins={plugins} components={componentOverrides}>
131
+ {content}
132
+ </ReactMarkdown>
133
+ </div>
134
+ );
135
+ });
137
136
 
138
137
  export const Markdown = Object.assign(MarkdownRoot, {
139
138
  Root: MarkdownRoot,
@@ -1,16 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Menu",
4
- "description": "Dropdown menu for actions and commands. Supports submenus, check items, radio groups, and keyboard shortcuts.",
5
- "category": "feedback",
6
- "tags": [
7
- "menu",
8
- "dropdown",
9
- "actions",
10
- "context-menu",
11
- "commands",
12
- "submenu"
13
- ],
4
+ "description": "Drops a list of actions below a trigger, driveable entirely by keyboard.",
5
+ "category": "overlays",
6
+ "tags": ["menu", "dropdown", "actions", "context-menu", "commands", "submenu"],
14
7
  "status": "stable",
15
8
  "sourcePath": "src/components/Menu/index.tsx",
16
9
  "exportName": "Menu",
@@ -52,26 +45,23 @@
52
45
  },
53
46
  "usage": {
54
47
  "when": [
55
- "Overflow actions that dont fit in the toolbar",
56
- "Context menus (right-click)",
57
- "User account menus",
58
- "Grouped actions with separators",
59
- "Nested menus with submenus"
48
+ "Actions that do not fit in the toolbar",
49
+ "Right-click context actions",
50
+ "Account and profile actions",
51
+ "Related actions that read better grouped"
60
52
  ],
61
53
  "whenNot": [
62
- "Selecting from options (use Select)",
63
- "Navigation (use Tabs or navigation components)",
64
- "Form selection (use Select or RadioGroup)"
54
+ "Picking a value for a form (use Select)",
55
+ "Moving between pages or views (use Tabs or NavigationMenu)",
56
+ "One of a few visible choices (use RadioGroup)"
65
57
  ],
66
58
  "guidelines": [
67
- "Group related actions with Menu.Group",
68
- "Use separators to divide action categories",
69
- "Include keyboard shortcuts where applicable",
70
- "Use danger variant for destructive actions",
71
- "Keep menu items under 10-12 for usability",
72
- "Use checked prop on Menu.Item for simple selection state",
73
- "Use Menu.Submenu for nested secondary options",
74
- "Menu.Trigger supports asChild for links/router-link components (single valid element child required)"
59
+ "Group related actions and separate the rest",
60
+ "Show the keyboard shortcut where one exists",
61
+ "Mark destructive actions with the danger variant",
62
+ "Past a dozen rows, reach for Command instead",
63
+ "Nest at most one level of submenu",
64
+ "asChild on Trigger needs a single element child"
75
65
  ],
76
66
  "accessibility": [
77
67
  "Full keyboard navigation with arrow keys",
@@ -84,37 +74,37 @@
84
74
  "examples": [
85
75
  {
86
76
  "name": "Default",
87
- "description": "Basic dropdown menu",
77
+ "description": "Plain actions, one per row.",
88
78
  "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Actions</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>Edit</Menu.Item>\n <Menu.Item onSelect={() => {}}>Duplicate</Menu.Item>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
89
79
  },
90
80
  {
91
81
  "name": "With Shortcuts",
92
- "description": "Menu items with keyboard shortcuts",
82
+ "description": "Trailing keys teach the faster path.",
93
83
  "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Edit</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item shortcut=\"Ctrl+Z\" onSelect={() => {}}>Undo</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+Y\" onSelect={() => {}}>Redo</Menu.Item>\n <Menu.Separator />\n <Menu.Item shortcut=\"Ctrl+C\" onSelect={() => {}}>Copy</Menu.Item>\n <Menu.Item shortcut=\"Ctrl+V\" onSelect={() => {}}>Paste</Menu.Item>\n </Menu.Content>\n</Menu>"
94
84
  },
95
85
  {
96
86
  "name": "With Groups",
97
- "description": "Menu with labeled groups",
87
+ "description": "Labels separate unrelated actions.",
98
88
  "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Options</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Group>\n <Menu.GroupLabel>View</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Zoom In</Menu.Item>\n <Menu.Item onSelect={() => {}}>Zoom Out</Menu.Item>\n </Menu.Group>\n <Menu.Separator />\n <Menu.Group>\n <Menu.GroupLabel>Layout</Menu.GroupLabel>\n <Menu.Item onSelect={() => {}}>Grid View</Menu.Item>\n <Menu.Item onSelect={() => {}}>List View</Menu.Item>\n </Menu.Group>\n </Menu.Content>\n</Menu>"
99
89
  },
100
90
  {
101
91
  "name": "With Checkboxes",
102
- "description": "Menu with toggleable checkbox options",
92
+ "description": "Rows that stay open while you toggle them.",
103
93
  "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">Display</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.CheckboxItem defaultChecked>Show Grid</Menu.CheckboxItem>\n <Menu.CheckboxItem defaultChecked>Show Rulers</Menu.CheckboxItem>\n <Menu.CheckboxItem>Show Guides</Menu.CheckboxItem>\n </Menu.Content>\n</Menu>"
104
94
  },
105
95
  {
106
96
  "name": "With Checked Items",
107
- "description": "Filter menu with check marks indicating active selections",
97
+ "description": "Ticks mark which filters are on.",
108
98
  "code": "<CheckedItemsMenuDemo />"
109
99
  },
110
100
  {
111
101
  "name": "With Submenu",
112
- "description": "Menu with nested submenu for grouped secondary options",
102
+ "description": "Secondary options nest one level deep.",
113
103
  "code": "<Menu>\n <Menu.Trigger asChild>\n <Button variant=\"secondary\">File</Button>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>New File</Menu.Item>\n <Menu.Item onSelect={() => {}}>Open</Menu.Item>\n <Menu.Separator />\n <Menu.Submenu>\n <Menu.SubmenuTrigger>Export As</Menu.SubmenuTrigger>\n <Menu.Content side=\"right\" align=\"start\">\n <Menu.Item onSelect={() => {}}>PNG</Menu.Item>\n <Menu.Item onSelect={() => {}}>SVG</Menu.Item>\n <Menu.Item onSelect={() => {}}>PDF</Menu.Item>\n </Menu.Content>\n </Menu.Submenu>\n <Menu.Separator />\n <Menu.Item danger onSelect={() => {}}>Delete</Menu.Item>\n </Menu.Content>\n</Menu>"
114
104
  },
115
105
  {
116
106
  "name": "Link Trigger",
117
- "description": "Use asChild with a non-button trigger element",
107
+ "description": "asChild lets a link open it.",
118
108
  "code": "<Menu>\n <Menu.Trigger asChild>\n <a href=\"#menu-actions\">Open menu</a>\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onSelect={() => {}}>Inspect</Menu.Item>\n <Menu.Item onSelect={() => {}}>Rename</Menu.Item>\n </Menu.Content>\n</Menu>"
119
109
  }
120
110
  ],
@@ -140,10 +130,7 @@
140
130
  "Menu.Item shortcut: string - keyboard shortcut text",
141
131
  "Menu.Item checked: boolean - check indicator for selection state"
142
132
  ],
143
- "a11yRules": [
144
- "A11Y_MENU_KEYBOARD",
145
- "A11Y_MENU_ROLE"
146
- ]
133
+ "a11yRules": ["A11Y_MENU_KEYBOARD", "A11Y_MENU_ROLE"]
147
134
  },
148
135
  "ai": {
149
136
  "compositionPattern": "compound",
@@ -160,10 +147,7 @@
160
147
  "Submenu",
161
148
  "SubmenuTrigger"
162
149
  ],
163
- "requiredChildren": [
164
- "Trigger",
165
- "Content"
166
- ],
150
+ "requiredChildren": ["Trigger", "Content"],
167
151
  "commonPatterns": [
168
152
  "<Menu><Menu.Trigger asChild><Button>Actions</Button></Menu.Trigger><Menu.Content><Menu.Item>{action1}</Menu.Item><Menu.Separator /><Menu.Item danger>{delete}</Menu.Item></Menu.Content></Menu>"
169
153
  ]