@usefragments/ui 1.6.0 → 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 (457) 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 +4720 -4159
  6. package/dist/chart.cjs +24 -6
  7. package/dist/chart.js +24 -6
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +3 -1
  11. package/dist/colorpicker.js +3 -1
  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/Avatar/Avatar.module.scss.cjs +14 -14
  23. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  24. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  25. package/dist/components/Badge/Badge.module.scss.js +19 -19
  26. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  27. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  28. package/dist/components/Box/Box.module.scss.cjs +152 -152
  29. package/dist/components/Box/Box.module.scss.js +152 -152
  30. package/dist/components/Box/index.cjs +64 -75
  31. package/dist/components/Box/index.d.ts +16 -16
  32. package/dist/components/Box/index.d.ts.map +1 -1
  33. package/dist/components/Box/index.js +64 -75
  34. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  35. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  36. package/dist/components/Button/Button.module.scss.cjs +14 -14
  37. package/dist/components/Button/Button.module.scss.js +14 -14
  38. package/dist/components/Card/Card.module.scss.cjs +29 -17
  39. package/dist/components/Card/Card.module.scss.js +30 -18
  40. package/dist/components/Card/index.cjs +8 -0
  41. package/dist/components/Card/index.d.ts +12 -2
  42. package/dist/components/Card/index.d.ts.map +1 -1
  43. package/dist/components/Card/index.js +8 -0
  44. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  45. package/dist/components/Chart/Chart.module.scss.js +15 -15
  46. package/dist/components/Chart/index.d.ts.map +1 -1
  47. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -9
  48. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -9
  49. package/dist/components/Checkbox/index.cjs +2 -2
  50. package/dist/components/Checkbox/index.d.ts.map +1 -1
  51. package/dist/components/Checkbox/index.js +2 -2
  52. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  53. package/dist/components/Chip/Chip.module.scss.js +15 -15
  54. package/dist/components/Chip/index.cjs +2 -1
  55. package/dist/components/Chip/index.d.ts.map +1 -1
  56. package/dist/components/Chip/index.js +2 -1
  57. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  58. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  59. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  60. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  61. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  62. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  63. package/dist/components/CodeBlock/index.d.ts +17 -3
  64. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  65. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  66. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  67. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  68. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  69. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  70. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  71. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  72. package/dist/components/Combobox/index.cjs +17 -1
  73. package/dist/components/Combobox/index.d.ts.map +1 -1
  74. package/dist/components/Combobox/index.js +17 -1
  75. package/dist/components/Command/Command.module.scss.cjs +11 -11
  76. package/dist/components/Command/Command.module.scss.js +11 -11
  77. package/dist/components/Command/index.cjs +26 -15
  78. package/dist/components/Command/index.d.ts +2 -2
  79. package/dist/components/Command/index.d.ts.map +1 -1
  80. package/dist/components/Command/index.js +26 -15
  81. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  82. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  83. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  84. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  85. package/dist/components/DataTable/DataTable.icons.js +6 -33
  86. package/dist/components/DataTable/DataTable.module.scss.cjs +27 -27
  87. package/dist/components/DataTable/DataTable.module.scss.js +27 -27
  88. package/dist/components/DataTable/index.d.ts.map +1 -1
  89. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  90. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  91. package/dist/components/DatePicker/index.d.ts.map +1 -1
  92. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  93. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  94. package/dist/components/Dialog/index.cjs +11 -14
  95. package/dist/components/Dialog/index.d.ts +7 -7
  96. package/dist/components/Dialog/index.d.ts.map +1 -1
  97. package/dist/components/Dialog/index.js +11 -14
  98. package/dist/components/Drawer/Drawer.module.scss.cjs +29 -29
  99. package/dist/components/Drawer/Drawer.module.scss.js +29 -29
  100. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  101. package/dist/components/Editor/Editor.module.scss.js +17 -17
  102. package/dist/components/Editor/index.d.ts +10 -10
  103. package/dist/components/Editor/index.d.ts.map +1 -1
  104. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  105. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  106. package/dist/components/EmptyState/index.cjs +8 -6
  107. package/dist/components/EmptyState/index.d.ts +9 -4
  108. package/dist/components/EmptyState/index.d.ts.map +1 -1
  109. package/dist/components/EmptyState/index.js +8 -6
  110. package/dist/components/Field/Field.module.scss.cjs +5 -5
  111. package/dist/components/Field/Field.module.scss.js +5 -5
  112. package/dist/components/Field/index.cjs +9 -1
  113. package/dist/components/Field/index.d.ts.map +1 -1
  114. package/dist/components/Field/index.js +9 -1
  115. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  116. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  117. package/dist/components/Grid/index.cjs +1 -1
  118. package/dist/components/Grid/index.js +1 -1
  119. package/dist/components/Header/Header.module.scss.cjs +33 -33
  120. package/dist/components/Header/Header.module.scss.js +33 -33
  121. package/dist/components/Header/index.cjs +17 -38
  122. package/dist/components/Header/index.d.ts +15 -11
  123. package/dist/components/Header/index.d.ts.map +1 -1
  124. package/dist/components/Header/index.js +17 -38
  125. package/dist/components/Icon/Icon.module.scss.cjs +15 -15
  126. package/dist/components/Icon/Icon.module.scss.js +15 -15
  127. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  128. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  129. package/dist/components/IconButton/index.cjs +2 -1
  130. package/dist/components/IconButton/index.d.ts.map +1 -1
  131. package/dist/components/IconButton/index.js +2 -1
  132. package/dist/components/Image/Image.module.scss.cjs +27 -27
  133. package/dist/components/Image/Image.module.scss.js +27 -27
  134. package/dist/components/Input/Input.module.scss.cjs +17 -17
  135. package/dist/components/Input/Input.module.scss.js +17 -17
  136. package/dist/components/Link/Link.module.scss.cjs +14 -10
  137. package/dist/components/Link/Link.module.scss.js +14 -10
  138. package/dist/components/Link/index.d.ts +1 -1
  139. package/dist/components/Link/index.d.ts.map +1 -1
  140. package/dist/components/List/List.module.scss.cjs +19 -19
  141. package/dist/components/List/List.module.scss.js +19 -19
  142. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  143. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  144. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  145. package/dist/components/Loading/Loading.module.scss.js +34 -34
  146. package/dist/components/Loading/index.cjs +1 -1
  147. package/dist/components/Loading/index.js +1 -1
  148. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  149. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  150. package/dist/components/Markdown/index.d.ts +2 -2
  151. package/dist/components/Markdown/index.d.ts.map +1 -1
  152. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  153. package/dist/components/Menu/Menu.module.scss.js +14 -14
  154. package/dist/components/Message/Message.module.scss.cjs +18 -18
  155. package/dist/components/Message/Message.module.scss.js +18 -18
  156. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  157. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  158. package/dist/components/NavigationMenu/index.cjs +32 -15
  159. package/dist/components/NavigationMenu/index.d.ts +12 -6
  160. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  161. package/dist/components/NavigationMenu/index.js +32 -15
  162. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  163. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  164. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  165. package/dist/components/Popover/Popover.module.scss.js +10 -10
  166. package/dist/components/Progress/Progress.module.scss.cjs +25 -25
  167. package/dist/components/Progress/Progress.module.scss.js +25 -25
  168. package/dist/components/Prompt/Prompt.module.scss.cjs +28 -28
  169. package/dist/components/Prompt/Prompt.module.scss.js +28 -28
  170. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -15
  171. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -15
  172. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  173. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  174. package/dist/components/ScrollArea/index.d.ts +4 -4
  175. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  176. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  177. package/dist/components/Select/Select.module.scss.cjs +21 -21
  178. package/dist/components/Select/Select.module.scss.js +21 -21
  179. package/dist/components/Separator/Separator.module.scss.cjs +11 -11
  180. package/dist/components/Separator/Separator.module.scss.js +11 -11
  181. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  182. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  183. package/dist/components/Sidebar/index.cjs +12 -35
  184. package/dist/components/Sidebar/index.d.ts +19 -19
  185. package/dist/components/Sidebar/index.d.ts.map +1 -1
  186. package/dist/components/Sidebar/index.js +12 -35
  187. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  188. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  189. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  190. package/dist/components/Slider/Slider.module.scss.js +12 -12
  191. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  192. package/dist/components/Stack/Stack.module.scss.js +25 -25
  193. package/dist/components/Stack/index.cjs +1 -1
  194. package/dist/components/Stack/index.js +1 -1
  195. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  196. package/dist/components/Switch/Switch.module.scss.js +9 -9
  197. package/dist/components/Table/Table.module.scss.cjs +19 -19
  198. package/dist/components/Table/Table.module.scss.js +19 -19
  199. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  200. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  201. package/dist/components/TableOfContents/index.cjs +13 -9
  202. package/dist/components/TableOfContents/index.d.ts +5 -3
  203. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  204. package/dist/components/TableOfContents/index.js +13 -9
  205. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  206. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  207. package/dist/components/Tabs/index.cjs +26 -6
  208. package/dist/components/Tabs/index.d.ts.map +1 -1
  209. package/dist/components/Tabs/index.js +26 -6
  210. package/dist/components/Text/Text.module.scss.cjs +87 -75
  211. package/dist/components/Text/Text.module.scss.js +87 -75
  212. package/dist/components/Text/index.cjs +49 -41
  213. package/dist/components/Text/index.d.ts +12 -11
  214. package/dist/components/Text/index.d.ts.map +1 -1
  215. package/dist/components/Text/index.js +49 -41
  216. package/dist/components/Textarea/Textarea.module.scss.cjs +24 -24
  217. package/dist/components/Textarea/Textarea.module.scss.js +24 -24
  218. package/dist/components/Theme/index.cjs +2 -1
  219. package/dist/components/Theme/index.d.ts.map +1 -1
  220. package/dist/components/Theme/index.js +2 -1
  221. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +9 -6
  222. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +9 -6
  223. package/dist/components/ThemeToggle/index.cjs +31 -6
  224. package/dist/components/ThemeToggle/index.d.ts +7 -2
  225. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  226. package/dist/components/ThemeToggle/index.js +32 -7
  227. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  228. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  229. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  230. package/dist/components/Toast/Toast.module.scss.js +20 -20
  231. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  232. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  233. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  234. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  235. package/dist/components/Tooltip/index.cjs +24 -40
  236. package/dist/components/Tooltip/index.d.ts +4 -4
  237. package/dist/components/Tooltip/index.d.ts.map +1 -1
  238. package/dist/components/Tooltip/index.js +24 -40
  239. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  240. package/dist/data-table.cjs +2 -1
  241. package/dist/data-table.js +2 -1
  242. package/dist/datepicker.cjs +3 -2
  243. package/dist/datepicker.js +3 -2
  244. package/dist/editor.cjs +68 -28
  245. package/dist/editor.js +68 -28
  246. package/dist/index.cjs +1 -1
  247. package/dist/index.d.ts +1 -1
  248. package/dist/index.d.ts.map +1 -1
  249. package/dist/index.js +2 -2
  250. package/dist/markdown.cjs +21 -29
  251. package/dist/markdown.js +21 -29
  252. package/dist/measurements/generated.cjs +9 -1
  253. package/dist/measurements/generated.d.ts +7 -0
  254. package/dist/measurements/generated.d.ts.map +1 -1
  255. package/dist/measurements/generated.js +9 -1
  256. package/dist/utils/a11y.cjs +5 -2
  257. package/dist/utils/a11y.d.ts +5 -5
  258. package/dist/utils/a11y.d.ts.map +1 -1
  259. package/dist/utils/a11y.js +5 -2
  260. package/dist/utils/canonical-stamp.cjs +2 -8
  261. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  262. package/dist/utils/canonical-stamp.js +1 -7
  263. package/dist/utils/css-warning.cjs +1 -1
  264. package/dist/utils/css-warning.js +1 -1
  265. package/dist/utils/env.cjs +17 -0
  266. package/dist/utils/env.d.ts +3 -0
  267. package/dist/utils/env.d.ts.map +1 -0
  268. package/dist/utils/env.js +17 -0
  269. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  270. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  271. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  272. package/dist/utils/keyboard-shortcuts.js +3 -10
  273. package/dist/utils/seed-derivation.cjs +10 -6
  274. package/dist/utils/seed-derivation.d.ts.map +1 -1
  275. package/dist/utils/seed-derivation.js +10 -6
  276. package/fragments.json +1 -1
  277. package/package.json +6 -4
  278. package/src/assets/fragments-logo.tsx +2 -2
  279. package/src/assets/fragments-wordmark.tsx +4 -2
  280. package/src/components/Accordion/Accordion.contract.json +24 -48
  281. package/src/components/Alert/Alert.contract.json +37 -53
  282. package/src/components/Alert/Alert.module.scss +24 -0
  283. package/src/components/Alert/index.tsx +55 -29
  284. package/src/components/AppShell/AppShell.contract.json +34 -51
  285. package/src/components/AppShell/AppShell.module.scss +53 -40
  286. package/src/components/Avatar/Avatar.contract.json +31 -48
  287. package/src/components/Avatar/Avatar.module.scss +4 -1
  288. package/src/components/Badge/Badge.contract.json +37 -42
  289. package/src/components/Badge/Badge.module.scss +9 -2
  290. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  291. package/src/components/Box/Box.contract.json +40 -148
  292. package/src/components/Box/index.tsx +92 -99
  293. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  294. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +12 -7
  295. package/src/components/Button/Button.module.scss +8 -7
  296. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  297. package/src/components/Card/Card.module.scss +82 -1
  298. package/src/components/Card/index.tsx +21 -2
  299. package/src/components/Chart/Chart.contract.json +21 -29
  300. package/src/components/Chart/index.tsx +36 -6
  301. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  302. package/src/components/Checkbox/Checkbox.module.scss +32 -23
  303. package/src/components/Checkbox/index.tsx +4 -2
  304. package/src/components/Chip/Chip.contract.json +33 -40
  305. package/src/components/Chip/Chip.module.scss +2 -2
  306. package/src/components/Chip/index.tsx +2 -1
  307. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  308. package/src/components/CodeBlock/CodeBlock.module.scss +40 -15
  309. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  310. package/src/components/CodeBlock/index.tsx +91 -35
  311. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  312. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  313. package/src/components/ColorPicker/ColorPicker.module.scss +15 -12
  314. package/src/components/ColorPicker/index.tsx +5 -1
  315. package/src/components/Combobox/Combobox.contract.json +36 -37
  316. package/src/components/Combobox/Combobox.module.scss +1 -1
  317. package/src/components/Combobox/index.tsx +31 -5
  318. package/src/components/Command/Command.contract.json +21 -43
  319. package/src/components/Command/index.tsx +58 -47
  320. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  321. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  322. package/src/components/DataTable/DataTable.module.scss +12 -8
  323. package/src/components/DataTable/index.tsx +8 -7
  324. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  325. package/src/components/DatePicker/DatePicker.module.scss +12 -5
  326. package/src/components/DatePicker/index.tsx +5 -2
  327. package/src/components/Dialog/Dialog.module.scss +3 -3
  328. package/src/components/Dialog/index.tsx +47 -37
  329. package/src/components/Drawer/Drawer.contract.json +22 -36
  330. package/src/components/Editor/Editor.contract.json +31 -48
  331. package/src/components/Editor/Editor.module.scss +36 -14
  332. package/src/components/Editor/index.tsx +240 -179
  333. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  334. package/src/components/EmptyState/EmptyState.module.scss +8 -0
  335. package/src/components/EmptyState/index.tsx +48 -23
  336. package/src/components/Field/Field.contract.json +28 -46
  337. package/src/components/Field/index.tsx +5 -1
  338. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  339. package/src/components/Fieldset/Fieldset.module.scss +10 -3
  340. package/src/components/Form/Form.contract.json +20 -20
  341. package/src/components/Grid/Grid.contract.json +28 -64
  342. package/src/components/Grid/index.tsx +10 -10
  343. package/src/components/Header/Header.contract.json +31 -67
  344. package/src/components/Header/Header.module.scss +36 -21
  345. package/src/components/Header/index.tsx +134 -122
  346. package/src/components/Icon/Icon.contract.json +22 -62
  347. package/src/components/IconButton/IconButton.contract.json +34 -18
  348. package/src/components/IconButton/IconButton.module.scss +6 -7
  349. package/src/components/IconButton/index.tsx +2 -1
  350. package/src/components/Image/Image.contract.json +23 -56
  351. package/src/components/Input/Input.contract.json +26 -32
  352. package/src/components/Input/Input.module.scss +3 -2
  353. package/src/components/Link/Link.contract.json +32 -52
  354. package/src/components/Link/Link.module.scss +23 -6
  355. package/src/components/Link/index.tsx +1 -1
  356. package/src/components/List/List.contract.json +23 -52
  357. package/src/components/List/List.module.scss +1 -1
  358. package/src/components/Listbox/Listbox.contract.json +21 -37
  359. package/src/components/Loading/Loading.contract.json +37 -61
  360. package/src/components/Loading/Loading.module.scss +10 -7
  361. package/src/components/Loading/index.tsx +2 -2
  362. package/src/components/Main/Main.contract.json +17 -9
  363. package/src/components/Markdown/Markdown.contract.json +22 -43
  364. package/src/components/Markdown/Markdown.module.scss +43 -5
  365. package/src/components/Markdown/index.tsx +48 -49
  366. package/src/components/Menu/Menu.contract.json +25 -41
  367. package/src/components/Menu/Menu.module.scss +23 -8
  368. package/src/components/Message/Message.contract.json +29 -52
  369. package/src/components/Message/Message.module.scss +12 -5
  370. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  371. package/src/components/NavigationMenu/NavigationMenu.module.scss +64 -19
  372. package/src/components/NavigationMenu/index.tsx +105 -81
  373. package/src/components/Pagination/Pagination.contract.json +22 -40
  374. package/src/components/Pagination/Pagination.module.scss +2 -2
  375. package/src/components/Popover/Popover.contract.json +24 -46
  376. package/src/components/Popover/Popover.module.scss +6 -5
  377. package/src/components/Progress/Progress.contract.json +32 -28
  378. package/src/components/Progress/Progress.module.scss +3 -2
  379. package/src/components/Prompt/Prompt.contract.json +31 -47
  380. package/src/components/Prompt/Prompt.module.scss +13 -5
  381. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  382. package/src/components/RadioGroup/RadioGroup.module.scss +13 -14
  383. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  384. package/src/components/ScrollArea/ScrollArea.module.scss +15 -15
  385. package/src/components/ScrollArea/index.tsx +16 -16
  386. package/src/components/ScrollArea/scroll-state.ts +24 -24
  387. package/src/components/Select/Select.module.scss +2 -2
  388. package/src/components/Separator/Separator.contract.json +24 -48
  389. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  390. package/src/components/Sidebar/Sidebar.module.scss +22 -13
  391. package/src/components/Sidebar/index.tsx +164 -164
  392. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  393. package/src/components/Skeleton/Skeleton.module.scss +27 -10
  394. package/src/components/Slider/Slider.contract.json +27 -39
  395. package/src/components/Slider/Slider.module.scss +3 -3
  396. package/src/components/Stack/Stack.contract.json +29 -56
  397. package/src/components/Stack/Stack.module.scss +13 -12
  398. package/src/components/Stack/index.tsx +3 -3
  399. package/src/components/Switch/Switch.contract.json +33 -46
  400. package/src/components/Switch/Switch.module.scss +64 -26
  401. package/src/components/Table/Table.contract.json +28 -46
  402. package/src/components/Table/Table.module.scss +15 -3
  403. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  404. package/src/components/TableOfContents/TableOfContents.module.scss +15 -5
  405. package/src/components/TableOfContents/index.tsx +26 -9
  406. package/src/components/Tabs/Tabs.contract.json +24 -45
  407. package/src/components/Tabs/Tabs.module.scss +1 -1
  408. package/src/components/Tabs/index.tsx +15 -3
  409. package/src/components/Text/Text.contract.json +30 -72
  410. package/src/components/Text/Text.module.scss +21 -4
  411. package/src/components/Text/index.tsx +113 -75
  412. package/src/components/Textarea/Textarea.contract.json +25 -43
  413. package/src/components/Textarea/Textarea.module.scss +2 -4
  414. package/src/components/Theme/Theme.contract.json +32 -51
  415. package/src/components/Theme/index.tsx +2 -1
  416. package/src/components/ThemeToggle/ThemeToggle.module.scss +23 -7
  417. package/src/components/ThemeToggle/index.tsx +43 -7
  418. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  419. package/src/components/Toast/Toast.contract.json +30 -40
  420. package/src/components/Toast/Toast.module.scss +1 -1
  421. package/src/components/ToggleGroup/ToggleGroup.contract.json +29 -30
  422. package/src/components/ToggleGroup/ToggleGroup.module.scss +38 -5
  423. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  424. package/src/components/Tooltip/index.tsx +19 -24
  425. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  426. package/src/components/VisuallyHidden/index.tsx +5 -5
  427. package/src/index.ts +2 -2
  428. package/src/measurements/generated.ts +9 -2
  429. package/src/measurements/measurements.json +7 -0
  430. package/src/recipes/_boolean-range.scss +3 -11
  431. package/src/recipes/_field.scss +5 -1
  432. package/src/recipes/_layout.scss +14 -7
  433. package/src/recipes/_popup.scss +12 -2
  434. package/src/recipes/_prose.scss +13 -5
  435. package/src/recipes/_table-chrome.scss +16 -2
  436. package/src/scss.d.ts +1 -1
  437. package/src/styles/globals.scss +20 -19
  438. package/src/tokens/_computed.scss +5 -16
  439. package/src/tokens/_derive.scss +112 -210
  440. package/src/tokens/_measurements.catalog.generated.css +6 -1
  441. package/src/tokens/_measurements.generated.scss +14 -1
  442. package/src/tokens/_mixins.scss +7 -8
  443. package/src/tokens/_palettes.scss +39 -167
  444. package/src/tokens/_seeds.scss +20 -20
  445. package/src/tokens/_variables.scss +183 -38
  446. package/src/utils/a11y.tsx +69 -69
  447. package/src/utils/aria.ts +3 -3
  448. package/src/utils/canonical-stamp.ts +2 -12
  449. package/src/utils/css-warning.ts +7 -7
  450. package/src/utils/env.ts +25 -0
  451. package/src/utils/keyboard-shortcuts.ts +131 -126
  452. package/src/utils/seed-derivation.ts +10 -6
  453. package/src/components/Button/Button.contract.json +0 -218
  454. package/src/components/Card/Card.contract.json +0 -175
  455. package/src/components/DataTable/DataTable.contract.json +0 -302
  456. package/src/components/Dialog/Dialog.contract.json +0 -159
  457. package/src/components/Select/Select.contract.json +0 -259
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Box",
4
- "description": "Primitive layout component for applying spacing, backgrounds, and borders. A flexible container for building custom layouts.",
4
+ "description": "Applies spacing, background, border, and radius to any element.",
5
5
  "category": "layout",
