@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,949 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code Block. Parts: `base` (the frame), `target` (a hidden `#slug` scroll
|
|
3
|
+
* target), `variantSelect` and `transformSwitch` (the one-file actions'
|
|
4
|
+
* scroll anchors), `transformGroup` and `transformToggle` (the TS | JS
|
|
5
|
+
* switch's group and halves, lightened in the header), `source`, `pre` (useCode's `preClassName`: the engine's
|
|
6
|
+
* `<pre>`), `checkbox` and `toggle` (the window's control). The header is
|
|
7
|
+
* File Tabs (`navigation/file-tabs`), which owns its geometry: the folder
|
|
8
|
+
* tabs in their native scroll row, the frame's side edges over them, the
|
|
9
|
+
* hanging "More actions" trigger (a FileTabsControl) and the status.
|
|
10
|
+
*
|
|
11
|
+
* The code's spacing is the source's, to the pixel, because it places the
|
|
12
|
+
* native scrollbars: `source` pads 10 px above and below and the `pre` 6 px
|
|
13
|
+
* more, so the tab strip's classic scrollbar hangs over the source's top
|
|
14
|
+
* padding and the code's own sits 6 px under the last line and 10 px above
|
|
15
|
+
* the frame's foot, edge to edge.
|
|
16
|
+
*
|
|
17
|
+
* The docs engine's own hooks are styled as global classes: frames and lines
|
|
18
|
+
* (`.frame`, `.line`, `[data-frame-*]`, `[data-hl*]`, `mark`), the swap
|
|
19
|
+
* (`[data-transforming]`, `.collapse`, `[data-expanding]`), the window
|
|
20
|
+
* (`code[data-collapsible]`, `[data-scrollbar-gutter]`), the editable
|
|
21
|
+
* prompt, and the syntax tokens (starry-night `pl-*`, pipeline `fgd-*`).
|
|
22
|
+
* Colors are role variables and scale steps only, so the block follows its
|
|
23
|
+
* ground and the page mode with no mode-specific rule; nothing is
|
|
24
|
+
* transparent, faded, shadowed or graded [D12, D91]. Local custom
|
|
25
|
+
* properties carry dimensions only.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/* Composition sits in top-level rules, outside the layers: Lightning CSS
|
|
29
|
+
* (Next.js with Turbopack) rejects `composes` inside @layer or any nesting.
|
|
30
|
+
* The composed classes keep their own layers. */
|
|
31
|
+
.toggle {
|
|
32
|
+
composes: typeButton from '../../utils/type.module.css';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* The swap's line grow and shrink run as keyframes, not transitions: React
|
|
36
|
+
* reuses the span when a line becomes a bridge, so @starting-style would
|
|
37
|
+
* never fire. */
|
|
38
|
+
@keyframes code-block-grow {
|
|
39
|
+
from {
|
|
40
|
+
block-size: 0;
|
|
41
|
+
}
|
|
42
|
+
to {
|
|
43
|
+
block-size: var(--code-block-line);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@keyframes code-block-shrink {
|
|
48
|
+
from {
|
|
49
|
+
block-size: var(--code-block-line);
|
|
50
|
+
}
|
|
51
|
+
to {
|
|
52
|
+
block-size: 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@layer base {
|
|
57
|
+
/*
|
|
58
|
+
* The frame: every fill has an edge [D12], at the page's standard panel
|
|
59
|
+
* radius (only the tabs take the paper-tab radius). It clips nothing, as
|
|
60
|
+
* in the source: the header's "More actions" trigger hangs past its
|
|
61
|
+
* inline-end edge, and its parts keep inside it on their own (the code
|
|
62
|
+
* scrolls in the `pre`, the tabs in their row). No min-content floor as a flex or
|
|
63
|
+
* grid item. File Tabs' header sits at its top (`frame="top"`, or
|
|
64
|
+
* `"joined"` embedded).
|
|
65
|
+
*/
|
|
66
|
+
.base {
|
|
67
|
+
/* The frame's corner radius (the Demo's frame takes the same token, so the embedded code shares it). */
|
|
68
|
+
--code-block-radius: var(--radius-2-25);
|
|
69
|
+
|
|
70
|
+
min-inline-size: 0;
|
|
71
|
+
margin-block: var(--size-px-5);
|
|
72
|
+
border: var(--border-size-1) solid var(--role-rule);
|
|
73
|
+
border-radius: var(--code-block-radius);
|
|
74
|
+
background-color: var(--primary1);
|
|
75
|
+
color: var(--primary12);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* A hidden target for native `#slug` links: in flow, so the browser can
|
|
79
|
+
* scroll to it, and zero tall. */
|
|
80
|
+
.target {
|
|
81
|
+
display: block;
|
|
82
|
+
block-size: 0;
|
|
83
|
+
scroll-margin-block-start: var(--size-px-3);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* The one-file actions' scroll anchors for a swap: real boxes, so they can be measured. */
|
|
87
|
+
.variantSelect,
|
|
88
|
+
.transformSwitch {
|
|
89
|
+
display: inline-flex;
|
|
90
|
+
flex: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.variantSelect {
|
|
94
|
+
flex: 0 1 auto;
|
|
95
|
+
min-inline-size: var(--size-px-10);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* The code's wrapper: the source's 10 px above and below (the `pre`
|
|
100
|
+
* scrolls inside it). The foot keeps the `pre`, and so its native
|
|
101
|
+
* scrollbar, clear of the frame's rounded bottom corners: a rectangle is
|
|
102
|
+
* inside a corner of inner radius r when it sits r above the inner
|
|
103
|
+
* bottom edge (at any inline position, so the scrollbar and the
|
|
104
|
+
* highlighted lines can run edge to edge) or r(1 - 1/√2) in from both
|
|
105
|
+
* edges. The source's 10 px holds for our 7 px inner radius; the foot
|
|
106
|
+
* grows with the radius if it's ever larger.
|
|
107
|
+
*/
|
|
108
|
+
.source {
|
|
109
|
+
--code-block-inset: 10px; /* the source's code wrapper padding; no step */
|
|
110
|
+
--code-block-foot: max(var(--code-block-inset), calc(var(--code-block-radius) - var(--border-size-1)));
|
|
111
|
+
|
|
112
|
+
position: relative;
|
|
113
|
+
padding-block: var(--code-block-inset) var(--code-block-foot);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* The code: mono at the caption size, reading leading; the line height is
|
|
117
|
+
* also the height a swap's bridge line grows to. */
|
|
118
|
+
.pre {
|
|
119
|
+
--code-block-line: calc(var(--fgd-font-size-caption) * var(--fgd-leading-reading));
|
|
120
|
+
/* A classic scrollbar's height: the window swaps the real scrollbar for
|
|
121
|
+
* this much margin while it collapses (a platform metric, not a token). */
|
|
122
|
+
--code-block-gutter: 15px;
|
|
123
|
+
--code-block-pad: 6px; /* the source's pre padding, above and below; no step */
|
|
124
|
+
|
|
125
|
+
margin: 0;
|
|
126
|
+
padding-block: var(--code-block-pad);
|
|
127
|
+
overflow-x: auto;
|
|
128
|
+
tab-size: 2;
|
|
129
|
+
font-family: var(--fgd-font-mono);
|
|
130
|
+
font-size: var(--fgd-font-size-caption);
|
|
131
|
+
line-height: var(--code-block-line);
|
|
132
|
+
color: var(--primary12);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Block, so frames stretch to the widest line. */
|
|
136
|
+
.pre > :global(code) {
|
|
137
|
+
display: block;
|
|
138
|
+
min-inline-size: fit-content;
|
|
139
|
+
font: inherit;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.pre :global(.frame) {
|
|
143
|
+
display: block;
|
|
144
|
+
padding-inline: var(--size-px-2-5);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* A lined frame: the newlines between its line spans take no space. */
|
|
148
|
+
.pre :global(.frame[data-lined]) {
|
|
149
|
+
white-space: normal;
|
|
150
|
+
line-height: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.pre :global(.frame[data-lined] .line) {
|
|
154
|
+
display: block;
|
|
155
|
+
position: relative;
|
|
156
|
+
white-space: pre;
|
|
157
|
+
line-height: var(--code-block-line);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/*
|
|
161
|
+
* A blank line keeps its height, as it does in an unlined frame (the
|
|
162
|
+
* loading fallback, or a frame the engine hasn't lined yet), so the two
|
|
163
|
+
* render alike and nothing shifts when a frame is lined. Not a line a
|
|
164
|
+
* swap inserts, which grows from nothing.
|
|
165
|
+
*/
|
|
166
|
+
.pre :global(.frame[data-lined] .line:not([data-expanding])) {
|
|
167
|
+
min-block-size: var(--code-block-line);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/*
|
|
171
|
+
* Emphasis: a highlighted frame or line takes the --primary3 fill and a
|
|
172
|
+
* --border-size-2 start bar in --role-accent, so it still reads in print
|
|
173
|
+
* and forced colors where fills drop; a strong line steps to --primary4.
|
|
174
|
+
*/
|
|
175
|
+
.pre :global(.frame[data-frame-type='highlighted']),
|
|
176
|
+
.pre :global(.frame[data-frame-type='highlighted-unfocused']) {
|
|
177
|
+
padding-inline-start: calc(var(--size-px-2-5) - var(--border-size-2));
|
|
178
|
+
border-inline-start: var(--border-size-2) solid var(--role-accent);
|
|
179
|
+
background-color: var(--primary3);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* A highlighted line in an unhighlighted frame: its own fill and bar, edge to edge. */
|
|
183
|
+
.pre :global(.line[data-hl]) {
|
|
184
|
+
margin-inline: calc(-1 * var(--size-px-2-5));
|
|
185
|
+
padding-inline: calc(var(--size-px-2-5) - var(--border-size-2)) var(--size-px-2-5);
|
|
186
|
+
border-inline-start: var(--border-size-2) solid var(--role-accent);
|
|
187
|
+
background-color: var(--primary3);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.pre :global(.line[data-hl='strong']) {
|
|
191
|
+
background-color: var(--primary4);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Inside a highlighted frame the frame carries the bar and fill; only a strong line adds its step. */
|
|
195
|
+
.pre :global(.frame[data-frame-type^='highlighted'] .line[data-hl]) {
|
|
196
|
+
margin-inline: calc(var(--border-size-2) - var(--size-px-2-5)) calc(-1 * var(--size-px-2-5));
|
|
197
|
+
padding-inline: calc(var(--size-px-2-5) - var(--border-size-2)) var(--size-px-2-5);
|
|
198
|
+
border-inline-start: 0;
|
|
199
|
+
background: none;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.pre :global(.frame[data-frame-type^='highlighted'] .line[data-hl='strong']) {
|
|
203
|
+
background-color: var(--primary4);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Inline highlights: a fill tier plus an underline, so a mark survives print. */
|
|
207
|
+
.pre :global(mark) {
|
|
208
|
+
background-color: var(--primary3);
|
|
209
|
+
color: inherit;
|
|
210
|
+
text-decoration-line: underline;
|
|
211
|
+
text-decoration-color: var(--role-accent);
|
|
212
|
+
text-decoration-thickness: var(--border-size-1);
|
|
213
|
+
text-underline-offset: 0.2em;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.pre :global(mark[data-hl]) {
|
|
217
|
+
background-color: var(--primary4);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Strong: the heavier underline carries it; the fill stays --primary4, where every token ink holds 4.5:1. */
|
|
221
|
+
.pre :global(mark[data-hl='strong']) {
|
|
222
|
+
text-decoration-thickness: var(--border-size-2);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Range and frame descriptions: an inverse badge at the line's end. */
|
|
226
|
+
.pre :global(.line[data-hl-description])::after,
|
|
227
|
+
.pre :global(.frame[data-frame-description])::before {
|
|
228
|
+
float: inline-end;
|
|
229
|
+
padding-inline: var(--size-px-1);
|
|
230
|
+
border-radius: var(--radius-1);
|
|
231
|
+
background-color: var(--primary12);
|
|
232
|
+
color: var(--primary1);
|
|
233
|
+
line-height: var(--fgd-leading-compact);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.pre :global(.line[data-hl-description])::after {
|
|
237
|
+
content: attr(data-hl-description);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.pre :global(.frame[data-frame-description])::before {
|
|
241
|
+
content: attr(data-frame-description);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/*
|
|
245
|
+
* The swap (useCode's `transformDelay` / `variantSwapDelay`): a bridge
|
|
246
|
+
* (`.collapse`, one empty span per line) and inserted lines
|
|
247
|
+
* (`[data-expanding]`) grow or shrink one line height each over
|
|
248
|
+
* --fgd-duration-swap while the `pre` carries `data-transforming`. The
|
|
249
|
+
* duration must equal the JS delay; both are instant under --motionNotOK.
|
|
250
|
+
*/
|
|
251
|
+
.pre :global(.frame .collapse) {
|
|
252
|
+
display: block;
|
|
253
|
+
overflow: hidden;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.pre :global(.frame .collapse > span) {
|
|
257
|
+
display: block;
|
|
258
|
+
block-size: 0;
|
|
259
|
+
overflow: hidden;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.pre :global(.frame .line[data-expanding]) {
|
|
263
|
+
display: block;
|
|
264
|
+
overflow: hidden;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/*
|
|
268
|
+
* Editable code (only with the docs engine's editor): the wrapper is the
|
|
269
|
+
* keyboard stop and shows the ring; the "Press Enter to start editing"
|
|
270
|
+
* prompt is an inverse chip, shown with visibility, never faded.
|
|
271
|
+
*/
|
|
272
|
+
.source :global(pre):focus-visible {
|
|
273
|
+
outline: none;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.source :global(.editable-code-wrapper) {
|
|
277
|
+
display: block;
|
|
278
|
+
position: relative;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.source :global(.editable-code-wrapper):focus-visible {
|
|
282
|
+
outline: var(--fgd-focus-width) solid var(--primary12);
|
|
283
|
+
outline-offset: calc(-1 * var(--fgd-focus-width));
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.source :global(.editable-code-wrapper) :global(.editable-code-overlay[hidden]) {
|
|
287
|
+
display: block;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.source :global(.editable-code-wrapper) :global(.editable-code-overlay) {
|
|
291
|
+
position: absolute;
|
|
292
|
+
z-index: 1;
|
|
293
|
+
inset-block-start: var(--size-px-2);
|
|
294
|
+
inset-inline: 0;
|
|
295
|
+
inline-size: fit-content;
|
|
296
|
+
margin-inline: auto;
|
|
297
|
+
padding: var(--size-px-1) var(--size-px-2-5);
|
|
298
|
+
border: var(--border-size-2) solid var(--primary12);
|
|
299
|
+
border-radius: var(--radius-2-25);
|
|
300
|
+
background-color: var(--primary12);
|
|
301
|
+
color: var(--primary1);
|
|
302
|
+
font-family: var(--fgd-font-mono);
|
|
303
|
+
font-size: var(--fgd-font-size-caption);
|
|
304
|
+
line-height: var(--fgd-leading-compact);
|
|
305
|
+
visibility: hidden;
|
|
306
|
+
pointer-events: none;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.source :global(.editable-code-wrapper)[data-editable-prompt] :global(.editable-code-overlay) {
|
|
310
|
+
visibility: visible;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.source :global(.editable-code-wrapper) :global(.editable-code-overlay) :global(kbd) {
|
|
314
|
+
display: inline-block;
|
|
315
|
+
margin-inline: var(--size-px-1);
|
|
316
|
+
padding-inline: var(--size-px-1);
|
|
317
|
+
border: var(--border-size-1) solid var(--primary1);
|
|
318
|
+
border-radius: var(--radius-1);
|
|
319
|
+
font: inherit;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/*
|
|
323
|
+
* Syntax tokens. The frame's face is always --primary1, where only three
|
|
324
|
+
* steps are text-safe on every scope: --primary12 (11.7:1 or more),
|
|
325
|
+
* --secondary12 (10.7:1 or more) and --primary11 (4.9:1 or more), whatever
|
|
326
|
+
* the primary and secondary. So color sorts tokens into three tiers and
|
|
327
|
+
* weight (700, the heavier Plex Mono cut) and slant tell the rest apart:
|
|
328
|
+
*
|
|
329
|
+
* text --primary12 400
|
|
330
|
+
* functions --primary12 700 (entity names, JSX variables)
|
|
331
|
+
* strings --primary12 400 oblique (delimiters, regex, attribute values)
|
|
332
|
+
* keywords --secondary12 700 (and tags)
|
|
333
|
+
* constants --secondary12 400 (numbers, booleans, null, types, CSS values)
|
|
334
|
+
* comments --primary11 400 oblique
|
|
335
|
+
* punctuation --primary11 400
|
|
336
|
+
*
|
|
337
|
+
* Keywords and strings never share a color. Steps, not --role-muted or
|
|
338
|
+
* --role-heading: those follow the ground (--role-heading is
|
|
339
|
+
* --secondary12 on page grounds, --role-muted is --primary12 on the
|
|
340
|
+
* fields), while the face these tokens sit on does not. Print turns every
|
|
341
|
+
* step black; weight and slant still carry keywords, names, strings and
|
|
342
|
+
* comments.
|
|
343
|
+
*/
|
|
344
|
+
.source :global(.pl-c) {
|
|
345
|
+
color: var(--primary11);
|
|
346
|
+
font-style: italic;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.source :global(.pl-ba),
|
|
350
|
+
.source :global(.pl-sg),
|
|
351
|
+
.source :global(.fgd-pu),
|
|
352
|
+
.source :global(.fgd-ae),
|
|
353
|
+
.source :global(.fgd-td) {
|
|
354
|
+
color: var(--primary11);
|
|
355
|
+
font-style: normal;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* Keywords and tags. */
|
|
359
|
+
.source :global(.pl-k),
|
|
360
|
+
.source :global(.pl-ent),
|
|
361
|
+
.source :global(.fgd-jt),
|
|
362
|
+
.source :global(.fgd-ht),
|
|
363
|
+
.source :global(.fgd-this) {
|
|
364
|
+
color: var(--secondary12);
|
|
365
|
+
font-weight: var(--font-weight-7);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* Constants: numbers, booleans, null, built-in types, CSS values. */
|
|
369
|
+
.source :global(.pl-c1),
|
|
370
|
+
.source :global(.pl-s .pl-v),
|
|
371
|
+
.source :global(.fgd-num),
|
|
372
|
+
.source :global(.fgd-bool),
|
|
373
|
+
.source :global(.fgd-n),
|
|
374
|
+
.source :global(.fgd-cv),
|
|
375
|
+
.source :global(.fgd-bt) {
|
|
376
|
+
color: var(--secondary12);
|
|
377
|
+
font-weight: var(--font-weight-4);
|
|
378
|
+
font-style: normal;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/* Strings: the ink, oblique. */
|
|
382
|
+
.source :global(.pl-s),
|
|
383
|
+
.source :global(.pl-pds),
|
|
384
|
+
.source :global(.pl-sr),
|
|
385
|
+
.source :global(.fgd-av),
|
|
386
|
+
.source :global(.fgd-ps) {
|
|
387
|
+
color: var(--primary12);
|
|
388
|
+
font-style: italic;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/* Functions and entity names: the ink, heavy. */
|
|
392
|
+
.source :global(.pl-e),
|
|
393
|
+
.source :global(.pl-en),
|
|
394
|
+
.source :global(.pl-v),
|
|
395
|
+
.source :global(.pl-smw),
|
|
396
|
+
.source :global(.fgd-jv) {
|
|
397
|
+
color: var(--primary12);
|
|
398
|
+
font-weight: var(--font-weight-7);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* Code inside a string (a template expression) resets to plain text. */
|
|
402
|
+
.source :global(.pl-smi),
|
|
403
|
+
.source :global(.pl-s .pl-s1),
|
|
404
|
+
.source :global(.fgd-op),
|
|
405
|
+
.source :global(.fgd-ak),
|
|
406
|
+
.source :global(.fgd-da),
|
|
407
|
+
.source :global(.fgd-cp),
|
|
408
|
+
.source :global(.fgd-te),
|
|
409
|
+
.source :global(.fgd-jsx) {
|
|
410
|
+
color: var(--primary12);
|
|
411
|
+
font-style: normal;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.source :global(.pl-mh),
|
|
415
|
+
.source :global(.pl-mb),
|
|
416
|
+
.source :global(.pl-ms) {
|
|
417
|
+
font-weight: var(--font-weight-7);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.source :global(.pl-mi) {
|
|
421
|
+
font-style: italic;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/*
|
|
425
|
+
* The window's control: a visually hidden checkbox (the state, which
|
|
426
|
+
* works before hydration) and its label, a full-width row styled like
|
|
427
|
+
* CollapsibleTrigger with the disclosure glyph [D109].
|
|
428
|
+
*/
|
|
429
|
+
.checkbox {
|
|
430
|
+
position: absolute;
|
|
431
|
+
inline-size: 1px;
|
|
432
|
+
block-size: 1px;
|
|
433
|
+
margin: -1px;
|
|
434
|
+
padding: 0;
|
|
435
|
+
border: 0;
|
|
436
|
+
overflow: hidden;
|
|
437
|
+
clip-path: inset(50%);
|
|
438
|
+
white-space: nowrap;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.toggle {
|
|
442
|
+
display: flex;
|
|
443
|
+
gap: var(--size-px-2);
|
|
444
|
+
align-items: center;
|
|
445
|
+
box-sizing: border-box;
|
|
446
|
+
inline-size: 100%;
|
|
447
|
+
min-block-size: var(--fgd-size-hit);
|
|
448
|
+
padding-inline: var(--size-px-2-5);
|
|
449
|
+
border-block-start: var(--border-size-1) solid var(--role-rule);
|
|
450
|
+
color: var(--primary12);
|
|
451
|
+
cursor: pointer;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/* The bare-text hover underline's color, weight and offset [D181]. */
|
|
455
|
+
.toggleLabel {
|
|
456
|
+
text-decoration-color: var(--role-accent);
|
|
457
|
+
text-decoration-thickness: var(--border-size-2);
|
|
458
|
+
text-underline-offset: var(--size-px-1);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.showFewer {
|
|
462
|
+
display: none;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/*
|
|
466
|
+
* The truncation edge: where the window cuts a highlighted run, a
|
|
467
|
+
* --border-size-2 --role-rule rule across the window's foot, in place of
|
|
468
|
+
* a gradient fade [D21]. It overlays the toggle's rule, so nothing shifts.
|
|
469
|
+
*/
|
|
470
|
+
.source::after {
|
|
471
|
+
position: absolute;
|
|
472
|
+
inset-inline: 0;
|
|
473
|
+
inset-block-end: calc(-1 * var(--border-size-1));
|
|
474
|
+
border-block-end: var(--border-size-2) solid var(--role-rule);
|
|
475
|
+
visibility: hidden;
|
|
476
|
+
pointer-events: none;
|
|
477
|
+
content: '';
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
@media (forced-colors: active) {
|
|
481
|
+
.pre :global(.frame[data-frame-type='highlighted']),
|
|
482
|
+
.pre :global(.frame[data-frame-type='highlighted-unfocused']),
|
|
483
|
+
.pre :global(.line[data-hl]) {
|
|
484
|
+
border-inline-start-color: CanvasText;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
489
|
+
.toggleLabel {
|
|
490
|
+
transition-property: text-decoration-color;
|
|
491
|
+
transition-duration: var(--fgd-duration-quick);
|
|
492
|
+
transition-timing-function: var(--ease-out-3);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
@layer variants {
|
|
498
|
+
/* Part of a composite that frames it (Demo): no outer frame; the header (`frame="joined"`) joins the part above. */
|
|
499
|
+
.embedded {
|
|
500
|
+
margin-block: 0;
|
|
501
|
+
border: 0;
|
|
502
|
+
border-radius: 0;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
@layer states {
|
|
507
|
+
/*
|
|
508
|
+
* The TS | JS switch, lightened in the code header only, so it sits with
|
|
509
|
+
* the quiet header controls rather than outweighing them (user,
|
|
510
|
+
* 2026-09-27: "Ok let's try lightening it"). The segmented group
|
|
511
|
+
* (`transformGroup`) keeps its box: its edge drops from --border-size-2
|
|
512
|
+
* --primary12 to --border-size-1 --role-rule, the frame's rule, and a
|
|
513
|
+
* --border-size-1 padding makes up the difference, so the switch and the
|
|
514
|
+
* header keep their size. The divider between the halves always shows.
|
|
515
|
+
* The selected half (`transformToggle`, `data-pressed`) loses the inverse
|
|
516
|
+
* fill and its inside edge (its padding takes the edge's width back):
|
|
517
|
+
* the --primary12 ink at --font-weight-7 with its ● mark; the other half
|
|
518
|
+
* is --role-muted at --font-weight-4 (P11 on the P1 face: 5.77:1 or more
|
|
519
|
+
* in light mode, 8.98:1 in dark). Hover [D181, D140]: the group's edge
|
|
520
|
+
* steps to --primary12 and an off half's label to the ink, at once (the
|
|
521
|
+
* Toggle's own transition), with no fill or underline; the focus ring and
|
|
522
|
+
* the momentary pressed inverse pair are the Toggle's. The Toggle and
|
|
523
|
+
* Toggle Group components are unchanged everywhere else.
|
|
524
|
+
*/
|
|
525
|
+
.transformSwitch > .transformGroup {
|
|
526
|
+
padding: calc(var(--border-size-2) - var(--border-size-1));
|
|
527
|
+
border-width: var(--border-size-1);
|
|
528
|
+
border-color: var(--role-rule);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.transformSwitch > .transformGroup:has(> .transformToggle:not([data-disabled]):hover) {
|
|
532
|
+
border-color: var(--primary12);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.transformSwitch > .transformGroup > span[aria-hidden='true'] {
|
|
536
|
+
visibility: visible;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.transformSwitch .transformToggle:not([data-pressed]) {
|
|
540
|
+
--type-weight: var(--font-weight-4);
|
|
541
|
+
|
|
542
|
+
color: var(--role-muted);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.transformSwitch .transformToggle[data-pressed] {
|
|
546
|
+
--toggle-edge: 0px;
|
|
547
|
+
|
|
548
|
+
background: none;
|
|
549
|
+
color: var(--primary12);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.transformSwitch .transformToggle[data-pressed]:not([data-disabled], :active):hover,
|
|
553
|
+
.transformSwitch .transformToggle:not([data-disabled], [data-pressed]):hover {
|
|
554
|
+
background: none;
|
|
555
|
+
color: var(--primary12);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
.transformSwitch .transformToggle:not([data-disabled], [data-pressed]):hover > span {
|
|
559
|
+
text-decoration-line: none;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.transformSwitch .transformToggle:not([data-disabled]):active {
|
|
563
|
+
background-color: var(--primary12);
|
|
564
|
+
color: var(--role-inverse);
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/* The swap's phases on the `pre`. */
|
|
568
|
+
.pre[data-transforming='expanded'] :global(.frame .collapse > span) {
|
|
569
|
+
block-size: var(--code-block-line);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
.pre[data-transforming='collapsing'] :global(.frame .collapse > span) {
|
|
573
|
+
animation: code-block-shrink var(--fgd-duration-swap) var(--ease-out-3) both;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.pre[data-transforming='expanding'] :global(.frame .collapse > span) {
|
|
577
|
+
animation: code-block-grow var(--fgd-duration-swap) var(--ease-out-3) forwards;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
.pre[data-transforming='expanded'] :global(.frame .line[data-expanding]) {
|
|
581
|
+
block-size: 0;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.pre[data-transforming='collapsing'] :global(.frame .line[data-expanding]) {
|
|
585
|
+
animation: code-block-grow var(--fgd-duration-swap) var(--ease-out-3) both;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.pre[data-transforming='expanding'] :global(.frame .line[data-expanding]) {
|
|
589
|
+
animation: code-block-shrink var(--fgd-duration-swap) var(--ease-out-3) forwards;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/*
|
|
593
|
+
* The window (`collapsible`, only where the code has one): frames outside
|
|
594
|
+
* it are clipped to no height and hidden (out of the accessibility tree,
|
|
595
|
+
* the focus order and the caret) until the checkbox is checked. A clip
|
|
596
|
+
* reveal, never opacity [D91]: --fgd-duration-disclosure on --ease-out-3,
|
|
597
|
+
* frames bordering the window first and the far ones after a third.
|
|
598
|
+
*/
|
|
599
|
+
.base[data-collapsible]
|
|
600
|
+
.pre
|
|
601
|
+
:global(
|
|
602
|
+
code[data-collapsible]
|
|
603
|
+
> .frame:is(
|
|
604
|
+
:not([data-frame-type]),
|
|
605
|
+
[data-frame-type='highlighted-unfocused'],
|
|
606
|
+
[data-frame-type='focus-unfocused']
|
|
607
|
+
)
|
|
608
|
+
) {
|
|
609
|
+
max-block-size: 0;
|
|
610
|
+
overflow: hidden;
|
|
611
|
+
overflow-anchor: none;
|
|
612
|
+
visibility: hidden;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
616
|
+
.pre
|
|
617
|
+
:global(
|
|
618
|
+
code[data-collapsible]
|
|
619
|
+
> .frame:is(
|
|
620
|
+
:not([data-frame-type]),
|
|
621
|
+
[data-frame-type='highlighted-unfocused'],
|
|
622
|
+
[data-frame-type='focus-unfocused']
|
|
623
|
+
)
|
|
624
|
+
) {
|
|
625
|
+
/* A frame holds at most 120 lines. */
|
|
626
|
+
max-block-size: calc(120 * var(--code-block-line));
|
|
627
|
+
visibility: visible;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
@supports (interpolate-size: allow-keywords) {
|
|
631
|
+
.base[data-collapsible]
|
|
632
|
+
.pre
|
|
633
|
+
:global(
|
|
634
|
+
code[data-collapsible]
|
|
635
|
+
> .frame:is(
|
|
636
|
+
:not([data-frame-type]),
|
|
637
|
+
[data-frame-type='highlighted-unfocused'],
|
|
638
|
+
[data-frame-type='focus-unfocused']
|
|
639
|
+
)
|
|
640
|
+
) {
|
|
641
|
+
interpolate-size: allow-keywords;
|
|
642
|
+
max-block-size: none;
|
|
643
|
+
block-size: 0;
|
|
644
|
+
overflow: clip;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
648
|
+
.pre
|
|
649
|
+
:global(
|
|
650
|
+
code[data-collapsible]
|
|
651
|
+
> .frame:is(
|
|
652
|
+
:not([data-frame-type]),
|
|
653
|
+
[data-frame-type='highlighted-unfocused'],
|
|
654
|
+
[data-frame-type='focus-unfocused']
|
|
655
|
+
)
|
|
656
|
+
) {
|
|
657
|
+
max-block-size: none;
|
|
658
|
+
block-size: auto;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/* The window's context lines sit a solid ink step lighter until expanded (no opacity). */
|
|
663
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
664
|
+
.pre
|
|
665
|
+
:global(
|
|
666
|
+
code[data-collapsible]
|
|
667
|
+
> .frame:is([data-frame-type='padding-top'], [data-frame-type='padding-bottom'])
|
|
668
|
+
),
|
|
669
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
670
|
+
.pre
|
|
671
|
+
:global(
|
|
672
|
+
code[data-collapsible]
|
|
673
|
+
> .frame:is([data-frame-type='padding-top'], [data-frame-type='padding-bottom'])
|
|
674
|
+
*
|
|
675
|
+
) {
|
|
676
|
+
color: var(--role-muted);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/* The toggle follows a windowed block: the wrapper drops its foot, leaving the pre's 6 px (the source's). */
|
|
680
|
+
.base[data-collapsible] .source:has(:global(code[data-collapsible])) {
|
|
681
|
+
padding-block-end: 0;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
/* Collapsed: no horizontal scroll, so the window clips cleanly. */
|
|
685
|
+
.base[data-collapsible] .pre:has(> :global(code[data-collapsible])) {
|
|
686
|
+
overflow-x: hidden;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
.base[data-collapsible]:has(> .checkbox:checked) .pre:not([data-scrollbar-gutter]) {
|
|
690
|
+
overflow-x: auto;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/* A window cut through a highlighted run: no foot padding, and the truncation edge shows. */
|
|
694
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
695
|
+
.pre:has(> :global(code > .frame[data-frame-truncated='visible'])) {
|
|
696
|
+
padding-block-end: 0;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
700
|
+
.source:has(:global(code > .frame[data-frame-truncated='visible']))::after {
|
|
701
|
+
visibility: visible;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/* An empty window (`data-focused-lines="0"`) takes no height while collapsed, and drops the toggle's rule. */
|
|
705
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
706
|
+
.source:has(:global(code[data-collapsible][data-focused-lines='0'])) {
|
|
707
|
+
padding-block-start: 0;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked))
|
|
711
|
+
.pre:has(> :global(code[data-collapsible][data-focused-lines='0'])) {
|
|
712
|
+
padding-block: 0;
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
.base[data-collapsible]:not(:has(> .checkbox:checked)):has(
|
|
716
|
+
.source :global(code[data-collapsible][data-focused-lines='0'])
|
|
717
|
+
)
|
|
718
|
+
> .toggle {
|
|
719
|
+
border-block-start-width: 0;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/*
|
|
723
|
+
* The scrollbar swap useCodeWindow drives on the `pre`: while the window
|
|
724
|
+
* moves, the real horizontal scrollbar gives way to an equal margin, so
|
|
725
|
+
* nothing jumps.
|
|
726
|
+
*/
|
|
727
|
+
.pre[data-scrollbar-gutter] {
|
|
728
|
+
overflow-x: hidden;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
.pre[data-scrollbar-gutter='collapse-from'] > :global(code),
|
|
732
|
+
.pre[data-scrollbar-gutter='expand-to'] > :global(code) {
|
|
733
|
+
margin-block-end: var(--code-block-gutter);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.pre[data-scrollbar-gutter='collapse-to'] > :global(code),
|
|
737
|
+
.pre[data-scrollbar-gutter='expand-from'] > :global(code) {
|
|
738
|
+
margin-block-end: 0;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
/* The toggle: shown (with its checkbox) only where the code has a window. */
|
|
742
|
+
.base:not(:has(.source :global(code[data-collapsible]))) > .checkbox,
|
|
743
|
+
.base:not(:has(.source :global(code[data-collapsible]))) > .toggle {
|
|
744
|
+
display: none;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
.checkbox:checked ~ .toggle .showAll {
|
|
748
|
+
display: none;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
.checkbox:checked ~ .toggle .showFewer {
|
|
752
|
+
display: inline;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.checkbox:not(:disabled) ~ .toggle:hover .toggleLabel {
|
|
756
|
+
text-decoration-line: underline;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/* Focus: the ring on the row, inside the frame's clip, keyboard only [D45]. */
|
|
760
|
+
.checkbox:focus-visible ~ .toggle {
|
|
761
|
+
outline: var(--fgd-focus-width) solid var(--primary12);
|
|
762
|
+
outline-offset: calc(-1 * var(--fgd-focus-width));
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
/* Disabled (a fallback carrying only the window): --role-muted, no opacity [D85]. */
|
|
766
|
+
.checkbox:disabled ~ .toggle {
|
|
767
|
+
color: var(--role-muted);
|
|
768
|
+
cursor: default;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
772
|
+
.base[data-collapsible]
|
|
773
|
+
.pre
|
|
774
|
+
:global(
|
|
775
|
+
code[data-collapsible]
|
|
776
|
+
> .frame:is(
|
|
777
|
+
:not([data-frame-type]),
|
|
778
|
+
[data-frame-type='highlighted-unfocused'],
|
|
779
|
+
[data-frame-type='focus-unfocused']
|
|
780
|
+
)
|
|
781
|
+
) {
|
|
782
|
+
transition:
|
|
783
|
+
max-block-size var(--fgd-duration-disclosure) var(--ease-out-3),
|
|
784
|
+
visibility var(--fgd-duration-disclosure);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
/*
|
|
788
|
+
* Without `interpolate-size`, the capped max-block-size runs twice as
|
|
789
|
+
* long, so the visible growth keeps pace (the source ran it five times,
|
|
790
|
+
* 1000 ms; capped at 2 × --fgd-duration-disclosure, D205).
|
|
791
|
+
*/
|
|
792
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
793
|
+
.pre
|
|
794
|
+
:global(
|
|
795
|
+
code[data-collapsible]
|
|
796
|
+
> .frame:is(
|
|
797
|
+
:not([data-frame-type]),
|
|
798
|
+
[data-frame-type='highlighted-unfocused'],
|
|
799
|
+
[data-frame-type='focus-unfocused']
|
|
800
|
+
)
|
|
801
|
+
) {
|
|
802
|
+
transition:
|
|
803
|
+
max-block-size calc(2 * var(--fgd-duration-disclosure)) var(--ease-out-3),
|
|
804
|
+
visibility 0s;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
@supports (interpolate-size: allow-keywords) {
|
|
808
|
+
.base[data-collapsible]
|
|
809
|
+
.pre
|
|
810
|
+
:global(
|
|
811
|
+
code[data-collapsible]
|
|
812
|
+
> .frame:is(
|
|
813
|
+
:not([data-frame-type]),
|
|
814
|
+
[data-frame-type='highlighted-unfocused'],
|
|
815
|
+
[data-frame-type='focus-unfocused']
|
|
816
|
+
)
|
|
817
|
+
) {
|
|
818
|
+
transition:
|
|
819
|
+
block-size var(--fgd-duration-disclosure) var(--ease-out-3),
|
|
820
|
+
visibility var(--fgd-duration-disclosure);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
/* Far frames wait a third, then grow in the remaining two thirds. */
|
|
824
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
825
|
+
.pre
|
|
826
|
+
:global(
|
|
827
|
+
code[data-collapsible]
|
|
828
|
+
> .frame:is(
|
|
829
|
+
:not([data-frame-type]),
|
|
830
|
+
[data-frame-type='highlighted-unfocused'],
|
|
831
|
+
[data-frame-type='focus-unfocused']
|
|
832
|
+
)
|
|
833
|
+
) {
|
|
834
|
+
transition:
|
|
835
|
+
block-size calc(var(--fgd-duration-disclosure) * 2 / 3) var(--ease-out-3)
|
|
836
|
+
calc(var(--fgd-duration-disclosure) / 3),
|
|
837
|
+
visibility 0s;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/* Frames bordering the window grow at once, over the whole duration. */
|
|
841
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
842
|
+
.pre
|
|
843
|
+
:global(
|
|
844
|
+
code[data-collapsible]
|
|
845
|
+
> .frame:is(
|
|
846
|
+
:not([data-frame-type]),
|
|
847
|
+
[data-frame-type='highlighted-unfocused'],
|
|
848
|
+
[data-frame-type='focus-unfocused']
|
|
849
|
+
):has(
|
|
850
|
+
+ .frame[data-frame-type]:not(
|
|
851
|
+
[data-frame-type='highlighted-unfocused'],
|
|
852
|
+
[data-frame-type='focus-unfocused']
|
|
853
|
+
)
|
|
854
|
+
)
|
|
855
|
+
),
|
|
856
|
+
.base[data-collapsible]:has(> .checkbox:checked)
|
|
857
|
+
.pre
|
|
858
|
+
:global(
|
|
859
|
+
code[data-collapsible]
|
|
860
|
+
> .frame[data-frame-type]:not(
|
|
861
|
+
[data-frame-type='highlighted-unfocused'],
|
|
862
|
+
[data-frame-type='focus-unfocused']
|
|
863
|
+
)
|
|
864
|
+
+ .frame:is(
|
|
865
|
+
:not([data-frame-type]),
|
|
866
|
+
[data-frame-type='highlighted-unfocused'],
|
|
867
|
+
[data-frame-type='focus-unfocused']
|
|
868
|
+
)
|
|
869
|
+
) {
|
|
870
|
+
transition:
|
|
871
|
+
block-size var(--fgd-duration-disclosure) var(--ease-out-3),
|
|
872
|
+
visibility 0s;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
.base[data-collapsible] .pre:has(> :global(code[data-collapsible][data-focused-lines='0'])),
|
|
877
|
+
.base[data-collapsible] .source:has(:global(code[data-collapsible][data-focused-lines='0'])) {
|
|
878
|
+
transition: padding-block var(--fgd-duration-disclosure) var(--ease-out-3);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
/* The toggle's top rule is a weight: it steps at once as the window opens or closes [D205]. */
|
|
882
|
+
|
|
883
|
+
.pre[data-scrollbar-gutter='collapse-to'] > :global(code),
|
|
884
|
+
.pre[data-scrollbar-gutter='expand-to'] > :global(code) {
|
|
885
|
+
transition: margin-block-end var(--fgd-duration-disclosure) var(--ease-out-3);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
@layer print {
|
|
891
|
+
@media print {
|
|
892
|
+
/* A code block never splits across pages (§7). */
|
|
893
|
+
.base {
|
|
894
|
+
break-inside: avoid;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
/* Screen-only controls (File Tabs hides the header's own); the file label stays. */
|
|
898
|
+
.checkbox,
|
|
899
|
+
.toggle,
|
|
900
|
+
.source::after {
|
|
901
|
+
display: none;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/* Paper cannot scroll: long lines wrap inside the frame, with the screen's spacing. */
|
|
905
|
+
.source,
|
|
906
|
+
.base[data-collapsible] .source {
|
|
907
|
+
padding-block: var(--code-block-inset);
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.pre,
|
|
911
|
+
.base[data-collapsible] .pre {
|
|
912
|
+
padding-block: var(--code-block-pad);
|
|
913
|
+
overflow: visible;
|
|
914
|
+
white-space: pre-wrap;
|
|
915
|
+
overflow-wrap: anywhere;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
.pre > :global(code) {
|
|
919
|
+
min-inline-size: 0;
|
|
920
|
+
margin-block-end: 0;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
.pre :global(.frame[data-lined] .line) {
|
|
924
|
+
white-space: pre-wrap;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
/* Disclosures print open: every frame of the window's block shows, in the ink. */
|
|
928
|
+
.pre :global(code > .frame),
|
|
929
|
+
.pre :global(code > .frame *) {
|
|
930
|
+
max-block-size: none;
|
|
931
|
+
block-size: auto;
|
|
932
|
+
overflow: visible;
|
|
933
|
+
visibility: visible;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
.pre :global(code > .frame[data-frame-type^='padding']),
|
|
937
|
+
.pre :global(code > .frame[data-frame-type^='padding'] *) {
|
|
938
|
+
color: inherit;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
/* Badges drop their fill on paper: an outlined tag in the ink instead. */
|
|
942
|
+
.pre :global(.line[data-hl-description])::after,
|
|
943
|
+
.pre :global(.frame[data-frame-description])::before {
|
|
944
|
+
border: var(--border-size-1) solid var(--primary12);
|
|
945
|
+
background: none;
|
|
946
|
+
color: var(--primary12);
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
}
|