@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.
- package/LICENSE +21 -0
- package/Readme.md +51 -27
- package/actions/button/Button.d.ts.map +1 -1
- package/actions/button/Button.js +13 -1
- package/actions/button/Button.js.map +1 -1
- package/actions/button/button.module.css +85 -25
- package/actions/chip/Chip.d.ts +2 -2
- package/actions/chip/Chip.js +2 -2
- package/actions/chip/chip.module.css +12 -18
- package/actions/link/Link.d.ts +1 -1
- package/actions/link/link.module.css +22 -19
- package/actions/toggle/Toggle.js +1 -1
- package/actions/toggle/toggle.module.css +27 -23
- package/content/card/card.module.css +27 -27
- package/content/card-grid/CardGrid.js +1 -1
- package/content/card-grid/card-grid.module.css +3 -3
- package/content/carousel/Carousel.d.ts.map +1 -1
- package/content/carousel/Carousel.js +1 -4
- package/content/carousel/Carousel.js.map +1 -1
- package/content/carousel/carousel.module.css +19 -9
- package/content/code-block/CodeActionsMenu.d.ts +34 -0
- package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
- package/content/code-block/CodeActionsMenu.js +102 -0
- package/content/code-block/CodeActionsMenu.js.map +1 -0
- package/content/code-block/CodeBlock.d.ts +37 -0
- package/content/code-block/CodeBlock.d.ts.map +1 -0
- package/content/code-block/CodeBlock.js +30 -0
- package/content/code-block/CodeBlock.js.map +1 -0
- package/content/code-block/CodeBlockFrame.d.ts +54 -0
- package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
- package/content/code-block/CodeBlockFrame.js +80 -0
- package/content/code-block/CodeBlockFrame.js.map +1 -0
- package/content/code-block/CodeBlockHeader.d.ts +26 -0
- package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
- package/content/code-block/CodeBlockHeader.js +16 -0
- package/content/code-block/CodeBlockHeader.js.map +1 -0
- package/content/code-block/CodeBlockLazy.d.ts +11 -0
- package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
- package/content/code-block/CodeBlockLazy.js +14 -0
- package/content/code-block/CodeBlockLazy.js.map +1 -0
- package/content/code-block/CodeBlockLoading.d.ts +31 -0
- package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
- package/content/code-block/CodeBlockLoading.js +90 -0
- package/content/code-block/CodeBlockLoading.js.map +1 -0
- package/content/code-block/CodeBlockSection.d.ts +40 -0
- package/content/code-block/CodeBlockSection.d.ts.map +1 -0
- package/content/code-block/CodeBlockSection.js +105 -0
- package/content/code-block/CodeBlockSection.js.map +1 -0
- package/content/code-block/CodeBlockToasts.d.ts +26 -0
- package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
- package/content/code-block/CodeBlockToasts.js +88 -0
- package/content/code-block/CodeBlockToasts.js.map +1 -0
- package/content/code-block/code-block.module.css +949 -0
- package/content/code-block/index.d.ts +4 -0
- package/content/code-block/index.d.ts.map +1 -0
- package/content/code-block/index.js +4 -0
- package/content/code-block/index.js.map +1 -0
- package/content/demo/DemoContent.d.ts +32 -0
- package/content/demo/DemoContent.d.ts.map +1 -0
- package/content/demo/DemoContent.js +87 -0
- package/content/demo/DemoContent.js.map +1 -0
- package/content/demo/DemoFrame.d.ts +6 -0
- package/content/demo/DemoFrame.d.ts.map +1 -0
- package/content/demo/DemoFrame.js +17 -0
- package/content/demo/DemoFrame.js.map +1 -0
- package/content/demo/DemoLazy.d.ts +11 -0
- package/content/demo/DemoLazy.d.ts.map +1 -0
- package/content/demo/DemoLazy.js +14 -0
- package/content/demo/DemoLazy.js.map +1 -0
- package/content/demo/DemoLoading.d.ts +23 -0
- package/content/demo/DemoLoading.d.ts.map +1 -0
- package/content/demo/DemoLoading.js +26 -0
- package/content/demo/DemoLoading.js.map +1 -0
- package/content/demo/demo.module.css +163 -0
- package/content/demo/index.d.ts +4 -0
- package/content/demo/index.d.ts.map +1 -0
- package/content/demo/index.js +4 -0
- package/content/demo/index.js.map +1 -0
- package/content/empty-state/EmptyState.d.ts +1 -1
- package/content/empty-state/EmptyState.js +1 -1
- package/content/empty-state/empty-state.module.css +11 -11
- package/content/feature-grid/feature-grid.module.css +22 -22
- package/content/index-rows/IndexRows.d.ts +2 -2
- package/content/index-rows/IndexRows.d.ts.map +1 -1
- package/content/index-rows/IndexRows.js +1 -1
- package/content/index-rows/index-rows.module.css +29 -29
- package/content/pricing/Pricing.d.ts +4 -4
- package/content/pricing/Pricing.d.ts.map +1 -1
- package/content/pricing/Pricing.js +4 -4
- package/content/pricing/Pricing.js.map +1 -1
- package/content/pricing/pricing.module.css +22 -22
- package/content/profile/Profile.d.ts +1 -1
- package/content/profile/Profile.js +2 -2
- package/content/profile/profile.module.css +13 -13
- package/content/quote/Quote.d.ts +1 -1
- package/content/quote/quote.module.css +9 -9
- package/content/timeline/Timeline.d.ts +1 -1
- package/content/timeline/Timeline.d.ts.map +1 -1
- package/content/timeline/Timeline.js +5 -5
- package/content/timeline/Timeline.js.map +1 -1
- package/content/timeline/timeline.module.css +12 -12
- package/content/types-table/TypePre.d.ts +11 -0
- package/content/types-table/TypePre.d.ts.map +1 -0
- package/content/types-table/TypePre.js +13 -0
- package/content/types-table/TypePre.js.map +1 -0
- package/content/types-table/TypesTable.d.ts +22 -0
- package/content/types-table/TypesTable.d.ts.map +1 -0
- package/content/types-table/TypesTable.js +124 -0
- package/content/types-table/TypesTable.js.map +1 -0
- package/content/types-table/index.d.ts +3 -0
- package/content/types-table/index.d.ts.map +1 -0
- package/content/types-table/index.js +3 -0
- package/content/types-table/index.js.map +1 -0
- package/content/types-table/types-table.module.css +160 -0
- package/data/chart/Chart.d.ts +8 -1
- package/data/chart/Chart.d.ts.map +1 -1
- package/data/chart/Chart.js +28 -15
- package/data/chart/Chart.js.map +1 -1
- package/data/chart/chart.module.css +20 -6
- package/data/figure/Figure.d.ts +1 -1
- package/data/figure/Figure.js +1 -1
- package/data/figure/figure.module.css +7 -7
- package/data/map/Map.d.ts +3 -3
- package/data/map/Map.d.ts.map +1 -1
- package/data/map/Map.js +10 -8
- package/data/map/Map.js.map +1 -1
- package/data/map/MapCanvas.d.ts.map +1 -1
- package/data/map/MapCanvas.js +5 -9
- package/data/map/MapCanvas.js.map +1 -1
- package/data/map/map.module.css +39 -14
- package/data/map/mapStyle.d.ts +2 -2
- package/data/map/mapStyle.d.ts.map +1 -1
- package/data/map/mapStyle.js +5 -5
- package/data/map/mapStyle.js.map +1 -1
- package/data/scroll-area/ScrollArea.d.ts.map +1 -1
- package/data/scroll-area/ScrollArea.js +8 -4
- package/data/scroll-area/ScrollArea.js.map +1 -1
- package/data/scroll-area/scroll-area.module.css +28 -9
- package/data/spec-grid/spec-grid.module.css +8 -8
- package/data/spec-list/spec-list.module.css +3 -3
- package/data/spec-sheet/SpecSheet.d.ts +2 -2
- package/data/spec-sheet/SpecSheet.js +1 -1
- package/data/spec-sheet/spec-sheet.module.css +9 -9
- package/data/stat/Stat.d.ts +1 -1
- package/data/stat/Stat.d.ts.map +1 -1
- package/data/stat/stat.module.css +4 -4
- package/data/table/Table.d.ts +6 -5
- package/data/table/Table.d.ts.map +1 -1
- package/data/table/Table.js.map +1 -1
- package/data/table/table.module.css +43 -46
- package/disclosure/accordion/Accordion.d.ts +1 -1
- package/disclosure/accordion/Accordion.js +1 -1
- package/disclosure/accordion/accordion.module.css +12 -12
- package/disclosure/collapsible/Collapsible.d.ts +4 -4
- package/disclosure/collapsible/Collapsible.js +4 -4
- package/disclosure/collapsible/collapsible.module.css +10 -10
- package/disclosure/faq/FAQ.d.ts +3 -3
- package/disclosure/faq/FAQ.d.ts.map +1 -1
- package/disclosure/faq/FAQ.js +3 -3
- package/disclosure/faq/FAQ.js.map +1 -1
- package/disclosure/faq/faq.module.css +20 -20
- package/feedback/alert/alert.module.css +4 -4
- package/feedback/avatar/avatar-group.module.css +2 -2
- package/feedback/avatar/avatar.module.css +9 -9
- package/feedback/badge/Badge.d.ts +1 -1
- package/feedback/badge/badge.module.css +7 -7
- package/feedback/meter/Meter.d.ts +2 -2
- package/feedback/meter/meter.module.css +14 -14
- package/feedback/progress/Progress.d.ts +1 -1
- package/feedback/progress/progress.module.css +7 -7
- package/feedback/tag/tag.module.css +7 -7
- package/feedback/toast/Toast.d.ts +3 -3
- package/feedback/toast/Toast.d.ts.map +1 -1
- package/feedback/toast/Toast.js +17 -7
- package/feedback/toast/Toast.js.map +1 -1
- package/feedback/toast/toast.module.css +31 -20
- package/forms/autocomplete/Autocomplete.d.ts +11 -0
- package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
- package/forms/autocomplete/Autocomplete.js +27 -6
- package/forms/autocomplete/Autocomplete.js.map +1 -1
- package/forms/autocomplete/autocomplete.module.css +35 -41
- package/forms/checkbox/Checkbox.js +1 -1
- package/forms/checkbox/checkbox.module.css +29 -25
- package/forms/checkbox-group/checkbox-group.module.css +4 -4
- package/forms/combobox/Combobox.d.ts +10 -0
- package/forms/combobox/Combobox.d.ts.map +1 -1
- package/forms/combobox/Combobox.js +28 -7
- package/forms/combobox/Combobox.js.map +1 -1
- package/forms/combobox/combobox.module.css +34 -41
- package/forms/field/field.module.css +1 -1
- package/forms/fieldset/Fieldset.d.ts +1 -1
- package/forms/fieldset/Fieldset.js +2 -2
- package/forms/fieldset/fieldset.module.css +14 -14
- package/forms/form/form.module.css +2 -2
- package/forms/input/Input.d.ts +10 -3
- package/forms/input/Input.d.ts.map +1 -1
- package/forms/input/Input.js +10 -4
- package/forms/input/Input.js.map +1 -1
- package/forms/input/input.module.css +38 -21
- package/forms/number-field/number-field.module.css +24 -23
- package/forms/radio/Radio.d.ts +1 -1
- package/forms/radio/Radio.d.ts.map +1 -1
- package/forms/radio/Radio.js +5 -3
- package/forms/radio/Radio.js.map +1 -1
- package/forms/radio/radio.module.css +38 -30
- package/forms/radio-group/RadioGroup.d.ts +1 -1
- package/forms/radio-group/radio-group.module.css +3 -3
- package/forms/search/Search.d.ts +10 -0
- package/forms/search/Search.d.ts.map +1 -1
- package/forms/search/Search.js +25 -6
- package/forms/search/Search.js.map +1 -1
- package/forms/search/search.module.css +25 -33
- package/forms/select/Select.d.ts +10 -2
- package/forms/select/Select.d.ts.map +1 -1
- package/forms/select/Select.js +27 -12
- package/forms/select/Select.js.map +1 -1
- package/forms/select/select.module.css +42 -48
- package/forms/slider/Slider.js +2 -2
- package/forms/slider/slider.module.css +23 -23
- package/forms/switch/Switch.js +1 -1
- package/forms/switch/switch.module.css +23 -19
- package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
- package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
- package/foundations/expanding-box/ExpandingBox.js +179 -0
- package/foundations/expanding-box/ExpandingBox.js.map +1 -0
- package/foundations/expanding-box/expanding-box.module.css +415 -0
- package/foundations/expanding-box/index.d.ts +3 -0
- package/foundations/expanding-box/index.d.ts.map +1 -0
- package/foundations/expanding-box/index.js +3 -0
- package/foundations/expanding-box/index.js.map +1 -0
- package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
- package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
- package/foundations/expanding-box/startExpandingTransition.js +82 -0
- package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
- package/foundations/ground/Ground.d.ts +1 -1
- package/foundations/ground/ground.module.css +4 -4
- package/foundations/icon/Icon.d.ts +1 -1
- package/foundations/icon/Icon.js +1 -1
- package/foundations/icon/icon.module.css +1 -1
- package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
- package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
- package/foundations/outline-morph/OutlineMorph.js +83 -0
- package/foundations/outline-morph/OutlineMorph.js.map +1 -0
- package/foundations/outline-morph/index.d.ts +3 -0
- package/foundations/outline-morph/index.d.ts.map +1 -0
- package/foundations/outline-morph/index.js +3 -0
- package/foundations/outline-morph/index.js.map +1 -0
- package/foundations/outline-morph/morphEngine.d.ts +219 -0
- package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
- package/foundations/outline-morph/morphEngine.js +1331 -0
- package/foundations/outline-morph/morphEngine.js.map +1 -0
- package/foundations/outline-morph/outline-morph.module.css +113 -0
- package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
- package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
- package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
- package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
- package/foundations/separator/separator.module.css +10 -10
- package/foundations/sticker/Sticker.d.ts +4 -4
- package/foundations/sticker/Sticker.d.ts.map +1 -1
- package/foundations/sticker/Sticker.js +3 -3
- package/foundations/sticker/sticker.module.css +10 -10
- package/icons/paths.d.ts +1 -1
- package/icons/paths.d.ts.map +1 -1
- package/icons/paths.js +50 -0
- package/icons/paths.js.map +1 -1
- package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
- package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/navigation/breadcrumb/Breadcrumb.js +8 -8
- package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
- package/navigation/breadcrumb/breadcrumb.module.css +14 -14
- package/navigation/file-tabs/FileTabs.d.ts +169 -0
- package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
- package/navigation/file-tabs/FileTabs.js +253 -0
- package/navigation/file-tabs/FileTabs.js.map +1 -0
- package/navigation/file-tabs/file-tabs.module.css +868 -0
- package/navigation/file-tabs/index.d.ts +2 -0
- package/navigation/file-tabs/index.d.ts.map +1 -0
- package/navigation/file-tabs/index.js +2 -0
- package/navigation/file-tabs/index.js.map +1 -0
- package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
- package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
- package/navigation/nav-drawer/NavDrawer.js +94 -28
- package/navigation/nav-drawer/NavDrawer.js.map +1 -1
- package/navigation/nav-drawer/nav-drawer.module.css +78 -55
- package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
- package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
- package/navigation/navigation-bar/NavigationBar.js +40 -17
- package/navigation/navigation-bar/NavigationBar.js.map +1 -1
- package/navigation/navigation-bar/navigation-bar.module.css +58 -27
- package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
- package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
- package/navigation/navigation-menu/NavigationMenu.js +15 -15
- package/navigation/navigation-menu/navigation-menu.module.css +39 -53
- package/navigation/pagination/Pagination.js +1 -1
- package/navigation/pagination/pagination.module.css +24 -24
- package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
- package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
- package/navigation/sidebar-nav/SidebarNav.js +169 -0
- package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
- package/navigation/sidebar-nav/index.d.ts +2 -0
- package/navigation/sidebar-nav/index.d.ts.map +1 -0
- package/navigation/sidebar-nav/index.js +2 -0
- package/navigation/sidebar-nav/index.js.map +1 -0
- package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
- package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
- package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
- package/navigation/table-of-contents/TableOfContents.js +211 -0
- package/navigation/table-of-contents/TableOfContents.js.map +1 -0
- package/navigation/table-of-contents/index.d.ts +3 -0
- package/navigation/table-of-contents/index.d.ts.map +1 -0
- package/navigation/table-of-contents/index.js +3 -0
- package/navigation/table-of-contents/index.js.map +1 -0
- package/navigation/table-of-contents/table-of-contents.module.css +322 -0
- package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
- package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
- package/navigation/table-of-contents/useActiveHeading.js +111 -0
- package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
- package/navigation/tabs/Tabs.d.ts +2 -2
- package/navigation/tabs/Tabs.js +3 -3
- package/navigation/tabs/tabs.module.css +22 -19
- package/navigation/toolbar/Toolbar.d.ts +7 -1
- package/navigation/toolbar/Toolbar.d.ts.map +1 -1
- package/navigation/toolbar/Toolbar.js +3 -3
- package/navigation/toolbar/Toolbar.js.map +1 -1
- package/navigation/toolbar/toolbar.module.css +6 -6
- package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
- package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
- package/overlays/alert-dialog/AlertDialog.js +15 -5
- package/overlays/alert-dialog/AlertDialog.js.map +1 -1
- package/overlays/alert-dialog/alert-dialog.module.css +4 -4
- package/overlays/context-menu/ContextMenu.d.ts +1 -1
- package/overlays/context-menu/ContextMenu.js +1 -1
- package/overlays/dialog/Dialog.d.ts +26 -11
- package/overlays/dialog/Dialog.d.ts.map +1 -1
- package/overlays/dialog/Dialog.js +36 -17
- package/overlays/dialog/Dialog.js.map +1 -1
- package/overlays/dialog/dialog.module.css +32 -31
- package/overlays/dialog/morph.d.ts +17 -0
- package/overlays/dialog/morph.d.ts.map +1 -0
- package/overlays/dialog/morph.js +44 -0
- package/overlays/dialog/morph.js.map +1 -0
- package/overlays/menu/Menu.d.ts +18 -7
- package/overlays/menu/Menu.d.ts.map +1 -1
- package/overlays/menu/Menu.js +35 -12
- package/overlays/menu/Menu.js.map +1 -1
- package/overlays/menu/menu.module.css +26 -50
- package/overlays/menu/morph.d.ts +16 -0
- package/overlays/menu/morph.d.ts.map +1 -0
- package/overlays/menu/morph.js +36 -0
- package/overlays/menu/morph.js.map +1 -0
- package/overlays/menu/popup.d.ts +2 -0
- package/overlays/menu/popup.d.ts.map +1 -1
- package/overlays/menu/popup.js +11 -3
- package/overlays/menu/popup.js.map +1 -1
- package/overlays/menubar/Menubar.d.ts +10 -1
- package/overlays/menubar/Menubar.d.ts.map +1 -1
- package/overlays/menubar/Menubar.js +22 -12
- package/overlays/menubar/Menubar.js.map +1 -1
- package/overlays/menubar/menubar.module.css +13 -13
- package/overlays/popover/Popover.d.ts +22 -8
- package/overlays/popover/Popover.d.ts.map +1 -1
- package/overlays/popover/Popover.js +51 -16
- package/overlays/popover/Popover.js.map +1 -1
- package/overlays/popover/popover.module.css +73 -47
- package/overlays/preview-card/PreviewCard.d.ts +3 -3
- package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
- package/overlays/preview-card/PreviewCard.js +5 -6
- package/overlays/preview-card/PreviewCard.js.map +1 -1
- package/overlays/preview-card/preview-card.module.css +19 -54
- package/overlays/search-dialog/SearchDialog.d.ts +89 -0
- package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialog.js +220 -0
- package/overlays/search-dialog/SearchDialog.js.map +1 -0
- package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
- package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialogPopup.js +80 -0
- package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
- package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
- package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
- package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
- package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
- package/overlays/search-dialog/index.d.ts +3 -0
- package/overlays/search-dialog/index.d.ts.map +1 -0
- package/overlays/search-dialog/index.js +3 -0
- package/overlays/search-dialog/index.js.map +1 -0
- package/overlays/search-dialog/search-dialog.module.css +492 -0
- package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
- package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
- package/overlays/search-dialog/useShortcutLabel.js +19 -0
- package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
- package/overlays/search-dialog/variants.d.ts +25 -0
- package/overlays/search-dialog/variants.d.ts.map +1 -0
- package/overlays/search-dialog/variants.js +31 -0
- package/overlays/search-dialog/variants.js.map +1 -0
- package/overlays/tooltip/Tooltip.d.ts +3 -3
- package/overlays/tooltip/Tooltip.d.ts.map +1 -1
- package/overlays/tooltip/Tooltip.js +3 -3
- package/overlays/tooltip/Tooltip.js.map +1 -1
- package/overlays/tooltip/tooltip.module.css +2 -2
- package/package.json +27 -19
- package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
- package/page/announcement-bar/AnnouncementBar.js +4 -4
- package/page/announcement-bar/AnnouncementBar.js.map +1 -1
- package/page/announcement-bar/announcement-bar.module.css +11 -17
- package/page/cta-block/CTABlock.d.ts +5 -5
- package/page/cta-block/CTABlock.d.ts.map +1 -1
- package/page/cta-block/CTABlock.js +2 -2
- package/page/cta-block/cta-block.module.css +26 -26
- package/page/docs-layout/DocsLayout.d.ts +83 -0
- package/page/docs-layout/DocsLayout.d.ts.map +1 -0
- package/page/docs-layout/DocsLayout.js +108 -0
- package/page/docs-layout/DocsLayout.js.map +1 -0
- package/page/docs-layout/docs-layout.module.css +266 -0
- package/page/docs-layout/index.d.ts +2 -0
- package/page/docs-layout/index.d.ts.map +1 -0
- package/page/docs-layout/index.js +2 -0
- package/page/docs-layout/index.js.map +1 -0
- package/page/footer/Footer.d.ts +1 -1
- package/page/footer/Footer.js +1 -1
- package/page/footer/footer.module.css +31 -31
- package/page/hero/Hero.d.ts +3 -3
- package/page/hero/Hero.d.ts.map +1 -1
- package/page/hero/Hero.js +1 -1
- package/page/hero/hero.module.css +36 -36
- package/page/marquee/Marquee.d.ts +2 -2
- package/page/marquee/Marquee.js +1 -1
- package/page/marquee/marquee.module.css +11 -11
- package/page/newsletter/Newsletter.d.ts.map +1 -1
- package/page/newsletter/Newsletter.js +4 -59
- package/page/newsletter/Newsletter.js.map +1 -1
- package/page/newsletter/newsletter.module.css +44 -22
- package/page/section-bar/SectionBar.d.ts +10 -3
- package/page/section-bar/SectionBar.d.ts.map +1 -1
- package/page/section-bar/SectionBar.js +21 -11
- package/page/section-bar/SectionBar.js.map +1 -1
- package/page/section-bar/section-bar.module.css +43 -46
- package/page/section-divider/SectionDivider.d.ts +2 -2
- package/page/section-divider/SectionDivider.js +4 -4
- package/page/section-divider/SectionDivider.js.map +1 -1
- package/page/section-divider/section-divider.module.css +18 -18
- package/page/section-header/SectionHeader.d.ts +7 -7
- package/page/section-header/SectionHeader.d.ts.map +1 -1
- package/page/section-header/SectionHeader.js +3 -3
- package/page/section-header/SectionHeader.js.map +1 -1
- package/page/section-header/section-header.module.css +16 -16
- package/utils/Ornament.d.ts +1 -1
- package/utils/Ornament.js +2 -2
- package/utils/assignRef.d.ts +7 -1
- package/utils/assignRef.d.ts.map +1 -1
- package/utils/assignRef.js +18 -0
- package/utils/assignRef.js.map +1 -1
- package/utils/docs/DemoTitle.d.ts +12 -0
- package/utils/docs/DemoTitle.d.ts.map +1 -0
- package/utils/docs/DemoTitle.js +11 -0
- package/utils/docs/DemoTitle.js.map +1 -0
- package/utils/docs/Pre.d.ts +39 -0
- package/utils/docs/Pre.d.ts.map +1 -0
- package/utils/docs/Pre.js +26 -0
- package/utils/docs/Pre.js.map +1 -0
- package/utils/docs/createDemo.d.ts +89 -0
- package/utils/docs/createDemo.d.ts.map +1 -0
- package/utils/docs/createDemo.js +51 -0
- package/utils/docs/createDemo.js.map +1 -0
- package/utils/docs/createMdxComponents.d.ts +52 -0
- package/utils/docs/createMdxComponents.d.ts.map +1 -0
- package/utils/docs/createMdxComponents.js +59 -0
- package/utils/docs/createMdxComponents.js.map +1 -0
- package/utils/docs/createTypes.d.ts +23 -0
- package/utils/docs/createTypes.d.ts.map +1 -0
- package/utils/docs/createTypes.js +27 -0
- package/utils/docs/createTypes.js.map +1 -0
- package/utils/docs/index.d.ts +8 -0
- package/utils/docs/index.d.ts.map +1 -0
- package/utils/docs/index.js +16 -0
- package/utils/docs/index.js.map +1 -0
- package/utils/docs/mdx.module.css +201 -0
- package/utils/docs/serverSourceEnhancers.d.ts +26 -0
- package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
- package/utils/docs/serverSourceEnhancers.js +32 -0
- package/utils/docs/serverSourceEnhancers.js.map +1 -0
- package/utils/docs/toSidebarItems.d.ts +23 -0
- package/utils/docs/toSidebarItems.d.ts.map +1 -0
- package/utils/docs/toSidebarItems.js +36 -0
- package/utils/docs/toSidebarItems.js.map +1 -0
- package/utils/font-fallbacks.css +176 -0
- package/utils/fonts.d.ts +1 -0
- package/utils/fonts.d.ts.map +1 -1
- package/utils/fonts.js +12 -0
- package/utils/fonts.js.map +1 -1
- package/utils/frame.d.ts +4 -0
- package/utils/frame.d.ts.map +1 -0
- package/utils/frame.js +11 -0
- package/utils/frame.js.map +1 -0
- package/utils/global.css +480 -266
- package/utils/line.module.css +17 -17
- package/utils/media.css +1 -1
- package/utils/ornament.module.css +19 -19
- package/utils/overlay.d.ts +4 -4
- package/utils/overlay.js +4 -4
- package/utils/pattern.module.css +45 -45
- package/utils/print.css +48 -34
- package/utils/reset.css +9 -2
- package/utils/roles.css +29 -29
- package/utils/seriesPatterns.js +3 -3
- package/utils/syntax.module.css +92 -0
- package/utils/theme.css +6 -6
- package/utils/tokens.css +262 -192
- package/utils/tokens.d.ts +51 -8
- package/utils/tokens.d.ts.map +1 -1
- package/utils/tokens.js +46 -9
- package/utils/tokens.js.map +1 -1
- package/utils/type.module.css +87 -87
- package/utils/useReleaseMark.d.ts +13 -0
- package/utils/useReleaseMark.d.ts.map +1 -0
- package/utils/useReleaseMark.js +44 -0
- package/utils/useReleaseMark.js.map +1 -0
- package/utils/view-transitions.css +122 -0
package/overlays/menu/Menu.js
CHANGED
|
@@ -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 --
|
|
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
|
-
*
|
|
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
|
-
|
|
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(
|
|
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, --
|
|
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
|
|
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): --
|
|
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(
|
|
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":"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,MAAM,EAAoB,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAiB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,SAAS,CAAA;AAC7D,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAuB,MAAM,SAAS,CAAA;AAEnD
|
|
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], --
|
|
11
|
-
* The list highlight is --primary4 plus a --
|
|
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
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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-
|
|
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(--
|
|
47
|
-
calc(100vw - 2 * var(--
|
|
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(--
|
|
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(--
|
|
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: --
|
|
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(--
|
|
68
|
-
padding-inline: var(--
|
|
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(--
|
|
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(--
|
|
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(--
|
|
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
|
-
/*
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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"}
|
package/overlays/menu/popup.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/overlays/menu/popup.js
CHANGED
|
@@ -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
|
|
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): --
|
|
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,
|
|
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 --
|
|
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): --
|
|
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 })) },
|
|
60
|
-
React.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
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(
|
|
78
|
-
React.createElement(
|
|
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":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Menubar.js","sourceRoot":"","sources":["../../src/overlays/menubar/Menubar.tsx"],"names":[],"mappings":"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"}
|