6
- "tags": [
7
- "layout",
8
- "container",
9
- "spacing",
10
- "primitive",
11
- "box"
12
- ],
6
+ "tags": ["layout", "container", "spacing", "primitive", "box"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Box/index.tsx",
15
9
  "exportName": "Box",
@@ -54,122 +48,55 @@
54
48
  "description": "HTML element to render",
55
49
  "default": "div",
56
50
  "required": false,
57
- "values": [
58
- "div",
59
- "section",
60
- "article",
61
- "aside",
62
- "main",
63
- "header",
64
- "footer",
65
- "nav",
66
- "span"
67
- ]
51
+ "values": ["div", "section", "article", "aside", "main", "header", "footer", "nav", "span"]
68
52
  },
69
53
  "padding": {
70
54
  "type": "enum",
71
55
  "description": "Padding on all sides",
72
56
  "required": false,
73
- "values": [
74
- "none",
75
- "xs",
76
- "sm",
77
- "md",
78
- "lg",
79
- "xl"
80
- ]
57
+ "values": ["none", "xs", "sm", "md", "lg", "xl"]
81
58
  },
82
59
  "paddingX": {
83
60
  "type": "enum",
84
61
  "description": "Horizontal padding",
85
62
  "required": false,
86
- "values": [
87
- "none",
88
- "xs",
89
- "sm",
90
- "md",
91
- "lg",
92
- "xl"
93
- ]
63
+ "values": ["none", "xs", "sm", "md", "lg", "xl"]
94
64
  },
