@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,868 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* File tabs. Parts: `base` (the Root, around the header and the panel),
|
|
3
|
+
* `header` (FileTabsList: the 56 px row on its rule), `bar` (the row inside
|
|
4
|
+
* it that holds the lead and the side, and draws the host's side edges),
|
|
5
|
+
* `lead` (the tabs or the one file's label), `list` (the tablist, the
|
|
6
|
+
* tabs' native scroll row), `tab`, `label`, `edge` / `edgeLine` (the disabled
|
|
7
|
+
* `line-dotted-fine` underline, true SVG dots), `single` (the lone file's
|
|
8
|
+
* label, no tablist), `side` (the header's end), `status` (laid over the
|
|
9
|
+
* tabs beside the controls), `controls` (the controls' cell), `control`
|
|
10
|
+
* (FileTabsControl) and `panel`. The header's frame classes: `frameTop`,
|
|
11
|
+
* `frameJoined` and `frameNone`.
|
|
12
|
+
*
|
|
13
|
+
* The header opens a host: a --border-size-1 box with no padding and a
|
|
14
|
+
* --primary1 face (Code Block's frame, or the Root given a frame class).
|
|
15
|
+
* The geometry is the source's code block header, to the pixel: the header
|
|
16
|
+
* with its rule is the tab row's height, the tabs run over the rule, the
|
|
17
|
+
* strip runs out over the host's side edges by their width, the side edges
|
|
18
|
+
* are drawn again over the header (and over the ends of the strip's native
|
|
19
|
+
* scrollbar), and a FileTabsControl (the ⋮) always hangs past the host's
|
|
20
|
+
* inline-end edge, which is why the host must not clip and must leave
|
|
21
|
+
* --fgd-size-file-tabs-control free there.
|
|
22
|
+
*
|
|
23
|
+
* The tabs are paper: the selected tab takes its panel's own face (the
|
|
24
|
+
* host's --primary1, the ground with `frameNone`) and opens into it, with
|
|
25
|
+
* no rule between them; the others sit recessed behind it on --primary3,
|
|
26
|
+
* each standing on the header's rule. The header is one fixed row that
|
|
27
|
+
* never wraps: a lone file's label truncates, the tabs scroll, and a
|
|
28
|
+
* control that joins late takes its room at the start of the controls,
|
|
29
|
+
* whose end never moves. With no document and a FileTabsControl there is
|
|
30
|
+
* no header row: the ⋮ hangs from the host's top-end corner. Small icon
|
|
31
|
+
* Buttons in the header (`text` icon-only Buttons) are quiet at rest, as
|
|
32
|
+
* the ⋮ is: their edge shows only on hover and focus. Colors are role
|
|
33
|
+
* variables only; local custom properties carry dimensions only:
|
|
34
|
+
* --file-tab-radius the paper-tab radius: the selected tab's top radii and the first and
|
|
35
|
+
* last tabs' outer one, as the source's (12 px)
|
|
36
|
+
* --file-tabs-host-radius the host's top corner radius, which the side edges start below
|
|
37
|
+
* --file-tab-radius-pressed the selected tab's radii while pressed (the source's 12 → 16 px)
|
|
38
|
+
* --file-tab-tuck how far a neighbour tucks under the selected tab: its radius, so the
|
|
39
|
+
* neighbour's top edge runs into the selected tab's shoulder
|
|
40
|
+
* --file-tab-inset a tab's side padding
|
|
41
|
+
* --file-tab-pad-start/-end each tab's side padding, grown by the tuck on a tucked side
|
|
42
|
+
* --file-tabs-top the room above the tabs
|
|
43
|
+
* --file-tabs-block the header's height with its rule: the room above plus the tabs
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/* Composition sits in top-level rules, outside the layers: Lightning CSS
|
|
47
|
+
* (Next.js with Turbopack) rejects `composes` inside @layer or any nesting.
|
|
48
|
+
* Labels take the UI face at the caption size by default, mono
|
|
49
|
+
* (`type-data`, §3.11) with `mono` for file names; inactive labels are
|
|
50
|
+
* muted text [D170, D175]. The control is an icon host: its glyph takes the next
|
|
51
|
+
* weight on hover and press [D181]. */
|
|
52
|
+
/* Labels in the UI face at the caption size, not caps, by default; `mono` (file names) in `type-data`. */
|
|
53
|
+
.labelUi,
|
|
54
|
+
.singleUi {
|
|
55
|
+
composes: typeCaption typeMuted from '../../utils/type.module.css';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.labelMono,
|
|
59
|
+
.singleMono {
|
|
60
|
+
composes: typeData typeMuted from '../../utils/type.module.css';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.status {
|
|
64
|
+
composes: typeData from '../../utils/type.module.css';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.edgeLine {
|
|
68
|
+
composes: lineDottedFine from '../../utils/line.module.css';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.control {
|
|
72
|
+
composes: iconHost from '../../foundations/icon/icon.module.css';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@layer base {
|
|
76
|
+
.base {
|
|
77
|
+
--file-tab-radius: var(--radius-2-75);
|
|
78
|
+
--file-tabs-host-radius: var(--radius-2-25);
|
|
79
|
+
--file-tab-radius-pressed: calc(var(--file-tab-radius) * 4 / 3);
|
|
80
|
+
--file-tab-tuck: var(--file-tab-radius);
|
|
81
|
+
--file-tab-inset: var(--size-px-2);
|
|
82
|
+
--file-tabs-top: var(--size-px-2-5);
|
|
83
|
+
--file-tabs-block: calc(var(--file-tabs-top) + var(--fgd-size-hit));
|
|
84
|
+
|
|
85
|
+
min-inline-size: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/*
|
|
89
|
+
* The header: 56 px with its --role-rule (the room above the tabs plus
|
|
90
|
+
* the tabs, which run over the rule), as the source's 48 px header held
|
|
91
|
+
* its 35 px tabs. The bar's items span it, rule included. Its height is
|
|
92
|
+
* fixed: nothing in it wraps or grows it, so a control that joins after
|
|
93
|
+
* the first paint never moves what's below.
|
|
94
|
+
*/
|
|
95
|
+
.header {
|
|
96
|
+
position: relative;
|
|
97
|
+
box-sizing: border-box;
|
|
98
|
+
block-size: var(--file-tabs-block);
|
|
99
|
+
border-block-end: var(--border-size-1) solid var(--role-rule);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* The row inside the header: its items run a rule's width past the
|
|
104
|
+
* header's content, over the rule. With one file (or none) it's in flow;
|
|
105
|
+
* it never wraps: the lone label truncates to leave the controls their
|
|
106
|
+
* room.
|
|
107
|
+
*/
|
|
108
|
+
.bar {
|
|
109
|
+
position: relative;
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-wrap: nowrap;
|
|
112
|
+
align-items: stretch;
|
|
113
|
+
block-size: var(--file-tabs-block);
|
|
114
|
+
margin-block-end: calc(-1 * var(--border-size-1));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* The host's side edges, drawn again over the bar, down a rule's width
|
|
119
|
+
* past it (where they start is the frame's). Tabs scrolled to either end
|
|
120
|
+
* pass under them, and so do the ends of the strip's native scrollbar,
|
|
121
|
+
* which runs out over the host's edges with the strip.
|
|
122
|
+
*/
|
|
123
|
+
.bar::before,
|
|
124
|
+
.bar::after {
|
|
125
|
+
content: '';
|
|
126
|
+
position: absolute;
|
|
127
|
+
z-index: var(--layer-1);
|
|
128
|
+
inset-block: 0 calc(-1 * var(--border-size-1));
|
|
129
|
+
pointer-events: none;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.bar::before {
|
|
133
|
+
inset-inline-start: calc(-1 * var(--border-size-1));
|
|
134
|
+
border-inline-start: var(--border-size-1) solid var(--role-rule);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.bar::after {
|
|
138
|
+
inset-inline-end: calc(-1 * var(--border-size-1));
|
|
139
|
+
border-inline-end: var(--border-size-1) solid var(--role-rule);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/*
|
|
143
|
+
* The lead: the tabs or the one file's label, across the header's full
|
|
144
|
+
* width and out over the host's side edges by their width (the source's
|
|
145
|
+
* -1 px), so an end tab's edge sits on the host's line. A zero basis: it
|
|
146
|
+
* shrinks rather than push the controls to another row.
|
|
147
|
+
*/
|
|
148
|
+
.lead {
|
|
149
|
+
display: flex;
|
|
150
|
+
flex: 1 1 0;
|
|
151
|
+
align-items: center;
|
|
152
|
+
min-inline-size: 0;
|
|
153
|
+
margin-inline: calc(-1 * var(--border-size-1));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
* The tabs: bottom-aligned under the room above them, over the header's
|
|
158
|
+
* rule. Mono keeps one advance width at every weight, so the selected
|
|
159
|
+
* label's 700 never moves the row.
|
|
160
|
+
*/
|
|
161
|
+
.list {
|
|
162
|
+
position: relative;
|
|
163
|
+
isolation: isolate;
|
|
164
|
+
display: flex;
|
|
165
|
+
align-items: flex-end;
|
|
166
|
+
padding-block-start: var(--file-tabs-top);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/*
|
|
170
|
+
* Each tab is --fgd-size-hit tall, its foot on the foot of the header's
|
|
171
|
+
* rule. A tab behind the selected one is recessed paper: the --primary3
|
|
172
|
+
* face (two steps off the host's --primary1, never transparency),
|
|
173
|
+
* its own foot drawing the header's rule it covers, so it stands on the
|
|
174
|
+
* rule; the selected tab opens there instead (states).
|
|
175
|
+
*/
|
|
176
|
+
.tab {
|
|
177
|
+
--file-tab-pad-start: var(--file-tab-inset);
|
|
178
|
+
--file-tab-pad-end: var(--file-tab-inset);
|
|
179
|
+
|
|
180
|
+
position: relative;
|
|
181
|
+
display: inline-flex;
|
|
182
|
+
flex: none;
|
|
183
|
+
align-items: center;
|
|
184
|
+
box-sizing: border-box;
|
|
185
|
+
min-block-size: var(--fgd-size-hit);
|
|
186
|
+
margin: 0;
|
|
187
|
+
padding-block: 0;
|
|
188
|
+
padding-inline: var(--file-tab-pad-start) var(--file-tab-pad-end);
|
|
189
|
+
border: var(--border-size-1) solid var(--role-rule);
|
|
190
|
+
border-radius: 0;
|
|
191
|
+
background-color: var(--primary3);
|
|
192
|
+
color: var(--role-muted);
|
|
193
|
+
text-decoration: none;
|
|
194
|
+
white-space: nowrap;
|
|
195
|
+
cursor: pointer;
|
|
196
|
+
appearance: none;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Neighbours share one edge. */
|
|
200
|
+
.tab + .tab {
|
|
201
|
+
margin-inline-start: calc(-1 * var(--border-size-1));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* The first and last tabs round their outer top corner. */
|
|
205
|
+
.tab:first-child {
|
|
206
|
+
border-start-start-radius: var(--file-tab-radius);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.tab:last-child {
|
|
210
|
+
border-start-end-radius: var(--file-tab-radius);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* The pressed line under the label (the other tabs). */
|
|
214
|
+
.tab::after {
|
|
215
|
+
content: '';
|
|
216
|
+
display: none;
|
|
217
|
+
position: absolute;
|
|
218
|
+
inset-inline: var(--file-tab-pad-start) var(--file-tab-pad-end);
|
|
219
|
+
inset-block-end: 0;
|
|
220
|
+
border-block-end: var(--border-size-2) solid var(--primary12);
|
|
221
|
+
pointer-events: none;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/*
|
|
225
|
+
* The bare-text hover underline's color, weight and offset, as Tabs draws
|
|
226
|
+
* it (§9.5) [D181]. The label reserves its selected width: a hidden,
|
|
227
|
+
* zero-tall copy of its words at --font-weight-7 (`data-label`) sets its
|
|
228
|
+
* width, so selecting a tab never moves the row in the UI face (mono
|
|
229
|
+
* keeps one advance width anyway).
|
|
230
|
+
*/
|
|
231
|
+
.label {
|
|
232
|
+
position: relative;
|
|
233
|
+
display: flex;
|
|
234
|
+
flex-direction: column;
|
|
235
|
+
align-items: center;
|
|
236
|
+
text-decoration-color: var(--role-accent);
|
|
237
|
+
text-decoration-thickness: var(--border-size-2);
|
|
238
|
+
text-underline-offset: var(--size-px-1);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.label::after {
|
|
242
|
+
content: attr(data-label);
|
|
243
|
+
block-size: 0;
|
|
244
|
+
overflow: hidden;
|
|
245
|
+
font-weight: var(--font-weight-7);
|
|
246
|
+
visibility: hidden;
|
|
247
|
+
pointer-events: none;
|
|
248
|
+
user-select: none;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Disabled underline host: true 1 px dots at 3 px under the label (§4.6) [D36, D68]. */
|
|
252
|
+
.edge {
|
|
253
|
+
display: none;
|
|
254
|
+
position: absolute;
|
|
255
|
+
inset-inline-start: 0;
|
|
256
|
+
inset-block-end: 0;
|
|
257
|
+
inline-size: 100%;
|
|
258
|
+
block-size: var(--fgd-dot-fine);
|
|
259
|
+
overflow: visible;
|
|
260
|
+
pointer-events: none;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.edgeLine {
|
|
264
|
+
fill: none;
|
|
265
|
+
stroke: var(--role-disabled-edge);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/*
|
|
269
|
+
* One file: its name on one line, centred in the header, inset as the
|
|
270
|
+
* source's label (12 px from the host's outer edge). A name longer than
|
|
271
|
+
* its room truncates with an ellipsis rather than wrap, so the header
|
|
272
|
+
* keeps its height whatever the controls take.
|
|
273
|
+
*/
|
|
274
|
+
.single {
|
|
275
|
+
display: block;
|
|
276
|
+
flex: 0 1 auto;
|
|
277
|
+
box-sizing: border-box;
|
|
278
|
+
min-inline-size: 0;
|
|
279
|
+
padding-inline: var(--size-px-2-5);
|
|
280
|
+
overflow: hidden;
|
|
281
|
+
white-space: nowrap;
|
|
282
|
+
text-overflow: ellipsis;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/*
|
|
286
|
+
* The header's end: the controls' cell, and the status laid over the tabs
|
|
287
|
+
* beside it. Above the host's redrawn side edges, so a control's drawn
|
|
288
|
+
* edge can take the host's line.
|
|
289
|
+
*/
|
|
290
|
+
.side {
|
|
291
|
+
position: relative;
|
|
292
|
+
z-index: var(--layer-2);
|
|
293
|
+
display: flex;
|
|
294
|
+
flex: 0 1 auto;
|
|
295
|
+
min-inline-size: 0;
|
|
296
|
+
margin-inline-start: auto;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/*
|
|
300
|
+
* The status (the busy "-ing…" label [D84]): laid over the header's end
|
|
301
|
+
* beside the controls on a --primary1 face with a --role-rule start edge,
|
|
302
|
+
* so it never moves or narrows the tabs, and the header's rule drawn
|
|
303
|
+
* again under it. Always mounted, as the live region; empty, it has no
|
|
304
|
+
* size.
|
|
305
|
+
*/
|
|
306
|
+
.status {
|
|
307
|
+
position: absolute;
|
|
308
|
+
z-index: var(--layer-1);
|
|
309
|
+
inset-block: 0;
|
|
310
|
+
inset-inline-end: 100%;
|
|
311
|
+
display: flex;
|
|
312
|
+
align-items: center;
|
|
313
|
+
padding-inline: var(--size-px-2);
|
|
314
|
+
border-block-end: var(--border-size-1) solid var(--role-rule);
|
|
315
|
+
border-inline-start: var(--border-size-1) solid var(--role-rule);
|
|
316
|
+
background-color: var(--primary1);
|
|
317
|
+
color: var(--role-muted);
|
|
318
|
+
white-space: nowrap;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.status:empty {
|
|
322
|
+
padding-inline: 0;
|
|
323
|
+
border-width: 0;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/*
|
|
327
|
+
* The controls' cell for small controls (icon Buttons): at least
|
|
328
|
+
* --fgd-size-hit wide, its padding keeping them off the header's rules,
|
|
329
|
+
* one row that never wraps, end-aligned: a control that joins after the
|
|
330
|
+
* first paint enters at its start, taking room from the label or the
|
|
331
|
+
* tabs, and the controls already there stay put. A FileTabsControl never
|
|
332
|
+
* sits in the header: its row hangs outside (below).
|
|
333
|
+
*/
|
|
334
|
+
.controls {
|
|
335
|
+
display: flex;
|
|
336
|
+
flex: 0 1 auto;
|
|
337
|
+
flex-wrap: nowrap;
|
|
338
|
+
gap: var(--size-px-1);
|
|
339
|
+
align-items: center;
|
|
340
|
+
justify-content: flex-end;
|
|
341
|
+
box-sizing: border-box;
|
|
342
|
+
min-inline-size: var(--fgd-size-hit);
|
|
343
|
+
padding: var(--size-px-1) var(--size-px-2);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/*
|
|
347
|
+
* With a FileTabsControl (the ⋮), the header's end always hangs just
|
|
348
|
+
* outside the host's inline-end edge with zero layout width, whatever the
|
|
349
|
+
* tab count, as the source's did: from the host's top edge (or the joining
|
|
350
|
+
* rule) to the foot of the header's rule, the source's 49 px beside its
|
|
351
|
+
* 48 px header, so the tabs take the whole header. The host leaves
|
|
352
|
+
* --fgd-size-file-tabs-control free past its edge, unclipped. The status
|
|
353
|
+
* stays inside, over the tabs' end.
|
|
354
|
+
*/
|
|
355
|
+
.side:has(> .controls > .control) {
|
|
356
|
+
position: absolute;
|
|
357
|
+
inset-block-start: calc(-1 * var(--border-size-1));
|
|
358
|
+
inset-inline-start: calc(100% + var(--border-size-1));
|
|
359
|
+
block-size: calc(var(--file-tabs-block) + var(--border-size-1));
|
|
360
|
+
margin: 0;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.side:has(> .controls > .control) > .status {
|
|
364
|
+
inset-block: var(--border-size-1) 0;
|
|
365
|
+
inset-inline-end: calc(100% + var(--border-size-1));
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* One row outside the edge, as wide as its controls, with no cell edge or padding. */
|
|
369
|
+
.controls:has(> .control) {
|
|
370
|
+
flex-wrap: nowrap;
|
|
371
|
+
align-items: stretch;
|
|
372
|
+
inline-size: max-content;
|
|
373
|
+
min-inline-size: 0;
|
|
374
|
+
padding: 0;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/*
|
|
378
|
+
* One header control (FileTabsControl): the ear, --size-px-4 wide from the
|
|
379
|
+
* host's edge line (the source's 20 px), with rounded outer corners. Its
|
|
380
|
+
* drawn shape (`::after`) sits under its glyph; its hit area (`::before`)
|
|
381
|
+
* is --fgd-size-hit wide from the host's outer edge, all of it in the
|
|
382
|
+
* gutter and none over the tabs.
|
|
383
|
+
*/
|
|
384
|
+
.control {
|
|
385
|
+
position: relative;
|
|
386
|
+
isolation: isolate;
|
|
387
|
+
display: flex;
|
|
388
|
+
flex: none;
|
|
389
|
+
align-items: center;
|
|
390
|
+
justify-content: center;
|
|
391
|
+
box-sizing: border-box;
|
|
392
|
+
inline-size: calc(var(--size-px-4) - var(--border-size-1));
|
|
393
|
+
margin: 0;
|
|
394
|
+
padding: 0;
|
|
395
|
+
border: 0;
|
|
396
|
+
border-start-end-radius: var(--radius-2-25);
|
|
397
|
+
border-end-end-radius: var(--radius-2-25);
|
|
398
|
+
background: none;
|
|
399
|
+
color: var(--primary12);
|
|
400
|
+
cursor: pointer;
|
|
401
|
+
appearance: none;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/* Its glyph centres on the ear, whose start edge is the host's line: it starts on that line too, never squeezed. */
|
|
405
|
+
.control > * {
|
|
406
|
+
flex: none;
|
|
407
|
+
max-inline-size: none;
|
|
408
|
+
margin-inline-start: calc(-1 * var(--border-size-1));
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.control::before {
|
|
412
|
+
content: '';
|
|
413
|
+
position: absolute;
|
|
414
|
+
inset-block: 0;
|
|
415
|
+
inset-inline-start: 0;
|
|
416
|
+
inline-size: var(--fgd-size-hit);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/* The ear, drawn from the host's edge line: its start edge is that line, its top the host's top edge, its foot the header's rule. */
|
|
420
|
+
.control::after {
|
|
421
|
+
content: '';
|
|
422
|
+
position: absolute;
|
|
423
|
+
z-index: -1;
|
|
424
|
+
display: none;
|
|
425
|
+
inset: 0 0 0 calc(-1 * var(--border-size-1));
|
|
426
|
+
border: var(--border-size-1) solid var(--primary12);
|
|
427
|
+
border-start-end-radius: var(--radius-2-25);
|
|
428
|
+
border-end-end-radius: var(--radius-2-25);
|
|
429
|
+
background-color: var(--primary1);
|
|
430
|
+
pointer-events: none;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* The controls row: the containing block of the corner it draws round the ear with a rounded host (below). */
|
|
434
|
+
.controls:has(> .control) {
|
|
435
|
+
position: relative;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.panel {
|
|
439
|
+
min-inline-size: 0;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
@media (forced-colors: active) {
|
|
443
|
+
.edgeLine {
|
|
444
|
+
stroke: currentColor;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/*
|
|
449
|
+
* Face and radius changes: the source's 200 ms (`transition: all 0.2s
|
|
450
|
+
* ease`, its curve mapped to --ease-out-3) [D195]. Both faces are opaque
|
|
451
|
+
* steps, so the fill never passes through transparent; the radii change
|
|
452
|
+
* on selection and on pressing the selected tab, never on hover alone: a
|
|
453
|
+
* control's own shape may change on a press or a selection [D181, D205].
|
|
454
|
+
*/
|
|
455
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
456
|
+
.tab {
|
|
457
|
+
transition-property: background-color, border-color, border-radius;
|
|
458
|
+
transition-duration: var(--fgd-duration-disclosure);
|
|
459
|
+
transition-timing-function: var(--ease-out-3);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
@layer variants {
|
|
465
|
+
/*
|
|
466
|
+
* Several files: the bar leaves the flow, as the source's header
|
|
467
|
+
* container did, so the header keeps its height whatever the strip's
|
|
468
|
+
* scrollbar takes. The tablist is the strip's native scroll row (the
|
|
469
|
+
* row Base UI scrolls a tab into as arrow keys move focus), across the
|
|
470
|
+
* lead. A classic scrollbar hangs flush under the header, over the
|
|
471
|
+
* code's top padding, clear of the first line; an overlay one shows over
|
|
472
|
+
* the strip's foot; the tabs never lift off the rule. (The source padded
|
|
473
|
+
* the row's foot 2 px, which left 2 px of face between the tabs and a
|
|
474
|
+
* classic scrollbar; its pale track hid the gap, a dark one shows it.)
|
|
475
|
+
*/
|
|
476
|
+
.header[data-tablist] > .bar {
|
|
477
|
+
position: absolute;
|
|
478
|
+
inset-inline: 0;
|
|
479
|
+
inset-block-start: 0;
|
|
480
|
+
block-size: auto;
|
|
481
|
+
margin: 0;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
.header[data-tablist] > .bar > .lead {
|
|
485
|
+
align-items: stretch;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
.header[data-tablist] > .bar > .lead > .list {
|
|
489
|
+
flex: 1 1 auto;
|
|
490
|
+
min-inline-size: 0;
|
|
491
|
+
overflow-x: auto;
|
|
492
|
+
overscroll-behavior-x: contain;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/*
|
|
496
|
+
* Small controls (not a FileTabsControl) with several files: their cell,
|
|
497
|
+
* the header's height with its rule, as the tabs; the tabs end on its
|
|
498
|
+
* --role-rule start edge.
|
|
499
|
+
*/
|
|
500
|
+
.header[data-tablist] > .bar > .side:not(:has(> .controls > .control)) {
|
|
501
|
+
align-self: flex-start;
|
|
502
|
+
block-size: var(--file-tabs-block);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.header[data-tablist] > .bar > .side > .controls:not(:has(> .control)) {
|
|
506
|
+
border-inline-start: var(--border-size-1) solid var(--role-rule);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/* At the top of a host with rounded top corners: the side edges start below the host's radius, as the source's did (`top: 8px`). */
|
|
510
|
+
.frameTop > .bar::before,
|
|
511
|
+
.frameTop > .bar::after {
|
|
512
|
+
inset-block-start: var(--file-tabs-host-radius);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/*
|
|
516
|
+
* At the top of a rounded host the drawn ear wraps the host's top-end
|
|
517
|
+
* corner, so its outline runs unbroken: its start side is the host's
|
|
518
|
+
* corner arc and end edge, redrawn in the outline's colour, and the pocket
|
|
519
|
+
* between the arc and the ear's top line takes the ear's fill. The ear
|
|
520
|
+
* itself starts at the host's outer edge, with no start side; the
|
|
521
|
+
* controls row draws the corner: `::before` the arc, the end edge below
|
|
522
|
+
* it down to the rule's foot and, as its clipped spread shadow, the
|
|
523
|
+
* pocket's fill; `::after` the pocket's top line. Both take the host's
|
|
524
|
+
* radius, so they follow it, and logical sides, so they mirror in RTL.
|
|
525
|
+
*/
|
|
526
|
+
.frameTop .control::after {
|
|
527
|
+
inset-inline-start: 0;
|
|
528
|
+
border-inline-start-width: 0;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.frameTop .controls:has(> .control)::before,
|
|
532
|
+
.frameTop .controls:has(> .control)::after {
|
|
533
|
+
content: '';
|
|
534
|
+
position: absolute;
|
|
535
|
+
z-index: 1;
|
|
536
|
+
display: none;
|
|
537
|
+
inset-block-start: 0;
|
|
538
|
+
inset-inline-end: 100%;
|
|
539
|
+
box-sizing: border-box;
|
|
540
|
+
inline-size: var(--file-tabs-host-radius);
|
|
541
|
+
pointer-events: none;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.frameTop .controls:has(> .control)::before {
|
|
545
|
+
block-size: 100%;
|
|
546
|
+
border-block-start: var(--border-size-1) solid var(--primary12);
|
|
547
|
+
border-inline-end: var(--border-size-1) solid var(--primary12);
|
|
548
|
+
border-start-end-radius: var(--file-tabs-host-radius);
|
|
549
|
+
box-shadow: 0 0 0 var(--file-tabs-host-radius) var(--primary1);
|
|
550
|
+
clip-path: inset(0);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.frameTop .controls:has(> .control)::after {
|
|
554
|
+
block-size: var(--border-size-1);
|
|
555
|
+
background-color: var(--primary12);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/* In a host part below another (no rounded top): the header's rule joins the part above, and the side edges run from it. */
|
|
559
|
+
.frameJoined {
|
|
560
|
+
block-size: calc(var(--file-tabs-block) + var(--border-size-1));
|
|
561
|
+
border-block-start: var(--border-size-1) solid var(--role-rule);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.frameJoined > .bar::before,
|
|
565
|
+
.frameJoined > .bar::after {
|
|
566
|
+
inset-block-start: calc(-1 * var(--border-size-1));
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/* No host frame: no side edges to draw or overlap, so the strip stays inside the header. */
|
|
570
|
+
.frameNone > .bar::before,
|
|
571
|
+
.frameNone > .bar::after {
|
|
572
|
+
content: none;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
.frameNone > .bar > .lead {
|
|
576
|
+
margin-inline: 0;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/* The tabs still end on a controls' cell edge, as they would on a host's. */
|
|
580
|
+
.frameNone > .bar > .lead:has(+ .side > .controls) {
|
|
581
|
+
margin-inline-end: calc(-1 * var(--border-size-1));
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/*
|
|
585
|
+
* A FileTabsControl hangs past the header's own end, from its top to the
|
|
586
|
+
* rule's foot, the ear's start edge on the tabs' last line.
|
|
587
|
+
*/
|
|
588
|
+
.frameNone > .bar:has(> .side > .controls > .control) > .lead {
|
|
589
|
+
margin-inline-end: 0;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.frameNone > .bar > .side:has(> .controls > .control) {
|
|
593
|
+
inset-block-start: 0;
|
|
594
|
+
inset-inline-start: 100%;
|
|
595
|
+
block-size: var(--file-tabs-block);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.frameNone > .bar > .side:has(> .controls > .control) > .status {
|
|
599
|
+
inset-block: 0;
|
|
600
|
+
inset-inline-end: 100%;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/* The status covers the tabs on the ground they sit on. */
|
|
604
|
+
.frameNone > .bar > .side > .status {
|
|
605
|
+
background-color: var(--role-ground);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/*
|
|
609
|
+
* No document and a FileTabsControl (Code Block's nameless snippet): no
|
|
610
|
+
* header row, no rule. The header keeps only the joining rule with
|
|
611
|
+
* `joined`; the ⋮ hangs from the host's top-end corner as it does beside
|
|
612
|
+
* a header, its ear --fgd-size-hit tall from the host's top edge (or the
|
|
613
|
+
* joining rule), with its hit area in the same gutter, so it takes no
|
|
614
|
+
* layout width and no height. The status, while busy, lies over the
|
|
615
|
+
* panel's top-end corner beside it.
|
|
616
|
+
*/
|
|
617
|
+
.header[data-labelless]:has(> .bar > .side > .controls > .control) {
|
|
618
|
+
block-size: auto;
|
|
619
|
+
border-block-end-width: 0;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.header[data-labelless] > .bar:has(> .side > .controls > .control) {
|
|
623
|
+
block-size: 0;
|
|
624
|
+
margin: 0;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.header[data-labelless] > .bar:has(> .side > .controls > .control)::before,
|
|
628
|
+
.header[data-labelless] > .bar:has(> .side > .controls > .control)::after {
|
|
629
|
+
content: none;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.header[data-labelless] > .bar > .side:has(> .controls > .control) {
|
|
633
|
+
block-size: calc(var(--fgd-size-hit) + var(--border-size-1));
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.frameNone[data-labelless] > .bar > .side:has(> .controls > .control) {
|
|
637
|
+
block-size: var(--fgd-size-hit);
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
@layer states {
|
|
642
|
+
/*
|
|
643
|
+
* The selected tab: the front sheet of paper, above its neighbours, with
|
|
644
|
+
* both top corners rounded. It takes its panel's own face (the host's
|
|
645
|
+
* --primary1) in the same --role-rule edge, and opens into the panel: no
|
|
646
|
+
* foot edge, so the header's rule stops at its sides and nothing divides
|
|
647
|
+
* tab from panel (the foot's width moves into its padding, so its label
|
|
648
|
+
* stays level with the others'). Its label is the --primary12 ink at
|
|
649
|
+
* --font-weight-7: the state reads by weight and by the joined edge, not
|
|
650
|
+
* by color alone.
|
|
651
|
+
*/
|
|
652
|
+
.tab[data-active] {
|
|
653
|
+
z-index: var(--layer-1);
|
|
654
|
+
padding-block-end: var(--border-size-1);
|
|
655
|
+
border-block-end-width: 0;
|
|
656
|
+
border-start-start-radius: var(--file-tab-radius);
|
|
657
|
+
border-start-end-radius: var(--file-tab-radius);
|
|
658
|
+
background-color: var(--primary1);
|
|
659
|
+
color: var(--primary12);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.tab[data-active] .label {
|
|
663
|
+
color: var(--primary12);
|
|
664
|
+
font-weight: var(--font-weight-7);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/* No host frame: the panel sits on the ground, so the front tab takes the ground's face. */
|
|
668
|
+
.frameNone .tab[data-active] {
|
|
669
|
+
background-color: var(--role-ground);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/*
|
|
673
|
+
* Its neighbours tuck under it by the tuck: the tucked side's padding
|
|
674
|
+
* grows by it and the negative margin gives it back, so no label moves
|
|
675
|
+
* when the selection does.
|
|
676
|
+
*/
|
|
677
|
+
.tab:has(+ .tab[data-active]) {
|
|
678
|
+
--file-tab-pad-end: calc(var(--file-tab-inset) + var(--file-tab-tuck));
|
|
679
|
+
|
|
680
|
+
margin-inline-end: calc(-1 * var(--file-tab-tuck));
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
.tab[data-active] + .tab {
|
|
684
|
+
--file-tab-pad-start: calc(var(--file-tab-inset) + var(--file-tab-tuck));
|
|
685
|
+
|
|
686
|
+
margin-inline-start: calc(-1 * (var(--file-tab-tuck) + var(--border-size-1)));
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/* Hover (the other tabs, not disabled): the bare-text underline [D181]. */
|
|
690
|
+
.tab:not([data-active]):not([data-disabled]):hover .label {
|
|
691
|
+
text-decoration-line: underline;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/* Pressed (the other tabs): a --border-size-2 line under the label. */
|
|
695
|
+
.tab:not([data-active]):not([data-disabled]):active::after {
|
|
696
|
+
display: block;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/* Pressed (the selected tab): its radii grow, where motion is OK. */
|
|
700
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
701
|
+
.tab[data-active]:not([data-disabled]):active {
|
|
702
|
+
border-start-start-radius: var(--file-tab-radius-pressed);
|
|
703
|
+
border-start-end-radius: var(--file-tab-radius-pressed);
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
/* Focus: the 2 px --primary12 ring inside the hit area, so the scrolling row never clips it. */
|
|
708
|
+
.tab:focus-visible {
|
|
709
|
+
outline: var(--fgd-focus-width) solid var(--primary12);
|
|
710
|
+
outline-offset: calc(-1 * var(--fgd-focus-width));
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/* Disabled: --role-muted label and the dotted underline; never dimmed [D16, D85]. */
|
|
714
|
+
.tab[data-disabled] {
|
|
715
|
+
color: var(--role-muted);
|
|
716
|
+
cursor: default;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.tab[data-disabled] .edge {
|
|
720
|
+
display: block;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
/* The disabled selected tab keeps its face, shape, place and weight; its label is muted. */
|
|
724
|
+
.tab[data-active][data-disabled] .label {
|
|
725
|
+
color: var(--role-muted);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/*
|
|
729
|
+
* The ear shows at once while the control is pointed at or focused, on the
|
|
730
|
+
* soft hover fill [D181], never waiting on its tooltip (whose own
|
|
731
|
+
* `data-popup-open` it ignores); and while its menu is open (the menu's
|
|
732
|
+
* `aria-expanded`), on the --primary1 face.
|
|
733
|
+
*/
|
|
734
|
+
.control[aria-expanded='true']::after,
|
|
735
|
+
.control:not(:disabled, [data-disabled]):is(:hover, :focus-visible)::after,
|
|
736
|
+
.frameTop .controls:has(> .control[aria-expanded='true'])::before,
|
|
737
|
+
.frameTop .controls:has(> .control[aria-expanded='true'])::after,
|
|
738
|
+
.frameTop .controls:has(> .control:not(:disabled, [data-disabled]):is(:hover, :focus-visible))::before,
|
|
739
|
+
.frameTop .controls:has(> .control:not(:disabled, [data-disabled]):is(:hover, :focus-visible))::after {
|
|
740
|
+
display: block;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/* Pointed at or focused: the soft hover fill, in the ear and the corner's pocket alike. */
|
|
744
|
+
.control:not(:disabled, [data-disabled]):is(:hover, :focus-visible)::after {
|
|
745
|
+
background-color: var(--role-soft-hover);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.frameTop .controls:has(> .control:not(:disabled, [data-disabled]):is(:hover, :focus-visible))::before {
|
|
749
|
+
box-shadow: 0 0 0 var(--file-tabs-host-radius) var(--role-soft-hover);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/*
|
|
753
|
+
* Focus: the ring on the control, keyboard only, inset. Its offset is the
|
|
754
|
+
* local ring token, so the outline morph predicts the ring a closing
|
|
755
|
+
* menu lands on [D204].
|
|
756
|
+
*/
|
|
757
|
+
.control {
|
|
758
|
+
--fgd-focus-offset: calc(-1 * var(--fgd-focus-width));
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
.control:focus-visible {
|
|
762
|
+
outline: var(--fgd-focus-width) solid var(--primary12);
|
|
763
|
+
outline-offset: var(--fgd-focus-offset);
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
/* Disabled (a loading state): --role-muted, the rest weight, no opacity [D85]. */
|
|
767
|
+
.control:disabled,
|
|
768
|
+
.control[data-disabled] {
|
|
769
|
+
color: var(--role-muted);
|
|
770
|
+
cursor: default;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/*
|
|
774
|
+
* Small icon Buttons in the header are quiet at rest, as the ⋮ is: `text`
|
|
775
|
+
* icon-only Buttons, a glyph with no edge (and, disabled, no dotted edge:
|
|
776
|
+
* a loading stand-in is the same glyph in --role-muted, the same size).
|
|
777
|
+
* Pointed at or focused, their circle is drawn at once, a --border-size-1
|
|
778
|
+
* --primary12 edge on the --role-soft-hover fill, as the ⋮'s ear [D181];
|
|
779
|
+
* the Button keeps its fixed size (the edge is inside it), its
|
|
780
|
+
* --fgd-size-hit hit area, its glyph's weight swap and its focus ring.
|
|
781
|
+
* Nothing fades, so leaving is as instant as arriving.
|
|
782
|
+
*/
|
|
783
|
+
.controls > :is(button, a):not(.control) {
|
|
784
|
+
transition: none;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
.controls > :is(button, a):not(.control, :disabled, [data-disabled], [aria-busy='true']):is(:hover, :focus-visible) {
|
|
788
|
+
border: var(--border-size-1) solid var(--primary12);
|
|
789
|
+
background-color: var(--role-soft-hover);
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.panel:focus-visible {
|
|
793
|
+
outline: var(--fgd-focus-width) solid var(--primary12);
|
|
794
|
+
outline-offset: calc(-1 * var(--fgd-focus-width));
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
@layer print {
|
|
799
|
+
@media print {
|
|
800
|
+
/* The header hugs the file labels, inset like a code block's code; the controls and status are screen-only. */
|
|
801
|
+
.header,
|
|
802
|
+
.frameJoined {
|
|
803
|
+
block-size: auto;
|
|
804
|
+
padding: var(--size-px-2) var(--size-px-2-5);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.header > .bar,
|
|
808
|
+
.header[data-tablist] > .bar {
|
|
809
|
+
position: static;
|
|
810
|
+
block-size: auto;
|
|
811
|
+
margin: 0;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
/* No document (a nameless snippet): nothing to print, so no header. */
|
|
815
|
+
.header[data-labelless] {
|
|
816
|
+
display: none;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
.bar::before,
|
|
820
|
+
.bar::after,
|
|
821
|
+
.side {
|
|
822
|
+
display: none;
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
.lead,
|
|
826
|
+
.header[data-tablist] > .bar > .lead {
|
|
827
|
+
align-items: center;
|
|
828
|
+
margin-inline: 0;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/* Plain mono labels in a wrapping row, black on white, the selected one marked by weight alone (§1.11.6). */
|
|
832
|
+
.list,
|
|
833
|
+
.header[data-tablist] > .bar > .lead > .list {
|
|
834
|
+
flex-wrap: wrap;
|
|
835
|
+
gap: var(--size-px-1) var(--size-px-3);
|
|
836
|
+
padding-block: 0;
|
|
837
|
+
overflow: visible;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.tab {
|
|
841
|
+
min-block-size: 0;
|
|
842
|
+
margin: 0;
|
|
843
|
+
padding: 0;
|
|
844
|
+
border: 0;
|
|
845
|
+
border-radius: 0;
|
|
846
|
+
background: none;
|
|
847
|
+
color: var(--primary12);
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.tab .label,
|
|
851
|
+
.single {
|
|
852
|
+
color: var(--primary12);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
/* Paper doesn't truncate: a long name wraps. */
|
|
856
|
+
.single {
|
|
857
|
+
padding-inline: 0;
|
|
858
|
+
overflow: visible;
|
|
859
|
+
white-space: normal;
|
|
860
|
+
overflow-wrap: anywhere;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.tab::after,
|
|
864
|
+
.edge {
|
|
865
|
+
display: none;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
}
|