@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,8 +1,8 @@
1
- 'use client';
1
+ "use client";
2
2
 
3
- import * as React from 'react';
4
- import { Dialog as BaseDialog } from '@base-ui/react/dialog';
5
- import styles from './Dialog.module.scss';
3
+ import * as React from "react";
4
+ import { Dialog as BaseDialog } from "@base-ui/react/dialog";
5
+ import styles from "./Dialog.module.scss";
6
6
 
7
7
  // ============================================
8
8
  // Types
@@ -30,17 +30,20 @@ export interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement>
30
30
  /** Dialog width.
31
31
  * @default "md"
32
32
  * @see https://usefragments.com/components/dialog#sizes */
33
- size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
33
+ size?: "sm" | "md" | "lg" | "xl" | "full";
34
34
  /** Whether the dialog should autofocus content on open.
35
35
  * @default true */
36
36
  initialFocus?: boolean;
37
37
  }
38
38
 
39
- export interface DialogTitleProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {
39
+ export interface DialogTitleProps extends Omit<React.HTMLAttributes<HTMLElement>, "children"> {
40
40
  children: React.ReactNode;
41
41
  }
42
42
 
43
- export interface DialogDescriptionProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {
43
+ export interface DialogDescriptionProps extends Omit<
44
+ React.HTMLAttributes<HTMLElement>,
45
+ "children"
46
+ > {
44
47
  children: React.ReactNode;
45
48
  }
46
49
 
@@ -61,7 +64,7 @@ type DialogTriggerAsButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement>
61
64
  asChild?: false;
62
65
  };
63
66
 
64
- type DialogTriggerAsChildProps = Omit<React.HTMLAttributes<HTMLElement>, 'children'> & {
67
+ type DialogTriggerAsChildProps = Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
65
68
  children: React.ReactElement;
66
69
  asChild: true;
67
70
  };
@@ -73,7 +76,7 @@ type DialogCloseAsButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> &
73
76
  asChild?: false;
74
77
  };
75
78
 
76
- type DialogCloseAsChildProps = Omit<React.HTMLAttributes<HTMLElement>, 'children'> & {
79
+ type DialogCloseAsChildProps = Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
77
80
  children: React.ReactElement;
78
81
  asChild: true;
79
82
  };
