@fairgarden/design 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (517) hide show
  1. package/LICENSE +21 -0
  2. package/Readme.md +51 -27
  3. package/actions/button/Button.d.ts.map +1 -1
  4. package/actions/button/Button.js +13 -1
  5. package/actions/button/Button.js.map +1 -1
  6. package/actions/button/button.module.css +85 -25
  7. package/actions/chip/Chip.d.ts +2 -2
  8. package/actions/chip/Chip.js +2 -2
  9. package/actions/chip/chip.module.css +12 -18
  10. package/actions/link/Link.d.ts +1 -1
  11. package/actions/link/link.module.css +22 -19
  12. package/actions/toggle/Toggle.js +1 -1
  13. package/actions/toggle/toggle.module.css +27 -23
  14. package/content/card/card.module.css +27 -27
  15. package/content/card-grid/CardGrid.js +1 -1
  16. package/content/card-grid/card-grid.module.css +3 -3
  17. package/content/carousel/Carousel.d.ts.map +1 -1
  18. package/content/carousel/Carousel.js +1 -4
  19. package/content/carousel/Carousel.js.map +1 -1
  20. package/content/carousel/carousel.module.css +19 -9
  21. package/content/code-block/CodeActionsMenu.d.ts +34 -0
  22. package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
  23. package/content/code-block/CodeActionsMenu.js +102 -0
  24. package/content/code-block/CodeActionsMenu.js.map +1 -0
  25. package/content/code-block/CodeBlock.d.ts +37 -0
  26. package/content/code-block/CodeBlock.d.ts.map +1 -0
  27. package/content/code-block/CodeBlock.js +30 -0
  28. package/content/code-block/CodeBlock.js.map +1 -0
  29. package/content/code-block/CodeBlockFrame.d.ts +54 -0
  30. package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
  31. package/content/code-block/CodeBlockFrame.js +80 -0
  32. package/content/code-block/CodeBlockFrame.js.map +1 -0
  33. package/content/code-block/CodeBlockHeader.d.ts +26 -0
  34. package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
  35. package/content/code-block/CodeBlockHeader.js +16 -0
  36. package/content/code-block/CodeBlockHeader.js.map +1 -0
  37. package/content/code-block/CodeBlockLazy.d.ts +11 -0
  38. package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
  39. package/content/code-block/CodeBlockLazy.js +14 -0
  40. package/content/code-block/CodeBlockLazy.js.map +1 -0
  41. package/content/code-block/CodeBlockLoading.d.ts +31 -0
  42. package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
  43. package/content/code-block/CodeBlockLoading.js +90 -0
  44. package/content/code-block/CodeBlockLoading.js.map +1 -0
  45. package/content/code-block/CodeBlockSection.d.ts +40 -0
  46. package/content/code-block/CodeBlockSection.d.ts.map +1 -0
  47. package/content/code-block/CodeBlockSection.js +105 -0
  48. package/content/code-block/CodeBlockSection.js.map +1 -0
  49. package/content/code-block/CodeBlockToasts.d.ts +26 -0
  50. package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
  51. package/content/code-block/CodeBlockToasts.js +88 -0
  52. package/content/code-block/CodeBlockToasts.js.map +1 -0
  53. package/content/code-block/code-block.module.css +949 -0
  54. package/content/code-block/index.d.ts +4 -0
  55. package/content/code-block/index.d.ts.map +1 -0
  56. package/content/code-block/index.js +4 -0
  57. package/content/code-block/index.js.map +1 -0
  58. package/content/demo/DemoContent.d.ts +32 -0
  59. package/content/demo/DemoContent.d.ts.map +1 -0
  60. package/content/demo/DemoContent.js +87 -0
  61. package/content/demo/DemoContent.js.map +1 -0
  62. package/content/demo/DemoFrame.d.ts +6 -0
  63. package/content/demo/DemoFrame.d.ts.map +1 -0
  64. package/content/demo/DemoFrame.js +17 -0
  65. package/content/demo/DemoFrame.js.map +1 -0
  66. package/content/demo/DemoLazy.d.ts +11 -0
  67. package/content/demo/DemoLazy.d.ts.map +1 -0
  68. package/content/demo/DemoLazy.js +14 -0
  69. package/content/demo/DemoLazy.js.map +1 -0
  70. package/content/demo/DemoLoading.d.ts +23 -0
  71. package/content/demo/DemoLoading.d.ts.map +1 -0
  72. package/content/demo/DemoLoading.js +26 -0
  73. package/content/demo/DemoLoading.js.map +1 -0
  74. package/content/demo/demo.module.css +163 -0
  75. package/content/demo/index.d.ts +4 -0
  76. package/content/demo/index.d.ts.map +1 -0
  77. package/content/demo/index.js +4 -0
  78. package/content/demo/index.js.map +1 -0
  79. package/content/empty-state/EmptyState.d.ts +1 -1
  80. package/content/empty-state/EmptyState.js +1 -1
  81. package/content/empty-state/empty-state.module.css +11 -11
  82. package/content/feature-grid/feature-grid.module.css +22 -22
  83. package/content/index-rows/IndexRows.d.ts +2 -2
  84. package/content/index-rows/IndexRows.d.ts.map +1 -1
  85. package/content/index-rows/IndexRows.js +1 -1
  86. package/content/index-rows/index-rows.module.css +29 -29
  87. package/content/pricing/Pricing.d.ts +4 -4
  88. package/content/pricing/Pricing.d.ts.map +1 -1
  89. package/content/pricing/Pricing.js +4 -4
  90. package/content/pricing/Pricing.js.map +1 -1
  91. package/content/pricing/pricing.module.css +22 -22
  92. package/content/profile/Profile.d.ts +1 -1
  93. package/content/profile/Profile.js +2 -2
  94. package/content/profile/profile.module.css +13 -13
  95. package/content/quote/Quote.d.ts +1 -1
  96. package/content/quote/quote.module.css +9 -9
  97. package/content/timeline/Timeline.d.ts +1 -1
  98. package/content/timeline/Timeline.d.ts.map +1 -1
  99. package/content/timeline/Timeline.js +5 -5
  100. package/content/timeline/Timeline.js.map +1 -1
  101. package/content/timeline/timeline.module.css +12 -12
  102. package/content/types-table/TypePre.d.ts +11 -0
  103. package/content/types-table/TypePre.d.ts.map +1 -0
  104. package/content/types-table/TypePre.js +13 -0
  105. package/content/types-table/TypePre.js.map +1 -0
  106. package/content/types-table/TypesTable.d.ts +22 -0
  107. package/content/types-table/TypesTable.d.ts.map +1 -0
  108. package/content/types-table/TypesTable.js +124 -0
  109. package/content/types-table/TypesTable.js.map +1 -0
  110. package/content/types-table/index.d.ts +3 -0
  111. package/content/types-table/index.d.ts.map +1 -0
  112. package/content/types-table/index.js +3 -0
  113. package/content/types-table/index.js.map +1 -0
  114. package/content/types-table/types-table.module.css +160 -0
  115. package/data/chart/Chart.d.ts +8 -1
  116. package/data/chart/Chart.d.ts.map +1 -1
  117. package/data/chart/Chart.js +28 -15
  118. package/data/chart/Chart.js.map +1 -1
  119. package/data/chart/chart.module.css +20 -6
  120. package/data/figure/Figure.d.ts +1 -1
  121. package/data/figure/Figure.js +1 -1
  122. package/data/figure/figure.module.css +7 -7
  123. package/data/map/Map.d.ts +3 -3
  124. package/data/map/Map.d.ts.map +1 -1
  125. package/data/map/Map.js +10 -8
  126. package/data/map/Map.js.map +1 -1
  127. package/data/map/MapCanvas.d.ts.map +1 -1
  128. package/data/map/MapCanvas.js +5 -9
  129. package/data/map/MapCanvas.js.map +1 -1
  130. package/data/map/map.module.css +39 -14
  131. package/data/map/mapStyle.d.ts +2 -2
  132. package/data/map/mapStyle.d.ts.map +1 -1
  133. package/data/map/mapStyle.js +5 -5
  134. package/data/map/mapStyle.js.map +1 -1
  135. package/data/scroll-area/ScrollArea.d.ts.map +1 -1
  136. package/data/scroll-area/ScrollArea.js +8 -4
  137. package/data/scroll-area/ScrollArea.js.map +1 -1
  138. package/data/scroll-area/scroll-area.module.css +28 -9
  139. package/data/spec-grid/spec-grid.module.css +8 -8
  140. package/data/spec-list/spec-list.module.css +3 -3
  141. package/data/spec-sheet/SpecSheet.d.ts +2 -2
  142. package/data/spec-sheet/SpecSheet.js +1 -1
  143. package/data/spec-sheet/spec-sheet.module.css +9 -9
  144. package/data/stat/Stat.d.ts +1 -1
  145. package/data/stat/Stat.d.ts.map +1 -1
  146. package/data/stat/stat.module.css +4 -4
  147. package/data/table/Table.d.ts +6 -5
  148. package/data/table/Table.d.ts.map +1 -1
  149. package/data/table/Table.js.map +1 -1
  150. package/data/table/table.module.css +43 -46
  151. package/disclosure/accordion/Accordion.d.ts +1 -1
  152. package/disclosure/accordion/Accordion.js +1 -1
  153. package/disclosure/accordion/accordion.module.css +12 -12
  154. package/disclosure/collapsible/Collapsible.d.ts +4 -4
  155. package/disclosure/collapsible/Collapsible.js +4 -4
  156. package/disclosure/collapsible/collapsible.module.css +10 -10
  157. package/disclosure/faq/FAQ.d.ts +3 -3
  158. package/disclosure/faq/FAQ.d.ts.map +1 -1
  159. package/disclosure/faq/FAQ.js +3 -3
  160. package/disclosure/faq/FAQ.js.map +1 -1
  161. package/disclosure/faq/faq.module.css +20 -20
  162. package/feedback/alert/alert.module.css +4 -4
  163. package/feedback/avatar/avatar-group.module.css +2 -2
  164. package/feedback/avatar/avatar.module.css +9 -9
  165. package/feedback/badge/Badge.d.ts +1 -1
  166. package/feedback/badge/badge.module.css +7 -7
  167. package/feedback/meter/Meter.d.ts +2 -2
  168. package/feedback/meter/meter.module.css +14 -14
  169. package/feedback/progress/Progress.d.ts +1 -1
  170. package/feedback/progress/progress.module.css +7 -7
  171. package/feedback/tag/tag.module.css +7 -7
  172. package/feedback/toast/Toast.d.ts +3 -3
  173. package/feedback/toast/Toast.d.ts.map +1 -1
  174. package/feedback/toast/Toast.js +17 -7
  175. package/feedback/toast/Toast.js.map +1 -1
  176. package/feedback/toast/toast.module.css +31 -20
  177. package/forms/autocomplete/Autocomplete.d.ts +11 -0
  178. package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
  179. package/forms/autocomplete/Autocomplete.js +27 -6
  180. package/forms/autocomplete/Autocomplete.js.map +1 -1
  181. package/forms/autocomplete/autocomplete.module.css +35 -41
  182. package/forms/checkbox/Checkbox.js +1 -1
  183. package/forms/checkbox/checkbox.module.css +29 -25
  184. package/forms/checkbox-group/checkbox-group.module.css +4 -4
  185. package/forms/combobox/Combobox.d.ts +10 -0
  186. package/forms/combobox/Combobox.d.ts.map +1 -1
  187. package/forms/combobox/Combobox.js +28 -7
  188. package/forms/combobox/Combobox.js.map +1 -1
  189. package/forms/combobox/combobox.module.css +34 -41
  190. package/forms/field/field.module.css +1 -1
  191. package/forms/fieldset/Fieldset.d.ts +1 -1
  192. package/forms/fieldset/Fieldset.js +2 -2
  193. package/forms/fieldset/fieldset.module.css +14 -14
  194. package/forms/form/form.module.css +2 -2
  195. package/forms/input/Input.d.ts +10 -3
  196. package/forms/input/Input.d.ts.map +1 -1
  197. package/forms/input/Input.js +10 -4
  198. package/forms/input/Input.js.map +1 -1
  199. package/forms/input/input.module.css +38 -21
  200. package/forms/number-field/number-field.module.css +24 -23
  201. package/forms/radio/Radio.d.ts +1 -1
  202. package/forms/radio/Radio.d.ts.map +1 -1
  203. package/forms/radio/Radio.js +5 -3
  204. package/forms/radio/Radio.js.map +1 -1
  205. package/forms/radio/radio.module.css +38 -30
  206. package/forms/radio-group/RadioGroup.d.ts +1 -1
  207. package/forms/radio-group/radio-group.module.css +3 -3
  208. package/forms/search/Search.d.ts +10 -0
  209. package/forms/search/Search.d.ts.map +1 -1
  210. package/forms/search/Search.js +25 -6
  211. package/forms/search/Search.js.map +1 -1
  212. package/forms/search/search.module.css +25 -33
  213. package/forms/select/Select.d.ts +10 -2
  214. package/forms/select/Select.d.ts.map +1 -1
  215. package/forms/select/Select.js +27 -12
  216. package/forms/select/Select.js.map +1 -1
  217. package/forms/select/select.module.css +42 -48
  218. package/forms/slider/Slider.js +2 -2
  219. package/forms/slider/slider.module.css +23 -23
  220. package/forms/switch/Switch.js +1 -1
  221. package/forms/switch/switch.module.css +23 -19
  222. package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
  223. package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
  224. package/foundations/expanding-box/ExpandingBox.js +179 -0
  225. package/foundations/expanding-box/ExpandingBox.js.map +1 -0
  226. package/foundations/expanding-box/expanding-box.module.css +415 -0
  227. package/foundations/expanding-box/index.d.ts +3 -0
  228. package/foundations/expanding-box/index.d.ts.map +1 -0
  229. package/foundations/expanding-box/index.js +3 -0
  230. package/foundations/expanding-box/index.js.map +1 -0
  231. package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
  232. package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
  233. package/foundations/expanding-box/startExpandingTransition.js +82 -0
  234. package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
  235. package/foundations/ground/Ground.d.ts +1 -1
  236. package/foundations/ground/ground.module.css +4 -4
  237. package/foundations/icon/Icon.d.ts +1 -1
  238. package/foundations/icon/Icon.js +1 -1
  239. package/foundations/icon/icon.module.css +1 -1
  240. package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
  241. package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
  242. package/foundations/outline-morph/OutlineMorph.js +83 -0
  243. package/foundations/outline-morph/OutlineMorph.js.map +1 -0
  244. package/foundations/outline-morph/index.d.ts +3 -0
  245. package/foundations/outline-morph/index.d.ts.map +1 -0
  246. package/foundations/outline-morph/index.js +3 -0
  247. package/foundations/outline-morph/index.js.map +1 -0
  248. package/foundations/outline-morph/morphEngine.d.ts +219 -0
  249. package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
  250. package/foundations/outline-morph/morphEngine.js +1331 -0
  251. package/foundations/outline-morph/morphEngine.js.map +1 -0
  252. package/foundations/outline-morph/outline-morph.module.css +113 -0
  253. package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
  254. package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
  255. package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
  256. package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
  257. package/foundations/separator/separator.module.css +10 -10
  258. package/foundations/sticker/Sticker.d.ts +4 -4
  259. package/foundations/sticker/Sticker.d.ts.map +1 -1
  260. package/foundations/sticker/Sticker.js +3 -3
  261. package/foundations/sticker/sticker.module.css +10 -10
  262. package/icons/paths.d.ts +1 -1
  263. package/icons/paths.d.ts.map +1 -1
  264. package/icons/paths.js +50 -0
  265. package/icons/paths.js.map +1 -1
  266. package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
  267. package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
  268. package/navigation/breadcrumb/Breadcrumb.js +8 -8
  269. package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
  270. package/navigation/breadcrumb/breadcrumb.module.css +14 -14
  271. package/navigation/file-tabs/FileTabs.d.ts +169 -0
  272. package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
  273. package/navigation/file-tabs/FileTabs.js +253 -0
  274. package/navigation/file-tabs/FileTabs.js.map +1 -0
  275. package/navigation/file-tabs/file-tabs.module.css +868 -0
  276. package/navigation/file-tabs/index.d.ts +2 -0
  277. package/navigation/file-tabs/index.d.ts.map +1 -0
  278. package/navigation/file-tabs/index.js +2 -0
  279. package/navigation/file-tabs/index.js.map +1 -0
  280. package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
  281. package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
  282. package/navigation/nav-drawer/NavDrawer.js +94 -28
  283. package/navigation/nav-drawer/NavDrawer.js.map +1 -1
  284. package/navigation/nav-drawer/nav-drawer.module.css +78 -55
  285. package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
  286. package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
  287. package/navigation/navigation-bar/NavigationBar.js +40 -17
  288. package/navigation/navigation-bar/NavigationBar.js.map +1 -1
  289. package/navigation/navigation-bar/navigation-bar.module.css +58 -27
  290. package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
  291. package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
  292. package/navigation/navigation-menu/NavigationMenu.js +15 -15
  293. package/navigation/navigation-menu/navigation-menu.module.css +39 -53
  294. package/navigation/pagination/Pagination.js +1 -1
  295. package/navigation/pagination/pagination.module.css +24 -24
  296. package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
  297. package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
  298. package/navigation/sidebar-nav/SidebarNav.js +169 -0
  299. package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
  300. package/navigation/sidebar-nav/index.d.ts +2 -0
  301. package/navigation/sidebar-nav/index.d.ts.map +1 -0
  302. package/navigation/sidebar-nav/index.js +2 -0
  303. package/navigation/sidebar-nav/index.js.map +1 -0
  304. package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
  305. package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
  306. package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
  307. package/navigation/table-of-contents/TableOfContents.js +211 -0
  308. package/navigation/table-of-contents/TableOfContents.js.map +1 -0
  309. package/navigation/table-of-contents/index.d.ts +3 -0
  310. package/navigation/table-of-contents/index.d.ts.map +1 -0
  311. package/navigation/table-of-contents/index.js +3 -0
  312. package/navigation/table-of-contents/index.js.map +1 -0
  313. package/navigation/table-of-contents/table-of-contents.module.css +322 -0
  314. package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
  315. package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
  316. package/navigation/table-of-contents/useActiveHeading.js +111 -0
  317. package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
  318. package/navigation/tabs/Tabs.d.ts +2 -2
  319. package/navigation/tabs/Tabs.js +3 -3
  320. package/navigation/tabs/tabs.module.css +22 -19
  321. package/navigation/toolbar/Toolbar.d.ts +7 -1
  322. package/navigation/toolbar/Toolbar.d.ts.map +1 -1
  323. package/navigation/toolbar/Toolbar.js +3 -3
  324. package/navigation/toolbar/Toolbar.js.map +1 -1
  325. package/navigation/toolbar/toolbar.module.css +6 -6
  326. package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
  327. package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
  328. package/overlays/alert-dialog/AlertDialog.js +15 -5
  329. package/overlays/alert-dialog/AlertDialog.js.map +1 -1
  330. package/overlays/alert-dialog/alert-dialog.module.css +4 -4
  331. package/overlays/context-menu/ContextMenu.d.ts +1 -1
  332. package/overlays/context-menu/ContextMenu.js +1 -1
  333. package/overlays/dialog/Dialog.d.ts +26 -11
  334. package/overlays/dialog/Dialog.d.ts.map +1 -1
  335. package/overlays/dialog/Dialog.js +36 -17
  336. package/overlays/dialog/Dialog.js.map +1 -1
  337. package/overlays/dialog/dialog.module.css +32 -31
  338. package/overlays/dialog/morph.d.ts +17 -0
  339. package/overlays/dialog/morph.d.ts.map +1 -0
  340. package/overlays/dialog/morph.js +44 -0
  341. package/overlays/dialog/morph.js.map +1 -0
  342. package/overlays/menu/Menu.d.ts +18 -7
  343. package/overlays/menu/Menu.d.ts.map +1 -1
  344. package/overlays/menu/Menu.js +35 -12
  345. package/overlays/menu/Menu.js.map +1 -1
  346. package/overlays/menu/menu.module.css +26 -50
  347. package/overlays/menu/morph.d.ts +16 -0
  348. package/overlays/menu/morph.d.ts.map +1 -0
  349. package/overlays/menu/morph.js +36 -0
  350. package/overlays/menu/morph.js.map +1 -0
  351. package/overlays/menu/popup.d.ts +2 -0
  352. package/overlays/menu/popup.d.ts.map +1 -1
  353. package/overlays/menu/popup.js +11 -3
  354. package/overlays/menu/popup.js.map +1 -1
  355. package/overlays/menubar/Menubar.d.ts +10 -1
  356. package/overlays/menubar/Menubar.d.ts.map +1 -1
  357. package/overlays/menubar/Menubar.js +22 -12
  358. package/overlays/menubar/Menubar.js.map +1 -1
  359. package/overlays/menubar/menubar.module.css +13 -13
  360. package/overlays/popover/Popover.d.ts +22 -8
  361. package/overlays/popover/Popover.d.ts.map +1 -1
  362. package/overlays/popover/Popover.js +51 -16
  363. package/overlays/popover/Popover.js.map +1 -1
  364. package/overlays/popover/popover.module.css +73 -47
  365. package/overlays/preview-card/PreviewCard.d.ts +3 -3
  366. package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
  367. package/overlays/preview-card/PreviewCard.js +5 -6
  368. package/overlays/preview-card/PreviewCard.js.map +1 -1
  369. package/overlays/preview-card/preview-card.module.css +19 -54
  370. package/overlays/search-dialog/SearchDialog.d.ts +89 -0
  371. package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
  372. package/overlays/search-dialog/SearchDialog.js +220 -0
  373. package/overlays/search-dialog/SearchDialog.js.map +1 -0
  374. package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
  375. package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
  376. package/overlays/search-dialog/SearchDialogPopup.js +80 -0
  377. package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
  378. package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
  379. package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
  380. package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
  381. package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
  382. package/overlays/search-dialog/index.d.ts +3 -0
  383. package/overlays/search-dialog/index.d.ts.map +1 -0
  384. package/overlays/search-dialog/index.js +3 -0
  385. package/overlays/search-dialog/index.js.map +1 -0
  386. package/overlays/search-dialog/search-dialog.module.css +492 -0
  387. package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
  388. package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
  389. package/overlays/search-dialog/useShortcutLabel.js +19 -0
  390. package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
  391. package/overlays/search-dialog/variants.d.ts +25 -0
  392. package/overlays/search-dialog/variants.d.ts.map +1 -0
  393. package/overlays/search-dialog/variants.js +31 -0
  394. package/overlays/search-dialog/variants.js.map +1 -0
  395. package/overlays/tooltip/Tooltip.d.ts +3 -3
  396. package/overlays/tooltip/Tooltip.d.ts.map +1 -1
  397. package/overlays/tooltip/Tooltip.js +3 -3
  398. package/overlays/tooltip/Tooltip.js.map +1 -1
  399. package/overlays/tooltip/tooltip.module.css +2 -2
  400. package/package.json +27 -19
  401. package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
  402. package/page/announcement-bar/AnnouncementBar.js +4 -4
  403. package/page/announcement-bar/AnnouncementBar.js.map +1 -1
  404. package/page/announcement-bar/announcement-bar.module.css +11 -17
  405. package/page/cta-block/CTABlock.d.ts +5 -5
  406. package/page/cta-block/CTABlock.d.ts.map +1 -1
  407. package/page/cta-block/CTABlock.js +2 -2
  408. package/page/cta-block/cta-block.module.css +26 -26
  409. package/page/docs-layout/DocsLayout.d.ts +83 -0
  410. package/page/docs-layout/DocsLayout.d.ts.map +1 -0
  411. package/page/docs-layout/DocsLayout.js +108 -0
  412. package/page/docs-layout/DocsLayout.js.map +1 -0
  413. package/page/docs-layout/docs-layout.module.css +266 -0
  414. package/page/docs-layout/index.d.ts +2 -0
  415. package/page/docs-layout/index.d.ts.map +1 -0
  416. package/page/docs-layout/index.js +2 -0
  417. package/page/docs-layout/index.js.map +1 -0
  418. package/page/footer/Footer.d.ts +1 -1
  419. package/page/footer/Footer.js +1 -1
  420. package/page/footer/footer.module.css +31 -31
  421. package/page/hero/Hero.d.ts +3 -3
  422. package/page/hero/Hero.d.ts.map +1 -1
  423. package/page/hero/Hero.js +1 -1
  424. package/page/hero/hero.module.css +36 -36
  425. package/page/marquee/Marquee.d.ts +2 -2
  426. package/page/marquee/Marquee.js +1 -1
  427. package/page/marquee/marquee.module.css +11 -11
  428. package/page/newsletter/Newsletter.d.ts.map +1 -1
  429. package/page/newsletter/Newsletter.js +4 -59
  430. package/page/newsletter/Newsletter.js.map +1 -1
  431. package/page/newsletter/newsletter.module.css +44 -22
  432. package/page/section-bar/SectionBar.d.ts +10 -3
  433. package/page/section-bar/SectionBar.d.ts.map +1 -1
  434. package/page/section-bar/SectionBar.js +21 -11
  435. package/page/section-bar/SectionBar.js.map +1 -1
  436. package/page/section-bar/section-bar.module.css +43 -46
  437. package/page/section-divider/SectionDivider.d.ts +2 -2
  438. package/page/section-divider/SectionDivider.js +4 -4
  439. package/page/section-divider/SectionDivider.js.map +1 -1
  440. package/page/section-divider/section-divider.module.css +18 -18
  441. package/page/section-header/SectionHeader.d.ts +7 -7
  442. package/page/section-header/SectionHeader.d.ts.map +1 -1
  443. package/page/section-header/SectionHeader.js +3 -3
  444. package/page/section-header/SectionHeader.js.map +1 -1
  445. package/page/section-header/section-header.module.css +16 -16
  446. package/utils/Ornament.d.ts +1 -1
  447. package/utils/Ornament.js +2 -2
  448. package/utils/assignRef.d.ts +7 -1
  449. package/utils/assignRef.d.ts.map +1 -1
  450. package/utils/assignRef.js +18 -0
  451. package/utils/assignRef.js.map +1 -1
  452. package/utils/docs/DemoTitle.d.ts +12 -0
  453. package/utils/docs/DemoTitle.d.ts.map +1 -0
  454. package/utils/docs/DemoTitle.js +11 -0
  455. package/utils/docs/DemoTitle.js.map +1 -0
  456. package/utils/docs/Pre.d.ts +39 -0
  457. package/utils/docs/Pre.d.ts.map +1 -0
  458. package/utils/docs/Pre.js +26 -0
  459. package/utils/docs/Pre.js.map +1 -0
  460. package/utils/docs/createDemo.d.ts +89 -0
  461. package/utils/docs/createDemo.d.ts.map +1 -0
  462. package/utils/docs/createDemo.js +51 -0
  463. package/utils/docs/createDemo.js.map +1 -0
  464. package/utils/docs/createMdxComponents.d.ts +52 -0
  465. package/utils/docs/createMdxComponents.d.ts.map +1 -0
  466. package/utils/docs/createMdxComponents.js +59 -0
  467. package/utils/docs/createMdxComponents.js.map +1 -0
  468. package/utils/docs/createTypes.d.ts +23 -0
  469. package/utils/docs/createTypes.d.ts.map +1 -0
  470. package/utils/docs/createTypes.js +27 -0
  471. package/utils/docs/createTypes.js.map +1 -0
  472. package/utils/docs/index.d.ts +8 -0
  473. package/utils/docs/index.d.ts.map +1 -0
  474. package/utils/docs/index.js +16 -0
  475. package/utils/docs/index.js.map +1 -0
  476. package/utils/docs/mdx.module.css +201 -0
  477. package/utils/docs/serverSourceEnhancers.d.ts +26 -0
  478. package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
  479. package/utils/docs/serverSourceEnhancers.js +32 -0
  480. package/utils/docs/serverSourceEnhancers.js.map +1 -0
  481. package/utils/docs/toSidebarItems.d.ts +23 -0
  482. package/utils/docs/toSidebarItems.d.ts.map +1 -0
  483. package/utils/docs/toSidebarItems.js +36 -0
  484. package/utils/docs/toSidebarItems.js.map +1 -0
  485. package/utils/font-fallbacks.css +176 -0
  486. package/utils/fonts.d.ts +1 -0
  487. package/utils/fonts.d.ts.map +1 -1
  488. package/utils/fonts.js +12 -0
  489. package/utils/fonts.js.map +1 -1
  490. package/utils/frame.d.ts +4 -0
  491. package/utils/frame.d.ts.map +1 -0
  492. package/utils/frame.js +11 -0
  493. package/utils/frame.js.map +1 -0
  494. package/utils/global.css +480 -266
  495. package/utils/line.module.css +17 -17
  496. package/utils/media.css +1 -1
  497. package/utils/ornament.module.css +19 -19
  498. package/utils/overlay.d.ts +4 -4
  499. package/utils/overlay.js +4 -4
  500. package/utils/pattern.module.css +45 -45
  501. package/utils/print.css +48 -34
  502. package/utils/reset.css +9 -2
  503. package/utils/roles.css +29 -29
  504. package/utils/seriesPatterns.js +3 -3
  505. package/utils/syntax.module.css +92 -0
  506. package/utils/theme.css +6 -6
  507. package/utils/tokens.css +262 -192
  508. package/utils/tokens.d.ts +51 -8
  509. package/utils/tokens.d.ts.map +1 -1
  510. package/utils/tokens.js +46 -9
  511. package/utils/tokens.js.map +1 -1
  512. package/utils/type.module.css +87 -87
  513. package/utils/useReleaseMark.d.ts +13 -0
  514. package/utils/useReleaseMark.d.ts.map +1 -0
  515. package/utils/useReleaseMark.js +44 -0
  516. package/utils/useReleaseMark.js.map +1 -0
  517. package/utils/view-transitions.css +122 -0
