@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,32 +1,31 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { Menu as BaseMenu } from '@base-ui/react/menu';
6
- import { CaretDown, List, X } from '@phosphor-icons/react';
7
- import { useFocusTrap } from '../../utils/a11y';
8
- import { ScrollArea } from '../ScrollArea';
9
- import styles from './Header.module.scss';
10
- import { useSidebar } from '../Sidebar';
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { Menu as BaseMenu } from "@base-ui/react/menu";
6
+ import { CaretDown, List, X } from "@phosphor-icons/react";
7
+ import { useFocusTrap } from "../../utils/a11y";
8
+ import { ScrollArea } from "../ScrollArea";
9
+ import styles from "./Header.module.scss";
10
+ import { useSidebar } from "../Sidebar";
11
+ import { POPUP_OFFSET_PX } from "../../recipes/popup";
11
12
 
12
13
  // ============================================
13
14
  // Types
14
15
  // ============================================
15
16
 
16
17
  export interface HeaderIconRenderState {
17
- slot: 'menu' | 'close' | 'navMenuChevron' | 'mobileClose';
18
+ slot: "menu" | "close" | "navMenuChevron" | "mobileClose";
18
19
  open?: boolean;
19
20
  active?: boolean;
20
21
  }
21
22
 
22
- export type HeaderIconSlot =
23
- | React.ReactNode
24
- | ((state: HeaderIconRenderState) => React.ReactNode);
23
+ export type HeaderIconSlot = React.ReactNode | ((state: HeaderIconRenderState) => React.ReactNode);
25
24
 
26
- export type HeaderIcons = Partial<Record<HeaderIconRenderState['slot'], HeaderIconSlot>>;
25
+ export type HeaderIcons = Partial<Record<HeaderIconRenderState["slot"], HeaderIconSlot>>;
27
26
 
28
- export type HeaderNavAlign = 'start' | 'center';
29
- export type HeaderContainer = 'full' | 'page';
27
+ export type HeaderNavAlign = "start" | "center";
28
+ export type HeaderContainer = "full" | "page";
30
29
 