@@ -108,13 +111,7 @@ function CloseIcon() {
108
111
  // Components
109
112
  // ============================================
110
113
 
111
- function DialogRoot({
112
- children,
113
- open,
114
- defaultOpen,
115
- onOpenChange,
116
- modal = true,
117
- }: DialogProps) {
114
+ function DialogRoot({ children, open, defaultOpen, onOpenChange, modal = true }: DialogProps) {
118
115
  return (
119
116
  <BaseDialog.Root
120
117
  open={open}
@@ -127,15 +124,14 @@ function DialogRoot({
127
124
  );
128
125
  }
129
126
 
130
- function DialogTrigger({
131
- children,
132
- asChild,
133
- className,
134
- ...htmlProps
135
- }: DialogTriggerProps) {
127
+ function DialogTrigger({ children, asChild, className, ...htmlProps }: DialogTriggerProps) {
136
128
  if (asChild) {
137
129
  return (
138
- <BaseDialog.Trigger {...htmlProps} className={className} render={children as React.ReactElement}>
130
+ <BaseDialog.Trigger
131
+ {...htmlProps}
132
+ className={className}
133
+ render={children as React.ReactElement}
134
+ >
139
135
  {null}
140
136
  </BaseDialog.Trigger>
141
137
  );
@@ -150,14 +146,12 @@ function DialogTrigger({
150
146
 
151
147
  function DialogContent({
152
148
  children,
153
- size = 'md',
149
+ size = "md",
154
150
  initialFocus = true,
155
151
  className,
156
152
  ...htmlProps
157
153
  }: DialogContentProps) {
158
- const popupClasses = [styles.popup, styles[size], className]
159
- .filter(Boolean)
160
- .join(' ');
154
+ const popupClasses = [styles.popup, styles[size], className].filter(Boolean).join(" ");
161
155
 
162
156
  return (
163
157
  <BaseDialog.Portal>
@@ -172,17 +166,25 @@ function DialogContent({
172
166
  }
173
167
 
174
168
  function DialogHeader({ children, className, ...htmlProps }: DialogHeaderProps) {
175
- const classes = [styles.header, className].filter(Boolean).join(' ');
176
- return <div {...htmlProps} className={classes}>{children}</div>;
169
+ const classes = [styles.header, className].filter(Boolean).join(" ");
170
+ return (
171
+ <div {...htmlProps} className={classes}>
172
+ {children}
173
+ </div>
174
+ );
177
175
  }
178
176
 
179
177
  function DialogTitle({ children, className, ...htmlProps }: DialogTitleProps) {
180
- const classes = [styles.title, className].filter(Boolean).join(' ');
181
- return <BaseDialog.Title {...htmlProps} className={classes}>{children}</BaseDialog.Title>;
178
+ const classes = [styles.title, className].filter(Boolean).join(" ");
179
+ return (
180
+ <BaseDialog.Title {...htmlProps} className={classes}>
181
+ {children}
182
+ </BaseDialog.Title>
183
+ );
182
184
  }
183
185
 
184
186
  function DialogDescription({ children, className, ...htmlProps }: DialogDescriptionProps) {
185
- const classes = [styles.description, className].filter(Boolean).join(' ');
187
+ const classes = [styles.description, className].filter(Boolean).join(" ");
186
188
  return (
187
189
  <BaseDialog.Description {...htmlProps} className={classes}>
188
190
  {children}
@@ -191,13 +193,21 @@ function DialogDescription({ children, className, ...htmlProps }: DialogDescript
191
193
  }
192
194
 
193
195
  function DialogBody({ children, className, ...htmlProps }: DialogBodyProps) {
194
- const classes = [styles.body, className].filter(Boolean).join(' ');
195
- return <div {...htmlProps} className={classes}>{children}</div>;
196
+ const classes = [styles.body, className].filter(Boolean).join(" ");
197
+ return (
198
+ <div {...htmlProps} className={classes}>
199
+ {children}
200
+ </div>
201
+ );
196
202
  }
197
203
 
198
204
  function DialogFooter({ children, className, ...htmlProps }: DialogFooterProps) {
199
- const classes = [styles.footer, className].filter(Boolean).join(' ');
200
- return <div {...htmlProps} className={classes}>{children}</div>;
205
+ const classes = [styles.footer, className].filter(Boolean).join(" ");
206
+ return (
207
+ <div {...htmlProps} className={classes}>
208
+ {children}
209
+ </div>
210
+ );
201
211
  }
202
212
 
203
213
  function DialogClose({ children, asChild, className, ...htmlProps }: DialogCloseProps) {
@@ -208,7 +218,7 @@ function DialogClose({ children, asChild, className, ...htmlProps }: DialogClose
208
218
  {...htmlProps}
209
219
  data-dialog-close
210
220
  aria-label="Close dialog"
211
- className={[styles.close, className].filter(Boolean).join(' ')}
221
+ className={[styles.close, className].filter(Boolean).join(" ")}
212
222
  >
213
223
  <CloseIcon />
214
224
  </BaseDialog.Close>
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Drawer",
4
- "description": "A panel that slides in from screen edges. Extends the Dialog pattern with slide animations and edge positioning.",
5
- "category": "feedback",
6
- "tags": [
7
- "drawer",
8
- "sheet",
9
- "panel",
10
- "sidebar",
11
- "slide-over"
12
- ],
4
+ "description": "Slides a panel in from a screen edge and dims the page behind it.",
5
+ "category": "overlays",
6
+ "tags": ["drawer", "sheet", "panel", "sidebar", "slide-over"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Drawer/index.tsx",
15
9
  "exportName": "Drawer",
@@ -51,25 +45,23 @@
51
45
  },
52
46
  "usage": {
53
47
  "when": [
54
- "Side panels for editing or creating content",
55
- "Mobile-style bottom sheets for actions",
56
- "Navigation panels that slide in from the left",
57
- "Detail views that overlay the main content"
48
+ "Editing or creating alongside the page behind it",
49
+ "Touch-reachable action sheets",
50
+ "Navigation that slides in and back out",
51
+ "Detail views that overlay rather than replace"
58
52
  ],
59
53
  "whenNot": [
60
- "Centered modal dialogs (use Dialog)",
61
- "Non-blocking notifications (use Toast)",
62
- "Permanent side navigation (use Sidebar)",
63
- "Small contextual menus (use Menu or Popover)"
54
+ "A centred task (use Dialog)",
55
+ "Navigation that stays on screen (use Sidebar)",
56
+ "A short list of actions (use Menu or Popover)",
57
+ "Feedback the user does not act on (use Toast)"
64
58
  ],
65
59
  "guidelines": [
66
- "Default to right side for content editing and forms",
67
- "Use left side for navigation drawers",
68
- "Use bottom for mobile-style action sheets",
69
- "Provide clear close affordance (X button or cancel)",
70
- "Keep drawer content focused on a single task",
71
- "Drawer.Trigger and Drawer.Close with asChild require a single valid React element child",
72
- "Set Drawer.Content initialFocus={false} when custom focus management is needed"
60
+ "Right for editing, left for navigation, bottom for touch",
61
+ "Always give the user a visible way out",
62
+ "One task per drawer",
63
+ "asChild on Trigger and Close needs a single element child",
64
+ "Set initialFocus={false} when you place focus yourself"
73
65
  ],
74
66
  "accessibility": [
75
67
  "Automatically traps focus within the drawer",
@@ -81,22 +73,22 @@
81
73
  "examples": [
82
74
  {
83
75
  "name": "Default",
84
- "description": "Right-side drawer with header, body, and footer",
76
+ "description": "Enters from the right, the default for editing and forms.",
85
77
  "code": "<Drawer>\n <Drawer.Trigger asChild>\n <Button>Open Drawer</Button>\n </Drawer.Trigger>\n <Drawer.Content>\n <Drawer.Close />\n <Drawer.Header>\n <Drawer.Title>Drawer Title</Drawer.Title>\n <Drawer.Description>\n A panel sliding in from the right.\n </Drawer.Description>\n </Drawer.Header>\n <Drawer.Body>\n <p>Drawer content goes here.</p>\n </Drawer.Body>\n <Drawer.Footer>\n <Drawer.Close asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </Drawer.Close>\n <Button variant=\"primary\">Save</Button>\n </Drawer.Footer>\n </Drawer.Content>\n</Drawer>"
86
78
  },
87
79
  {
88
80
  "name": "Left Side",
89
- "description": "Left-side drawer for navigation",
81
+ "description": "Enters from the left, where navigation belongs.",
90
82
  "code": "<Drawer>\n <Drawer.Trigger asChild>\n <Button variant=\"secondary\">Open Left</Button>\n </Drawer.Trigger>\n <Drawer.Content side=\"left\">\n <Drawer.Close />\n <Drawer.Header>\n <Drawer.Title>Navigation</Drawer.Title>\n </Drawer.Header>\n <Drawer.Body>\n <p>Left-side drawer for navigation or filters.</p>\n </Drawer.Body>\n </Drawer.Content>\n</Drawer>"
91
83
  },
92
84
  {
93
85
  "name": "Bottom Sheet",
94
- "description": "Bottom drawer for mobile-style actions",
86
+ "description": "Rises from the bottom for touch-reachable actions.",
95
87
  "code": "<Drawer>\n <Drawer.Trigger asChild>\n <Button variant=\"secondary\">Open Bottom Sheet</Button>\n </Drawer.Trigger>\n <Drawer.Content side=\"bottom\" size=\"sm\">\n <Drawer.Header>\n <Drawer.Title>Actions</Drawer.Title>\n </Drawer.Header>\n <Drawer.Body>\n <p>Bottom sheet for mobile-style actions.</p>\n </Drawer.Body>\n </Drawer.Content>\n</Drawer>"
96
88
  },
97
89
  {
98
90
  "name": "With Form",
99
- "description": "Drawer with a form layout",
91
+ "description": "Fields in the body, submit and cancel pinned to the footer.",
100
92
  "code": "<Drawer>\n <Drawer.Trigger asChild>\n <Button>Edit Settings</Button>\n </Drawer.Trigger>\n <Drawer.Content size=\"md\">\n <Drawer.Close />\n <Drawer.Header>\n <Drawer.Title>Settings</Drawer.Title>\n <Drawer.Description>Update your preferences.</Drawer.Description>\n </Drawer.Header>\n <Drawer.Body>\n <Stack gap=\"md\">\n <Input label=\"Display Name\" placeholder=\"Enter name\" />\n <Input label=\"Email\" type=\"email\" placeholder=\"you@example.com\" />\n </Stack>\n </Drawer.Body>\n <Drawer.Footer>\n <Drawer.Close asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </Drawer.Close>\n <Button variant=\"primary\">Save Changes</Button>\n </Drawer.Footer>\n </Drawer.Content>\n</Drawer>"
101
93
  }
102
94
  ],
@@ -126,11 +118,7 @@
126
118
  "Drawer.Content size: sm|md|lg|xl|full - panel size",
127
119
  "Drawer.Content initialFocus: boolean - auto-focus popup on open (default: true)"
128
120
  ],
129
- "a11yRules": [
130
- "A11Y_DIALOG_FOCUS",
131
- "A11Y_DIALOG_ESCAPE",
132
- "A11Y_DIALOG_LABEL"
133
- ]
121
+ "a11yRules": ["A11Y_DIALOG_FOCUS", "A11Y_DIALOG_ESCAPE", "A11Y_DIALOG_LABEL"]
134
122
  },
135
123
  "ai": {
136
124
  "compositionPattern": "compound",
@@ -145,9 +133,7 @@
145
133
  "Body",
146
134
  "Footer"
147
135
  ],
148
- "requiredChildren": [
149
- "Content"
150
- ],
136
+ "requiredChildren": ["Content"],
151
137
  "commonPatterns": [
152
138
  "<Drawer><Drawer.Trigger><Button>Open</Button></Drawer.Trigger><Drawer.Content><Drawer.Close /><Drawer.Header><Drawer.Title>{title}</Drawer.Title></Drawer.Header><Drawer.Body>{content}</Drawer.Body><Drawer.Footer><Drawer.Close asChild><Button variant=\"secondary\">Cancel</Button></Drawer.Close><Button>Save</Button></Drawer.Footer></Drawer.Content></Drawer>"
153
139
  ]
@@ -1,14 +1,13 @@
1
- @use '../../tokens/variables' as *;
2
- @use '../../tokens/mixins' as *;
1
+ @use "../../tokens/variables" as *;
2
+ @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/overlay" as overlay;
3
5
 
4
- // Backdrop overlay
5
6
  .backdrop {
6
7
  position: fixed;
8
+ z-index: var(--fui-overlay-layer-backdrop, 50);
7
9
  inset: 0;
8
10
  background-color: var(--fui-backdrop, $fui-backdrop);
9
- z-index: 50;
10
-
11
- // Animation
12
11
  opacity: 0;
13
12
  transition: opacity var(--fui-transition-normal, $fui-transition-normal);
14
13
 
@@ -22,11 +21,12 @@
22
21
  }
23
22
  }
24
23
 
25
- // Viewport positioning container
26
24
  .viewport {
25
+ @include overlay.safe-viewport;
26
+
27
27
  position: fixed;
28
+ z-index: var(--fui-overlay-layer-modal, 51);
28
29
  inset: 0;
29
- z-index: 51;
30
30
  pointer-events: none;
31
31
 
32
32
  &[data-open] {
@@ -34,24 +34,18 @@
34
34
  }
35
35
  }
36
36
 
37
- // The popup panel
38
37
  .popup {
39
- @include surface-elevated;
40
- @include text-base;
38
+ @include overlay.modal-shell;
41
39
 
42
40
  position: fixed;
43
- z-index: 51;
41
+ z-index: var(--fui-overlay-layer-modal, 51);
44
42
  display: flex;
45
43
  flex-direction: column;
46
- box-shadow: var(--fui-shadow-md, $fui-shadow-md);
47
- overflow-y: auto;
48
44
  pointer-events: auto;
49
-
50
- // Animation
45
+ opacity: 0;
51
46
  transition:
52
47
  opacity var(--fui-transition-normal, $fui-transition-normal),
53
48
  transform var(--fui-transition-normal, $fui-transition-normal);
54
- opacity: 0;
55
49
 
56
50
  &[data-open] {
57
51
  opacity: 1;
@@ -59,14 +53,16 @@
59
53
  }
60
54
  }
61
55
 
62
- // ============================================
63
- // Side positioning — swipe-aware transforms
64
- // ============================================
56
+ .content {
57
+ display: flex;
58
+ min-block-size: 0;
59
+ block-size: 100%;
60
+ flex-direction: column;
61
+ }
65
62
 
66
63
  .side-right {
67
- top: 0;
68
- right: 0;
69
- bottom: 0;
64
+ inset-block: var(--_fui-overlay-safe-top) var(--_fui-overlay-safe-bottom);
65
+ inset-inline-end: var(--_fui-overlay-safe-right);
70
66
  transform: translateX(calc(100% + var(--drawer-swipe-movement-x, 0px)));
71
67
 
72
68
  &[data-open] {
@@ -80,9 +76,8 @@
80
76
  }
81
77
 
82
78
  .side-left {
83
- top: 0;
84
- left: 0;
85
- bottom: 0;
79
+ inset-block: var(--_fui-overlay-safe-top) var(--_fui-overlay-safe-bottom);
80
+ inset-inline-start: var(--_fui-overlay-safe-left);
86
81
  transform: translateX(calc(-100% + var(--drawer-swipe-movement-x, 0px)));
87
82
 
88
83
  &[data-open] {
@@ -96,9 +91,8 @@
96
91
  }
97
92
 
98
93
  .side-top {
99
- top: 0;
100
- left: 0;
101
- right: 0;
94
+ inset-block-start: var(--_fui-overlay-safe-top);
95
+ inset-inline: var(--_fui-overlay-safe-left) var(--_fui-overlay-safe-right);
102
96
  transform: translateY(calc(-100% + var(--drawer-swipe-movement-y, 0px)));
103
97
 
104
98
  &[data-open] {
@@ -112,9 +106,8 @@
112
106
  }
113
107
 
114
108
  .side-bottom {
115
- bottom: 0;
116
- left: 0;
117
- right: 0;
109
+ inset-block-end: var(--_fui-overlay-safe-bottom);
110
+ inset-inline: var(--_fui-overlay-safe-left) var(--_fui-overlay-safe-right);
118
111
  transform: translateY(calc(100% + var(--drawer-swipe-movement-y, 0px)));
119
112
 
120
113
  &[data-open] {
@@ -127,95 +120,97 @@
127
120
  }
128
121
  }
129
122
 
130
- // Disable transition during active swipe for instant feedback
131
123
  .popup[data-swiping] {
132
124
  transition-duration: 0s;
133
125
  }
134
126
 
135
- // ============================================
136
- // Size variants — width for left/right, height for top/bottom
137
- // ============================================
138
-
139
- // Left/Right: size maps to width
140
127
  .side-left,
141
128
  .side-right {
142
- &.size-sm { width: 20rem; }
143
- &.size-md { width: 24rem; }
144
- &.size-lg { width: 32rem; }
145
- &.size-xl { width: 48rem; }
146
- &.size-full { width: 100vw; }
129
+ &.size-sm {
130
+ inline-size: min(#{overlay.drawer-inline("sm")}, var(--_fui-overlay-safe-inline));
131
+ }
132
+
133
+ &.size-md {
134
+ inline-size: min(#{overlay.drawer-inline("md")}, var(--_fui-overlay-safe-inline));
135
+ }
136
+
137
+ &.size-lg {
138
+ inline-size: min(#{overlay.drawer-inline("lg")}, var(--_fui-overlay-safe-inline));
139
+ }
140
+
141
+ &.size-xl {
142
+ inline-size: min(#{overlay.drawer-inline("xl")}, var(--_fui-overlay-safe-inline));
143
+ }
144
+
145
+ &.size-full {
146
+ inline-size: var(--_fui-overlay-safe-inline);
147
+ }
147
148
  }
148
149
 
149
- // Top/Bottom: size maps to height
150
150
  .side-top,
151
151
  .side-bottom {
152
- &.size-sm { height: 25vh; }
153
- &.size-md { height: 40vh; }
154
- &.size-lg { height: 60vh; }
155
- &.size-xl { height: 80vh; }
156
- &.size-full { height: 100vh; }
157
- }
152
+ &.size-sm {
153
+ block-size: min(#{overlay.drawer-block("sm")}, var(--_fui-overlay-safe-block));
154
+ }
155
+
156
+ &.size-md {
157
+ block-size: min(#{overlay.drawer-block("md")}, var(--_fui-overlay-safe-block));
158
+ }
158
159
 
159
- // ============================================
160
- // Content sections (mirror Dialog)
161
- // ============================================
160
+ &.size-lg {
161
+ block-size: min(#{overlay.drawer-block("lg")}, var(--_fui-overlay-safe-block));
162
+ }
163
+
164
+ &.size-xl {
165
+ block-size: min(#{overlay.drawer-block("xl")}, var(--_fui-overlay-safe-block));
166
+ }
167
+
168
+ &.size-full {
169
+ block-size: var(--_fui-overlay-safe-block);
170
+ }
171
+ }
162
172
 
163
- // Header area
164
173
  .header {
165
- padding: var(--fui-space-3, $fui-space-3) var(--fui-space-4, $fui-space-4);
174
+ @include overlay.header;
166
175
  }
167
176
 
168
- // Title
169
177
  .title {
178
+ @include overlay.modal-title;
179
+
170
180
  margin: 0;
171
- font-size: var(--fui-font-size-lg, $fui-font-size-lg);
172
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
173
181
  color: var(--fui-text-primary, $fui-text-primary);
174
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
175
182
  }
176
183
 
177
- // Description
178
184
  .description {
179
- margin: var(--fui-space-1, $fui-space-1) 0 0;
180
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
185
+ @include overlay.description;
186
+
187
+ margin: 0;
181
188
  color: var(--fui-text-secondary, $fui-text-secondary);
182
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
183
189
  }
184
190
 
185
- // Body content
186
191
  .body {
192
+ @include overlay.body;
193
+
194
+ min-block-size: 0;
187
195
  flex: 1;
188
- padding: 0 var(--fui-space-4, $fui-space-4) var(--fui-space-3, $fui-space-3);
189
- overflow-y: auto;
196
+ overflow: auto;
190
197
  }
191
198
 
192
- // Footer for actions
193
199
  .footer {
194
- display: flex;
195
- align-items: center;
196
- justify-content: flex-end;
197
- gap: var(--fui-space-1, $fui-space-1);
198
- padding: var(--fui-space-2, $fui-space-2) var(--fui-space-4, $fui-space-4);
199
- border-top: 1px solid var(--fui-border, $fui-border);
200
+ @include overlay.footer;
201
+
202
+ border-top: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
200
203
  background-color: var(--fui-bg-secondary, $fui-bg-secondary);
201
204
  }
202
205
 
203
- // Close button (X in corner)
204
206
  .close {
205
207
  @include button-reset;
206
208
  @include interactive-base;
209
+ @include overlay.close;
207
210
 
208
- position: absolute;
209
- top: var(--fui-space-3, $fui-space-3);
210
- right: var(--fui-space-3, $fui-space-3);
211
- display: flex;
212
- align-items: center;
213
- justify-content: center;
214
- width: 2rem;
215
- height: 2rem;
211
+ z-index: 1;
216
212
  border-radius: var(--fui-radius-md, $fui-radius-md);
217
213
  color: var(--fui-text-secondary, $fui-text-secondary);
218
- z-index: 1;
219
214
 
220
215
  &:hover {
221
216
  background-color: var(--fui-bg-hover, $fui-bg-hover);
@@ -223,33 +218,32 @@
223
218
  }
224
219
 
225
220
  svg {
226
- width: 1rem;
227
- height: 1rem;
221
+ inline-size: action.icon-size("sm");
222
+ block-size: action.icon-size("sm");
228
223
  }
229
224
  }
230
225
 
231
- // SwipeArea — invisible gesture zone at screen edge
226
+ .popup:has(.close) .header {
227
+ padding-inline-end: calc(
228
+ var(--fui-overlay-close-inset, var(--fui-raw-space-12, 12px)) + #{action.track("sm")} +
229
+ var(--fui-overlay-section-gap, var(--fui-raw-space-8, 8px))
230
+ );
231
+ }
232
+
232
233
  .swipeArea {
233
234
  position: fixed;
234
- z-index: 49;
235
+ z-index: var(--fui-overlay-layer-swipe, 49);
235
236
  }
236
237
 
237
- // ============================================
238
- // Accessibility: Reduced Motion
239
- // ============================================
240
-
241
238
  @media (prefers-reduced-motion: reduce) {
242
- .backdrop {
239
+ .backdrop,
240
+ .popup {
243
241
  transition: none;
244
242
  }
245
243
 
246
- .popup {
247
- transition: none;
244
+ .popup,
245
+ .popup[data-starting-style],
246
+ .popup[data-ending-style] {
248
247
  transform: none;
249
-
250
- &[data-starting-style],
251
- &[data-ending-style] {
252
- transform: none;
253
- }
254
248
  }
255
249
  }
@@ -225,7 +225,7 @@ function DrawerContent({
225
225
  data-side={side}
226
226
  className={popupClasses}
227
227
  >
228
- <BaseDrawer.Content>{children}</BaseDrawer.Content>
228
+ <BaseDrawer.Content className={styles.content}>{children}</BaseDrawer.Content>
229
229
  </BaseDrawer.Popup>
230
230
  </BaseDrawer.Viewport>
231
231
  </BaseDrawer.Portal>