95
65
  "paddingY": {
96
66
  "type": "enum",
97
67
  "description": "Vertical padding",
98
68
  "required": false,
99
- "values": [
100
- "none",
101
- "xs",
102
- "sm",
103
- "md",
104
- "lg",
105
- "xl"
106
- ]
69
+ "values": ["none", "xs", "sm", "md", "lg", "xl"]
107
70
  },
108
71
  "margin": {
109
72
  "type": "enum",
110
73
  "description": "Margin on all sides",
111
74
  "required": false,
112
- "values": [
113
- "none",
114
- "xs",
115
- "sm",
116
- "md",
117
- "lg",
118
- "xl",
119
- "auto"
120
- ]
75
+ "values": ["none", "xs", "sm", "md", "lg", "xl", "auto"]
121
76
  },
122
77
  "marginX": {
123
78
  "type": "enum",
124
79
  "description": "Horizontal margin",
125
80
  "required": false,
126
- "values": [
127
- "none",
128
- "xs",
129
- "sm",
130
- "md",
131
- "lg",
132
- "xl",
133
- "auto"
134
- ]
81
+ "values": ["none", "xs", "sm", "md", "lg", "xl", "auto"]
135
82
  },
136
83
  "marginY": {
137
84
  "type": "enum",
138
85
  "description": "Vertical margin",
139
86
  "required": false,
140
- "values": [
141
- "none",
142
- "xs",
143
- "sm",
144
- "md",
145
- "lg",
146
- "xl",
147
- "auto"
148
- ]
87
+ "values": ["none", "xs", "sm", "md", "lg", "xl", "auto"]
149
88
  },
