@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
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Tabs as BaseTabs } from '@base-ui/react/tabs';
|
|
3
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
4
|
+
import { type PrimaryScale, type RadixScale } from '../../utils/scales';
|
|
5
|
+
export declare const fileTabs: (props?: ({
|
|
6
|
+
primary?: "ruby" | "brown" | "crimson" | "gold" | "gray" | "indigo" | "olive" | "pink" | "plum" | "purple" | "red" | "tomato" | "violet" | "bronze" | "iris" | "mauve" | "sage" | "sand" | "slate" | null | undefined;
|
|
7
|
+
secondary?: "ruby" | "blue" | "brown" | "crimson" | "cyan" | "gold" | "gray" | "green" | "indigo" | "lime" | "olive" | "orange" | "pink" | "plum" | "purple" | "red" | "teal" | "tomato" | "violet" | "yellow" | "amber" | "bronze" | "grass" | "iris" | "jade" | "mauve" | "mint" | "sage" | "sand" | "sky" | "slate" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
/** Where the header sits on its host: see `FileTabsProps['frame']`. */
|
|
10
|
+
export type FileTabsFrame = 'top' | 'joined' | 'none';
|
|
11
|
+
/** One tab: a document in the package. */
|
|
12
|
+
export type FileTab = {
|
|
13
|
+
/** The tab's value, unique within `tabs`. A code block passes the file name. */
|
|
14
|
+
id: string;
|
|
15
|
+
/** The label: the document's short title (a file name in a code block). UI face at the caption size, not caps; mono with `mono`. */
|
|
16
|
+
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* Deep-link slug. The tab renders as `<a href="#slug">` (`nativeButton={false}`).
|
|
19
|
+
* A plain click selects the tab and `preventDefault()`s the anchor, so the page
|
|
20
|
+
* doesn't jump and the hash isn't written. A modifier click (Ctrl, Cmd, Alt or
|
|
21
|
+
* Shift) opens the link and leaves the selection alone.
|
|
22
|
+
*/
|
|
23
|
+
slug?: string;
|
|
24
|
+
};
|
|
25
|
+
/** Props for FileTabs: Base UI Tabs Root props (without its value props and `orientation`) plus the documents, the header's frame, controls, status and label face, and the color axes. */
|
|
26
|
+
export type FileTabsProps = Omit<BaseTabs.Root.Props, 'value' | 'defaultValue' | 'onValueChange' | 'orientation'> & {
|
|
27
|
+
tabs: readonly FileTab[];
|
|
28
|
+
/** Controlled: the selected tab's `id`. `undefined`, or an id not in `tabs`, selects the first tab. */
|
|
29
|
+
value?: string;
|
|
30
|
+
/** Uncontrolled initial `id`. Default: the first tab. */
|
|
31
|
+
defaultValue?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Called on user selection only. Not called for a modifier activation, which
|
|
34
|
+
* `eventDetails.cancel()`s. The modifiers are read from `eventDetails.event`
|
|
35
|
+
* (Base UI 1.8), so this covers the keyboard as well as the pointer.
|
|
36
|
+
*/
|
|
37
|
+
onValueChange?: (id: string) => void;
|
|
38
|
+
/** Disables every tab: `--role-muted` label plus a `line-dotted-fine` underline, no opacity. Default `false`. */
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Labels in mono (`type-data`, §3.11) instead of the UI face: for file
|
|
42
|
+
* names, e.g. code. Mono labels are left to right (`dir="ltr"`) on any
|
|
43
|
+
* page, since file names are, while the tabs and header still mirror in
|
|
44
|
+
* RTL. Code Block and Demo set it. Default `false`.
|
|
45
|
+
*/
|
|
46
|
+
mono?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Where the header sits. Its host is the bordered box it opens: a
|
|
49
|
+
* `--border-size-1` edge, no padding, a `--primary1` face and no clip,
|
|
50
|
+
* such as Code Block's frame, or the Root itself given a frame class.
|
|
51
|
+
* `'top'`: at the top of the host, whose top corners take
|
|
52
|
+
* `--radius-2-25` (a host with another radius sets `--file-tabs-host-radius`
|
|
53
|
+
* on the Root). The tab strip runs out over the host's side edges by
|
|
54
|
+
* their width, so an end tab's edge is the host's edge, its paper-tab
|
|
55
|
+
* corner leaving that line below the host's corner; the side edges are
|
|
56
|
+
* drawn again over the header from below the host's corner radius, so
|
|
57
|
+
* scrolled tabs and the ends of the strip's native scrollbar pass under
|
|
58
|
+
* them; a `FileTabsControl` hangs outside.
|
|
59
|
+
* `'joined'`: the same, in a part of the host below another (Demo's
|
|
60
|
+
* code); the header draws the `--role-rule` that joins the part above,
|
|
61
|
+
* and the side edges run from it. `'none'`: no host frame (tabs over
|
|
62
|
+
* their panel on the page); the strip stays inside the header, the end
|
|
63
|
+
* tabs show their own edges, and a `FileTabsControl` hangs past the
|
|
64
|
+
* header's own end. Default `'top'`.
|
|
65
|
+
*/
|
|
66
|
+
frame?: FileTabsFrame;
|
|
67
|
+
/**
|
|
68
|
+
* Controls at the header's end: a `FileTabsControl` (a Menu's ⋮ trigger)
|
|
69
|
+
* or a few small icon Buttons.
|
|
70
|
+
* - A `FileTabsControl` always hangs just outside the host's inline-end
|
|
71
|
+
* edge (past the header's own end with `frame="none"`) with zero layout
|
|
72
|
+
* width, whatever the tab count, so the tabs keep the whole header. Its
|
|
73
|
+
* hit area, `--fgd-size-hit`, extends outward into the gutter, never
|
|
74
|
+
* over the tabs. **The host must leave `--fgd-size-file-tabs-control`
|
|
75
|
+
* (24 px) free past its edge, unclipped** (or inside an
|
|
76
|
+
* `overflow-clip-margin`); where the page ends sooner, clip it sideways
|
|
77
|
+
* (`overflow-x: clip`) so the rest of the hit area can't scroll it.
|
|
78
|
+
* With no document (`tabs` empty) there is no header row at all: the ⋮
|
|
79
|
+
* hangs from the host's top-end corner.
|
|
80
|
+
* - Small icon Buttons (`variant="text"` icon-only `sm` Buttons) sit in
|
|
81
|
+
* the header, quiet at rest: their edge is drawn only while pointed at
|
|
82
|
+
* or focused. They sit beside the one document's label, which truncates
|
|
83
|
+
* to leave them room (the header never wraps); with several documents,
|
|
84
|
+
* in a `--fgd-size-hit` cell at the header's end with a `--role-rule`
|
|
85
|
+
* start edge, where the tabs end. The row is end-aligned: a control
|
|
86
|
+
* that joins after the first paint goes before the others (earlier in
|
|
87
|
+
* `controls`), so the ones already painted don't move.
|
|
88
|
+
* Hidden in print.
|
|
89
|
+
*/
|
|
90
|
+
controls?: React.ReactNode;
|
|
91
|
+
/**
|
|
92
|
+
* The busy "-ing…" label while something the header started is under way
|
|
93
|
+
* ("Switching to JS…", "Formatting…") [D84], laid over the header's end
|
|
94
|
+
* beside the controls: mono, `--role-muted`, on the `--primary1` face with
|
|
95
|
+
* a `--role-rule` start edge, so it never moves or narrows the tabs. Its
|
|
96
|
+
* element is a `role="status"` live region, rendered whenever `status`
|
|
97
|
+
* isn't `undefined`: pass `''` while idle, so it stays mounted and its
|
|
98
|
+
* changes are announced. Not for confirmations such as a copy: those are
|
|
99
|
+
* toasts (§10.17). Hidden in print.
|
|
100
|
+
*/
|
|
101
|
+
status?: React.ReactNode;
|
|
102
|
+
/** Primary scale: labels, rules, the tabs' faces (the recessed --primary3, the front --primary1), focus ring. Never defaulted [D133]. */
|
|
103
|
+
primary?: PrimaryScale;
|
|
104
|
+
/** Secondary scale: the hover underline (`--role-accent`). Never defaulted. */
|
|
105
|
+
secondary?: RadixScale;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* The root of a set of file tabs: it holds the selection and the header's
|
|
109
|
+
* `frame`, `controls`, `status` and `mono`, and wraps both the header
|
|
110
|
+
* (`FileTabsList`) and `FileTabsPanel`. Tabs with a `slug` are deep links:
|
|
111
|
+
* a plain click selects the document, a modifier click opens the link and
|
|
112
|
+
* leaves the selection.
|
|
113
|
+
*/
|
|
114
|
+
export declare function FileTabs(props: FileTabsProps): React.JSX.Element;
|
|
115
|
+
/** Props for FileTabsList: Base UI Tabs List props; the tabs, controls and status come from the Root. */
|
|
116
|
+
export type FileTabsListProps = Omit<BaseTabs.List.Props, 'children'> & {
|
|
117
|
+
/** The tablist's accessible name. Default `"Documents"` (Code Block passes `"Files"`). */
|
|
118
|
+
'aria-label'?: string;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* The header: one fixed 56 px row with its `--role-rule`, the folder tabs
|
|
122
|
+
* across its full width under 12 px of room, standing on the rule, and the
|
|
123
|
+
* Root's `status` and `controls` at its end. The labels take the UI face
|
|
124
|
+
* (mono with `mono`); the selected tab takes its panel's face and opens
|
|
125
|
+
* into it, the others recessed behind it with its neighbours tucked
|
|
126
|
+
* under it. When they overflow, their row scrolls sideways with its native
|
|
127
|
+
* scrollbar, which hangs just below the header (or overlays the strip's
|
|
128
|
+
* foot, where scrollbars overlay), so the tabs never lift off the rule.
|
|
129
|
+
* With one tab it shows that name as a label (no tablist), truncated with
|
|
130
|
+
* an ellipsis where the controls need its room; with none, the controls
|
|
131
|
+
* and status (a `FileTabsControl` alone hangs, with no header row), or
|
|
132
|
+
* nothing. Its own props (`aria-label`, `className` …) go to the tablist,
|
|
133
|
+
* or to the one document's label.
|
|
134
|
+
*/
|
|
135
|
+
export declare function FileTabsList(props: FileTabsListProps): React.JSX.Element | null;
|
|
136
|
+
/** Props for FileTabsControl: button props plus `render`. Name it with `aria-label`. */
|
|
137
|
+
export type FileTabsControlProps = Omit<useRender.ComponentProps<'button'>, 'className'> & {
|
|
138
|
+
className?: string;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* One header control for the Root's `controls`: a `<button>` holding an
|
|
142
|
+
* icon (an `Icon` with `weight="interactive"` takes its hover weight here;
|
|
143
|
+
* the ⋮ is `more_vert` at the tag tier, `size="tag"`, 20 px).
|
|
144
|
+
* It always hangs outside the host's inline-end edge: an ear `--size-px-4`
|
|
145
|
+
* wide from the host's edge line, from the host's top edge to the header
|
|
146
|
+
* rule's foot, with its `--fgd-size-hit` hit area past that edge and none
|
|
147
|
+
* over the tabs; the host leaves `--fgd-size-file-tabs-control` free there.
|
|
148
|
+
* Hovered or focused, the ear shows at once, drawn in `--primary12` on the
|
|
149
|
+
* `--role-soft-hover` fill (at the top of a rounded host, wrapping the
|
|
150
|
+
* host's top-end corner, so the outline runs unbroken round both); while its popup is open (`aria-expanded="true"`;
|
|
151
|
+
* a tooltip's `data-popup-open` changes nothing), on the `--primary1` face.
|
|
152
|
+
* As a Menu's trigger:
|
|
153
|
+
* `<Menu.Trigger render={<FileTabsControl />} aria-label="More actions">`.
|
|
154
|
+
* Or as a lone action, where it is the only one (Code Block's nameless
|
|
155
|
+
* snippet hangs its copy, `content_copy` at the tag tier): name it with
|
|
156
|
+
* `aria-label`, pair it with a Tooltip, and give it an `onClick`.
|
|
157
|
+
*/
|
|
158
|
+
export declare function FileTabsControl(props: FileTabsControlProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
159
|
+
/** Props for FileTabsPanel: Base UI Tabs Panel props; its value is the selected tab's. */
|
|
160
|
+
export type FileTabsPanelProps = Omit<BaseTabs.Panel.Props, 'value'>;
|
|
161
|
+
/**
|
|
162
|
+
* The panel for the selected tab: `role="tabpanel"`, labelled by the selected
|
|
163
|
+
* tab, which `aria-controls` it. Its element stays the same across selections,
|
|
164
|
+
* so the content inside is never remounted; empty hidden panels stand in for
|
|
165
|
+
* the other tabs, so every tab's `aria-controls` resolves. With fewer than
|
|
166
|
+
* two tabs it renders a plain `div` (there is no tablist to pair with).
|
|
167
|
+
*/
|
|
168
|
+
export declare function FileTabsPanel(props: FileTabsPanelProps): React.JSX.Element;
|
|
169
|
+
//# sourceMappingURL=FileTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileTabs.d.ts","sourceRoot":"","sources":["../../src/navigation/file-tabs/FileTabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAA;AA4D3B,eAAO,MAAM,QAAQ;;;8EAMnB,CAAA;AAgBF,uEAAuE;AACvE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAErD,0CAA0C;AAC1C,MAAM,MAAM,OAAO,GAAG;IACpB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,oIAAoI;IACpI,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,2LAA2L;AAC3L,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,EACnB,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAC3D,GAAG;IACF,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;IACxB,uGAAuG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,iHAAiH;IACjH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,yIAAyI;IACzI,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,UAAU,CAAA;CACvB,CAAA;AAwCD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,qBAsD5C;AAED,yGAAyG;AACzG,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;IACtE,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,4BAoEpD;AAyCD,wFAAwF;AACxF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,GAAG;IACzF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,0EAU1D;AAED,0FAA0F;AAC1F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AASpE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAiCtD"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { mergeProps } from '@base-ui/react/merge-props';
|
|
4
|
+
import { Tabs as BaseTabs } from '@base-ui/react/tabs';
|
|
5
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import { cx, resolveClassName } from '../../utils/className';
|
|
8
|
+
import { primaryScaleVariants, secondaryScaleVariants, } from '../../utils/scales';
|
|
9
|
+
import { useScopeAttributes } from '../../utils/scope';
|
|
10
|
+
import styles from './file-tabs.module.css';
|
|
11
|
+
/*
|
|
12
|
+
* File tabs: paper-style folder tabs over a package of static documents
|
|
13
|
+
* kept together (a grant packet, a lease, a year of minutes), each tab a
|
|
14
|
+
* standalone document sharing one panel, with optional controls and a busy
|
|
15
|
+
* status at the header's end. Tabs (§9.5) switch views or sections of one
|
|
16
|
+
* thing; these take any number of documents, can be deep links, and label
|
|
17
|
+
* them in the UI face (`mono` for file names). Code Block and Demo render
|
|
18
|
+
* their headers through it for code files, with `mono`. It is
|
|
19
|
+
* presentational and needs no docs engine.
|
|
20
|
+
*
|
|
21
|
+
* Implementation (CSS Modules + CVA)
|
|
22
|
+
* - Module: file-tabs.module.css; CVA functions `fileTabs` (the Root) and
|
|
23
|
+
* `fileTabsHeader` (the header FileTabsList renders, internal).
|
|
24
|
+
* - Axes: `primary`, `secondary` → scales module classes (Root); `frame`
|
|
25
|
+
* (`top` | `joined` | `none`) → frameTop, frameJoined, frameNone (header).
|
|
26
|
+
* - Compound variants: none.
|
|
27
|
+
* - Defaults: frame `top`; color axes are never defaulted [D133].
|
|
28
|
+
* - Color fallback: inherits the scope.
|
|
29
|
+
* - States: at rest a tab is recessed paper, --primary3 in a --role-rule
|
|
30
|
+
* edge, standing on the header's rule; the selected tab (`data-active`)
|
|
31
|
+
* → the front sheet: its panel's own face (the host's --primary1; the
|
|
32
|
+
* ground with `frame="none"`) in the same edge with --radius-2-75 top
|
|
33
|
+
* radii (the paper-tab radius, as the first and last tabs' outer
|
|
34
|
+
* corners), open at its foot into the panel with no rule between, a
|
|
35
|
+
* --primary12 label at --font-weight-7 (weight and the joined edge carry
|
|
36
|
+
* the state, not color alone), its neighbours tucked under it; `:active`
|
|
37
|
+
* on it → the radii grow (motion OK only); `:hover` on the others → the
|
|
38
|
+
* bare-text underline (--role-accent at --border-size-2, offset
|
|
39
|
+
* --size-px-1) [D181]; `:active` on the others → a --border-size-2
|
|
40
|
+
* --primary12 line under the label; `:focus-visible` → the ring inside
|
|
41
|
+
* the hit area; `data-disabled` → --role-muted label and a
|
|
42
|
+
* `line-dotted-fine` underline, the selected tab keeping its face and
|
|
43
|
+
* shape [D16, D85]. The header: one fixed 56 px row that never wraps (a
|
|
44
|
+
* lone label truncates); `data-tablist` (two or more documents) → the
|
|
45
|
+
* bar leaves the flow and the tablist becomes the tabs' native scroll
|
|
46
|
+
* row (and small controls' cell takes a --role-rule start edge);
|
|
47
|
+
* `data-labelless` (no document) with a FileTabsControl → no header row.
|
|
48
|
+
* A FileTabsControl in `controls` → the header's end always hangs outside
|
|
49
|
+
* the host's inline-end edge (CSS `:has()`, nothing measured).
|
|
50
|
+
* FileTabsControl: `:hover` / `:focus-visible` → at once, the ear drawn
|
|
51
|
+
* in --primary12 on the --role-soft-hover fill [D181];
|
|
52
|
+
* `aria-expanded="true"` (its menu open; never its tooltip's
|
|
53
|
+
* `data-popup-open`) → the ear on the --primary1 face; disabled →
|
|
54
|
+
* --role-muted. Small icon Buttons in `controls` (`text` icon-only) →
|
|
55
|
+
* quiet at rest; `:hover` / `:focus-visible` → at once, their circle
|
|
56
|
+
* drawn in --primary12 at --border-size-1 on the --role-soft-hover fill.
|
|
57
|
+
* - Parts: base, header, bar (the row inside it, which draws the host's
|
|
58
|
+
* side edges), lead (the tabs or the one document's label), list (the
|
|
59
|
+
* tabs' native scroll row), tab, label, edge / edgeLine (the disabled
|
|
60
|
+
* underline), single (the lone document's label), side (the header's end),
|
|
61
|
+
* status, controls (their cell), control (FileTabsControl), panel.
|
|
62
|
+
* - Scope: none.
|
|
63
|
+
* - Container: none; the tabs scroll sideways in their native scroll row
|
|
64
|
+
* when they overflow. The host leaves --fgd-size-file-tabs-control free
|
|
65
|
+
* past its inline-end edge, unclipped, for the hanging ⋮.
|
|
66
|
+
*/
|
|
67
|
+
export const fileTabs = cva(styles.base, {
|
|
68
|
+
variants: {
|
|
69
|
+
// Color axes: never defaulted, so an omitted prop inherits the scope [D133].
|
|
70
|
+
primary: primaryScaleVariants,
|
|
71
|
+
secondary: secondaryScaleVariants,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
/** The header's CVA function (FileTabsList): where it sits on its host. */
|
|
75
|
+
const fileTabsHeader = cva(styles.header, {
|
|
76
|
+
variants: {
|
|
77
|
+
frame: {
|
|
78
|
+
top: styles.frameTop,
|
|
79
|
+
joined: styles.frameJoined,
|
|
80
|
+
none: styles.frameNone,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
defaultVariants: {
|
|
84
|
+
frame: 'top',
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
const FileTabsContext = React.createContext(null);
|
|
88
|
+
FileTabsContext.displayName = 'FileTabsContext';
|
|
89
|
+
function useFileTabsContext(part) {
|
|
90
|
+
const context = React.useContext(FileTabsContext);
|
|
91
|
+
if (context === null) {
|
|
92
|
+
throw new Error(`${part} must be placed inside FileTabs.`);
|
|
93
|
+
}
|
|
94
|
+
return context;
|
|
95
|
+
}
|
|
96
|
+
/** The modifiers that make an anchor open elsewhere (new tab, window or split) instead of selecting. */
|
|
97
|
+
function hasModifier(event) {
|
|
98
|
+
if (typeof event !== 'object' || event === null)
|
|
99
|
+
return false;
|
|
100
|
+
const keys = event;
|
|
101
|
+
return Boolean(keys.ctrlKey || keys.metaKey || keys.altKey || keys.shiftKey);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* A link tab's click: a plain click only selects, so the page doesn't jump
|
|
105
|
+
* and the hash isn't written; a modifier click keeps the browser's own
|
|
106
|
+
* handling (the selection change is canceled in the Root).
|
|
107
|
+
*/
|
|
108
|
+
function handleLinkClick(event) {
|
|
109
|
+
if (!hasModifier(event))
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The root of a set of file tabs: it holds the selection and the header's
|
|
114
|
+
* `frame`, `controls`, `status` and `mono`, and wraps both the header
|
|
115
|
+
* (`FileTabsList`) and `FileTabsPanel`. Tabs with a `slug` are deep links:
|
|
116
|
+
* a plain click selects the document, a modifier click opens the link and
|
|
117
|
+
* leaves the selection.
|
|
118
|
+
*/
|
|
119
|
+
export function FileTabs(props) {
|
|
120
|
+
const { tabs, value, defaultValue, onValueChange, disabled = false, mono = false, frame = 'top', controls, status, primary, secondary, className, ...rest } = props;
|
|
121
|
+
const scope = useScopeAttributes();
|
|
122
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
|
|
123
|
+
const requested = value !== undefined ? value : uncontrolled;
|
|
124
|
+
const selected = tabs.some((tab) => tab.id === requested) ? requested : tabs[0]?.id;
|
|
125
|
+
const handleValueChange = (next, details) => {
|
|
126
|
+
// Only user activations; Base UI's automatic fallbacks never reach a controlled root.
|
|
127
|
+
if (details.reason !== 'none')
|
|
128
|
+
return;
|
|
129
|
+
const tab = tabs.find((candidate) => candidate.id === next);
|
|
130
|
+
if (tab === undefined)
|
|
131
|
+
return;
|
|
132
|
+
// A modifier activation of a link (click, Enter or Space) opens the link instead.
|
|
133
|
+
if (tab.slug && hasModifier(details.event)) {
|
|
134
|
+
details.cancel();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
setUncontrolled(tab.id);
|
|
138
|
+
onValueChange?.(tab.id);
|
|
139
|
+
};
|
|
140
|
+
const context = React.useMemo(() => ({ tabs, selected, disabled, mono, frame, controls, status }), [tabs, selected, disabled, mono, frame, controls, status]);
|
|
141
|
+
return (React.createElement(FileTabsContext.Provider, { value: context },
|
|
142
|
+
React.createElement(BaseTabs.Root, { ...rest, ...scope, value: selected ?? null, onValueChange: handleValueChange, className: resolveClassName(className, (extra) => fileTabs({ primary, secondary, className: extra })) })));
|
|
143
|
+
}
|
|
144
|
+
const staticListState = { orientation: 'horizontal', tabActivationDirection: 'none' };
|
|
145
|
+
/**
|
|
146
|
+
* The header: one fixed 56 px row with its `--role-rule`, the folder tabs
|
|
147
|
+
* across its full width under 12 px of room, standing on the rule, and the
|
|
148
|
+
* Root's `status` and `controls` at its end. The labels take the UI face
|
|
149
|
+
* (mono with `mono`); the selected tab takes its panel's face and opens
|
|
150
|
+
* into it, the others recessed behind it with its neighbours tucked
|
|
151
|
+
* under it. When they overflow, their row scrolls sideways with its native
|
|
152
|
+
* scrollbar, which hangs just below the header (or overlays the strip's
|
|
153
|
+
* foot, where scrollbars overlay), so the tabs never lift off the rule.
|
|
154
|
+
* With one tab it shows that name as a label (no tablist), truncated with
|
|
155
|
+
* an ellipsis where the controls need its room; with none, the controls
|
|
156
|
+
* and status (a `FileTabsControl` alone hangs, with no header row), or
|
|
157
|
+
* nothing. Its own props (`aria-label`, `className` …) go to the tablist,
|
|
158
|
+
* or to the one document's label.
|
|
159
|
+
*/
|
|
160
|
+
export function FileTabsList(props) {
|
|
161
|
+
const { 'aria-label': ariaLabel = 'Documents', className, style, ...rest } = props;
|
|
162
|
+
const { tabs, disabled, mono, frame, controls, status } = useFileTabsContext('FileTabsList');
|
|
163
|
+
const hasControls = controls != null && typeof controls !== 'boolean';
|
|
164
|
+
const hasStatus = status !== undefined;
|
|
165
|
+
const tablist = tabs.length > 1;
|
|
166
|
+
if (tabs.length === 0 && !hasControls && !hasStatus)
|
|
167
|
+
return null;
|
|
168
|
+
let lead = null;
|
|
169
|
+
if (tabs.length === 1) {
|
|
170
|
+
const labelClass = typeof className === 'function' ? className(staticListState) : className;
|
|
171
|
+
const labelStyle = typeof style === 'function' ? style(staticListState) : style;
|
|
172
|
+
lead = (React.createElement("span", { className: cx(styles.single, mono ? styles.singleMono : styles.singleUi, labelClass), style: labelStyle, dir: mono ? 'ltr' : undefined }, tabs[0].name));
|
|
173
|
+
}
|
|
174
|
+
else if (tablist) {
|
|
175
|
+
// The tablist is the tabs' native scroll row (the header's
|
|
176
|
+
// `data-tablist` styles it): Base UI scrolls it to bring each tab into
|
|
177
|
+
// view as arrow keys move focus.
|
|
178
|
+
lead = (React.createElement(BaseTabs.List, { ...rest, "aria-label": ariaLabel, style: style, className: resolveClassName(className, (extra) => cx(styles.list, extra)) }, tabs.map((tab) => (React.createElement(FileTabsTab, { key: tab.id, tab: tab, disabled: disabled, mono: mono })))));
|
|
179
|
+
}
|
|
180
|
+
return (React.createElement("div", { className: fileTabsHeader({ frame }), "data-tablist": tablist ? '' : undefined, "data-labelless": tabs.length === 0 ? '' : undefined },
|
|
181
|
+
React.createElement("div", { className: styles.bar },
|
|
182
|
+
React.createElement("div", { className: styles.lead }, lead),
|
|
183
|
+
hasControls || hasStatus ? (React.createElement("div", { className: styles.side },
|
|
184
|
+
hasStatus ? (React.createElement("span", { role: "status", className: styles.status }, status)) : null,
|
|
185
|
+
hasControls ? (React.createElement("div", { className: styles.controls }, controls)) : null)) : null)));
|
|
186
|
+
}
|
|
187
|
+
/** One folder tab: a link when the document has a slug, else a button. */
|
|
188
|
+
function FileTabsTab(props) {
|
|
189
|
+
const { tab, disabled, mono } = props;
|
|
190
|
+
const content = (React.createElement("span", { className: cx(styles.label, mono ? styles.labelMono : styles.labelUi), "data-label": tab.name, dir: mono ? 'ltr' : undefined },
|
|
191
|
+
tab.name,
|
|
192
|
+
disabled ? (React.createElement("svg", { className: styles.edge, "aria-hidden": "true", focusable: "false" },
|
|
193
|
+
React.createElement("line", { className: styles.edgeLine, x1: "0", y1: "50%", x2: "100%", y2: "50%" }))) : null));
|
|
194
|
+
if (tab.slug) {
|
|
195
|
+
return (React.createElement(BaseTabs.Tab, { value: tab.id, disabled: disabled, className: styles.tab, nativeButton: false, render: React.createElement("a", { href: `#${tab.slug}`, onClick: handleLinkClick }) }, content));
|
|
196
|
+
}
|
|
197
|
+
return (React.createElement(BaseTabs.Tab, { value: tab.id, disabled: disabled, className: styles.tab }, content));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* One header control for the Root's `controls`: a `<button>` holding an
|
|
201
|
+
* icon (an `Icon` with `weight="interactive"` takes its hover weight here;
|
|
202
|
+
* the ⋮ is `more_vert` at the tag tier, `size="tag"`, 20 px).
|
|
203
|
+
* It always hangs outside the host's inline-end edge: an ear `--size-px-4`
|
|
204
|
+
* wide from the host's edge line, from the host's top edge to the header
|
|
205
|
+
* rule's foot, with its `--fgd-size-hit` hit area past that edge and none
|
|
206
|
+
* over the tabs; the host leaves `--fgd-size-file-tabs-control` free there.
|
|
207
|
+
* Hovered or focused, the ear shows at once, drawn in `--primary12` on the
|
|
208
|
+
* `--role-soft-hover` fill (at the top of a rounded host, wrapping the
|
|
209
|
+
* host's top-end corner, so the outline runs unbroken round both); while its popup is open (`aria-expanded="true"`;
|
|
210
|
+
* a tooltip's `data-popup-open` changes nothing), on the `--primary1` face.
|
|
211
|
+
* As a Menu's trigger:
|
|
212
|
+
* `<Menu.Trigger render={<FileTabsControl />} aria-label="More actions">`.
|
|
213
|
+
* Or as a lone action, where it is the only one (Code Block's nameless
|
|
214
|
+
* snippet hangs its copy, `content_copy` at the tag tier): name it with
|
|
215
|
+
* `aria-label`, pair it with a Tooltip, and give it an `onClick`.
|
|
216
|
+
*/
|
|
217
|
+
export function FileTabsControl(props) {
|
|
218
|
+
const { render, ref, className, ...elementProps } = props;
|
|
219
|
+
return useRender({
|
|
220
|
+
defaultTagName: 'button',
|
|
221
|
+
render,
|
|
222
|
+
ref,
|
|
223
|
+
props: mergeProps({ type: 'button' }, elementProps, {
|
|
224
|
+
className: cx(styles.control, className),
|
|
225
|
+
}),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
const staticPanelState = {
|
|
229
|
+
hidden: false,
|
|
230
|
+
orientation: 'horizontal',
|
|
231
|
+
tabActivationDirection: 'none',
|
|
232
|
+
transitionStatus: undefined,
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* The panel for the selected tab: `role="tabpanel"`, labelled by the selected
|
|
236
|
+
* tab, which `aria-controls` it. Its element stays the same across selections,
|
|
237
|
+
* so the content inside is never remounted; empty hidden panels stand in for
|
|
238
|
+
* the other tabs, so every tab's `aria-controls` resolves. With fewer than
|
|
239
|
+
* two tabs it renders a plain `div` (there is no tablist to pair with).
|
|
240
|
+
*/
|
|
241
|
+
export function FileTabsPanel(props) {
|
|
242
|
+
const { className, style, render, keepMounted, children, ...rest } = props;
|
|
243
|
+
const { tabs, selected } = useFileTabsContext('FileTabsPanel');
|
|
244
|
+
if (tabs.length < 2 || selected === undefined) {
|
|
245
|
+
const plainClass = typeof className === 'function' ? className(staticPanelState) : className;
|
|
246
|
+
const plainStyle = typeof style === 'function' ? style(staticPanelState) : style;
|
|
247
|
+
return (React.createElement("div", { ...rest, className: cx(styles.panel, plainClass), style: plainStyle }, children));
|
|
248
|
+
}
|
|
249
|
+
return (React.createElement(React.Fragment, null,
|
|
250
|
+
React.createElement(BaseTabs.Panel, { ...rest, render: render, keepMounted: keepMounted, value: selected, style: style, className: resolveClassName(className, (extra) => cx(styles.panel, extra)) }, children),
|
|
251
|
+
tabs.map((tab) => tab.id === selected ? null : (React.createElement(BaseTabs.Panel, { key: tab.id, value: tab.id, keepMounted: true, className: styles.panel })))));
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=FileTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileTabs.js","sourceRoot":"","sources":["../../src/navigation/file-tabs/FileTabs.tsx"],"names":[],"mappings":"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"}
|