@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,17 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Editor",
4
- "description": "Rich text editor with formatting toolbar, auto-save, and word count",
5
- "category": "forms",
6
- "tags": [
7
- "editor",
8
- "rich-text",
9
- "markdown",
10
- "toolbar",
11
- "writing",
12
- "blog",
13
- "content"
14
- ],
4
+ "description": "Edits rich text with formatting, autosave, and a word count.",
5
+ "category": "inputs",
6
+ "tags": ["editor", "rich-text", "markdown", "toolbar", "writing", "blog", "content"],
15
7
  "status": "stable",
16
8
  "dependencies": [
17
9
  {
@@ -123,11 +115,7 @@
123
115
  "description": "Editor size preset: \"sm\" (120px), \"md\" (200px), or \"lg\" (400px)",
124
116
  "default": "md",
125
117
  "required": false,
126
- "values": [
127
- "sm",
128
- "md",
129
- "lg"
130
- ]
118
+ "values": ["sm", "md", "lg"]
131
119
  },
132
120
  "maxLength": {
133
121
  "type": "number",
@@ -142,27 +130,26 @@
142
130
  },
143
131
  "usage": {
144
132
  "when": [
145
- "Building blog post or article editors",
146
- "Need rich text editing with formatting controls",
147
- "Content management with auto-save and word count",
148
- "Markdown or WYSIWYG editing interfaces"
133
+ "Blog posts and long-form articles",
134
+ "Text that needs formatting controls beside it",
135
+ "Drafts that autosave and report a word count",
136
+ "Markdown or WYSIWYG authoring"
149
137
  ],
150
138
  "whenNot": [
151
- "Simple single-line text input (use Input)",
152
- "Plain multi-line without formatting (use Textarea)",
153
- "Chat/AI prompt input (use Prompt)",
139
+ "Single-line text (use Input)",
140
+ "Multi-line with no formatting (use Textarea)",
141
+ "Chat or AI prompt input (use Prompt)",
154
142
  "Code editing (use CodeBlock)"
155
143
  ],
156
144
  "guidelines": [
157
- "Use compound pattern for custom toolbar layouts",
158
- "Install @tiptap/react, @tiptap/starter-kit, and @tiptap/extension-link for rich text mode",
159
- "Falls back to a markdown-aware textarea when TipTap is not installed",
160
- "Use onAutoSave for periodic content persistence",
161
- "onAutoSave may return a Promise; save status updates after the async save resolves/rejects",
162
- "Use size prop (sm/md/lg) to control editor height",
163
- "Use maxLength to show character limit with visual warning states",
164
- "New formats (headings, blockquote, orderedList, undo, redo) are opt-in via the formats prop",
165
- "Use toolbarIcons to swap in icons from any icon package without changing toolbar button labels or accessibility behavior"
145
+ "Compose Editor.Toolbar and Editor.Content to control toolbar layout",
146
+ "Rich text needs @tiptap/react, @tiptap/starter-kit, and @tiptap/extension-link",
147
+ "Without TipTap it falls back to a markdown-aware textarea",
148
+ "onAutoSave may return a Promise; save status updates once it settles",
149
+ "size sets the minimum body height: sm 120px, md 200px, lg 400px",
150
+ "maxLength drives the counter's warning and over-limit states",
151
+ "Headings, blockquote, orderedList, undo, and redo are opt-in via formats",
152
+ "toolbarIcons swaps glyphs without changing labels or keyboard behavior"
166
153
  ],
167
154
  "accessibility": [
168
155
  "Toolbar has role=\"toolbar\" with aria-label",
@@ -177,47 +164,47 @@
177
164
  "examples": [
178
165
  {
179
166
  "name": "Default",
180
- "description": "Editor with default toolbar and status bar",
167
+ "description": "Toolbar and status bar you get with no configuration.",
181
168
  "code": "<Editor placeholder=\"Start typing your masterpiece here...\" />"
182
169
  },
183
170
  {
184
171
  "name": "With Auto-Save and Publish",
185
- "description": "Full compound usage with custom toolbar, auto-save indicator, and publish button",
172
+ "description": "Save state sits next to the primary action in the toolbar.",
186
173
  "code": "<Editor\n placeholder=\"Start typing your masterpiece here...\"\n onValueChange={(v) => console.log(v)}\n>\n <Editor.Toolbar>\n <Editor.ToolbarGroup aria-label=\"Text formatting\">\n <Editor.ToolbarButton format=\"bold\" />\n <Editor.ToolbarButton format=\"italic\" />\n <Editor.ToolbarButton format=\"strikethrough\" />\n <Editor.ToolbarButton format=\"link\" />\n <Editor.ToolbarButton format=\"code\" />\n <Editor.ToolbarButton format=\"bulletList\" />\n </Editor.ToolbarGroup>\n <Editor.ToolbarGroup aria-label=\"Actions\">\n <Editor.StatusIndicator status=\"saved\" />\n <Button variant=\"accent\" size=\"sm\">\n Publish\n </Button>\n </Editor.ToolbarGroup>\n </Editor.Toolbar>\n <Editor.Content />\n <Editor.StatusBar showWordCount showCharCount />\n</Editor>"
187
174
  },
188
175
  {
189
- "name": "Minimal",
190
- "description": "Editor with subset of formats",
191
- "code": "<Editor\n placeholder=\"Quick note...\"\n formats={['bold', 'italic', 'code']}\n/>"
176
+ "name": "Save Failed",
177
+ "description": "A failed autosave turns the status text red.",
178
+ "code": "<Editor defaultValue=\"This draft could not be saved.\">\n <Editor.Toolbar>\n <Editor.ToolbarGroup aria-label=\"Text formatting\">\n <Editor.ToolbarButton format=\"bold\" />\n <Editor.ToolbarButton format=\"italic\" />\n </Editor.ToolbarGroup>\n <Editor.ToolbarGroup aria-label=\"Status\">\n <Editor.StatusIndicator status=\"error\" />\n </Editor.ToolbarGroup>\n </Editor.Toolbar>\n <Editor.Content />\n <Editor.StatusBar showWordCount showCharCount />\n</Editor>"
192
179
  },
193
180
  {
194
181
  "name": "Disabled",
195
- "description": "Non-interactive editor with content",
182
+ "description": "Dimmed and inert, but the text stays readable.",
196
183
  "code": "<Editor\n defaultValue=\"This content cannot be edited.\"\n disabled\n/>"
197
184
  },
198
185
  {
199
186
  "name": "Read Only",
200
- "description": "Visible content, non-editable",
187
+ "description": "Text can be selected and copied, but never changed.",
201
188
  "code": "<Editor\n defaultValue=\"This content is read-only. You can select and copy text but cannot modify it.\"\n readOnly\n/>"
202
189
  },
203
190
  {
204
191
  "name": "Custom Toolbar",
205
- "description": "Compound usage with custom toolbar layout and separator",
192
+ "description": "Separators split the controls into labelled clusters.",
206
193
  "code": "<Editor\n placeholder=\"Write your blog post...\"\n onValueChange={(v) => console.log(v)}\n>\n <Editor.Toolbar>\n <Editor.ToolbarGroup aria-label=\"Basic formatting\">\n <Editor.ToolbarButton format=\"bold\" />\n <Editor.ToolbarButton format=\"italic\" />\n </Editor.ToolbarGroup>\n <Editor.Separator />\n <Editor.ToolbarGroup aria-label=\"Advanced formatting\">\n <Editor.ToolbarButton format=\"link\" />\n <Editor.ToolbarButton format=\"code\" />\n <Editor.ToolbarButton format=\"bulletList\" />\n </Editor.ToolbarGroup>\n <Editor.ToolbarGroup aria-label=\"Status\">\n <Editor.StatusIndicator status=\"saving\" />\n </Editor.ToolbarGroup>\n </Editor.Toolbar>\n <Editor.Content />\n <Editor.StatusBar showWordCount showCharCount />\n</Editor>"
207
194
  },
208
195
  {
209
196
  "name": "Full Formatting",
210
- "description": "All format options including headings, blockquote, ordered list, undo/redo",
197
+ "description": "Every opt-in format switched on, at the tallest preset.",
211
198
  "code": "<Editor\n placeholder=\"Write an article...\"\n size=\"lg\"\n>\n <Editor.Toolbar>\n <Editor.ToolbarGroup aria-label=\"History\">\n <Editor.ToolbarButton format=\"undo\" />\n <Editor.ToolbarButton format=\"redo\" />\n </Editor.ToolbarGroup>\n <Editor.Separator />\n <Editor.ToolbarGroup aria-label=\"Headings\">\n <Editor.ToolbarButton format=\"heading1\" />\n <Editor.ToolbarButton format=\"heading2\" />\n <Editor.ToolbarButton format=\"heading3\" />\n </Editor.ToolbarGroup>\n <Editor.Separator />\n <Editor.ToolbarGroup aria-label=\"Text formatting\">\n <Editor.ToolbarButton format=\"bold\" />\n <Editor.ToolbarButton format=\"italic\" />\n <Editor.ToolbarButton format=\"strikethrough\" />\n <Editor.ToolbarButton format=\"code\" />\n </Editor.ToolbarGroup>\n <Editor.Separator />\n <Editor.ToolbarGroup aria-label=\"Block formatting\">\n <Editor.ToolbarButton format=\"bulletList\" />\n <Editor.ToolbarButton format=\"orderedList\" />\n <Editor.ToolbarButton format=\"blockquote\" />\n <Editor.ToolbarButton format=\"link\" />\n </Editor.ToolbarGroup>\n </Editor.Toolbar>\n <Editor.Content />\n <Editor.StatusBar showWordCount showCharCount />\n</Editor>"
212
199
  },
213
200
  {
214
201
  "name": "With Character Limit",
215
- "description": "Editor with maxLength showing character count indicator with warning and error states",
202
+ "description": "The counter warns near 280 characters and turns red past it.",
216
203
  "code": "<Editor\n placeholder=\"Write a tweet-sized message...\"\n maxLength={280}\n size=\"sm\"\n formats={['bold', 'italic', 'link']}\n/>"
217
204
  },
218
205
  {
219
206
  "name": "Small Size",
220
- "description": "Compact editor with sm size preset (120px min-height)",
207
+ "description": "A 120px body with a trimmed toolbar, for tight spaces.",
221
208
  "code": "<Editor\n placeholder=\"Quick note...\"\n size=\"sm\"\n formats={['bold', 'italic', 'code']}\n/>"
222
209
  }
223
210
  ],
@@ -253,11 +240,7 @@
253
240
  "maxLength: number - character limit with visual indicator",
254
241
  "toolbarIcons: Partial<Record<EditorFormat, ReactNode | (state) => ReactNode>> - custom toolbar icons"
255
242
  ],
256
- "a11yRules": [
257
- "A11Y_TOOLBAR_ROLE",
258
- "A11Y_BUTTON_LABEL",
259
- "A11Y_LIVE_REGION"
260
- ]
243
+ "a11yRules": ["A11Y_TOOLBAR_ROLE", "A11Y_BUTTON_LABEL", "A11Y_LIVE_REGION"]
261
244
  },
262
245
  "ai": {
263
246
  "compositionPattern": "compound",
@@ -1,19 +1,26 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
-
4
- // ============================================
5
- // Editor Root
6
- // ============================================
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/layout" as layout;
5
+ @use "../../recipes/prose" as prose;
6
+ @use "../../recipes/target" as target;
7
+ @use "../../recipes/typography" as typography;
7
8
 
8
9
  .editor {
9
10
  @include form-group-surface;
11
+
12
+ // Component-scoped registered vocabulary: these are declared here as the
13
+ // token source for the editor's size presets, not ad-hoc custom properties.
14
+ --fui-editor-min-block-sm: 120px;
15
+ --fui-editor-min-block-md: 200px;
16
+ --fui-editor-min-block-lg: 400px;
17
+
10
18
  display: flex;
11
19
  flex-direction: column;
12
- width: 100%;
13
- min-width: 0;
20
+ inline-size: 100%;
21
+ min-inline-size: 0;
14
22
  overflow: hidden;
15
23
 
16
- // Focus ring (Enhancement #7)
17
24
  &:focus-within:not([data-disabled]) {
18
25
  @include focus-ring;
19
26
  }
@@ -23,50 +30,30 @@
23
30
  pointer-events: none;
24
31
  }
25
32
 
26
- &[data-readonly] {
27
- .contentTextarea {
28
- cursor: default;
29
- }
30
- }
31
-
32
- // Size variants (Enhancement #2)
33
- &[data-size="sm"] {
34
- .content,
35
- .contentTextarea,
36
- :global(.tiptap) {
37
- min-height: 120px;
38
- }
33
+ &[data-readonly] .contentTextarea {
34
+ cursor: default;
39
35
  }
40
36
 
41
- &[data-size="md"] {
42
- .content,
43
- .contentTextarea,
44
- :global(.tiptap) {
45
- min-height: 200px;
46
- }
47
- }
48
-
49
- &[data-size="lg"] {
50
- .content,
51
- .contentTextarea,
52
- :global(.tiptap) {
53
- min-height: 400px;
37
+ @each $size in ("sm", "md", "lg") {
38
+ &[data-size="#{$size}"] {
39
+ .content,
40
+ .contentTextarea,
41
+ :global(.tiptap) {
42
+ min-block-size: var(--fui-editor-min-block-#{$size});
43
+ }
54
44
  }
55
45
  }
56
46
  }
57
47
 
58
- // ============================================
59
- // Toolbar
60
- // ============================================
61
-
62
- .toolbar {
48
+ .toolbar,
49
+ .statusBar {
63
50
  display: flex;
64
51
  align-items: center;
65
52
  justify-content: space-between;
66
53
  flex-wrap: wrap;
67
- gap: var(--fui-space-2, $fui-space-2);
68
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-2, $fui-space-2);
69
- border-bottom: 1px solid var(--fui-form-group-border, $fui-border);
54
+ gap: layout.gap("sm");
55
+ padding-block: layout.gap("xs");
56
+ padding-inline: layout.gap("sm");
70
57
  background-color: color-mix(
71
58
  in srgb,
72
59
  var(--fui-form-group-bg, $fui-bg-secondary) 72%,
@@ -74,222 +61,185 @@
74
61
  );
75
62
  }
76
63
 
77
- // ============================================
78
- // Toolbar Group
79
- // ============================================
64
+ .toolbar {
65
+ border-block-end: var(--fui-stroke-hairline, 1px) solid var(--fui-form-group-border, $fui-border);
66
+ }
80
67
 
81
- .toolbarGroup {
68
+ .toolbarGroup,
69
+ .statusBarLeft,
70
+ .statusBarRight {
82
71
  display: flex;
83
72
  align-items: center;
84
- gap: var(--fui-space-0-5, $fui-space-0-5);
73
+ gap: layout.gap("xs");
85
74
  }
86
75
 
87
- // ============================================
88
- // Toolbar Button
89
- // ============================================
90
-
91
76
  .toolbarButton {
92
77
  @include button-reset;
93
- @include interactive-base;
94
- @include touch-target;
78
+ @include action.base;
79
+ @include action.icon-only("sm");
80
+ @include target.hit-area("compact");
95
81
 
96
- display: inline-flex;
97
- align-items: center;
98
- justify-content: center;
99
- min-width: var(--fui-button-height-sm, $fui-button-height-sm);
100
- min-height: var(--fui-button-height-sm, $fui-button-height-sm);
101
- padding: 0;
102
- border: 1px solid transparent;
82
+ border: var(--fui-stroke-hairline, 1px) solid transparent;
103
83
  border-radius: var(--fui-radius-sm, $fui-radius-sm);
104
84
  background-color: transparent;
105
85
  color: var(--fui-text-secondary, $fui-text-secondary);
86
+ cursor: pointer;
106
87
 
107
88
  &:hover:not(:disabled) {
108
- background-color: var(--fui-field-bg, $fui-bg-elevated);
109
89
  border-color: var(--fui-form-group-border, $fui-border);
90
+ background-color: var(--fui-field-bg, $fui-bg-elevated);
110
91
  color: var(--fui-text-primary, $fui-text-primary);
111
92
  }
112
93
 
113
94
  &:active:not(:disabled) {
114
- background-color: var(--fui-field-selection-bg, $fui-bg-hover);
115
95
  border-color: var(--fui-field-selection-border, $fui-color-accent);
96
+ background-color: var(--fui-field-selection-bg, $fui-bg-hover);
97
+ }
98
+
99
+ &:focus-visible {
100
+ @include focus-ring;
101
+ }
102
+
103
+ &:disabled {
104
+ cursor: not-allowed;
116
105
  }
117
106
 
118
107
  svg {
119
- width: var(--fui-icon-sm, $fui-icon-sm); // 14px
120
- height: var(--fui-icon-sm, $fui-icon-sm);
108
+ @include action.glyph("sm");
121
109
  }
122
110
  }
123
111
 
124
112
  .toolbarButtonActive {
125
- color: var(--fui-text-primary, $fui-text-primary);
126
- background-color: var(--fui-field-selection-bg, $fui-bg-hover);
127
113
  border-color: var(--fui-field-selection-border, $fui-color-accent);
128
- box-shadow: inset 0 0 0 1px
114
+ background-color: var(--fui-field-selection-bg, $fui-bg-hover);
115
+ color: var(--fui-text-primary, $fui-text-primary);
116
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
129
117
  color-mix(in srgb, var(--fui-field-selection-border, $fui-color-accent) 55%, transparent);
130
-
131
- &:hover:not(:disabled) {
132
- background-color: var(--fui-field-selection-bg-hover, $fui-bg-hover);
133
- color: var(--fui-text-primary, $fui-text-primary);
134
- }
135
118
  }
136
119
 
137
- // ============================================
138
- // Separator
139
- // ============================================
140
-
141
120
  .separator {
142
- width: 1px;
143
- height: 1rem;
121
+ inline-size: var(--fui-stroke-hairline, 1px);
122
+ block-size: var(--fui-icon-md, $fui-icon-md);
123
+ margin-inline: layout.gap("xs");
144
124
  background-color: var(--fui-form-group-border, $fui-border);
145
- margin: 0 var(--fui-space-1, $fui-space-1);
146
125
  flex-shrink: 0;
147
126
  }
148
127
 
149
- // ============================================
150
- // Status Indicator
151
- // ============================================
128
+ .statusIndicator,
129
+ .statusBarItem {
130
+ @include typography.role("caption");
131
+
132
+ white-space: nowrap;
133
+ }
152
134
 
153
135
  .statusIndicator {
154
- @include section-label-text;
136
+ padding-inline: layout.gap("sm");
155
137
  color: var(--fui-text-tertiary, $fui-text-tertiary);
156
- white-space: nowrap;
157
- padding: 0 var(--fui-space-2, $fui-space-2);
158
138
  }
159
139
 
160
- .statusError {
140
+ .statusError,
141
+ .statusBarItemError {
161
142
  color: var(--fui-color-danger-text, $fui-color-danger-text);
162
143
  }
163
144
 
164
- // ============================================
165
- // Content
166
- // ============================================
145
+ .statusBarItemWarning {
146
+ color: var(--fui-color-warning-text, $fui-color-warning-text);
147
+ }
167
148
 
168
149
  .content {
169
150
  flex: 1;
170
- min-height: 200px;
151
+ min-block-size: var(--fui-editor-min-block-md);
171
152
  overflow-y: auto;
172
153
  }
173
154
 
174
- .contentRich {
175
- // TipTap editor styling
176
- :global(.tiptap) {
177
- padding: var(--fui-space-3, $fui-space-3);
178
- min-height: 200px;
179
- outline: none;
180
- @include text-base;
181
- line-height: var(--fui-line-height-relaxed, $fui-line-height-relaxed);
182
- font-size: var(--fui-font-size-base, $fui-font-size-base);
183
-
184
- &:focus-visible {
185
- outline: none;
186
- }
155
+ .contentRich :global(.tiptap) {
156
+ @include prose.root;
187
157
 
188
- // Placeholder
189
- p.is-editor-empty:first-child::before {
190
- content: attr(data-placeholder);
191
- float: left;
192
- color: var(--fui-text-tertiary, $fui-text-tertiary);
193
- pointer-events: none;
194
- height: 0;
195
- }
158
+ min-block-size: var(--fui-editor-min-block-md);
159
+ padding: layout.gap("lg");
160
+ outline: none;
196
161
 
197
- // Headings (Enhancement #4)
198
- // Heading scale matches Markdown's prose scale (h1=3xl, h2=xl, h3=lg) so the
199
- // editing canvas mirrors how the rendered content reads.
200
- h1 {
201
- font-size: var(--fui-font-size-3xl, $fui-font-size-3xl);
202
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
203
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
204
- margin: 0 0 var(--fui-space-3, $fui-space-3);
205
- }
162
+ &:focus-visible {
163
+ outline: none;
164
+ }
206
165
 
207
- h2 {
208
- font-size: var(--fui-font-size-xl, $fui-font-size-xl);
209
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
210
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
211
- margin: 0 0 var(--fui-space-2, $fui-space-2);
212
- }
166
+ p {
167
+ @include prose.paragraph;
168
+ }
213
169
 
214
- h3 {
215
- font-size: var(--fui-font-size-lg, $fui-font-size-lg);
216
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
217
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
218
- margin: 0 0 var(--fui-space-2, $fui-space-2);
170
+ @for $level from 1 through 6 {
171
+ h#{$level} {
172
+ @include prose.heading($level);
219
173
  }
174
+ }
220
175
 
221
- // Blockquote (Enhancement #5)
222
- blockquote {
223
- border-left: 3px solid var(--fui-color-accent, $fui-color-accent);
224
- padding-left: var(--fui-space-4, $fui-space-4);
225
- margin: 0 0 var(--fui-space-2, $fui-space-2);
226
- color: var(--fui-text-secondary, $fui-text-secondary);
227
- font-style: italic;
228
- }
176
+ blockquote {
177
+ @include prose.blockquote;
229
178
 
230
- // Inline code — padding matches Markdown's inline <code> (0.125em 0.375em)
231
- code {
232
- background-color: var(--fui-bg-tertiary, $fui-bg-tertiary);
233
- border-radius: var(--fui-radius-sm, $fui-radius-sm);
234
- padding: 0.125em 0.375em;
235
- font-family: var(--fui-font-mono, $fui-font-mono);
236
- font-size: 0.9em;
237
- }
179
+ color: var(--fui-text-secondary, $fui-text-secondary);
180
+ font-style: italic;
181
+ }
238
182
 
239
- // Links
240
- a {
241
- color: var(--fui-color-accent, $fui-color-accent);
242
- text-decoration: underline;
243
- cursor: pointer;
183
+ code {
184
+ @include prose.inline-code;
185
+ }
244
186
 
245
- &:hover {
246
- color: var(--fui-color-accent-hover, $fui-color-accent-hover);
247
- }
248
- }
187
+ a {
188
+ @include prose.link;
249
189
 
250
- // Unordered lists
251
- ul {
252
- padding-left: var(--fui-space-5, $fui-space-5);
253
- list-style-type: disc;
254
- }
190
+ color: var(--fui-color-accent, $fui-color-accent);
191
+ cursor: pointer;
192
+ }
255
193
 
256
- // Ordered lists (Enhancement #3)
257
- ol {
258
- padding-left: var(--fui-space-5, $fui-space-5);
259
- list-style-type: decimal;
260
- }
194
+ ul {
195
+ @include prose.list("disc");
196
+ }
261
197
 
262
- // Strikethrough
263
- s {
264
- text-decoration: line-through;
265
- }
198
+ ol {
199
+ @include prose.list("decimal");
200
+ }
266
201
 
267
- // Paragraphs
268
- p {
269
- margin: 0 0 var(--fui-space-2, $fui-space-2);
202
+ s {
203
+ text-decoration: line-through;
204
+ }
205
+ }
270
206
 
271
- &:last-child {
272
- margin-bottom: 0;
273
- }
274
- }
207
+ // TipTap's Placeholder extension is not a dependency, so the empty-document
208
+ // placeholder is driven from the wrapper's own data-placeholder attribute.
209
+ // An empty ProseMirror doc is exactly one paragraph holding a trailing break.
210
+ .contentRich[data-placeholder]:has(
211
+ :global(.tiptap) > p:only-child > br:global(.ProseMirror-trailingBreak)
212
+ ) {
213
+ position: relative;
214
+
215
+ &::before {
216
+ @include typography.role("body-relaxed");
217
+
218
+ content: attr(data-placeholder);
219
+ position: absolute;
220
+ inset-block-start: layout.gap("lg");
221
+ inset-inline-start: layout.gap("lg");
222
+ inset-inline-end: layout.gap("lg");
223
+ color: var(--fui-text-tertiary, $fui-text-tertiary);
224
+ pointer-events: none;
275
225
  }
276
226
  }
277
227
 
278
228
  .contentTextarea {
279
229
  @include button-reset;
280
- @include text-base;
230
+ @include typography.role("body-relaxed");
281
231
 
232
+ // button-reset marks pressables select-none; typed text must stay selectable.
233
+ user-select: text;
282
234
  display: block;
283
- width: 100%;
284
- height: 100%;
285
- min-height: 200px;
286
- padding: var(--fui-space-3, $fui-space-3);
235
+ inline-size: 100%;
236
+ block-size: 100%;
237
+ min-block-size: var(--fui-editor-min-block-md);
238
+ padding: layout.gap("lg");
239
+ border: 0;
287
240
  background: transparent;
288
- border: none;
289
241
  resize: none;
290
242
  overflow-y: auto;
291
- line-height: var(--fui-line-height-relaxed, $fui-line-height-relaxed);
292
- font-size: var(--fui-font-size-base, $fui-font-size-base);
293
243
 
294
244
  &::placeholder {
295
245
  color: var(--fui-text-tertiary, $fui-text-tertiary);
@@ -304,17 +254,9 @@
304
254
  }
305
255
  }
306
256
 
307
- // ============================================
308
- // Status Bar
309
- // ============================================
310
-
311
257
  .statusBar {
312
- display: flex;
313
- align-items: center;
314
- justify-content: space-between;
315
- gap: var(--fui-space-2, $fui-space-2);
316
- padding: var(--fui-space-1, $fui-space-1) var(--fui-space-2, $fui-space-2);
317
- border-top: 1px solid var(--fui-form-group-border, $fui-border);
258
+ border-block-start: var(--fui-stroke-hairline, 1px) solid
259
+ var(--fui-form-group-border, $fui-border);
318
260
  background-color: color-mix(
319
261
  in srgb,
320
262
  var(--fui-form-group-bg, $fui-bg-secondary) 56%,
@@ -322,31 +264,6 @@
322
264
  );
323
265
  }
324
266
 
325
- .statusBarLeft {
326
- display: flex;
327
- align-items: center;
328
- gap: var(--fui-space-2, $fui-space-2);
329
- }
330
-
331
267
  .statusBarRight {
332
- display: flex;
333
- align-items: center;
334
- gap: var(--fui-space-2, $fui-space-2);
335
- margin-left: auto;
336
- }
337
-
338
- .statusBarItem {
339
- @include helper-text;
340
- white-space: nowrap;
341
- }
342
-
343
- // maxLength indicator states (Enhancement #1)
344
- .statusBarItemWarning {
345
- color: var(--fui-color-warning-text, $fui-color-warning-text);
346
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
347
- }
348
-
349
- .statusBarItemError {
350
- color: var(--fui-color-danger-text, $fui-color-danger-text);
351
- font-weight: var(--fui-font-weight-medium, $fui-font-weight-medium);
268
+ margin-inline-start: auto;
352
269
  }