@@ -4,11 +4,13 @@ import { Menu as BaseMenu } from '@base-ui/react/menu';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { Button } from '../../actions/button';
6
6
  import { Icon } from '../../foundations/icon';
7
+ import { HOVER_REASONS, useOutlineMorphRoot, } from '../../foundations/outline-morph/useOutlineMorphRoot';
7
8
  import { StatusGlyph, statusScales } from '../../utils/StatusGlyph';
8
9
  import { cx, resolveClassName } from '../../utils/className';
9
10
  import { OVERLAY_SIDE_OFFSET } from '../../utils/overlay';
10
11
  import { secondaryScaleVariants } from '../../utils/scales';
11
12
  import { MenuPopupFrame } from './popup';
13
+ import { MENUBAR_SWITCH_REASONS, MenuMorphContext, MenuMorphTrigger, MenubarMorphContext, } from './morph';
12
14
  import styles from './menu.module.css';
13
15
  export { menu } from './popup';
14
16
  /*
@@ -25,15 +27,14 @@ export { menu } from './popup';
25
27
  * color axes: none.
26
28
  * - Color fallback: the popup takes the `white` preset's defaults; a
27
29
  * destructive item's secondary falls back to the danger scale [D129].
28
- * - States: item data-highlighted → --primary4 plus the --ds-stroke-3
30
+ * - States: item data-highlighted → --primary4 plus the --border-size-2-25
29
31
  * start-edge bar in --primary12 [D145] (a destructive item: the
30
32
  * --role-danger fill, its label and bar --role-danger-label [D192]);
31
33
  * data-checked on checkbox and
32
34
  * radio items → leading ✓ or ● in --primary12, label --font-weight-6, no
33
35
  * fill and no bar [D145]; data-disabled → --role-muted, no highlight;
34
- * submenu trigger data-popup-open → stays highlighted; popup
35
- * data-starting-style / data-ending-style with data-side → the clip
36
- * reveal from the trigger side, instant under --motionNotOK [D91].
36
+ * submenu trigger data-popup-open → stays highlighted; the popup opens
37
+ * and closes by the outline morph or at once [D205].
37
38
  * - Parts: positioner, base (the popup), item, itemIcon (the leading slot),
38
39
  * itemLabel, checkGlyph, dangerGlyph, shortcut, submenuChevron,
39
40
  * groupLabel, separator.
@@ -41,6 +42,15 @@ export { menu } from './popup';
41
42
  * `white` scope (`page` scheme, no data-theme) with the --border-size-2
42
43
  * --primary12 edge [D148, D156]. The trigger is a Button (§9.2).
43
44
  * - Container: none; inherits its context.
45
+ * - Outline morph [D204]: on by default (`morph={false}` on Menu opts
46
+ * out). The trigger's ring (keyboard) or edge (pointer: its outline, its
47
+ * fill, or its box in its ink) grows into the popup's frame and back
48
+ * (foundations/outline-morph); MenuTrigger takes the source ref, the popup
49
+ * answers `data-outline-morph` and the frame renders beside it. Without
50
+ * the morph a menu opens and closes at once [D205]: hover opens
51
+ * (`openOnHover`), switching menus in a Menubar, and submenus (MenuSubmenu
52
+ * turns the morph off inside it: they open on hover as the pointer passes,
53
+ * and their row has no outline to grow from).
44
54
  */