150
89
  "background": {
151
90
  "type": "enum",
152
91
  "description": "Background color",
153
92
  "required": false,
154
- "values": [
155
- "none",
156
- "primary",
157
- "secondary",
158
- "tertiary",
159
- "elevated"
160
- ]
93
+ "values": ["none", "primary", "secondary", "tertiary", "elevated"]
161
94
  },
162
95
  "rounded": {
163
96
  "type": "enum",
164
97
  "description": "Border radius",
165
98
  "required": false,
166
- "values": [
167
- "none",
168
- "sm",
169
- "md",
170
- "lg",
171
- "full"
172
- ]
99
+ "values": ["none", "sm", "md", "lg", "full"]
173
100
  },
174
101
  "border": {
175
102
  "type": "boolean",
@@ -205,60 +132,31 @@
205
132
  "type": "enum",
206
133
  "description": "Border color variant (requires border or directional border)",
207
134
  "required": false,
208
- "values": [
209
- "default",
210
- "strong",
211
- "accent",
212
- "danger"
213
- ]
135
+ "values": ["default", "strong", "accent", "danger"]
214
136
  },
215
137
  "shadow": {
216
138
  "type": "enum",
217
139
  "description": "Box shadow",
218
140
  "required": false,
219
- "values": [
220
- "none",
221
- "sm",
222
- "md",
223
- "lg"
224
- ]
141
+ "values": ["none", "sm", "md", "lg"]
225
142
  },