31
30
  export interface HeaderElevatedOnScrollOptions {
32
31
  /** Scroll offset before the elevated surface is applied */
@@ -38,7 +37,7 @@ export interface HeaderProps extends React.HTMLAttributes<HTMLElement> {
38
37
  /** Header height (default: '56px') */
39
38
  height?: string;
40
39
  /** Position behavior */
41
- position?: 'static' | 'fixed' | 'sticky';
40
+ position?: "static" | "fixed" | "sticky";
42
41
  /** Apply the elevated header surface after scroll */
43
42
  elevatedOnScroll?: boolean | HeaderElevatedOnScrollOptions;
44
43
  /** Navigation alignment inside the header */
@@ -60,15 +59,19 @@ export interface HeaderBrandProps extends React.HTMLAttributes<HTMLElement> {
60
59
  export interface HeaderNavProps extends React.HTMLAttributes<HTMLElement> {
61
60
  children: React.ReactNode;
62
61
  /** Accessible label for navigation */
63
- 'aria-label'?: string;
62
+ "aria-label"?: string;
64
63
  }
65
64
 
66
- export interface HeaderNavItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onClick'> {
65
+ export interface HeaderNavItemProps extends Omit<React.HTMLAttributes<HTMLElement>, "onClick"> {
67
66
  children: React.ReactNode;
68
67
  /** Whether this item is active/current */
69
68
  active?: boolean;
70
69
  /** Link destination */
71
70
  href?: string;
71
+ /** Anchor target, when `href` renders an anchor */
72
+ target?: React.AnchorHTMLAttributes<HTMLAnchorElement>["target"];
73
+ /** Anchor rel, when `href` renders an anchor */
74
+ rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>["rel"];
72
75
  /** Render as child element (polymorphic) */
73
76
  asChild?: boolean;
74
77
  /** Click handler */
@@ -89,7 +92,7 @@ export interface HeaderTriggerProps extends React.ButtonHTMLAttributes<HTMLButto
89
92
  /** Custom trigger content */
90
93
  children?: React.ReactNode;
91
94
  /** Accessible label */
92
- 'aria-label'?: string;
95
+ "aria-label"?: string;
93
96
  }
94
97
 
95
98
  export interface HeaderNavMenuProps extends React.HTMLAttributes<HTMLLIElement> {
@@ -136,7 +139,7 @@ const HeaderContext = React.createContext<HeaderContextValue | null>(null);
136
139
  function useHeaderContext(): HeaderContextValue {
137
140
  const ctx = React.useContext(HeaderContext);
138
141
  if (!ctx) {
139
- throw new Error('Header compound components must be used within a Header');
142
+ throw new Error("Header compound components must be used within a Header");
140
143
  }
141
144
  return ctx;
142
145
  }
@@ -151,14 +154,17 @@ function useHeaderIcons(): HeaderIcons | undefined {
151
154
  return React.useContext(HeaderIconContext);
152
155
  }
153
156
 
154
- function renderHeaderIcon(slot: HeaderIconSlot | undefined, state: HeaderIconRenderState): React.ReactNode {
157
+ function renderHeaderIcon(
158
+ slot: HeaderIconSlot | undefined,
159
+ state: HeaderIconRenderState
160
+ ): React.ReactNode {
155
161
  if (slot === undefined) return undefined;
156
- return typeof slot === 'function' ? slot(state) : slot;
162
+ return typeof slot === "function" ? slot(state) : slot;
157
163
  }
158
164
 
159
165
  function composeEventHandlers<E extends { defaultPrevented: boolean }>(
160
166
  userHandler: ((event: E) => void) | undefined,
161
- internalHandler: (event: E) => void,
167
+ internalHandler: (event: E) => void
162
168
  ) {
163
169
  return (event: E) => {
164
170
  userHandler?.(event);
@@ -171,14 +177,14 @@ function useIsMobile() {
171
177
  const [isMobile, setIsMobile] = React.useState(false);
172
178
 
173
179
  React.useEffect(() => {
174
- if (typeof window === 'undefined') return;
180
+ if (typeof window === "undefined") return;
175
181
 
176
- const mq = window.matchMedia('(max-width: 767px)');
182
+ const mq = window.matchMedia("(max-width: 767px)");
177
183
  setIsMobile(mq.matches);
178
184
 
179
185
  const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);
180
- mq.addEventListener('change', handler);
181
- return () => mq.removeEventListener('change', handler);
186
+ mq.addEventListener("change", handler);
187
+ return () => mq.removeEventListener("change", handler);
182
188
  }, []);
183
189
 
184
190
  return isMobile;
@@ -193,11 +199,11 @@ function useIsMobile() {
193
199
  */
194
200
  function HeaderRoot({
195
201
  children,
196
- height = '56px',
197
- position = 'static',
202
+ height = "56px",
203
+ position = "static",
198
204
  elevatedOnScroll = false,
199
- navAlign = 'start',
200
- container = 'full',
205
+ navAlign = "start",
206
+ container = "full",
201
207
  icons,
202
208
  className,
203
209
  style: styleProp,
@@ -207,30 +213,32 @@ function HeaderRoot({
207
213
  const [scrolled, setScrolled] = React.useState(false);
208
214
  const shouldElevateOnScroll = Boolean(elevatedOnScroll);
209
215
  const scrollThreshold =
210
- typeof elevatedOnScroll === 'object' ? (elevatedOnScroll.threshold ?? 16) : 16;
216
+ typeof elevatedOnScroll === "object" ? (elevatedOnScroll.threshold ?? 16) : 16;
211
217
 
212
218
  React.useEffect(() => {
213
219
  if (!shouldElevateOnScroll) return;
214
220
 
215
221
  const updateScrolled = () => setScrolled(window.scrollY > scrollThreshold);
216
222
  updateScrolled();
217
- window.addEventListener('scroll', updateScrolled, { passive: true });
218
- return () => window.removeEventListener('scroll', updateScrolled);
223
+ window.addEventListener("scroll", updateScrolled, { passive: true });
224
+ return () => window.removeEventListener("scroll", updateScrolled);
219
225
  }, [scrollThreshold, shouldElevateOnScroll]);
220
226
 
221
227
  const classes = [
222
228
  styles.header,
223
- position === 'fixed' && styles.fixed,
224
- position === 'sticky' && styles.sticky,
229
+ position === "fixed" && styles.fixed,
230
+ position === "sticky" && styles.sticky,
225
231
  shouldElevateOnScroll && styles.elevatedOnScroll,
226
232
  shouldElevateOnScroll && scrolled && styles.scrolled,
227
- navAlign === 'center' && styles.navCentered,
228
- container === 'page' && styles.containerPage,
233
+ navAlign === "center" && styles.navCentered,
234
+ container === "page" && styles.containerPage,
229
235
  className,
230
- ].filter(Boolean).join(' ');
236
+ ]
237
+ .filter(Boolean)
238
+ .join(" ");
231
239
 
232
240
  const style: React.CSSProperties = {
233
- '--header-height': height,
241
+ "--header-height": height,
234
242
  ...styleProp,
235
243
  } as React.CSSProperties;
236
244
 
@@ -249,9 +257,7 @@ function HeaderRoot({
249
257
  data-position={position}
250
258
  data-scrolled={shouldElevateOnScroll ? scrolled : undefined}
251
259
  >
252
- <div className={styles.container}>
253
- {children}
254
- </div>
260
+ <div className={styles.container}>{children}</div>
255
261
  </header>
256
262
  </HeaderIconContext.Provider>
257
263
  </HeaderContext.Provider>
@@ -268,7 +274,7 @@ function HeaderBrand({
268
274
  className,
269
275
  ...htmlProps
270
276
  }: HeaderBrandProps) {
271
- const classes = [styles.brand, className].filter(Boolean).join(' ');
277
+ const classes = [styles.brand, className].filter(Boolean).join(" ");
272
278
 
273
279
  if (asChild && React.isValidElement(children)) {
274
280
  const childProps = children.props as {
@@ -280,7 +286,7 @@ function HeaderBrand({
280
286
  return React.cloneElement(children, {
281
287
  ...restHtmlProps,
282
288
  ...(href ? { href } : {}),
283
- className: [classes, childProps.className].filter(Boolean).join(' '),
289
+ className: [classes, childProps.className].filter(Boolean).join(" "),
284
290
  onClick: onClick ? composeEventHandlers(childProps.onClick, onClick) : childProps.onClick,
285
291
  } as React.HTMLAttributes<HTMLElement>);
286
292
  }
@@ -293,7 +299,11 @@ function HeaderBrand({
293
299
  );
294
300
  }
295
301
 
296
- return <div {...htmlProps} className={classes}>{children}</div>;
302
+ return (
303
+ <div {...htmlProps} className={classes}>
304
+ {children}
305
+ </div>
306
+ );
297
307
  }
298
308
 
299
309
  /**
@@ -301,17 +311,15 @@ function HeaderBrand({
301
311
  */
302
312
  function HeaderNav({
303
313
  children,
304
- 'aria-label': ariaLabel = 'Main navigation',
314
+ "aria-label": ariaLabel = "Main navigation",
305
315
  className,
306
316
  ...htmlProps
307
317
  }: HeaderNavProps) {
308
- const classes = [styles.nav, className].filter(Boolean).join(' ');
318
+ const classes = [styles.nav, className].filter(Boolean).join(" ");
309
319
 
310
320
  return (
311
321
  <nav {...htmlProps} className={classes} aria-label={ariaLabel}>
312
- <ul className={styles.navList}>
313
- {children}
314
- </ul>
322
+ <ul className={styles.navList}>{children}</ul>
315
323
  </nav>
316
324
  );
317
325
  }
@@ -328,16 +336,14 @@ function HeaderNavItem({
328
336
  className,
329
337
  ...htmlProps
330
338
  }: HeaderNavItemProps) {
331
- const classes = [
332
- styles.navItem,
333
- active && styles.navItemActive,
334
- className,
335
- ].filter(Boolean).join(' ');
339
+ const classes = [styles.navItem, active && styles.navItemActive, className]
340
+ .filter(Boolean)
341
+ .join(" ");
336
342
 
337
343
  const itemProps = {
338
344
  className: classes,
339
345
  onClick,
340
- 'aria-current': active ? 'page' as const : undefined,
346
+ "aria-current": active ? ("page" as const) : undefined,
341
347
  };
342
348
 
343
349
  if (asChild && React.isValidElement(children)) {
@@ -351,7 +357,7 @@ function HeaderNavItem({
351
357
  ...htmlProps,
352
358
  ...itemProps,
353
359
  onClick: composeEventHandlers(childProps.onClick, onClick ?? (() => {})),
354
- className: [classes, childProps.className].filter(Boolean).join(' '),
360
+ className: [classes, childProps.className].filter(Boolean).join(" "),
355
361
  } as React.HTMLAttributes<HTMLElement>)}
356
362
  </li>
357
363
  );
@@ -385,21 +391,27 @@ function HeaderSearch({
385
391
  className,
386
392
  ...htmlProps
387
393
  }: HeaderSearchProps) {
388
- const classes = [
389
- styles.search,
390
- expandable && styles.searchExpandable,
391
- className,
392
- ].filter(Boolean).join(' ');
394
+ const classes = [styles.search, expandable && styles.searchExpandable, className]
395
+ .filter(Boolean)
396
+ .join(" ");
393
397
 
394
- return <div {...htmlProps} className={classes}>{children}</div>;
398
+ return (
399
+ <div {...htmlProps} className={classes}>
400
+ {children}
401
+ </div>
402
+ );
395
403
  }
396
404
 
397
405
  /**
398
406
  * Header.Actions - Right-side actions container
399
407
  */
400
408
  function HeaderActions({ children, className, ...htmlProps }: HeaderActionsProps) {
401
- const classes = [styles.actions, className].filter(Boolean).join(' ');
402
- return <div {...htmlProps} className={classes}>{children}</div>;
409
+ const classes = [styles.actions, className].filter(Boolean).join(" ");
410
+ return (
411
+ <div {...htmlProps} className={classes}>
412
+ {children}
413
+ </div>
414
+ );
403
415
  }
404
416
 
405
417
  /**
@@ -411,7 +423,7 @@ function HeaderActions({ children, className, ...htmlProps }: HeaderActionsProps
411
423
  */
412
424
  function HeaderTrigger({
413
425
  children,
414
- 'aria-label': ariaLabel = 'Toggle navigation',
426
+ "aria-label": ariaLabel = "Toggle navigation",
415
427
  className,
416
428
  onClick,
417
429
  ...htmlProps
@@ -427,18 +439,18 @@ function HeaderTrigger({
427
439
  }
428
440
 
429
441
  // Determine which state to use: sidebar (if available with a real provider) or header internal
430
- const hasSidebarProvider = sidebar.open !== undefined && sidebar.setOpen !== undefined
431
- && typeof sidebar.setOpen === 'function';
442
+ const hasSidebarProvider =
443
+ sidebar.open !== undefined &&
444
+ sidebar.setOpen !== undefined &&
445
+ typeof sidebar.setOpen === "function";
432
446
  const isUsingSidebar = hasSidebarProvider && sidebar.isMobile;
433
447
 
434
448
  const open = isUsingSidebar ? sidebar.open : (headerCtx?.mobileOpen ?? false);
435
- const setOpen = isUsingSidebar
436
- ? sidebar.setOpen
437
- : (headerCtx?.setMobileOpen ?? (() => {}));
449
+ const setOpen = isUsingSidebar ? sidebar.setOpen : (headerCtx?.setMobileOpen ?? (() => {}));
438
450
 
439
- const classes = [styles.trigger, className].filter(Boolean).join(' ');
451
+ const classes = [styles.trigger, className].filter(Boolean).join(" ");
440
452
  const iconSlot = open ? icons?.close : icons?.menu;
441
- const iconState: HeaderIconRenderState = { slot: open ? 'close' : 'menu', open };
453
+ const iconState: HeaderIconRenderState = { slot: open ? "close" : "menu", open };
442
454
  const iconOverride = renderHeaderIcon(iconSlot, iconState);
443
455
 
444
456
  return (
@@ -450,7 +462,9 @@ function HeaderTrigger({
450
462
  aria-label={ariaLabel}
451
463
  aria-expanded={open}
452
464
  >
453
- {children || iconOverride || (open ? <X size={24} aria-hidden /> : <List size={24} aria-hidden />)}
465
+ {children ||
466
+ iconOverride ||
467
+ (open ? <X size={24} aria-hidden /> : <List size={24} aria-hidden />)}
454
468
  </button>
455
469
  );
456
470
  }
@@ -459,7 +473,7 @@ function HeaderTrigger({
459
473
  * Header.Spacer - Flexible spacer to push items apart
460
474
  */
461
475
  function HeaderSpacer({ className }: { className?: string }) {
462
- const classes = [styles.spacer, className].filter(Boolean).join(' ');
476
+ const classes = [styles.spacer, className].filter(Boolean).join(" ");
463
477
  return <div className={classes} />;
464
478
  }
465
479
 
@@ -479,9 +493,11 @@ function HeaderNavMenu({
479
493
  styles.navMenuTrigger,
480
494
  active && styles.navItemActive,
481
495
  className,
482
- ].filter(Boolean).join(' ');
496
+ ]
497
+ .filter(Boolean)
498
+ .join(" ");
483
499
  const chevronIcon = renderHeaderIcon(icons?.navMenuChevron, {
484
- slot: 'navMenuChevron',
500
+ slot: "navMenuChevron",
485
501
  active,
486
502
  });
487
503
 
@@ -490,15 +506,22 @@ function HeaderNavMenu({
490
506
  <BaseMenu.Root modal={false}>
491
507
  <BaseMenu.Trigger className={triggerClasses}>
492
508
  {label}
493
- {chevronIcon
494
- ? <span className={styles.navMenuChevron} aria-hidden>{chevronIcon}</span>
495
- : <CaretDown size={12} className={styles.navMenuChevron} aria-hidden />}
509
+ {chevronIcon ? (
510
+ <span className={styles.navMenuChevron} aria-hidden>
511
+ {chevronIcon}
512
+ </span>
513
+ ) : (
514
+ <CaretDown size={12} className={styles.navMenuChevron} aria-hidden />
515
+ )}
496
516
  </BaseMenu.Trigger>
497
517
  <BaseMenu.Portal>
498
- <BaseMenu.Positioner side="bottom" align="start" sideOffset={4} className={styles.navMenuPositioner}>
499
- <BaseMenu.Popup className={styles.navMenuPopup}>
500
- {children}
501
- </BaseMenu.Popup>
518
+ <BaseMenu.Positioner
519
+ side="bottom"
520
+ align="start"
521
+ sideOffset={POPUP_OFFSET_PX}
522
+ className={styles.navMenuPositioner}
523
+ >
524
+ <BaseMenu.Popup className={styles.navMenuPopup}>{children}</BaseMenu.Popup>
502
525
  </BaseMenu.Positioner>
503
526
  </BaseMenu.Portal>
504
527
  </BaseMenu.Root>
@@ -517,19 +540,13 @@ function HeaderNavMenuItem({
517
540
  className,
518
541
  ...htmlProps
519
542
  }: HeaderNavMenuItemProps) {
520
- const classes = [
521
- styles.navMenuItem,
522
- active && styles.navMenuItemActive,
523
- className,
524
- ].filter(Boolean).join(' ');
543
+ const classes = [styles.navMenuItem, active && styles.navMenuItemActive, className]
544
+ .filter(Boolean)
545
+ .join(" ");
525
546
 
526
547
  if (asChild && React.isValidElement(children)) {
527
548
  return (
528
- <BaseMenu.Item
529
- {...htmlProps}
530
- className={classes}
531
- render={children as React.ReactElement}
532
- />
549
+ <BaseMenu.Item {...htmlProps} className={classes} render={children as React.ReactElement} />
533
550
  );
534
551
  }
535
552
 
@@ -563,38 +580,36 @@ function HeaderMobileNav({ children, className }: HeaderMobileNavProps) {
563
580
  // Lock body scroll when open
564
581
  React.useEffect(() => {
565
582
  if (!mobileOpen) return;
566
- document.body.style.overflow = 'hidden';
567
- return () => { document.body.style.overflow = ''; };
583
+ document.body.style.overflow = "hidden";
584
+ return () => {
585
+ document.body.style.overflow = "";
586
+ };
568
587
  }, [mobileOpen]);
569
588
 
570
589
  // Handle Escape
571
590
  React.useEffect(() => {
572
591
  if (!mobileOpen) return;
573
592
  const handleKeyDown = (e: KeyboardEvent) => {
574
- if (e.key === 'Escape') setMobileOpen(false);
593
+ if (e.key === "Escape") setMobileOpen(false);
575
594
  };
576
- document.addEventListener('keydown', handleKeyDown);
577
- return () => document.removeEventListener('keydown', handleKeyDown);
595
+ document.addEventListener("keydown", handleKeyDown);
596
+ return () => document.removeEventListener("keydown", handleKeyDown);
578
597
  }, [mobileOpen, setMobileOpen]);
579
598
 
580
599
  if (!mobileOpen) return null;
581
- if (typeof document === 'undefined') return null;
600
+ if (typeof document === "undefined") return null;
582
601
 
583
602
  const closeIcon = renderHeaderIcon(icons?.mobileClose, {
584
- slot: 'mobileClose',
603
+ slot: "mobileClose",
585
604
  open: true,
586
605
  });
587
606
 
588
607
  const drawerContent = (
589
608
  <>
590
- <div
591
- className={styles.mobileNavBackdrop}
592
- onClick={() => setMobileOpen(false)}
593
- aria-hidden
594
- />
609
+ <div className={styles.mobileNavBackdrop} onClick={() => setMobileOpen(false)} aria-hidden />
595
610
  <div
596
611
  ref={drawerRef}
597
- className={[styles.mobileNavDrawer, className].filter(Boolean).join(' ')}
612
+ className={[styles.mobileNavDrawer, className].filter(Boolean).join(" ")}
598
613
  role="dialog"
599
614
  aria-modal
600
615
  aria-label="Navigation"
@@ -609,7 +624,7 @@ function HeaderMobileNav({ children, className }: HeaderMobileNavProps) {
609
624
  {closeIcon ?? <X size={20} aria-hidden />}
610
625
  </button>
611
626
  </div>
612
- <ScrollArea orientation="vertical" className={styles.mobileNavBody}>
627
+ <ScrollArea orientation="vertical" showFades className={styles.mobileNavBody}>
613
628
  {children}
614
629
  </ScrollArea>
615
630
  </div>
@@ -633,11 +648,9 @@ function HeaderMobileNavLink({
633
648
  }: HeaderNavItemProps) {
634
649
  const { setMobileOpen } = useHeaderContext();
635
650
 
636
- const classes = [
637
- styles.mobileNavLink,
638
- active && styles.mobileNavLinkActive,
639
- className,
640
- ].filter(Boolean).join(' ');
651
+ const classes = [styles.mobileNavLink, active && styles.mobileNavLinkActive, className]
652
+ .filter(Boolean)
653
+ .join(" ");
641
654
 
642
655
  const handleClick: React.MouseEventHandler<HTMLElement> = (e) => {
643
656
  onClick?.(e);
@@ -651,7 +664,7 @@ function HeaderMobileNavLink({
651
664
  };
652
665
  return React.cloneElement(children, {
653
666
  ...htmlProps,
654
- className: [classes, childProps.className].filter(Boolean).join(' '),
667
+ className: [classes, childProps.className].filter(Boolean).join(" "),
655
668
  onClick: composeEventHandlers(childProps.onClick, handleClick),
656
669
  } as React.HTMLAttributes<HTMLElement>);
657
670
  }
@@ -679,7 +692,7 @@ function HeaderMobileNavActions({
679
692
  className,
680
693
  ...htmlProps
681
694
  }: HeaderMobileNavActionsProps) {
682
- const classes = [styles.mobileNavActions, className].filter(Boolean).join(' ');
695
+ const classes = [styles.mobileNavActions, className].filter(Boolean).join(" ");
683
696
 
684
697
  return (
685
698
  <div {...htmlProps} className={classes}>
@@ -692,15 +705,15 @@ function HeaderMobileNavActions({
692
705
  * Header.SkipLink - Skip to main content link (accessibility)
693
706
  */
694
707
  function HeaderSkipLink({
695
- children = 'Skip to main content',
696
- href = '#main-content',
708
+ children = "Skip to main content",
709
+ href = "#main-content",
697
710
  className,
698
711
  }: {
699
712
  children?: React.ReactNode;
700
713
  href?: string;
701
714
  className?: string;
702
715
  }) {
703
- const classes = [styles.skipLink, className].filter(Boolean).join(' ');
716
+ const classes = [styles.skipLink, className].filter(Boolean).join(" ");
704
717
  return (
705
718
  <a href={href} className={classes}>
706
719
  {children}