45
55
  export const menuItem = cva(styles.item, {
46
56
  variants: {
@@ -54,9 +64,20 @@ export const menuItem = cva(styles.item, {
54
64
  destructive: false,
55
65
  },
56
66
  });
57
- /** Groups the parts of a menu (Base UI Menu.Root). */
67
+ /** Groups the parts of a menu (Base UI Menu.Root) and wires its outline morph. */
58
68
  export function Menu(props) {
59
- return React.createElement(BaseMenu.Root, { ...props });
69
+ const { morph = true, onOpenChange, ...rootProps } = props;
70
+ const inMenubar = React.useContext(MenubarMorphContext);
71
+ const outline = useOutlineMorphRoot({
72
+ open: rootProps.open,
73
+ defaultOpen: rootProps.defaultOpen,
74
+ onOpenChange,
75
+ morph,
76
+ instant: (_open, details) => details.reason != null &&
77
+ (inMenubar ? MENUBAR_SWITCH_REASONS : HOVER_REASONS).has(details.reason),
78
+ });
79
+ return (React.createElement(MenuMorphContext.Provider, { value: outline.refs },
80
+ React.createElement(BaseMenu.Root, { ...rootProps, onOpenChange: outline.onOpenChange })));
60
81
  }
61
82
  /**
62
83
  * Opens the menu. Renders a Button (§9.2): an `outline` or `text` Button
@@ -65,21 +86,21 @@ export function Menu(props) {
65
86
  */
66
87
  export function MenuTrigger(props) {
67
88
  const { handle, payload, ...buttonProps } = props;
68
- return (React.createElement(BaseMenu.Trigger, { handle: handle, payload: payload, render: React.createElement(Button, { ...buttonProps }) }));
89
+ return (React.createElement(MenuMorphTrigger, { handle: handle, payload: payload, render: React.createElement(Button, { ...buttonProps }) }));
69
90
  }
70
91
  /**
71
92
  * The popup, rendered through its Base UI Portal as a nested `white`
72
- * scope: --primary1 face, --border-size-2 --primary12 edge, --ds-radius-8,
93
+ * scope: --primary1 face, --border-size-2 --primary12 edge, --radius-2-25,
73
94
  * --size-px-1 padding, 200 px to --size-px-14 wide and at least the
74
95
  * trigger's width, --size-px-2 from the trigger, aligned to its start
75
- * edge. It opens instantly or with a clip reveal from the trigger side.
96
+ * edge. It opens from its trigger by the outline morph, or at once [D205].
76
97
  * Inside a `MenuSubmenu` it flies out to the end side.
77
98
  */
78
99
  export function MenuPopup(props) {
79
100
  return (React.createElement(MenuPopupFrame, { ...props, placement: { align: 'start', sideOffset: OVERLAY_SIDE_OFFSET } }));
80
101
  }
81
102
  /**
82
- * An action row (Base UI Menu.Item): --ds-size-hit tall at every
103
+ * An action row (Base UI Menu.Item): --fgd-size-hit tall at every
83
104
  * breakpoint, a --size-px-5 leading slot, the label in `type-body-ui`
84
105
  * sentence case, and an optional trailing shortcut. Highlight (pointer or
85
106
  * keyboard) is the --primary4 fill plus the start-edge bar (the danger fill
@@ -144,10 +165,12 @@ export function MenuSeparator(props) {
144
165
  /**
145
166
  * Groups a submenu's trigger and popup (Base UI Menu.SubmenuRoot). The
146
167
  * nested MenuPopup flies out to the end side at --size-px-2 and flips at
147
- * the viewport edge.
168
+ * the viewport edge and opens at once: the outline morph stays
169
+ * with the top-level menu [D204].
148
170
  */
149
171
  export function MenuSubmenu(props) {
150
- return React.createElement(BaseMenu.SubmenuRoot, { ...props });
172
+ return (React.createElement(MenuMorphContext.Provider, { value: null },
173
+ React.createElement(BaseMenu.SubmenuRoot, { ...props })));
151
174
  }
152
175
  /**
153
176
  * The row that opens a submenu (Base UI Menu.SubmenuTrigger), with a
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/overlays/menu/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/overlays/menu/Menu.tsx"],"names":[],"mappings":"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"}
@@ -7,13 +7,15 @@
7
7
  *
8
8
  * The §9.1 overlay panel: the `white` scope's --primary1 face, a
9
9
  * --border-size-2 --primary12 edge in both modes, never --role-rule
10
- * [D92, D156], --ds-radius-8, --size-px-1 padding, no shadow or backdrop.
11
- * The list highlight is --primary4 plus a --ds-stroke-3 start-edge bar in
10
+ * [D92, D156], --radius-2-25, --size-px-1 padding, no shadow or backdrop.
11
+ * The list highlight is --primary4 plus a --border-size-2-25 start-edge bar in
12
12
  * --primary12 (a destructive item: the danger fill, its label and bar
13
13
  * --role-danger-label [D192]); a checked option is a leading ✓ or ● and --font-weight-6,
14
- * with no fill and no bar [D145]. Motion is instant or a clip reveal from
15
- * the trigger side, never a fade [D91]. Colors are role variables only;
16
- * local custom properties carry dimensions only.
14
+ * with no fill and no bar [D145]. Motion is the outline morph (a Menu's
15
+ * popup answers `data-outline-morph` while it draws its frame) [D204] or
16
+ * none: the popup opens and closes at once [D205].
17
+ * Colors are role variables only; local custom properties carry
18
+ * dimensions only.
17
19
  */
18
20
 
19
21
  /* Composition sits in top-level rules, outside the layers: Lightning CSS
@@ -38,34 +40,33 @@
38
40
 
39
41
  /* 200 px to --size-px-14, at least the trigger's width, at most the viewport less its margins. */
40
42
  .base {
41
- --menu-clip-from: inset(0);
42
- --menu-item-radius: calc(var(--ds-radius-8) - var(--size-px-1));
43
+ --menu-item-radius: calc(var(--radius-2-25) - var(--size-px-1));
43
44
 
44
45
  box-sizing: border-box;
45
46
  min-inline-size: min(
46
- max(var(--ds-size-menu-min), var(--anchor-width, 0px)),
47
- calc(100vw - 2 * var(--ds-space-margin))
47
+ max(var(--fgd-size-menu-min), var(--anchor-width, 0px)),
48
+ calc(100vw - 2 * var(--fgd-space-margin))
48
49
  );
49
- max-inline-size: min(var(--size-px-14), calc(100vw - 2 * var(--ds-space-margin)));
50
+ max-inline-size: min(var(--size-px-14), calc(100vw - 2 * var(--fgd-space-margin)));
50
51
  max-block-size: var(--available-height);
51
52
  overflow-y: auto;
52
53
  overscroll-behavior: contain;
53
54
  padding: var(--size-px-1);
54
55
  border: var(--border-size-2) solid var(--primary12);
55
- border-radius: var(--ds-radius-8);
56
+ border-radius: var(--radius-2-25);
56
57
  background-color: var(--primary1);
57
58
  color: var(--primary12);
58
59
  clip-path: inset(0);
59
60
  }
60
61
 
61
- /* A row: --ds-size-hit tall at every breakpoint, --ds-space-12 padding. */
62
+ /* A row: --fgd-size-hit tall at every breakpoint, --size-px-2-5 padding. */
62
63
  .item {
63
64
  position: relative;
64
65
  display: flex;
65
66
  align-items: center;
66
67
  gap: var(--size-px-2);
67
- min-block-size: var(--ds-size-hit);
68
- padding-inline: var(--ds-space-12);
68
+ min-block-size: var(--fgd-size-hit);
69
+ padding-inline: var(--size-px-2-5);
69
70
  border-radius: var(--menu-item-radius);
70
71
  color: var(--primary12);
71
72
  cursor: default;
@@ -81,7 +82,7 @@
81
82
  inset-block: 0;
82
83
  inset-inline-start: 0;
83
84
  display: none;
84
- border-inline-start: var(--ds-stroke-3) solid var(--primary12);
85
+ border-inline-start: var(--border-size-2-25) solid var(--primary12);
85
86
  border-start-start-radius: var(--menu-item-radius);
86
87
  border-end-start-radius: var(--menu-item-radius);
87
88
  }
@@ -114,7 +115,7 @@
114
115
  overflow: visible;
115
116
  fill: var(--primary1);
116
117
  stroke: var(--primary1);
117
- stroke-width: var(--ds-stroke-1-5);
118
+ stroke-width: var(--border-size-1-5);
118
119
  stroke-linecap: round;
119
120
  stroke-linejoin: round;
120
121
  }
@@ -136,7 +137,7 @@
136
137
  display: flex;
137
138
  align-items: center;
138
139
  padding-block: var(--size-px-2) var(--size-px-1);
139
- padding-inline: var(--ds-space-12);
140
+ padding-inline: var(--size-px-2-5);
140
141
  color: var(--role-muted);
141
142
  }