226
143
  "overflow": {
227
144
  "type": "enum",
228
145
  "description": "Overflow behavior",
229
146
  "required": false,
230
- "values": [
231
- "hidden",
232
- "auto",
233
- "scroll",
234
- "visible"
235
- ]
147
+ "values": ["hidden", "auto", "scroll", "visible"]
236
148
  },
237
149
  "color": {
238
150
  "type": "enum",
239
151
  "description": "Text color",
240
152
  "required": false,
241
- "values": [
242
- "primary",
243
- "secondary",
244
- "tertiary",
245
- "accent",
246
- "inverse"
247
- ]
153
+ "values": ["primary", "secondary", "tertiary", "accent", "inverse"]
248
154
  },
249
155
  "display": {
250
156
  "type": "enum",
251
157
  "description": "Display type",
252
158
  "required": false,
253
- "values": [
254
- "none",
255
- "block",
256
- "inline",
257
- "inline-block",
258
- "flex",
259
- "inline-flex",
260
- "grid"
261
- ]
159
+ "values": ["none", "block", "inline", "inline-block", "flex", "inline-flex", "grid"]
262
160
  },
263
161
  "width": {
264
162
  "type": "union",
@@ -303,23 +201,21 @@
303
201
  },
304
202
  "usage": {
305
203
  "when": [
306
- "Applying consistent padding or margin to content sections",
307
- "Creating bordered or elevated containers",
308
- "Wrapping content with semantic HTML elements",
309
- "Building custom layouts not covered by Stack or Grid"
204
+ "Padding or insetting a section of content",
205
+ "Bordered or elevated containers",
206
+ "Rendering a semantic element with design-system spacing"
310
207
  ],
311
208
  "whenNot": [
312
- "Horizontal or vertical stacking (use Stack)",
313
- "Grid-based layouts (use Grid)",
314
- "Card-like containers with header/body/footer (use Card)",
315
- "Simple text styling (use Text)"
209
+ "Spacing a row or column of siblings (use Stack)",
210
+ "Two-dimensional layouts (use Grid)",
211
+ "Header/body/footer surfaces (use Card)",
212
+ "Styling text alone (use Text)"
316
213
  ],
317
214
  "guidelines": [
318
- "Use padding props instead of inline styles for consistency",
319
- "Choose semantic HTML elements (section, article) where appropriate",
320
- "Combine with Stack or Grid for complex layouts",
321
- "Use background variants from the design system, not custom colors",
322
- "Box forwards DOM props (id, role, aria-*, data-*, event handlers) to the rendered element"
215
+ "Use the padding and margin props, never inline styles",
216
+ "Set as=\"section\" or as=\"article\" so the markup stays semantic",
217
+ "Backgrounds come from the token scale no custom colours",
218
+ "Reach for Stack or Grid before nesting Boxes for layout"
323
219
  ],
324
220
  "accessibility": [
325
221
  "Choose semantic as prop values for proper document structure",
@@ -330,43 +226,43 @@
330
226
  "examples": [
331
227
  {
332
228
  "name": "Default",
333
- "description": "Basic box with padding",
229
+ "description": "Padding, background, and radius in one element.",
334
230
  "code": "<Box padding=\"md\" background=\"secondary\" rounded=\"md\">\n Content with padding and background\n</Box>"
335
231
  },
336
232
  {
337
233
  "name": "With Border",
338
- "description": "Bordered container",
234
+ "description": "A hairline border instead of a filled background.",
339
235
  "code": "<Box padding=\"lg\" border rounded=\"md\">\n Bordered content area\n</Box>"
340
236
  },
341
237
  {
342
238
  "name": "Directional Padding",
343
- "description": "Different horizontal and vertical padding",
239
+ "description": "Horizontal and vertical padding set separately.",
344
240
  "code": "<Box paddingX=\"xl\" paddingY=\"sm\" background=\"tertiary\" rounded=\"sm\">\n Wide horizontal padding, short vertical\n</Box>"
345
241
  },
346
242
  {
347
243
  "name": "Centered with Auto Margin",
348
- "description": "Centered content using margin auto",
349
- "code": "<Box padding=\"md\" marginX=\"auto\" background=\"elevated\" rounded=\"lg\" style={{ maxWidth: '300px' }}>\n Centered content\n</Box>"
244
+ "description": "marginX=\"auto\" centres a fixed-width box in a wider parent.",
245
+ "code": "import { Box } from '@/components/Box';\n\n<Box width=\"100%\" border rounded=\"md\" padding=\"md\">\n <Box padding=\"md\" marginX=\"auto\" width=\"240px\" background=\"elevated\" rounded=\"lg\">\n Centred by auto margin\n </Box>\n</Box>"
350
246
  },
351
247
  {
352
248
  "name": "Directional Borders",
353
- "description": "Individual border sides",
249
+ "description": "Border on chosen sides only.",
354
250
  "code": "<Box padding=\"md\" borderTop borderBottom>\n Top and bottom borders only\n</Box>"
355
251
  },
356
252
  {
357
253
  "name": "With Shadow",
358
- "description": "Box with shadow elevation",
254
+ "description": "Shadow lifts the surface off the page.",
359
255
  "code": "<Box padding=\"lg\" rounded=\"md\" shadow=\"md\" background=\"primary\">\n Elevated content with shadow\n</Box>"
360
256
  },
361
257
  {
362
258
  "name": "Overflow Hidden",
363
- "description": "Content overflow clipped",
364
- "code": "<Box padding=\"md\" overflow=\"hidden\" border rounded=\"md\" style={{ maxHeight: '60px' }}>\n This box clips overflowing content. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n</Box>"
259
+ "description": "Content past the box's height is clipped, not scrolled.",
260
+ "code": "import { Box } from '@/components/Box';\n\n<Box padding=\"md\" overflow=\"hidden\" border rounded=\"md\" width=\"320px\" height=\"72px\">\n This box clips its overflowing content. Lorem ipsum dolor sit amet, consectetur\n adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna\n aliqua, and this final sentence never becomes visible.\n</Box>"
365
261
  },
366
262
  {
367
263
  "name": "Text Colors",
368
- "description": "Text color variants",
369
- "code": "<Box padding=\"md\" display=\"flex\" style={{ gap: '16px' }}>\n <Box color=\"primary\">Primary</Box>\n <Box color=\"secondary\">Secondary</Box>\n <Box color=\"tertiary\">Tertiary</Box>\n <Box color=\"accent\">Accent</Box>\n</Box>"
264
+ "description": "Text colour tokens, from strongest to accent.",
265
+ "code": "import { Box } from '@/components/Box';\nimport { Stack } from '@/components/Stack';\n\n<Stack direction=\"row\" gap=\"md\">\n <Box color=\"primary\">Primary</Box>\n <Box color=\"secondary\">Secondary</Box>\n <Box color=\"tertiary\">Tertiary</Box>\n <Box color=\"accent\">Accent</Box>\n</Stack>"
370
266
  }
371
267
  ],
372
268
  "relations": [
@@ -404,15 +300,11 @@
404
300
  "height/minHeight/maxHeight: string|number - sizing",
405
301
  "All standard HTMLElement props are forwarded to the rendered element"
406
302
  ],
407
- "a11yRules": [
408
- "A11Y_SEMANTIC_HTML"
409
- ]
303
+ "a11yRules": ["A11Y_SEMANTIC_HTML"]
410
304
  },
411
305
  "ai": {
412
306
  "compositionPattern": "compound",
413
- "subComponents": [
414
- "Root"
415
- ]
307
+ "subComponents": ["Root"]
416
308
  },
417
309
  "provenance": {
418
310
  "source": "migrated",
@@ -1,26 +1,26 @@
1
- import * as React from 'react';
2
- import styles from './Box.module.scss';
1
+ import * as React from "react";
2
+ import styles from "./Box.module.scss";
3
3
 
4
- export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color'> {
4
+ export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, "color"> {
5
5
  children?: React.ReactNode;
6
6
  /** HTML element to render */
7
- as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';
7
+ as?: "div" | "section" | "article" | "aside" | "main" | "header" | "footer" | "nav" | "span";
8
8
  /** Padding on all sides */
9
- padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
+ padding?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
10
10
  /** Horizontal padding (overrides padding) */
11
- paddingX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ paddingX?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
12
12
  /** Vertical padding (overrides padding) */
13
- paddingY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
+ paddingY?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
14
14
  /** Margin on all sides */
15
- margin?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';
15
+ margin?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "auto";
16
16
  /** Horizontal margin (overrides margin) */
17
- marginX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';
17
+ marginX?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "auto";
18
18
  /** Vertical margin (overrides margin) */
19
- marginY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';
19
+ marginY?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "auto";
20
20
  /** Background color */
21
- background?: 'none' | 'primary' | 'secondary' | 'tertiary' | 'elevated';
21
+ background?: "none" | "primary" | "secondary" | "tertiary" | "elevated";
22
22
  /** Border radius */
23
- rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';
23
+ rounded?: "none" | "sm" | "md" | "lg" | "full";
24
24
  /** Border */
25
25
  border?: boolean;
26
26
  /** Top border */
@@ -32,15 +32,15 @@ export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color
32
32
  /** Right border */
33
33
  borderRight?: boolean;
34
34
  /** Border color variant */
35
- borderColor?: 'default' | 'strong' | 'accent' | 'danger';
35
+ borderColor?: "default" | "strong" | "accent" | "danger";
36
36
  /** Box shadow */
37
- shadow?: 'sm' | 'md' | 'lg' | 'none';
37
+ shadow?: "sm" | "md" | "lg" | "none";
38
38
  /** Overflow behavior */
39
- overflow?: 'hidden' | 'auto' | 'scroll' | 'visible';
39
+ overflow?: "hidden" | "auto" | "scroll" | "visible";
40
40
  /** Text color */
41
- color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'inverse';
41
+ color?: "primary" | "secondary" | "tertiary" | "accent" | "inverse";
42
42
  /** Display type */
43
- display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';
43
+ display?: "block" | "inline" | "inline-block" | "flex" | "inline-flex" | "grid" | "none";
44
44
  /** Width (CSS value, e.g. "100%", "300px", 200) */
45
45
  width?: string | number;
46
46
  /** Min width */
@@ -61,93 +61,86 @@ export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color
61
61
 
62
62
  /** Convert string | number to CSS value */
63
63
  function toCss(value: string | number): string {
64
- return typeof value === 'number' ? `${value}px` : value;
64
+ return typeof value === "number" ? `${value}px` : value;
65
65
  }
66
66
 
67
- const BoxRoot = React.forwardRef<HTMLElement, BoxProps>(
68
- function Box(
69
- {
70
- children,
71
- as: Component = 'div',
72
- padding,
73
- paddingX,
74
- paddingY,
75
- margin,
76
- marginX,
77
- marginY,
78
- background,
79
- rounded,
80
- border,
81
- borderTop,
82
- borderBottom,
83
- borderLeft,
84
- borderRight,
85
- borderColor,
86
- shadow,
87
- overflow,
88
- color,
89
- display,
90
- width,
91
- minWidth,
92
- maxWidth,
93
- height,
94
- minHeight,
95
- maxHeight,
96
- className,
97
- style,
98
- ...htmlProps
99
- },
100
- ref
101
- ) {
102
- const classes = [
103
- styles.box,
104
- padding && styles[`p-${padding}`],
105
- paddingX && styles[`px-${paddingX}`],
106
- paddingY && styles[`py-${paddingY}`],
107
- margin && styles[`m-${margin}`],
108
- marginX && styles[`mx-${marginX}`],
109
- marginY && styles[`my-${marginY}`],
110
- background && styles[`bg-${background}`],
111
- rounded && styles[`rounded-${rounded}`],
112
- border && styles.border,
113
- borderTop && styles.borderTop,
114
- borderBottom && styles.borderBottom,
115
- borderLeft && styles.borderLeft,
116
- borderRight && styles.borderRight,
117
- borderColor && styles[`borderColor-${borderColor}`],
118
- shadow && styles[`shadow-${shadow}`],
119
- overflow && styles[`overflow-${overflow}`],
120
- color && styles[`color-${color}`],
121
- display && styles[`display-${display}`],
122
- className,
123
- ]
124
- .filter(Boolean)
125
- .join(' ');
67
+ const BoxRoot = React.forwardRef<HTMLElement, BoxProps>(function Box(
68
+ {
69
+ children,
70
+ as: Component = "div",
71
+ padding,
72
+ paddingX,
73
+ paddingY,
74
+ margin,
75
+ marginX,
76
+ marginY,
77
+ background,
78
+ rounded,
79
+ border,
80
+ borderTop,
81
+ borderBottom,
82
+ borderLeft,
83
+ borderRight,
84
+ borderColor,
85
+ shadow,
86
+ overflow,
87
+ color,
88
+ display,
89
+ width,
90
+ minWidth,
91
+ maxWidth,
92
+ height,
93
+ minHeight,
94
+ maxHeight,
95
+ className,
96
+ style,
97
+ ...htmlProps
98
+ },
99
+ ref
100
+ ) {
101
+ const classes = [
102
+ styles.box,
103
+ padding && styles[`p-${padding}`],
104
+ paddingX && styles[`px-${paddingX}`],
105
+ paddingY && styles[`py-${paddingY}`],
106
+ margin && styles[`m-${margin}`],
107
+ marginX && styles[`mx-${marginX}`],
108
+ marginY && styles[`my-${marginY}`],
109
+ background && styles[`bg-${background}`],
110
+ rounded && styles[`rounded-${rounded}`],
111
+ border && styles.border,
112
+ borderTop && styles.borderTop,
113
+ borderBottom && styles.borderBottom,
114
+ borderLeft && styles.borderLeft,
115
+ borderRight && styles.borderRight,
116
+ borderColor && styles[`borderColor-${borderColor}`],
117
+ shadow && styles[`shadow-${shadow}`],
118
+ overflow && styles[`overflow-${overflow}`],
119
+ color && styles[`color-${color}`],
120
+ display && styles[`display-${display}`],
121
+ className,
122
+ ]
123
+ .filter(Boolean)
124
+ .join(" ");
126
125
 
127
- // Build sizing styles only when props are provided
128
- const sizingStyle: React.CSSProperties = {};
129
- if (width != null) sizingStyle.width = toCss(width);
130
- if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);
131
- if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);
132
- if (height != null) sizingStyle.height = toCss(height);
133
- if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);
134
- if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);
126
+ // Build sizing styles only when props are provided
127
+ const sizingStyle: React.CSSProperties = {};
128
+ if (width != null) sizingStyle.width = toCss(width);
129
+ if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);
130
+ if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);
131
+ if (height != null) sizingStyle.height = toCss(height);
132
+ if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);
133
+ if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);
135
134
 
136
- const hasSizing = Object.keys(sizingStyle).length > 0;
137
- const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;
135
+ const hasSizing = Object.keys(sizingStyle).length > 0;
136
+ const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;
138
137
 
139
- return (
140
- <Component
141
- ref={ref as React.Ref<never>}
142
- {...htmlProps}
143
- className={classes}
144
- style={mergedStyle}
145
- >
146
- {children}
147
- </Component>
148
- );
149
- }
150
- );
138
+ return (
139
+ <Component ref={ref as React.Ref<never>} {...htmlProps} className={classes} style={mergedStyle}>
140
+ {children}
141
+ </Component>
142
+ );
143
+ });
151
144
 
152
145
  export const Box = Object.assign(BoxRoot, {
153
146
  Root: BoxRoot,