@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
|
+
'use client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { DisclosureGlyph, disclosureGlyphHost } from '../../disclosure/collapsible';
|
|
6
|
+
import { Link } from '../../actions/link';
|
|
7
|
+
import { cx } from '../../utils/className';
|
|
8
|
+
import { isCurrentPath } from '../../utils/navigation';
|
|
9
|
+
import { primaryScaleVariants, secondaryScaleVariants } from '../../utils/scales';
|
|
10
|
+
import { useScopeAttributes } from '../../utils/scope';
|
|
11
|
+
import styles from './sidebar-nav.module.css';
|
|
12
|
+
/*
|
|
13
|
+
* Sidebar Navigation (§9.15) [D202]: the docs layout's page tree, one
|
|
14
|
+
* component in the desktop column and inside the mobile drawer.
|
|
15
|
+
*
|
|
16
|
+
* Implementation (CSS Modules + CVA)
|
|
17
|
+
* - Module: sidebar-nav.module.css; CVA function `sidebarNav`.
|
|
18
|
+
* - Axes: `primary`, `secondary` → scales module classes.
|
|
19
|
+
* - Compound variants: none. Defaults: none; color axes none.
|
|
20
|
+
* - Color fallback: inherits the scope.
|
|
21
|
+
* - States: group headings are Link `kind="nav"` (bare text): `:hover` →
|
|
22
|
+
* the --role-accent underline at --border-size-2 [D181];
|
|
23
|
+
* `aria-current="page"` → the --border-size-2-25 underline and weight
|
|
24
|
+
* 700. Page links are Link `kind="nav"` with `list`: `:hover` →
|
|
25
|
+
* --role-link-hover only (plus the underline where it is --primary12)
|
|
26
|
+
* [D181]; `aria-current="page"` → the --border-size-2-25 start-edge bar
|
|
27
|
+
* over the guide and weight 700, whose width every label reserves, so
|
|
28
|
+
* the current page never rewraps a line. Collapsible Trigger
|
|
29
|
+
* `data-panel-open` → the D109 glyph turns inward in --primary12; Panel
|
|
30
|
+
* `data-starting-style` / `data-ending-style` → the clip reveal, instant
|
|
31
|
+
* under --motionNotOK. `:focus-visible` → the ring, inset inside rows.
|
|
32
|
+
* - Parts: base (the nav), groups, group, headingRow, heading, toggle,
|
|
33
|
+
* glyph, panel, list, item, link, label, labelText.
|
|
34
|
+
* - Scope: none. Container: none; its host (the docs layout's column or
|
|
35
|
+
* the drawer's Scroll Area) sets its width.
|
|
36
|
+
* - Data: `items` is plain data ({ title, href, items }), so it can come
|
|
37
|
+
* from the docs engine's sitemap (utils/docs `toSidebarItems`) or a CMS.
|
|
38
|
+
*/
|
|
39
|
+
export const sidebarNav = cva(styles.base, {
|
|
40
|
+
variants: {
|
|
41
|
+
// Color axes: never defaulted, so an omitted prop inherits the scope [D133].
|
|
42
|
+
primary: primaryScaleVariants,
|
|
43
|
+
secondary: secondaryScaleVariants,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const SidebarNavContext = React.createContext({
|
|
47
|
+
collapsible: false,
|
|
48
|
+
toggleLabel: (title) => `${title} pages`,
|
|
49
|
+
});
|
|
50
|
+
function isCurrent(item, currentPath) {
|
|
51
|
+
return item.current ?? isCurrentPath(item.href, currentPath);
|
|
52
|
+
}
|
|
53
|
+
/** Whether the item or any of its descendants is the current page. */
|
|
54
|
+
function holdsCurrent(item, currentPath) {
|
|
55
|
+
if (isCurrent(item, currentPath))
|
|
56
|
+
return true;
|
|
57
|
+
return item.items?.some((child) => holdsCurrent(child, currentPath)) ?? false;
|
|
58
|
+
}
|
|
59
|
+
/** The nearest ancestor that scrolls its block axis (never the page itself). */
|
|
60
|
+
function scrollParent(element) {
|
|
61
|
+
const root = element.ownerDocument.scrollingElement;
|
|
62
|
+
let node = element.parentElement;
|
|
63
|
+
while (node != null && node !== root && node !== element.ownerDocument.body) {
|
|
64
|
+
const { overflowY } = getComputedStyle(node);
|
|
65
|
+
if ((overflowY === 'auto' || overflowY === 'scroll') && node.scrollHeight > node.clientHeight) {
|
|
66
|
+
return node;
|
|
67
|
+
}
|
|
68
|
+
node = node.parentElement;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The docs page tree [D202]: a `nav` of groups, each a caps heading
|
|
74
|
+
* (`type-label`, a link to the group's index page when it has one) over its
|
|
75
|
+
* pages on a --role-hairline guide, groups split by hairline rules. The
|
|
76
|
+
* current page takes `aria-current="page"`, the --border-size-2-25
|
|
77
|
+
* start-edge bar and weight 700. The same component, from the same data,
|
|
78
|
+
* fills the docs layout's column from --fgd-nav-inline-n-above and the
|
|
79
|
+
* drawer below it. On mount, and when the current page changes, the
|
|
80
|
+
* current link is scrolled into view inside the nearest scrolling
|
|
81
|
+
* ancestor (the column or the drawer's Scroll Area), never the page, so
|
|
82
|
+
* nothing moves around it. Hidden in print.
|
|
83
|
+
*/
|
|
84
|
+
export function SidebarNav(props) {
|
|
85
|
+
const { items, currentPath, label = 'Documentation', collapsible = false, toggleLabel = (title) => `${title} pages`, renderLink, primary, secondary, className, ref, ...rest } = props;
|
|
86
|
+
const scope = useScopeAttributes();
|
|
87
|
+
const navRef = React.useRef(null);
|
|
88
|
+
const setRef = React.useCallback((node) => {
|
|
89
|
+
navRef.current = node;
|
|
90
|
+
if (typeof ref === 'function')
|
|
91
|
+
ref(node);
|
|
92
|
+
else if (ref)
|
|
93
|
+
ref.current = node;
|
|
94
|
+
}, [ref]);
|
|
95
|
+
// Bring the current page into view inside the scroller that holds the
|
|
96
|
+
// nav, never the page. A scroll offset moves nothing in layout, so it is
|
|
97
|
+
// no layout shift; in the docs layout's column, browsers with
|
|
98
|
+
// `scroll-initial-target` (its CSS) have done it before first paint.
|
|
99
|
+
React.useLayoutEffect(() => {
|
|
100
|
+
const nav = navRef.current;
|
|
101
|
+
const link = nav?.querySelector('[aria-current="page"]');
|
|
102
|
+
if (nav == null || link == null)
|
|
103
|
+
return;
|
|
104
|
+
const scroller = scrollParent(link);
|
|
105
|
+
if (scroller == null)
|
|
106
|
+
return;
|
|
107
|
+
const box = scroller.getBoundingClientRect();
|
|
108
|
+
const target = link.getBoundingClientRect();
|
|
109
|
+
if (target.top >= box.top && target.bottom <= box.bottom)
|
|
110
|
+
return;
|
|
111
|
+
scroller.scrollTop += target.top - box.top - (box.height - target.height) / 2;
|
|
112
|
+
}, [currentPath]);
|
|
113
|
+
// Rebuilt on every render: the functions are usually inline, and the tree re-renders with it anyway.
|
|
114
|
+
const context = { currentPath, collapsible, toggleLabel, renderLink };
|
|
115
|
+
return (React.createElement(SidebarNavContext.Provider, { value: context },
|
|
116
|
+
React.createElement("nav", { ...rest, ...scope, ref: setRef, "aria-label": label, className: sidebarNav({ primary, secondary, className }) },
|
|
117
|
+
React.createElement("ul", { className: styles.groups }, items.map((item) => (React.createElement("li", { key: item.href ?? item.title, className: styles.group }, item.items != null && item.items.length > 0 ? (React.createElement(SidebarNavGroup, { item: item })) : (React.createElement(SidebarNavHeading, { item: item })))))))));
|
|
118
|
+
}
|
|
119
|
+
/** A group heading: a caps link to the group's index page, or plain caps text. */
|
|
120
|
+
function SidebarNavHeading({ item, id }) {
|
|
121
|
+
const { currentPath, renderLink } = React.useContext(SidebarNavContext);
|
|
122
|
+
if (item.href == null) {
|
|
123
|
+
return (React.createElement("span", { id: id, className: styles.heading }, item.title));
|
|
124
|
+
}
|
|
125
|
+
const current = isCurrent(item, currentPath);
|
|
126
|
+
return (React.createElement(Link, { id: id, kind: "nav", href: item.href, render: renderLink?.(item.href), "aria-current": current ? 'page' : undefined, className: styles.heading },
|
|
127
|
+
React.createElement(Label, { text: item.title })));
|
|
128
|
+
}
|
|
129
|
+
/** A group: its heading over its pages, open (default) or a Collapsible. */
|
|
130
|
+
function SidebarNavGroup({ item }) {
|
|
131
|
+
const { currentPath, collapsible, toggleLabel } = React.useContext(SidebarNavContext);
|
|
132
|
+
const headingId = React.useId();
|
|
133
|
+
const list = React.createElement(SidebarNavList, { items: item.items ?? [], labelledBy: headingId });
|
|
134
|
+
if (!collapsible) {
|
|
135
|
+
return (React.createElement(React.Fragment, null,
|
|
136
|
+
React.createElement(SidebarNavHeading, { item: item, id: headingId }),
|
|
137
|
+
list));
|
|
138
|
+
}
|
|
139
|
+
const containsCurrent = holdsCurrent(item, currentPath);
|
|
140
|
+
return (React.createElement(BaseCollapsible.Root, { defaultOpen: item.defaultOpen ?? containsCurrent, className: styles.collapsible },
|
|
141
|
+
item.href != null ? (React.createElement("div", { className: styles.headingRow },
|
|
142
|
+
React.createElement(SidebarNavHeading, { item: item, id: headingId }),
|
|
143
|
+
React.createElement(BaseCollapsible.Trigger, { "aria-label": toggleLabel(item.title), className: cx(styles.toggle, disclosureGlyphHost) },
|
|
144
|
+
React.createElement(DisclosureGlyph, { size: "chrome", className: styles.glyph })))) : (React.createElement(BaseCollapsible.Trigger, { id: headingId, className: cx(styles.headingRow, styles.headingTrigger) },
|
|
145
|
+
React.createElement("span", { className: styles.heading }, item.title),
|
|
146
|
+
React.createElement(DisclosureGlyph, { size: "chrome", className: styles.glyph }))),
|
|
147
|
+
React.createElement(BaseCollapsible.Panel, { className: styles.panel }, list)));
|
|
148
|
+
}
|
|
149
|
+
/** A list of pages on the hairline guide; a page's subpages nest one level in. */
|
|
150
|
+
function SidebarNavList({ items, labelledBy, }) {
|
|
151
|
+
const { currentPath, renderLink } = React.useContext(SidebarNavContext);
|
|
152
|
+
return (React.createElement("ul", { className: styles.list, "aria-labelledby": labelledBy }, items.map((item) => {
|
|
153
|
+
const current = isCurrent(item, currentPath);
|
|
154
|
+
return (React.createElement("li", { key: item.href ?? item.title, className: styles.item },
|
|
155
|
+
item.href != null ? (React.createElement(Link, { kind: "nav", list: true, href: item.href, render: renderLink?.(item.href), "aria-current": current ? 'page' : undefined, className: styles.link },
|
|
156
|
+
React.createElement(Label, { text: item.title }))) : (React.createElement("span", { className: cx(styles.link, styles.plain) },
|
|
157
|
+
React.createElement(Label, { text: item.title }))),
|
|
158
|
+
item.items != null && item.items.length > 0 ? React.createElement(SidebarNavList, { items: item.items }) : null));
|
|
159
|
+
})));
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* A label that reserves its weight-700 box: a hidden copy at weight 700
|
|
163
|
+
* shares its grid cell, so becoming current never widens or rewraps it.
|
|
164
|
+
*/
|
|
165
|
+
function Label({ text }) {
|
|
166
|
+
return (React.createElement("span", { className: styles.label, "data-label": text },
|
|
167
|
+
React.createElement("span", { className: styles.labelText }, text)));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=SidebarNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNav.js","sourceRoot":"","sources":["../../src/navigation/sidebar-nav/SidebarNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/sidebar-nav/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/sidebar-nav/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Sidebar Navigation (§9.15). CVA function `sidebarNav` in SidebarNav.tsx.
|
|
3
|
+
*
|
|
4
|
+
* Parts: base (the nav), groups, group, collapsible, headingRow,
|
|
5
|
+
* headingTrigger, heading, toggle, glyph (the Collapsible module's D109
|
|
6
|
+
* glyph), panel, list, item, link, plain, label, labelText.
|
|
7
|
+
*
|
|
8
|
+
* Line-based [D202]: groups split by --role-hairline rules; pages hang on a
|
|
9
|
+
* --border-size-1 --role-hairline guide at the list's start edge; the
|
|
10
|
+
* current page draws the --border-size-2-25 --primary12 bar over the guide.
|
|
11
|
+
* No fills, no shadows. Colors are role variables only; there are no local
|
|
12
|
+
* custom properties.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* Composition sits in top-level rules, outside the layers: Lightning CSS
|
|
16
|
+
* (Next.js with Turbopack) rejects `composes` inside @layer or any nesting.
|
|
17
|
+
* The composed classes keep their own layers. */
|
|
18
|
+
.heading {
|
|
19
|
+
composes: typeLabel from '../../utils/type.module.css';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.link {
|
|
23
|
+
composes: typeBodyUi from '../../utils/type.module.css';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@layer base {
|
|
27
|
+
.base {
|
|
28
|
+
display: block;
|
|
29
|
+
min-inline-size: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.groups,
|
|
33
|
+
.list {
|
|
34
|
+
margin: 0;
|
|
35
|
+
padding: 0;
|
|
36
|
+
list-style: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.group,
|
|
40
|
+
.item,
|
|
41
|
+
.collapsible {
|
|
42
|
+
display: block;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Groups split by a hairline rule, --size-px-3 on either side [§4.4]. */
|
|
46
|
+
.group + .group {
|
|
47
|
+
margin-block-start: var(--size-px-3);
|
|
48
|
+
padding-block-start: var(--size-px-3);
|
|
49
|
+
border-block-start: var(--border-size-1) solid var(--role-hairline);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* The caps heading (type-label, caps wayfinding [D165]): a 44 px row. */
|
|
53
|
+
.heading {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
min-block-size: var(--fgd-size-hit);
|
|
58
|
+
margin: 0;
|
|
59
|
+
color: var(--primary12);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* A collapsible group's row: the heading, then its toggle at the end. */
|
|
63
|
+
.headingRow {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
gap: var(--size-px-2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.headingRow > .heading {
|
|
70
|
+
flex: 1 1 auto;
|
|
71
|
+
min-inline-size: 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* A group without a page: the whole row is the toggle. */
|
|
75
|
+
.headingTrigger {
|
|
76
|
+
box-sizing: border-box;
|
|
77
|
+
inline-size: 100%;
|
|
78
|
+
min-block-size: var(--fgd-size-hit);
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding: 0;
|
|
81
|
+
border: 0;
|
|
82
|
+
border-radius: var(--radius-1);
|
|
83
|
+
background: none;
|
|
84
|
+
color: var(--primary12);
|
|
85
|
+
text-align: start;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
appearance: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.headingTrigger > .heading {
|
|
91
|
+
flex: 1 1 auto;
|
|
92
|
+
text-decoration-color: var(--role-accent);
|
|
93
|
+
text-decoration-thickness: var(--border-size-2);
|
|
94
|
+
text-underline-offset: var(--size-px-1);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* The glyph-only toggle: a 44 px square, the glyph at the chrome tier. */
|
|
98
|
+
.toggle {
|
|
99
|
+
display: inline-flex;
|
|
100
|
+
flex: none;
|
|
101
|
+
align-items: center;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
box-sizing: border-box;
|
|
104
|
+
inline-size: var(--fgd-size-hit);
|
|
105
|
+
block-size: var(--fgd-size-hit);
|
|
106
|
+
margin: 0;
|
|
107
|
+
margin-inline-end: calc(-1 * var(--size-px-3));
|
|
108
|
+
padding: 0;
|
|
109
|
+
border: 0;
|
|
110
|
+
border-radius: var(--radius-1);
|
|
111
|
+
background: none;
|
|
112
|
+
color: var(--primary12);
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
appearance: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.glyph {
|
|
118
|
+
flex: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* The clip reveal (§1.5.15) [D91]: the panel wipes open; never faded. */
|
|
122
|
+
.panel {
|
|
123
|
+
block-size: var(--collapsible-panel-height);
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
overflow: clip;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Pages hang on a --border-size-1 hairline guide at the list's start edge. */
|
|
129
|
+
.list {
|
|
130
|
+
border-inline-start: var(--border-size-1) solid var(--role-hairline);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Subpages: one level in, on their own guide. */
|
|
134
|
+
.list .list {
|
|
135
|
+
margin-inline-start: var(--size-px-3);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* A page: type-body-ui at weight 400, a 44 px row, --size-px-3 off the guide. */
|
|
139
|
+
.link {
|
|
140
|
+
position: relative;
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
box-sizing: border-box;
|
|
144
|
+
min-block-size: var(--fgd-size-hit);
|
|
145
|
+
padding-block: var(--size-px-2);
|
|
146
|
+
padding-inline: var(--size-px-3) 0;
|
|
147
|
+
color: var(--primary12);
|
|
148
|
+
text-decoration-line: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.plain {
|
|
152
|
+
color: var(--role-muted);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* The current bar, over the guide: a border, so it survives forced colors. */
|
|
156
|
+
.link::before {
|
|
157
|
+
content: '';
|
|
158
|
+
position: absolute;
|
|
159
|
+
inset-block: 0;
|
|
160
|
+
inset-inline-start: calc(-1 * var(--border-size-1));
|
|
161
|
+
border-inline-start: 0 solid var(--primary12);
|
|
162
|
+
pointer-events: none;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
* The label reserves its weight-700 box: a hidden copy of its words at
|
|
167
|
+
* --font-weight-7 (`data-label`) shares the one grid cell, so the cell is
|
|
168
|
+
* always the bold setting's size and the current page never widens or
|
|
169
|
+
* rewraps a line (no layout shift on navigation or scrollspy).
|
|
170
|
+
*/
|
|
171
|
+
.label {
|
|
172
|
+
display: grid;
|
|
173
|
+
min-inline-size: 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.label::after {
|
|
177
|
+
content: attr(data-label);
|
|
178
|
+
grid-area: 1 / 1;
|
|
179
|
+
font-weight: var(--font-weight-7);
|
|
180
|
+
visibility: hidden;
|
|
181
|
+
pointer-events: none;
|
|
182
|
+
user-select: none;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.labelText {
|
|
186
|
+
grid-area: 1 / 1;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
190
|
+
.panel {
|
|
191
|
+
transition-property: block-size;
|
|
192
|
+
transition-duration: var(--fgd-duration-disclosure);
|
|
193
|
+
transition-timing-function: var(--ease-out-3);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@layer compounds {
|
|
199
|
+
/* Page links fill their row: a block flex box, over Link's inline `nav` row. */
|
|
200
|
+
.link {
|
|
201
|
+
display: flex;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Headings: a flex row over Link's inline `nav` row, the text's own 44 px. */
|
|
205
|
+
.heading {
|
|
206
|
+
display: flex;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@layer states {
|
|
211
|
+
/* The whole-row toggle: the bare-text underline on its words [D181]. */
|
|
212
|
+
.headingTrigger:hover > .heading {
|
|
213
|
+
text-decoration-line: underline;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.toggle:active,
|
|
217
|
+
.headingTrigger:active {
|
|
218
|
+
background-color: var(--primary12);
|
|
219
|
+
color: var(--role-inverse);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.toggle:active .glyph {
|
|
223
|
+
color: var(--role-inverse);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.toggle:focus-visible,
|
|
227
|
+
.headingTrigger:focus-visible {
|
|
228
|
+
outline: var(--border-size-2) solid var(--primary12);
|
|
229
|
+
outline-offset: calc(-1 * var(--border-size-2));
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* Rows: the ring inset inside the row (the list parent raises it over Link's ring). */
|
|
233
|
+
.list .link:focus-visible,
|
|
234
|
+
.group > .heading:focus-visible,
|
|
235
|
+
.headingRow > .heading:focus-visible {
|
|
236
|
+
outline: var(--border-size-2) solid var(--primary12);
|
|
237
|
+
outline-offset: calc(-1 * var(--border-size-2));
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Current page: the --border-size-2-25 start-edge bar and weight 700 [D15]. */
|
|
241
|
+
.list .link[aria-current='page']::before {
|
|
242
|
+
border-inline-start-width: var(--border-size-2-25);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* The bar replaces Link's current underline on a page (the list parent raises this over Link's rule). */
|
|
246
|
+
.list .link[aria-current='page'] {
|
|
247
|
+
font-weight: var(--font-weight-7);
|
|
248
|
+
text-decoration-line: none;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.panel[data-starting-style],
|
|
252
|
+
.panel[data-ending-style] {
|
|
253
|
+
block-size: 0;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@media (forced-colors: active) {
|
|
257
|
+
.headingTrigger:hover > .heading {
|
|
258
|
+
text-decoration-line: underline;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@layer print {
|
|
264
|
+
@media print {
|
|
265
|
+
/* Screen wayfinding: the page prints alone (§7.7). */
|
|
266
|
+
.base {
|
|
267
|
+
display: none;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
export declare const tableOfContents: (props?: ({
|
|
4
|
+
kind?: "bar" | "list" | null | undefined;
|
|
5
|
+
primary?: "ruby" | "brown" | "crimson" | "gold" | "gray" | "indigo" | "olive" | "pink" | "plum" | "purple" | "red" | "tomato" | "violet" | "bronze" | "iris" | "mauve" | "sage" | "sand" | "slate" | null | undefined;
|
|
6
|
+
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;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
type TableOfContentsVariants = VariantProps<typeof tableOfContents>;
|
|
9
|
+
/** How the contents draw: the full list, or the compact bar that opens it. */
|
|
10
|
+
export type TableOfContentsKind = NonNullable<TableOfContentsVariants['kind']>;
|
|
11
|
+
/** Heading levels the list shows: H2 at its top level, H3 and H4 nested under it. */
|
|
12
|
+
export type TableOfContentsLevel = 2 | 3 | 4;
|
|
13
|
+
/** One heading on the page. */
|
|
14
|
+
export interface TableOfContentsItem {
|
|
15
|
+
/** The heading's `id`: the entry links to `#id`. */
|
|
16
|
+
id: string;
|
|
17
|
+
/** The heading's text. */
|
|
18
|
+
title: string;
|
|
19
|
+
/** The heading level: 2, 3 or 4. */
|
|
20
|
+
level: TableOfContentsLevel;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* What a host tells the contents inside it. The docs layout sets
|
|
24
|
+
* `kind: 'bar'` where it pins the compact bar (below --xl-n-above), so
|
|
25
|
+
* the one `toc` it is given draws as the column there and as the bar here.
|
|
26
|
+
*/
|
|
27
|
+
export interface TableOfContentsContextValue {
|
|
28
|
+
/** The kind to draw when the component names none. */
|
|
29
|
+
kind?: TableOfContentsKind;
|
|
30
|
+
/** Hides the list's visible heading; it stays the landmark's name. */
|
|
31
|
+
labelHidden?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Provided by a host of the contents, such as the docs layout. */
|
|
34
|
+
export declare const TableOfContentsContext: React.Context<TableOfContentsContextValue>;
|
|
35
|
+
/** Props for TableOfContents: `nav` props, the headings, the section in view, the kind and the color axes. */
|
|
36
|
+
export type TableOfContentsProps = Omit<React.ComponentPropsWithRef<'nav'>, 'children'> & {
|
|
37
|
+
/** The page's headings in order, levels 2–4 (a level-3 nests under the level-2 before it). */
|
|
38
|
+
items: readonly TableOfContentsItem[];
|
|
39
|
+
/**
|
|
40
|
+
* The id of the section in view: its entry takes `aria-current="location"`,
|
|
41
|
+
* and the bar names it. Pass `useActiveHeading(ids)` for scrollspy.
|
|
42
|
+
* Omitted, no entry is marked and the bar names the first section.
|
|
43
|
+
*/
|
|
44
|
+
activeId?: string;
|
|
45
|
+
/** The visible heading (the bar's label) and the landmark's name. Default "On this page". */
|
|
46
|
+
label?: string;
|
|
47
|
+
/**
|
|
48
|
+
* `list` (default): the full list. `bar`: one line naming the section in
|
|
49
|
+
* view, which opens the list in an anchored panel. Omitted, a host's
|
|
50
|
+
* `TableOfContentsContext` may set it (the docs layout does).
|
|
51
|
+
*/
|
|
52
|
+
kind?: TableOfContentsVariants['kind'];
|
|
53
|
+
/**
|
|
54
|
+
* With `kind="bar"`: the outline morph, the bar's ring or edge growing
|
|
55
|
+
* into the panel's frame on open and back on close [D204]. Default
|
|
56
|
+
* `true`; it never runs under reduced motion, in forced colors or in
|
|
57
|
+
* print.
|
|
58
|
+
*/
|
|
59
|
+
morph?: boolean;
|
|
60
|
+
/** Builds each anchor. Default: a plain `<a href="#id">`, which scrolls and writes the hash. */
|
|
61
|
+
renderLink?: (href: string) => React.ReactElement;
|
|
62
|
+
/** Override the scope's primary. Never defaulted [D133]. */
|
|
63
|
+
primary?: TableOfContentsVariants['primary'];
|
|
64
|
+
/** Override the scope's secondary. Never defaulted. */
|
|
65
|
+
secondary?: TableOfContentsVariants['secondary'];
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The page's contents [D202, D203].
|
|
69
|
+
*
|
|
70
|
+
* `kind="list"` (default): a `nav` named by its caps heading (`type-label`)
|
|
71
|
+
* over an `ol` of in-page links in `type-caption`, H2s at the top level and
|
|
72
|
+
* H3 and H4 nested on the --role-hairline guide. The section in view
|
|
73
|
+
* (`activeId`) takes `aria-current="location"`, the --border-size-2-25
|
|
74
|
+
* start-edge bar and weight 700; every entry reserves that weight's box, so
|
|
75
|
+
* marking a section never moves the list.
|
|
76
|
+
*
|
|
77
|
+
* `kind="bar"`: one field-box line, "On this page" and the section in view
|
|
78
|
+
* (the first before scrollspy runs), truncated, with a chevron. It opens
|
|
79
|
+
* the same list in an anchored panel about a third of the viewport tall,
|
|
80
|
+
* scrolled inside so the section in view sits centered and marked, with
|
|
81
|
+
* focus on it; following an entry goes to its heading and closes the
|
|
82
|
+
* panel; Escape and an outside press close it and focus returns to the
|
|
83
|
+
* bar. The bar's ring or edge morphs into the panel's frame [D204].
|
|
84
|
+
*
|
|
85
|
+
* Presentational: pair it with `useActiveHeading` for scrollspy. The docs
|
|
86
|
+
* layout shows the list in a sticky column from --xl-n-above and the bar,
|
|
87
|
+
* pinned under the header, below. With no items it renders nothing. Hidden
|
|
88
|
+
* in print.
|
|
89
|
+
*/
|
|
90
|
+
export declare function TableOfContents(props: TableOfContentsProps): React.JSX.Element | null;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=TableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../src/navigation/table-of-contents/TableOfContents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAuDjE,eAAO,MAAM,eAAe;;;;8EAa1B,CAAA;AAEF,KAAK,uBAAuB,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAA;AAEnE,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAA;AAE9E,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAE5C,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,KAAK,EAAE,oBAAoB,CAAA;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,sDAAsD;IACtD,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,mEAAmE;AACnE,eAAO,MAAM,sBAAsB,4CAAuD,CAAA;AAG1F,8GAA8G;AAC9G,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACtF,8FAA8F;IAC9F,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAA;IACtC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gGAAgG;IAChG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,CAAA;IACjD,4DAA4D;IAC5D,OAAO,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;IAC5C,uDAAuD;IACvD,SAAS,CAAC,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAA;CACjD,CAAA;AA6FH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,4BAgD1D"}
|