142
143
 
@@ -148,14 +149,6 @@
148
149
  border-block-start: var(--border-size-1) solid var(--role-rule);
149
150
  }
150
151
 
151
- @media (prefers-reduced-motion: no-preference) {
152
- .base {
153
- transition-property: clip-path;
154
- transition-duration: var(--ds-duration-disclosure);
155
- transition-timing-function: var(--ease-out-3);
156
- }
157
- }
158
-
159
152
  @media (forced-colors: active) {
160
153
  .dangerGlyph {
161
154
  forced-color-adjust: none;
@@ -182,31 +175,14 @@
182
175
  }
183
176
 
184
177
  @layer states {
185
- /* The reveal starts at the trigger edge (data-side names where the popup sits). */
186
- .base[data-side='bottom'] {
187
- --menu-clip-from: inset(0 0 100% 0);
188
- }
189
-
190
- .base[data-side='top'] {
191
- --menu-clip-from: inset(100% 0 0 0);
192
- }
193
-
194
- .base[data-side='left'],
195
- .base[data-side='inline-start'] {
196
- --menu-clip-from: inset(0 0 0 100%);
197
- }
198
-
199
- .base[data-side='right'],
200
- .base[data-side='inline-end'] {
201
- --menu-clip-from: inset(0 100% 0 0);
202
- }
203
-
204
- .base[data-starting-style],
205
- .base[data-ending-style] {
206
- clip-path: var(--menu-clip-from);
207
- }
208
-
209
- .base[data-instant] {
178
+ /*
179
+ * Outline morph [D204] (Menu's `morph`, the default): while the overlay
180
+ * draws the frame, the popup's own edge takes its face. Without the morph
181
+ * (hover opens, submenus, context menus, `morph={false}`) the popup opens
182
+ * and closes at once [D205].
183
+ */
184
+ .base[data-outline-morph] {
185
+ border-color: var(--primary1);
210
186
  transition: none;
211
187
  }
212
188
 
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { Menu as BaseMenu } from '@base-ui/react/menu';
3
+ import type { OutlineMorphRefs } from '../../foundations/outline-morph';
4
+ /** The nearest menu's morph refs, or `null` (no morph: a submenu, a context menu, `morph={false}`). */
5
+ export declare const MenuMorphContext: React.Context<OutlineMorphRefs | null>;
6
+ /**
7
+ * Set by the Menubar around its menus: switching between them (hover, the
8
+ * arrow keys, focus) is instant, as Base UI makes it, so only a press opens
9
+ * with the morph and only Escape, a choice or an outside press closes with it.
10
+ */
11
+ export declare const MenubarMorphContext: React.Context<boolean>;
12
+ /** Open changes that switch between a menubar's menus: Base UI's instant `group` reasons. */
13
+ export declare const MENUBAR_SWITCH_REASONS: ReadonlySet<string>;
14
+ /** Base UI's Menu.Trigger, wired as the nearest menu's morph source. */
15
+ export declare function MenuMorphTrigger(props: BaseMenu.Trigger.Props): React.JSX.Element;
16
+ //# sourceMappingURL=morph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"morph.d.ts","sourceRoot":"","sources":["../../src/overlays/menu/morph.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAYvE,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,wCAAqD,CAAA;AAElF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,wBAA6B,CAAA;AAE7D,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAMrD,CAAA;AAEF,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,qBAK7D"}
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import { Menu as BaseMenu } from '@base-ui/react/menu';
4
+ import { useMergedRef } from '../../utils/assignRef';
5
+ /*
6
+ * Internal: the outline morph's wiring through a menu's parts [D204]. Not
7
+ * exported from the Menu index. `Menu` provides the refs; the trigger
8
+ * (`MenuMorphTrigger`, behind MenuTrigger, the Menubar's triggers and the
9
+ * Code Block's ⋮) takes the source ref, and the popup build
10
+ * (`MenuPopupFrame`) takes the target ref and renders the frame. A
11
+ * `MenuSubmenu` provides `null`, so a submenu keeps its own reveal.
12
+ */
13
+ /** The nearest menu's morph refs, or `null` (no morph: a submenu, a context menu, `morph={false}`). */
14
+ export const MenuMorphContext = React.createContext(null);
15
+ /**
16
+ * Set by the Menubar around its menus: switching between them (hover, the
17
+ * arrow keys, focus) is instant, as Base UI makes it, so only a press opens
18
+ * with the morph and only Escape, a choice or an outside press closes with it.
19
+ */
20
+ export const MenubarMorphContext = React.createContext(false);
21
+ /** Open changes that switch between a menubar's menus: Base UI's instant `group` reasons. */
22
+ export const MENUBAR_SWITCH_REASONS = new Set([
23
+ 'trigger-hover',
24
+ 'trigger-focus',
25
+ 'focus-out',
26
+ 'list-navigation',
27
+ 'sibling-open',
28
+ ]);
29
+ /** Base UI's Menu.Trigger, wired as the nearest menu's morph source. */
30
+ export function MenuMorphTrigger(props) {
31
+ const { ref, ...rest } = props;
32
+ const morph = React.useContext(MenuMorphContext);
33
+ const mergedRef = useMergedRef(ref, morph?.sourceRef);
34
+ return React.createElement(BaseMenu.Trigger, { ...rest, ref: mergedRef });
35
+ }
36
+ //# sourceMappingURL=morph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"morph.js","sourceRoot":"","sources":["../../src/overlays/menu/morph.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;GAOG;AAEH,uGAAuG;AACvG,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI,CAAC,CAAA;AAElF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAE7D,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACjE,eAAe;IACf,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,cAAc;CACf,CAAC,CAAA;AAEF,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,KAA6B;IAC5D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,YAAY,CAAoB,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACxE,OAAO,oBAAC,QAAQ,CAAC,OAAO,OAAK,IAAI,EAAE,GAAG,EAAE,SAAS,GAAI,CAAA;AACvD,CAAC"}
@@ -36,6 +36,8 @@ export type MenuPopupProps = BaseMenu.Popup.Props & {
36
36
  * The portal, positioner and popup. `placement` supplies defaults for the
37
37
  * positioner; any prop left undefined falls through to Base UI's own
38
38
  * defaults (the end side for submenus, the pointer for context menus).
39
+ * Inside a Menu with the outline morph, the popup is its target and the
40
+ * frame renders beside it [D204].
39
41
  */
40
42
  export declare function MenuPopupFrame(props: MenuPopupProps & {
41
43
  placement?: Pick<MenuPopupProps, 'align' | 'sideOffset'>;
@@ -1 +1 @@
1
- {"version":3,"file":"popup.d.ts","sourceRoot":"","sources":["../../src/overlays/menu/popup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAmBjE,0EAA0E;AAC1E,eAAO,MAAM,IAAI;;;8EAMf,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,IAAI,CAAC,CAAA;AAEpD,KAAK,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAA;AAEhD,sGAAsG;AACtG,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG;IAClD;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IACjC,mGAAmG;IACnG,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IACrC,oFAAoF;IACpF,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9B,iDAAiD;IACjD,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,6CAA6C;IAC7C,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IAC5C,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAA;IACtD,qEAAqE;IACrE,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC9C,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,YAAY,CAAC,CAAA;CAAE,qBA8CrF"}
1
+ {"version":3,"file":"popup.d.ts","sourceRoot":"","sources":["../../src/overlays/menu/popup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAsBjE,0EAA0E;AAC1E,eAAO,MAAM,IAAI;;;8EAMf,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,IAAI,CAAC,CAAA;AAEpD,KAAK,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAA;AAEhD,sGAAsG;AACtG,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG;IAClD;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IACjC,mGAAmG;IACnG,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IACrC,oFAAoF;IACpF,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9B,iDAAiD;IACjD,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1C,6CAA6C;IAC7C,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IAC5C,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAA;IACtD,qEAAqE;IACrE,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC9C,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,YAAY,CAAC,CAAA;CAAE,qBAmDrF"}
@@ -2,9 +2,12 @@
2
2
  import * as React from 'react';
3
3
  import { Menu as BaseMenu } from '@base-ui/react/menu';
4
4
  import { cva } from 'class-variance-authority';
5
+ import { OutlineMorphFrame } from '../../foundations/outline-morph';
6
+ import { useMergedRef } from '../../utils/assignRef';
5
7
  import { cx, resolveClassName } from '../../utils/className';
6
8
  import { OVERLAY_COLLISION_PADDING, OverlayScope, overlayActionClassName, overlayAttributes, overlayScales, } from '../../utils/overlay';
7
9
  import { primaryScaleVariants, secondaryScaleVariants } from '../../utils/scales';
10
+ import { MenuMorphContext } from './morph';
8
11
  import styles from './menu.module.css';
9
12
  /*
10
13
  * Internal: the menu popup build shared by Menu, Context Menu and Menubar
@@ -23,17 +26,22 @@ export const menu = cva(styles.base, {
23
26
  * The portal, positioner and popup. `placement` supplies defaults for the
24
27
  * positioner; any prop left undefined falls through to Base UI's own
25
28
  * defaults (the end side for submenus, the pointer for context menus).
29
+ * Inside a Menu with the outline morph, the popup is its target and the
30
+ * frame renders beside it [D204].
26
31
  */
27
32
  export function MenuPopupFrame(props) {
28
- const { primary, secondary, side, align, sideOffset, alignOffset, collisionPadding = OVERLAY_COLLISION_PADDING, container, keepMounted, placement, className, children, ...rest } = props;
33
+ const { primary, secondary, side, align, sideOffset, alignOffset, collisionPadding = OVERLAY_COLLISION_PADDING, container, keepMounted, placement, className, children, ref, ...rest } = props;
29
34
  const scales = overlayScales(primary, secondary);
35
+ const morph = React.useContext(MenuMorphContext);
36
+ const popupRef = useMergedRef(ref, morph?.targetRef);
30
37
  return (React.createElement(BaseMenu.Portal, { container: container, keepMounted: keepMounted },
31
38
  React.createElement(BaseMenu.Positioner, { className: styles.positioner, side: side, align: align ?? placement?.align, sideOffset: sideOffset ?? placement?.sideOffset, alignOffset: alignOffset, collisionPadding: collisionPadding },
32
- React.createElement(BaseMenu.Popup, { ...rest, ...overlayAttributes, className: resolveClassName(className, (extra) => menu({
39
+ React.createElement(BaseMenu.Popup, { ...rest, ref: popupRef, ...overlayAttributes, className: resolveClassName(className, (extra) => menu({
33
40
  primary: scales.primary,
34
41
  secondary: scales.secondary,
35
42
  className: cx(overlayActionClassName, extra),
36
43
  })) },
37
- React.createElement(OverlayScope, null, children)))));
44
+ React.createElement(OverlayScope, null, children)),
45
+ morph ? React.createElement(OutlineMorphFrame, { ref: morph.frameRef }) : null)));
38
46
  }
39
47
  //# sourceMappingURL=popup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup.js","sourceRoot":"","sources":["../../src/overlays/menu/popup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACjF,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC;;;;GAIG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE;QACR,wFAAwF;QACxF,OAAO,EAAE,oBAAoB;QAC7B,SAAS,EAAE,sBAAsB;KAClC;CACF,CAAC,CAAA;AA+BF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAoF;IAEpF,MAAM,EACJ,OAAO,EACP,SAAS,EACT,IAAI,EACJ,KAAK,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,GAAG,yBAAyB,EAC5C,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK,CAAA;IAET,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEhD,OAAO,CACL,oBAAC,QAAQ,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;QAC7D,oBAAC,QAAQ,CAAC,UAAU,IAClB,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAChC,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,EAC/C,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB;YAElC,oBAAC,QAAQ,CAAC,KAAK,OACT,IAAI,KACJ,iBAAiB,EACrB,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/C,IAAI,CAAC;oBACH,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC;iBAC7C,CAAC,CACH;gBAED,oBAAC,YAAY,QAAE,QAAQ,CAAgB,CACxB,CACG,CACN,CACnB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"popup.js","sourceRoot":"","sources":["../../src/overlays/menu/popup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC;;;;GAIG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE;QACR,wFAAwF;QACxF,OAAO,EAAE,oBAAoB;QAC7B,SAAS,EAAE,sBAAsB;KAClC;CACF,CAAC,CAAA;AA+BF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAoF;IAEpF,MAAM,EACJ,OAAO,EACP,SAAS,EACT,IAAI,EACJ,KAAK,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,GAAG,yBAAyB,EAC5C,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,IAAI,EACR,GAAG,KAAK,CAAA;IAET,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,YAAY,CAAiB,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAEpE,OAAO,CACL,oBAAC,QAAQ,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;QAC7D,oBAAC,QAAQ,CAAC,UAAU,IAClB,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAChC,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,UAAU,EAC/C,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB;YAElC,oBAAC,QAAQ,CAAC,KAAK,OACT,IAAI,EACR,GAAG,EAAE,QAAQ,KACT,iBAAiB,EACrB,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/C,IAAI,CAAC;oBACH,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC;iBAC7C,CAAC,CACH;gBAED,oBAAC,YAAY,QAAE,QAAQ,CAAgB,CACxB;YAChB,KAAK,CAAC,CAAC,CAAC,oBAAC,iBAAiB,IAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAI,CAAC,CAAC,CAAC,IAAI,CACtC,CACN,CACnB,CAAA;AACH,CAAC"}
@@ -21,9 +21,16 @@ export type MenubarProps = BaseMenubar.Props & {
21
21
  collapsedLabel?: string;
22
22
  /** Props for the collapsed menu's popup. */
23
23
  collapsedPopupProps?: MenuPopupProps;
24
+ /**
25
+ * The outline morph for every menu of the bar: a press grows the
26
+ * trigger's ring (or box) into the popup's frame, and Escape, a choice
27
+ * or an outside press shrinks it back; moving between menus stays
28
+ * instant. Default `true`; `false` opens and closes them at once.
29
+ */
30
+ morph?: boolean;
24
31
  };
25
32
  /**
26
- * The bar (Base UI Menubar): --ds-size-hit tall with a --border-size-1
33
+ * The bar (Base UI Menubar): --fgd-size-hit tall with a --border-size-1
27
34
  * --role-rule under it, holding `MenubarMenu`s. Below --lg-n-above it
28
35
  * collapses into one `collapsedLabel` trigger whose popup lists each menu
29
36
  * as a labelled group.
@@ -42,6 +49,8 @@ export type MenubarMenuProps = Omit<BaseMenu.Root.Props, 'children'> & {
42
49
  popupProps?: MenuPopupProps;
43
50
  /** The menu's items: MenuItem, MenuCheckboxItem, MenuRadioGroup, MenuSubmenu … */
44
51
  children?: React.ReactNode;
52
+ /** The outline morph for this menu. Default: the Menubar's `morph`. */
53
+ morph?: boolean;
45
54
  };
46
55
  /**
47
56
  * One menu of the bar: a `type-button-sm` trigger and a Menu popup of its
@@ -1 +1 @@
1
- {"version":3,"file":"Menubar.d.ts","sourceRoot":"","sources":["../../src/overlays/menubar/Menubar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAgCnF,eAAO,MAAM,OAAO;;;8EAMlB,CAAA;AAEF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAA;AAQnD,4FAA4F;AAC5F,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,GAAG;IAC7C,kGAAkG;IAClG,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,cAAc,CAAA;CACrC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,qBAmC1C;AAED,mGAAmG;AACnG,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;IACrE;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAqBlD"}
1
+ {"version":3,"file":"Menubar.d.ts","sourceRoot":"","sources":["../../src/overlays/menubar/Menubar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAA8C,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAsCzF,eAAO,MAAM,OAAO;;;8EAMlB,CAAA;AAEF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,OAAO,CAAC,CAAA;AAWnD,4FAA4F;AAC5F,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,GAAG;IAC7C,kGAAkG;IAClG,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,cAAc,CAAA;IACpC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,qBAwC1C;AAED,mGAAmG;AACnG,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;IACrE;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAsBlD"}
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import * as React from 'react';
3
- import { Menu as BaseMenu } from '@base-ui/react/menu';
4
3
  import { Menubar as BaseMenubar } from '@base-ui/react/menubar';
5
4
  import { cva } from 'class-variance-authority';
6
- import { MenuGroup, MenuGroupLabel, MenuPopup } from '../menu';
5
+ import { Menu, MenuGroup, MenuGroupLabel, MenuPopup } from '../menu';
6
+ import { MenuMorphTrigger, MenubarMorphContext } from '../menu/morph';
7
7
  import { resolveClassName } from '../../utils/className';
8
8
  import { primaryScaleVariants, secondaryScaleVariants } from '../../utils/scales';
9
9
  import { useScopeAttributes } from '../../utils/scope';
@@ -23,7 +23,7 @@ import styles from './menubar.module.css';
23
23
  * - Color fallback: inherits the scope; the popups take the `white`
24
24
  * preset's defaults like every Menu popup.
25
25
  * - States: data-orientation → the bar's direction and rule edge;
26
- * trigger data-popup-open → the --ds-stroke-3 bar in --primary12;
26
+ * trigger data-popup-open → the --border-size-2-25 bar in --primary12;
27
27
  * trigger :hover (not disabled) → the §9.2 `text` Button hover: label
28
28
  * --role-link-hover, underlined only where that is --primary12 [D181];
29
29
  * :focus-visible → the ring; data-disabled → --role-muted.
@@ -33,6 +33,11 @@ import styles from './menubar.module.css';
33
33
  * - Container: none; below --lg-n-above (the viewport tier of the page
34
34
  * frame) the bar collapses into one "Menu" trigger whose popup lists the
35
35
  * former menus as labelled groups.
36
+ * - Outline morph [D204]: on by default (`morph={false}` on the bar or a
37
+ * menu opts out). A press opens a menu with the trigger's ring (or box)
38
+ * growing into its popup, and Escape, a choice or an outside press
39
+ * closes it back; moving between menus (hover, arrow keys) stays
40
+ * instant, as Base UI switches them.
36
41
  */
37
42
  export const menubar = cva(styles.base, {
38
43
  variants: {
@@ -45,21 +50,25 @@ export const menubar = cva(styles.base, {
45
50
  const WIDE_QUERY = '(min-width: 1024px)';
46
51
  /** Inside the collapsed "Menu", each MenubarMenu renders as a labelled group. */
47
52
  const CollapsedContext = React.createContext(false);
53
+ /** The bar's `morph`, the default for each of its menus. */
54
+ const MorphContext = React.createContext(true);
48
55
  /**
49
- * The bar (Base UI Menubar): --ds-size-hit tall with a --border-size-1
56
+ * The bar (Base UI Menubar): --fgd-size-hit tall with a --border-size-1
50
57
  * --role-rule under it, holding `MenubarMenu`s. Below --lg-n-above it
51
58
  * collapses into one `collapsedLabel` trigger whose popup lists each menu
52
59
  * as a labelled group.
53
60
  */
54
61
  export function Menubar(props) {
55
- const { primary, secondary, collapsedLabel = 'Menu', collapsedPopupProps, className, children, ...rest } = props;
62
+ const { primary, secondary, collapsedLabel = 'Menu', collapsedPopupProps, morph = true, className, children, ...rest } = props;
56
63
  const scope = useScopeAttributes();
57
64
  // True from --lg-n-above; false on the server and below it (mobile first).
58
65
  const wide = useMediaQuery(WIDE_QUERY);
59
- return (React.createElement(BaseMenubar, { ...rest, ...scope, className: resolveClassName(className, (extra) => menubar({ primary, secondary, className: extra })) }, wide ? (children) : (React.createElement(BaseMenu.Root, null,
60
- React.createElement(BaseMenu.Trigger, { className: styles.trigger }, collapsedLabel),
61
- React.createElement(MenuPopup, { ...collapsedPopupProps },
62
- React.createElement(CollapsedContext.Provider, { value: true }, children))))));
66
+ return (React.createElement(BaseMenubar, { ...rest, ...scope, className: resolveClassName(className, (extra) => menubar({ primary, secondary, className: extra })) },
67
+ React.createElement(MenubarMorphContext.Provider, { value: true },
68
+ React.createElement(MorphContext.Provider, { value: morph }, wide ? (children) : (React.createElement(Menu, { morph: morph },
69
+ React.createElement(MenuMorphTrigger, { className: styles.trigger }, collapsedLabel),
70
+ React.createElement(MenuPopup, { ...collapsedPopupProps },
71
+ React.createElement(CollapsedContext.Provider, { value: true }, children))))))));
63
72
  }
64
73
  /**
65
74
  * One menu of the bar: a `type-button-sm` trigger and a Menu popup of its
@@ -67,15 +76,16 @@ export function Menubar(props) {
67
76
  * MenuGroupLabel of the same label.
68
77
  */
69
78
  export function MenubarMenu(props) {
70
- const { label, disabled, popupProps, children, ...rest } = props;
79
+ const { label, disabled, popupProps, children, morph, ...rest } = props;
71
80
  const collapsed = React.useContext(CollapsedContext);
81
+ const barMorph = React.useContext(MorphContext);
72
82
  if (collapsed) {
73
83
  return (React.createElement(MenuGroup, null,
74
84
  React.createElement(MenuGroupLabel, null, label),
75
85
  children));
76
86
  }
77
- return (React.createElement(BaseMenu.Root, { ...rest },
78
- React.createElement(BaseMenu.Trigger, { className: styles.trigger, disabled: disabled }, label),
87
+ return (React.createElement(Menu, { ...rest, morph: morph ?? barMorph },
88
+ React.createElement(MenuMorphTrigger, { className: styles.trigger, disabled: disabled }, label),
79
89
  React.createElement(MenuPopup, { ...popupProps }, children)));
80
90
  }
81
91
  //# sourceMappingURL=Menubar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menubar.js","sourceRoot":"","sources":["../../src/overlays/menubar/Menubar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menubar.js","sourceRoot":"","sources":["../../src/overlays/menubar/Menubar.tsx"],"names":[],"mappings":"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"}