@morphemecms/cms 0.5.0 → 0.7.0
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/CHANGELOG.md +16 -0
- package/astro.mjs +3 -0
- package/bin/morpheme.mjs +3 -1
- package/defaults/blockTexts.ts +2 -2
- package/defaults/collections.ts +10 -0
- package/defaults/editor.ts +57 -53
- package/defaults/privacy.ts +4 -1
- package/defaults/rules.ts +36 -38
- package/defaults/standardPages.ts +0 -3
- package/defaults/texts.ts +11 -2
- package/demo/src/content/pages/about.md +2 -0
- package/icons/lucide/browser-fill.svg +1 -0
- package/icons/lucide/buildings-fill.svg +1 -0
- package/icons/lucide/certificate-fill.svg +1 -0
- package/icons/lucide/chart-line-up-fill.svg +1 -0
- package/icons/lucide/chats-fill.svg +1 -0
- package/icons/lucide/envelope-simple-fill.svg +1 -0
- package/icons/lucide/file-text-fill.svg +1 -0
- package/icons/lucide/folder-simple-fill.svg +1 -0
- package/icons/lucide/gauge.svg +1 -1
- package/icons/lucide/gear-six.svg +1 -0
- package/icons/lucide/globe-simple.svg +1 -0
- package/icons/lucide/heart-fill.svg +1 -0
- package/icons/lucide/layout.svg +1 -0
- package/icons/lucide/list-checks-fill.svg +1 -0
- package/icons/lucide/magnifying-glass-fill.svg +1 -0
- package/icons/lucide/megaphone-fill.svg +1 -0
- package/icons/lucide/newspaper-fill.svg +1 -0
- package/icons/lucide/paint-brush-broad-fill.svg +1 -0
- package/icons/lucide/puzzle-piece-fill.svg +1 -0
- package/icons/lucide/shield-check-fill.svg +1 -0
- package/icons/lucide/sidebar-simple.svg +1 -1
- package/icons/lucide/sidebar.svg +1 -0
- package/icons/lucide/square-half-bottom-fill.svg +1 -0
- package/icons/lucide/square-half.svg +1 -0
- package/icons/lucide/squares-four-fill.svg +1 -0
- package/icons/lucide/storefront-fill.svg +1 -0
- package/icons/lucide/tag-fill.svg +1 -0
- package/icons/lucide/toggle-right-fill.svg +1 -0
- package/icons/lucide/trash-fill.svg +1 -0
- package/icons/lucide/user-fill.svg +1 -0
- package/icons/lucide/wrench-fill.svg +1 -0
- package/icons/material-symbols/browser-fill.svg +1 -0
- package/icons/material-symbols/buildings-fill.svg +1 -0
- package/icons/material-symbols/certificate-fill.svg +1 -0
- package/icons/material-symbols/chart-line-up-fill.svg +1 -0
- package/icons/material-symbols/chats-fill.svg +1 -0
- package/icons/material-symbols/envelope-simple-fill.svg +1 -0
- package/icons/material-symbols/file-text-fill.svg +1 -0
- package/icons/material-symbols/folder-simple-fill.svg +1 -0
- package/icons/material-symbols/gauge.svg +1 -1
- package/icons/material-symbols/gear-six.svg +1 -0
- package/icons/material-symbols/globe-simple.svg +1 -0
- package/icons/material-symbols/heart-fill.svg +1 -0
- package/icons/material-symbols/layout.svg +1 -0
- package/icons/material-symbols/list-checks-fill.svg +1 -0
- package/icons/material-symbols/magnifying-glass-fill.svg +1 -0
- package/icons/material-symbols/megaphone-fill.svg +1 -0
- package/icons/material-symbols/newspaper-fill.svg +1 -0
- package/icons/material-symbols/paint-brush-broad-fill.svg +1 -0
- package/icons/material-symbols/puzzle-piece-fill.svg +1 -0
- package/icons/material-symbols/shield-check-fill.svg +1 -0
- package/icons/material-symbols/sidebar-simple.svg +1 -1
- package/icons/material-symbols/sidebar.svg +1 -0
- package/icons/material-symbols/square-half-bottom-fill.svg +1 -0
- package/icons/material-symbols/square-half.svg +1 -0
- package/icons/material-symbols/squares-four-fill.svg +1 -0
- package/icons/material-symbols/storefront-fill.svg +1 -0
- package/icons/material-symbols/tag-fill.svg +1 -0
- package/icons/material-symbols/toggle-right-fill.svg +1 -0
- package/icons/material-symbols/trash-fill.svg +1 -0
- package/icons/material-symbols/user-fill.svg +1 -0
- package/icons/material-symbols/wrench-fill.svg +1 -0
- package/icons/phosphor/browser-fill.svg +1 -0
- package/icons/phosphor/buildings-fill.svg +1 -0
- package/icons/phosphor/certificate-fill.svg +1 -0
- package/icons/phosphor/chart-line-up-fill.svg +1 -0
- package/icons/phosphor/chats-fill.svg +1 -0
- package/icons/phosphor/envelope-simple-fill.svg +1 -0
- package/icons/phosphor/file-text-fill.svg +1 -0
- package/icons/phosphor/folder-simple-fill.svg +1 -0
- package/icons/phosphor/gear-six.svg +1 -0
- package/icons/phosphor/globe-simple.svg +1 -0
- package/icons/phosphor/heart-fill.svg +1 -0
- package/icons/phosphor/layout.svg +1 -0
- package/icons/phosphor/list-checks-fill.svg +1 -0
- package/icons/phosphor/magnifying-glass-fill.svg +1 -0
- package/icons/phosphor/megaphone-fill.svg +1 -0
- package/icons/phosphor/newspaper-fill.svg +1 -0
- package/icons/phosphor/paint-brush-broad-fill.svg +1 -0
- package/icons/phosphor/puzzle-piece-fill.svg +1 -0
- package/icons/phosphor/shield-check-fill.svg +1 -0
- package/icons/phosphor/sidebar.svg +1 -0
- package/icons/phosphor/square-half-bottom-fill.svg +1 -0
- package/icons/phosphor/square-half.svg +1 -0
- package/icons/phosphor/squares-four-fill.svg +1 -0
- package/icons/phosphor/storefront-fill.svg +1 -0
- package/icons/phosphor/tag-fill.svg +1 -0
- package/icons/phosphor/toggle-right-fill.svg +1 -0
- package/icons/phosphor/trash-fill.svg +1 -0
- package/icons/phosphor/user-fill.svg +1 -0
- package/icons/phosphor/wrench-fill.svg +1 -0
- package/lib/breakpoints.d.mts +13 -0
- package/lib/breakpoints.mjs +20 -0
- package/lib/breakpoints.test.mjs +39 -0
- package/lib/build-lane.d.mts +15 -0
- package/lib/build-lane.mjs +23 -0
- package/lib/build-lane.test.mjs +74 -0
- package/lib/build-settings.d.mts +16 -0
- package/lib/build-settings.mjs +39 -0
- package/lib/build-settings.test.mjs +41 -0
- package/lib/contracts.d.mts +3 -2
- package/lib/contracts.mjs +3 -2
- package/lib/drawer-swipe.d.mts +10 -0
- package/lib/drawer-swipe.mjs +17 -0
- package/lib/drawer-swipe.test.mjs +33 -0
- package/lib/drawerKeys.d.mts +9 -0
- package/lib/drawerKeys.mjs +26 -0
- package/lib/drawerKeys.test.mjs +21 -0
- package/lib/eyebrow.d.mts +6 -0
- package/lib/eyebrow.mjs +24 -0
- package/lib/eyebrow.test.mjs +20 -0
- package/lib/front-sections.test.mjs +82 -0
- package/lib/heading-levels.d.mts +7 -0
- package/lib/heading-levels.mjs +16 -0
- package/lib/heading-levels.test.mjs +37 -0
- package/lib/inline.ts +3 -2
- package/lib/markdown.ts +2 -0
- package/lib/materialIcon.d.mts +21 -0
- package/lib/materialIcon.mjs +29 -0
- package/lib/materialIcon.test.mjs +45 -0
- package/lib/menu-layout.d.mts +11 -0
- package/lib/menu-layout.mjs +14 -0
- package/lib/menu-layout.test.mjs +23 -0
- package/lib/menu.d.mts +59 -0
- package/lib/menu.mjs +129 -0
- package/lib/menu.test.mjs +291 -0
- package/lib/rehype-emphasize.d.mts +4 -0
- package/lib/rehype-emphasize.mjs +20 -0
- package/lib/rehype-emphasize.test.mjs +39 -0
- package/lib/section-in-view.d.mts +8 -0
- package/lib/section-in-view.mjs +25 -0
- package/lib/section-in-view.test.mjs +35 -0
- package/lib/section-marker.d.mts +5 -0
- package/lib/section-marker.mjs +18 -0
- package/lib/section-marker.test.mjs +22 -0
- package/lib/section-ranges.d.mts +12 -0
- package/lib/section-ranges.mjs +43 -0
- package/lib/section-ranges.test.mjs +61 -0
- package/lib/sheet-stops.d.mts +68 -0
- package/lib/sheet-stops.mjs +198 -0
- package/lib/sheet-stops.test.mjs +155 -0
- package/lib/still-timer.d.mts +5 -0
- package/lib/still-timer.mjs +17 -0
- package/lib/still-timer.test.mjs +42 -0
- package/lib/text-sections.d.mts +10 -0
- package/lib/text-sections.mjs +45 -0
- package/lib/text-sections.test.mjs +78 -0
- package/lib/video.mjs +2 -1
- package/lib/without-h1.d.mts +1 -0
- package/lib/without-h1.mjs +7 -0
- package/lib/without-h1.test.mjs +26 -0
- package/lib/word-at.d.mts +6 -0
- package/lib/word-at.mjs +20 -0
- package/lib/word-at.test.mjs +19 -0
- package/package.json +3 -1
- package/pages/editor/version.json.js +22 -2
- package/scripts/already-checked.mjs +11 -0
- package/scripts/already-checked.test.mjs +18 -0
- package/scripts/build-settings-problems.mjs +27 -0
- package/scripts/build-settings-problems.test.mjs +35 -0
- package/scripts/check-content.mjs +42 -4
- package/scripts/check-worker.mjs +96 -4
- package/scripts/ci-build.mjs +85 -0
- package/scripts/ci-build.test.mjs +137 -0
- package/scripts/editor-roundtrip.mjs +62 -3
- package/scripts/editor-screens.mjs +21 -7
- package/scripts/git-env.mjs +6 -0
- package/scripts/step-command.mjs +34 -0
- package/scripts/step-command.test.mjs +50 -0
- package/scripts/text-problems.mjs +83 -0
- package/scripts/text-problems.test.mjs +74 -0
- package/scripts/worker-modules.mjs +11 -1
- package/site/breakpoints.d.mts +6 -0
- package/site/breakpoints.mjs +52 -0
- package/site/breakpoints.test.mjs +36 -0
- package/site/casing.d.mts +3 -0
- package/site/casing.mjs +26 -0
- package/site/content.config.ts +2 -0
- package/site/content.ts +2 -4
- package/site/defineSite.d.mts +1 -0
- package/site/defineSite.mjs +3 -0
- package/site/home.ts +3 -2
- package/site/icons.d.mts +116 -4
- package/site/icons.mjs +62 -6
- package/site/images.mjs +1 -1
- package/site/live-diff.d.mts +22 -0
- package/site/live-diff.mjs +98 -0
- package/site/live-diff.test.mjs +235 -0
- package/site/materialSymbols.d.mts +5 -0
- package/site/materialSymbols.mjs +19 -0
- package/site/sections.ts +1 -1
- package/site/theme.d.mts +1 -1
- package/site/theme.mjs +7 -1
- package/src/ActionParts.tsx +1 -1
- package/src/Advanced.tsx +101 -20
- package/src/App.tsx +47 -121
- package/src/AppList.tsx +1 -1
- package/src/BlockParts.tsx +3 -3
- package/src/Colors.tsx +1 -1
- package/src/CommunicationParts.tsx +1 -1
- package/src/ContainmentParts.tsx +80 -28
- package/src/Deleted.tsx +18 -4
- package/src/EditorFooter.tsx +14 -0
- package/src/EntryForm.tsx +75 -39
- package/src/FormFrame.tsx +3 -8
- package/src/Library.tsx +46 -51
- package/src/Licenses.tsx +27 -11
- package/src/MainDrawerParts.tsx +60 -0
- package/src/MainMenu.tsx +136 -0
- package/src/MarkdownEditor.tsx +175 -32
- package/src/Media.tsx +69 -16
- package/src/MediaTags.tsx +91 -0
- package/src/ModalSheetSample.tsx +47 -0
- package/src/NavigationParts.tsx +67 -21
- package/src/NavigationRestParts.tsx +1 -1
- package/src/Parts.tsx +71 -0
- package/src/PartsShown.tsx +1 -1
- package/src/PickerParts.tsx +2 -2
- package/src/Redirects.tsx +3 -2
- package/src/Screen.tsx +93 -90
- package/src/SelectionParts.tsx +22 -6
- package/src/SiteLogoLink.tsx +14 -0
- package/src/StartFab.tsx +22 -0
- package/src/StartStatus.tsx +1 -1
- package/src/autoTags.d.mts +28 -0
- package/src/autoTags.mjs +68 -0
- package/src/autoTags.test.mjs +109 -0
- package/src/buildSettings.test.mjs +20 -0
- package/src/buildSettings.ts +20 -0
- package/src/checkSite.ts +14 -1
- package/src/deploy.ts +7 -9
- package/src/editor.css +150 -17
- package/src/eyebrow.d.mts +5 -0
- package/src/eyebrow.mjs +53 -0
- package/src/eyebrowState.d.mts +21 -0
- package/src/eyebrowState.mjs +62 -0
- package/src/eyebrowState.test.mjs +78 -0
- package/src/fileRecords.d.mts +115 -0
- package/src/fileRecords.mjs +224 -0
- package/src/fileRecords.test.mjs +224 -0
- package/src/fileTagFilter.d.mts +30 -0
- package/src/fileTagFilter.mjs +44 -0
- package/src/fileTagFilter.test.mjs +57 -0
- package/src/fileTags.d.mts +56 -0
- package/src/fileTags.mjs +100 -0
- package/src/fileTags.test.mjs +127 -0
- package/src/firstHeading.d.mts +6 -0
- package/src/firstHeading.mjs +37 -0
- package/src/i18n/da-DK/advanced.ts +27 -12
- package/src/i18n/da-DK/app.ts +9 -7
- package/src/i18n/da-DK/apps.ts +16 -16
- package/src/i18n/da-DK/blockSettings.ts +9 -9
- package/src/i18n/da-DK/blocks.ts +2 -2
- package/src/i18n/da-DK/check.ts +5 -2
- package/src/i18n/da-DK/cms.ts +14 -12
- package/src/i18n/da-DK/colors.ts +5 -5
- package/src/i18n/da-DK/common.ts +2 -2
- package/src/i18n/da-DK/company.ts +3 -3
- package/src/i18n/da-DK/consents.ts +6 -6
- package/src/i18n/da-DK/forms.ts +6 -6
- package/src/i18n/da-DK/history.ts +6 -6
- package/src/i18n/da-DK/keywords.ts +2 -2
- package/src/i18n/da-DK/library.ts +17 -15
- package/src/i18n/da-DK/licenses.ts +4 -4
- package/src/i18n/da-DK/media.ts +10 -4
- package/src/i18n/da-DK/parts.ts +62 -25
- package/src/i18n/da-DK/preview.ts +5 -6
- package/src/i18n/da-DK/redirects.ts +7 -7
- package/src/i18n/da-DK/seo.ts +1 -1
- package/src/i18n/da-DK/text.ts +2 -0
- package/src/i18n/da-DK/theme.ts +5 -5
- package/src/i18n/en-US/advanced.ts +34 -18
- package/src/i18n/en-US/app.ts +7 -5
- package/src/i18n/en-US/apps.ts +9 -9
- package/src/i18n/en-US/blockSettings.ts +4 -4
- package/src/i18n/en-US/blocks.ts +6 -6
- package/src/i18n/en-US/check.ts +6 -3
- package/src/i18n/en-US/cms.ts +15 -14
- package/src/i18n/en-US/colors.ts +18 -18
- package/src/i18n/en-US/common.ts +3 -3
- package/src/i18n/en-US/consents.ts +4 -4
- package/src/i18n/en-US/forms.ts +5 -5
- package/src/i18n/en-US/history.ts +2 -2
- package/src/i18n/en-US/library.ts +21 -15
- package/src/i18n/en-US/licenses.ts +6 -6
- package/src/i18n/en-US/media.ts +7 -1
- package/src/i18n/en-US/parts.ts +60 -21
- package/src/i18n/en-US/preview.ts +5 -6
- package/src/i18n/en-US/redirects.ts +3 -3
- package/src/i18n/en-US/seo.ts +1 -1
- package/src/i18n/en-US/text.ts +3 -0
- package/src/i18n/en-US/theme.ts +6 -6
- package/src/icon.tsx +90 -27
- package/src/licenseData.test.mjs +28 -0
- package/src/licenseData.ts +12 -1
- package/src/markdown.d.mts +2 -0
- package/src/markdown.mjs +73 -5
- package/src/markdown.test.mjs +74 -0
- package/src/materialIcons.ts +8 -0
- package/src/menuChildren.ts +36 -0
- package/src/menuOpen.ts +34 -0
- package/src/pagePreview.tsx +23 -19
- package/src/r2Caching.ts +14 -0
- package/src/sectionFrame.ts +39 -0
- package/src/sectionState.d.mts +19 -0
- package/src/sectionState.mjs +31 -0
- package/src/sectionState.test.mjs +59 -0
- package/src/sections.d.mts +9 -7
- package/src/sections.mjs +74 -27
- package/src/sections.test.mjs +59 -0
- package/src/sidebar.ts +2 -2
- package/src/site.ts +27 -17
- package/src/stillCursor.d.mts +8 -0
- package/src/stillCursor.mjs +19 -0
- package/src/stillCursor.test.mjs +26 -0
- package/src/tagUses.d.mts +47 -0
- package/src/tagUses.mjs +121 -0
- package/src/tagUses.test.mjs +141 -0
- package/src/themeUi.ts +10 -0
- package/src/topBarSlot.tsx +37 -0
- package/src/ui.tsx +654 -150
- package/src/virtual.d.ts +5 -0
- package/starter/README.md +2 -1
- package/starter/package.json +2 -1
- package/starter/wrangler.jsonc +3 -2
- package/theme/blocks/cards/LinkCards.tsx +2 -1
- package/theme/blocks/hero/View.tsx +2 -1
- package/theme/blocks/video/View.tsx +2 -1
- package/theme/components/BlogIndex.astro +2 -2
- package/theme/components/BlogPosts.astro +1 -1
- package/theme/components/BlogPosts.tsx +9 -6
- package/theme/components/Container.astro +1 -1
- package/theme/components/CookieConsent.astro +1 -1
- package/theme/components/EndBlock.astro +1 -1
- package/theme/components/Footer.astro +5 -5
- package/theme/components/Header.astro +3 -3
- package/theme/components/Icon.astro +2 -2
- package/theme/components/MobileMenu.tsx +72 -61
- package/theme/components/MobileNav.astro +2 -2
- package/theme/components/PageHeader.astro +2 -2
- package/theme/components/PageSection.astro +1 -1
- package/theme/components/PopupButton.tsx +2 -2
- package/theme/components/PopupView.tsx +2 -2
- package/theme/components/PostList.tsx +7 -3
- package/theme/components/RichText.astro +22 -7
- package/theme/components/Section.astro +17 -10
- package/theme/components/SectionHeading.tsx +1 -1
- package/theme/components/home/PageBlock.astro +4 -4
- package/theme/components/home/Text.astro +3 -3
- package/theme/layouts/PageLayout.astro +3 -3
- package/theme/layouts/PostLayout.astro +9 -8
- package/theme/styles/base.css +13 -3
- package/theme/styles/blocks.css +97 -10
- package/theme/styles/components.css +9 -9
- package/theme/styles/elevation.test.mjs +168 -0
- package/theme/styles/global.css +65 -59
- package/theme/styles/ui.css +460 -131
- package/theme/templates/Home.astro +1 -1
- package/theme/templates/New.astro +5 -5
- package/theme/templates/NotFound.astro +2 -2
- package/theme/ui/BottomSheet.tsx +118 -21
- package/theme/ui/BottomSheetResizeIcon.tsx +13 -0
- package/theme/ui/Button.tsx +4 -3
- package/theme/ui/Dialog.tsx +1 -1
- package/theme/ui/FabMenu.tsx +13 -12
- package/theme/ui/LoadingIndicator.tsx +1 -1
- package/theme/ui/NavigationDrawer.tsx +116 -15
- package/theme/ui/NavigationRail.tsx +22 -13
- package/theme/ui/Search.tsx +1 -1
- package/theme/ui/SettingRow.tsx +31 -0
- package/theme/ui/Switch.tsx +11 -11
- package/theme/ui/TextField.tsx +17 -6
- package/theme/ui/bottomSheet.script.ts +3 -2
- package/theme/ui/bottomSheetControl.ts +131 -46
- package/theme/ui/fabMenu.script.ts +69 -53
- package/theme/ui/modalSheetSize.ts +214 -0
- package/theme/ui/navigationDrawerControl.ts +35 -0
- package/theme/ui/search.script.ts +4 -2
- package/worker/index.js +3 -0
- package/worker/plan-status.js +46 -0
- package/worker/push.js +7 -5
- package/worker/r2-status.js +2 -1
- package/icons/lucide/desktop.svg +0 -1
- package/icons/material-symbols/desktop.svg +0 -1
- package/icons/phosphor/desktop.svg +0 -1
package/theme/styles/ui.css
CHANGED
|
@@ -58,18 +58,25 @@
|
|
|
58
58
|
-square, -pressed and -corners.
|
|
59
59
|
*/
|
|
60
60
|
/* The classes in the CMS's own code (this package, also from node_modules/, where Tailwind does not look by itself);
|
|
61
|
-
the names in the icon packs' maps (MATERIAL_SYMBOLS, LUCIDE, site/icons.mjs) are not classes. */
|
|
61
|
+
the names in the icon packs' maps (MATERIAL_SYMBOLS, LUCIDE, site/icons.mjs) and the tests' examples are not classes. */
|
|
62
62
|
@source '../..';
|
|
63
63
|
@source not '../../site/icons.mjs';
|
|
64
|
+
@source not '../../**/*.test.mjs';
|
|
64
65
|
|
|
65
66
|
/* ---- Elevation ----
|
|
66
67
|
The elevation levels (m3.material.io/styles/elevation): how high a part stands over the page, level 0 (on it) to
|
|
67
|
-
level 5
|
|
68
|
-
and its state (its tokens: md.comp.<part>.…container.elevation), and keeps its own variable
|
|
69
|
-
--menu-shadow …), so a theme can still give one part another shadow. A theme sets the levels
|
|
70
|
-
light and dark mode, and they are its shadows everywhere; the ones here are a plain, neutral look
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
level 5. A level is a colour and a shadow. Every part's shadow below is one of them by default, at the level Material
|
|
69
|
+
3 gives that part and its state (its tokens: md.comp.<part>.…container.elevation), and keeps its own variable
|
|
70
|
+
(--card-elevated-shadow, --menu-shadow …), so a theme can still give one part another shadow. A theme sets the levels
|
|
71
|
+
to its own look, in light and dark mode, and they are its shadows everywhere; the ones here are a plain, neutral look
|
|
72
|
+
of their own.
|
|
73
|
+
--elevation-0 … --elevation-5 the level's shadow; level 0 is no shadow (0 0 #0000, so it can
|
|
74
|
+
stand in a list of shadows)
|
|
75
|
+
--elevation-0-surface … --elevation-5-surface the level's colour (the site's surface-container colours)
|
|
76
|
+
--elevation-1-rest-shadow … -5-rest-shadow the shadow a part shows at rest on that level; a theme turns resting
|
|
77
|
+
shadows off here and keeps the lift, which reads --elevation-N
|
|
78
|
+
At rest (the shadow reads --elevation-N-rest-shadow), pointed at (hover), pressed and dragged (the lift reads
|
|
79
|
+
--elevation-N), by Material 3; with focus a part is as at rest:
|
|
73
80
|
level 0 filled, tonal and outlined buttons, icon buttons, filled and outlined cards, chips (not elevated), a
|
|
74
81
|
standard side sheet, a full-screen dialog on a phone, the top app bar, the navigation bar and rail, the
|
|
75
82
|
search bar, a plain tooltip
|
|
@@ -91,6 +98,17 @@
|
|
|
91
98
|
--elevation-3: 0 2px 4px rgb(0 0 0 / 0.07), 0 12px 28px -10px rgb(0 0 0 / 0.22);
|
|
92
99
|
--elevation-4: 0 2px 6px rgb(0 0 0 / 0.08), 0 16px 36px -12px rgb(0 0 0 / 0.26);
|
|
93
100
|
--elevation-5: 0 4px 8px rgb(0 0 0 / 0.09), 0 20px 44px -12px rgb(0 0 0 / 0.3);
|
|
101
|
+
--elevation-0-surface: var(--bg);
|
|
102
|
+
--elevation-1-surface: var(--surface-container-low, var(--block-surface));
|
|
103
|
+
--elevation-2-surface: var(--surface-container, var(--block-surface));
|
|
104
|
+
--elevation-3-surface: var(--surface-container-high, var(--block-surface));
|
|
105
|
+
--elevation-4-surface: var(--surface-container-highest, var(--block-surface));
|
|
106
|
+
--elevation-5-surface: var(--surface-container-highest, var(--block-surface));
|
|
107
|
+
--elevation-1-rest-shadow: var(--elevation-1);
|
|
108
|
+
--elevation-2-rest-shadow: var(--elevation-2);
|
|
109
|
+
--elevation-3-rest-shadow: var(--elevation-3);
|
|
110
|
+
--elevation-4-rest-shadow: var(--elevation-4);
|
|
111
|
+
--elevation-5-rest-shadow: var(--elevation-5);
|
|
94
112
|
}
|
|
95
113
|
@media (prefers-color-scheme: dark) {
|
|
96
114
|
:where(:root:not([data-theme='light'])) {
|
|
@@ -187,7 +205,7 @@
|
|
|
187
205
|
--type-label-small-weight: 500;
|
|
188
206
|
--type-label-small-tracking: 0.03125rem;
|
|
189
207
|
}
|
|
190
|
-
/* A role as a utility, for a theme's own components and layouts: type-title-large,
|
|
208
|
+
/* A role as a utility, for a theme's own components and layouts: type-title-large, medium:type-headline-small … */
|
|
191
209
|
@utility type-display-large {
|
|
192
210
|
font-size: var(--type-display-large-size);
|
|
193
211
|
line-height: var(--type-display-large-line-height);
|
|
@@ -403,9 +421,9 @@
|
|
|
403
421
|
}
|
|
404
422
|
/* Elevated: on a surface with its shadow, where the page behind it has a colour. */
|
|
405
423
|
.button-elevated {
|
|
406
|
-
background: var(--button-elevated-surface, var(--
|
|
424
|
+
background: var(--button-elevated-surface, var(--elevation-1-surface));
|
|
407
425
|
color: var(--button-elevated-text, var(--block-accent));
|
|
408
|
-
box-shadow: var(--button-elevated-shadow, var(--elevation-1));
|
|
426
|
+
box-shadow: var(--button-elevated-shadow, var(--elevation-1-rest-shadow));
|
|
409
427
|
}
|
|
410
428
|
.button-elevated:hover {
|
|
411
429
|
box-shadow: var(--button-elevated-hover-shadow, var(--button-elevated-shadow, var(--elevation-2)));
|
|
@@ -418,7 +436,7 @@
|
|
|
418
436
|
box-shadow: var(--button-tonal-shadow, var(--elevation-0));
|
|
419
437
|
}
|
|
420
438
|
.button-elevated:active {
|
|
421
|
-
box-shadow: var(--button-elevated-shadow, var(--elevation-1));
|
|
439
|
+
box-shadow: var(--button-elevated-shadow, var(--elevation-1-rest-shadow));
|
|
422
440
|
}
|
|
423
441
|
/* Outlined: another choice beside the main one, with a thin edge. */
|
|
424
442
|
.button-outlined {
|
|
@@ -514,7 +532,7 @@
|
|
|
514
532
|
--icon-button-corners: var(--icon-button-round);
|
|
515
533
|
display: inline-grid;
|
|
516
534
|
flex-shrink: 0;
|
|
517
|
-
/* Centred also where a page shows it as flex (
|
|
535
|
+
/* Centred also where a page shows it as flex (medium:flex beside hidden). */
|
|
518
536
|
place-items: center;
|
|
519
537
|
place-content: center;
|
|
520
538
|
width: var(--icon-button-width);
|
|
@@ -701,7 +719,8 @@
|
|
|
701
719
|
something is written, .text-field-visibility, aria-pressed while the password is shown); under it
|
|
702
720
|
.text-field-supporting-row with the line (.text-field-supporting, what is wrong with it in .text-field-error) and the
|
|
703
721
|
counter (.text-field-counter; .text-field-counter-over past the field's limit). A button or a link that is tapped to choose (the editor's choice from a list) can be
|
|
704
|
-
the .text-field-input (textFieldInputClass) in the container
|
|
722
|
+
the .text-field-input (textFieldInputClass) in the container; with aria-expanded while its menu is open (its edge and name in the accent,
|
|
723
|
+
its arrow up), and in .text-field-small a small box as wide as what is chosen. A read-only field ([readonly]) looks as an enabled one; with the focus its edge is the
|
|
705
724
|
line's colour.
|
|
706
725
|
--text-field-height, --text-field-padding, --text-field-radius, --text-field-font-size the field
|
|
707
726
|
--text-field-<kind>-surface, -line, -hover-line, -focus-line each kind's colours and edge (resting, pointed at,
|
|
@@ -773,6 +792,16 @@
|
|
|
773
792
|
.text-field-input:disabled {
|
|
774
793
|
cursor: default;
|
|
775
794
|
}
|
|
795
|
+
/* A small box (TextFieldButton's size="small"): as wide as what is chosen, for a row's choice (SettingRow). */
|
|
796
|
+
.text-field-small {
|
|
797
|
+
--text-field-height: var(--text-field-small-height, 2.5rem);
|
|
798
|
+
--text-field-padding: var(--text-field-small-padding, 0.75rem);
|
|
799
|
+
--text-field-font-size: var(--text-field-small-font-size, var(--type-body-medium-size));
|
|
800
|
+
--text-field-icon-padding: var(--text-field-small-icon-padding, 0.5rem);
|
|
801
|
+
--text-field-icon-gap: var(--text-field-small-icon-gap, 0.5rem);
|
|
802
|
+
width: max-content;
|
|
803
|
+
max-width: 100%;
|
|
804
|
+
}
|
|
776
805
|
.text-field:has(.text-field-input:disabled) .text-field-supporting-row {
|
|
777
806
|
opacity: var(--text-field-disabled-opacity, 0.6);
|
|
778
807
|
}
|
|
@@ -800,9 +829,17 @@
|
|
|
800
829
|
}
|
|
801
830
|
.text-field-error .text-field-container,
|
|
802
831
|
.text-field-error .text-field-container:hover,
|
|
803
|
-
.text-field-error .text-field-container:has(> .text-field-input:focus) {
|
|
832
|
+
.text-field-error .text-field-container:has(> .text-field-input:is(:focus, [aria-expanded='true'])) {
|
|
804
833
|
box-shadow: inset 0 0 0 2px var(--text-field-error, var(--block-accent));
|
|
805
834
|
}
|
|
835
|
+
/* A choice whose menu is open under it (the button's aria-expanded): the edge as with the focus, which has moved into
|
|
836
|
+
the menu; and the arrow turned up. */
|
|
837
|
+
.text-field-outlined .text-field-container:has(> .text-field-input[aria-expanded='true']) {
|
|
838
|
+
box-shadow: inset 0 0 0 2px var(--text-field-outlined-focus-line, var(--block-accent));
|
|
839
|
+
}
|
|
840
|
+
.text-field-filled .text-field-container:has(> .text-field-input[aria-expanded='true']) {
|
|
841
|
+
box-shadow: inset 0 0 0 2px var(--text-field-filled-focus-line, var(--block-accent));
|
|
842
|
+
}
|
|
806
843
|
/* Read-only: as an enabled field, and with the focus its edge in the line's colour, as it cannot be written in. */
|
|
807
844
|
.text-field-outlined .text-field-container:has(> .text-field-input[readonly]:focus) {
|
|
808
845
|
box-shadow: inset 0 0 0 2px var(--text-field-outlined-hover-line, var(--text-field-outlined-line, var(--block-line)));
|
|
@@ -851,8 +888,14 @@
|
|
|
851
888
|
.text-field-input[readonly]:focus + .text-field-label {
|
|
852
889
|
color: var(--text-field-label-color, var(--block-muted));
|
|
853
890
|
}
|
|
891
|
+
.text-field-outlined .text-field-input[aria-expanded='true'] + .text-field-label {
|
|
892
|
+
color: var(--text-field-outlined-focus-line, var(--block-accent));
|
|
893
|
+
}
|
|
894
|
+
.text-field-filled .text-field-input[aria-expanded='true'] + .text-field-label {
|
|
895
|
+
color: var(--text-field-filled-focus-line, var(--block-accent));
|
|
896
|
+
}
|
|
854
897
|
.text-field-error .text-field-label,
|
|
855
|
-
.text-field-error .text-field-input:focus + .text-field-label {
|
|
898
|
+
.text-field-error .text-field-input:is(:focus, [aria-expanded='true']) + .text-field-label {
|
|
856
899
|
color: var(--text-field-error, var(--block-accent));
|
|
857
900
|
}
|
|
858
901
|
/* Outlined: the name on the edge, on the field's surface, at its start (also past the icon before it). */
|
|
@@ -893,6 +936,10 @@
|
|
|
893
936
|
}
|
|
894
937
|
.text-field-trailing-icon {
|
|
895
938
|
margin-inline-end: var(--text-field-icon-padding, 0.875rem);
|
|
939
|
+
transition: rotate var(--motion-spatial-fast);
|
|
940
|
+
}
|
|
941
|
+
.text-field-container:has(> button.text-field-input[aria-expanded='true']) > .text-field-trailing-icon {
|
|
942
|
+
rotate: 180deg;
|
|
896
943
|
}
|
|
897
944
|
/* The buttons bare (standard icon buttons without their surface), as the icons beside them. */
|
|
898
945
|
.text-field-trailing-action {
|
|
@@ -1156,11 +1203,11 @@
|
|
|
1156
1203
|
/* Elevated: on a surface with a shadow instead of the edge, where it stands on a picture or a colour; also chosen.
|
|
1157
1204
|
Level 1, level 2 when pointed at, and as at rest while pressed (M3). */
|
|
1158
1205
|
.chip-elevated {
|
|
1159
|
-
background: var(--chip-elevated-surface, var(--
|
|
1206
|
+
background: var(--chip-elevated-surface, var(--elevation-1-surface));
|
|
1160
1207
|
}
|
|
1161
1208
|
.chip-elevated,
|
|
1162
1209
|
.chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']) {
|
|
1163
|
-
box-shadow: var(--chip-elevated-shadow, var(--elevation-1));
|
|
1210
|
+
box-shadow: var(--chip-elevated-shadow, var(--elevation-1-rest-shadow));
|
|
1164
1211
|
}
|
|
1165
1212
|
.chip-elevated:hover,
|
|
1166
1213
|
.chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']):hover {
|
|
@@ -1168,7 +1215,7 @@
|
|
|
1168
1215
|
}
|
|
1169
1216
|
.chip-elevated:active,
|
|
1170
1217
|
.chip.chip-elevated:is([aria-pressed='true'], [aria-current='page']):active {
|
|
1171
|
-
box-shadow: var(--chip-elevated-shadow, var(--elevation-1));
|
|
1218
|
+
box-shadow: var(--chip-elevated-shadow, var(--elevation-1-rest-shadow));
|
|
1172
1219
|
}
|
|
1173
1220
|
|
|
1174
1221
|
/* A person's picture before the label (an input chip): round, nearer the start. */
|
|
@@ -1278,7 +1325,7 @@
|
|
|
1278
1325
|
icon (.dialog-icon, centred over the headline with .dialog-with-icon), .dialog-headline, .dialog-supporting-text,
|
|
1279
1326
|
.dialog-content (what else it shows, scrolling), evt. .dialog-divider and .dialog-actions at its end. A full-screen
|
|
1280
1327
|
dialog, .dialog-full-screen in .dialog-modal-full-screen: over the whole screen on a phone, with .dialog-header (the
|
|
1281
|
-
close button, the headline and .dialog-header-actions), evt. .dialog-divider, and .dialog-content; from
|
|
1328
|
+
close button, the headline and .dialog-header-actions), evt. .dialog-divider, and .dialog-content; from the medium width a
|
|
1282
1329
|
dialog in the middle of the screen with the same header.
|
|
1283
1330
|
--dialog-radius, --dialog-surface, --dialog-shadow, --dialog-line the container's corners, surface, shadow
|
|
1284
1331
|
(level 3; none for a full-screen one on a phone), edge
|
|
@@ -1287,35 +1334,47 @@
|
|
|
1287
1334
|
--dialog-max-width how wide a modal dialog is at most
|
|
1288
1335
|
--dialog-padding the room inside a basic dialog, and at the sides of a full-screen one's content
|
|
1289
1336
|
--dialog-icon-color, --dialog-headline-size, --dialog-headline-weight, --dialog-supporting-text-color its parts
|
|
1290
|
-
--dialog-full-screen-max-width, --dialog-full-screen-headline-size a full-screen dialog from
|
|
1337
|
+
--dialog-full-screen-max-width, --dialog-full-screen-headline-size a full-screen dialog from the medium width, and its
|
|
1291
1338
|
headline in its header
|
|
1292
1339
|
Bottom sheets (BottomSheet.tsx, bottomSheetClass, bottomSheetContainerClass, and bottomSheet() and
|
|
1293
1340
|
standardBottomSheet() in bottomSheetControl.ts for what it does in a browser, bottomSheet.script.ts on the site;
|
|
1294
1341
|
m3.material.io/components/bottom-sheets): a modal one's <dialog> is .bottom-sheet (an app's: Calendly's calendar), at
|
|
1295
1342
|
most 44rem wide and nearly as high as the screen, from the bottom on a phone and in the middle of the screen from
|
|
1296
|
-
|
|
1297
|
-
it: the editor's sheets; with .bottom-sheet-full as high as the screen, and wider on a computer: the editor's
|
|
1298
|
-
of a page); in it .bottom-sheet-container with
|
|
1299
|
-
.bottom-sheet-
|
|
1300
|
-
|
|
1301
|
-
.bottom-sheet-cover) and .bottom-sheet-footer.
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1343
|
+
the medium width (a dialog there, rounded all round, without the drag handle; with .bottom-sheet-fit as high as what
|
|
1344
|
+
is in it: the editor's sheets; with .bottom-sheet-full as high as the screen, and wider on a computer: the editor's
|
|
1345
|
+
preview of a page); in it .bottom-sheet-container with .bottom-sheet-drag-handle, .bottom-sheet-header
|
|
1346
|
+
(.bottom-sheet-headline, .bottom-sheet-supporting-text and .bottom-sheet-actions: the resize, collapse and close
|
|
1347
|
+
buttons), .bottom-sheet-peek (what a standard one shows even while collapsed), .bottom-sheet-content (what it shows,
|
|
1348
|
+
filling the rest: a frame, and over it what stands in its place, .bottom-sheet-cover) and .bottom-sheet-footer. On a
|
|
1349
|
+
phone bottomSheet() gives a modal one's container data-sized (it opens at the height its data-start says, 'half' or
|
|
1350
|
+
'full', and is pulled by modalSheetSize.ts), data-full at full height (the content scrolls, and a frame takes
|
|
1351
|
+
touches, only then) and data-moving while it is pulled. A standard one is the container itself,
|
|
1352
|
+
.bottom-sheet-standard, at the bottom of the screen (in the editor of its frame, with contain: layout and a size
|
|
1353
|
+
container) without a scrim, its drag handle a button, in the state it rests in (data-state: collapsed, only the
|
|
1354
|
+
handle and the header; half-expanded, at most half as high as the screen; expanded, as high as what it shows, but
|
|
1355
|
+
not to the top; hidden), data-moving while it is dragged or moves, data-full while it is expanded and as high as it
|
|
1356
|
+
can be (the collapse button shows only then).
|
|
1305
1357
|
--bottom-sheet-surface, --bottom-sheet-radius, --bottom-sheet-line its surface (also the cover's), corners, and
|
|
1306
1358
|
the lines under the header and over the footer
|
|
1307
1359
|
--bottom-sheet-shadow, --bottom-sheet-shadow-large its shadow on a phone (and a standard one's; level 1), and as
|
|
1308
|
-
a dialog from
|
|
1360
|
+
a dialog from the medium width (level 3)
|
|
1309
1361
|
--bottom-sheet-scrim the shade over the page behind a modal one
|
|
1310
1362
|
--bottom-sheet-handle the drag handle's colour
|
|
1311
1363
|
--bottom-sheet-max-width, --bottom-sheet-top-gap how wide a standard one is at most, and how far from the top it
|
|
1312
1364
|
stays when it is expanded
|
|
1365
|
+
--bottom-sheet-margin-wide a standard one with wide="sheet" (from the medium width) stays this far from the
|
|
1366
|
+
sides and from the top (3.5rem); wide="side-sheet" (the default) draws it as a standard side
|
|
1367
|
+
sheet at the end of the screen (--side-sheet-* tokens, full height, no handle or buttons, every
|
|
1368
|
+
part shown); a modal one's wide="dialog" (the default; the dialog in the middle, also a container without
|
|
1369
|
+
the attribute), "side-sheet" (a modal side sheet at the end: --side-sheet-modal-surface, -radius, -shadow,
|
|
1370
|
+
-scrim and -width, full height, no handle, slid in from the end) and "sheet" (stays a bottom sheet, as
|
|
1371
|
+
wide as --bottom-sheet-max-width at most, the margin from the sides and the top, slid up)
|
|
1313
1372
|
Carousels (Carousel.tsx, carouselClass, carousel.script.ts and carouselLayout.ts;
|
|
1314
1373
|
m3.material.io/components/carousel): .carousel with its items in a row to swipe (.carousel-items, each a
|
|
1315
1374
|
.carousel-item; native scroll-snap), and under them the theme's addition to M3's carousel, a page indicator
|
|
1316
1375
|
(.carousel-indicator with a .carousel-indicator-dot for each item, the one in view aria-current). Uncontained (no
|
|
1317
|
-
class of its own): each item as wide as the others, one with the next peeking in on a phone, two from
|
|
1318
|
-
from
|
|
1376
|
+
class of its own): each item as wide as the others, one with the next peeking in on a phone, two from the medium width, three
|
|
1377
|
+
from the expanded width, reaching out to a phone's edges. The contained layouts, .carousel-contained with their own:
|
|
1319
1378
|
.carousel-multi-browse (large items, a medium and a small one) and .carousel-hero (large ones and a small one;
|
|
1320
1379
|
.carousel-center: between two small ones), whose items' masks (.carousel-item-mask, what is in an item, filling it)
|
|
1321
1380
|
carouselLayout.ts moves and clips as they scroll (--carousel-item-width on the row, --carousel-mask-inset on a mask,
|
|
@@ -1341,10 +1400,10 @@
|
|
|
1341
1400
|
/* A dialog's container. */
|
|
1342
1401
|
.dialog {
|
|
1343
1402
|
border-radius: var(--dialog-radius, var(--block-radius));
|
|
1344
|
-
background: var(--dialog-surface, var(--
|
|
1403
|
+
background: var(--dialog-surface, var(--elevation-3-surface));
|
|
1345
1404
|
box-shadow:
|
|
1346
1405
|
0 0 0 1px var(--dialog-line, var(--block-line)),
|
|
1347
|
-
var(--dialog-shadow, var(--elevation-3));
|
|
1406
|
+
var(--dialog-shadow, var(--elevation-3-rest-shadow));
|
|
1348
1407
|
}
|
|
1349
1408
|
/* A modal dialog: in the middle of the screen over the scrim, coming up a little as it opens. */
|
|
1350
1409
|
.dialog-modal {
|
|
@@ -1479,7 +1538,7 @@
|
|
|
1479
1538
|
margin-bottom: 1rem;
|
|
1480
1539
|
}
|
|
1481
1540
|
/* On a phone over the whole screen, without corners, edge or shadow. */
|
|
1482
|
-
@media (width <
|
|
1541
|
+
@media (width < theme(--breakpoint-medium)) {
|
|
1483
1542
|
.dialog-modal-full-screen {
|
|
1484
1543
|
width: 100%;
|
|
1485
1544
|
max-width: none;
|
|
@@ -1495,8 +1554,8 @@
|
|
|
1495
1554
|
box-shadow: none;
|
|
1496
1555
|
}
|
|
1497
1556
|
}
|
|
1498
|
-
/* From
|
|
1499
|
-
@media (width >=
|
|
1557
|
+
/* From the medium width a dialog in the middle of the screen, with the same header. */
|
|
1558
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1500
1559
|
.dialog-modal-full-screen {
|
|
1501
1560
|
max-width: var(--dialog-full-screen-max-width, 35rem);
|
|
1502
1561
|
}
|
|
@@ -1549,8 +1608,8 @@
|
|
|
1549
1608
|
height: 100%;
|
|
1550
1609
|
overflow: hidden;
|
|
1551
1610
|
border-radius: var(--bottom-sheet-radius, var(--block-radius)) var(--bottom-sheet-radius, var(--block-radius)) 0 0;
|
|
1552
|
-
background: var(--bottom-sheet-surface, var(--
|
|
1553
|
-
box-shadow: var(--bottom-sheet-shadow, var(--elevation-1));
|
|
1611
|
+
background: var(--bottom-sheet-surface, var(--elevation-1-surface));
|
|
1612
|
+
box-shadow: var(--bottom-sheet-shadow, var(--elevation-1-rest-shadow));
|
|
1554
1613
|
padding-bottom: env(safe-area-inset-bottom);
|
|
1555
1614
|
}
|
|
1556
1615
|
.bottom-sheet-drag-handle {
|
|
@@ -1585,6 +1644,12 @@
|
|
|
1585
1644
|
.bottom-sheet-heading {
|
|
1586
1645
|
min-width: 0;
|
|
1587
1646
|
}
|
|
1647
|
+
.bottom-sheet-actions {
|
|
1648
|
+
display: flex;
|
|
1649
|
+
flex-shrink: 0;
|
|
1650
|
+
align-items: center;
|
|
1651
|
+
margin-inline-start: auto;
|
|
1652
|
+
}
|
|
1588
1653
|
.bottom-sheet-headline {
|
|
1589
1654
|
margin: 0;
|
|
1590
1655
|
font-size: var(--type-headline-small-size);
|
|
@@ -1592,14 +1657,21 @@
|
|
|
1592
1657
|
font-weight: var(--type-headline-small-weight);
|
|
1593
1658
|
letter-spacing: var(--type-headline-small-tracking);
|
|
1594
1659
|
}
|
|
1595
|
-
.bottom-sheet-supporting-text
|
|
1596
|
-
|
|
1660
|
+
.bottom-sheet-supporting-text,
|
|
1661
|
+
.bottom-sheet-peek {
|
|
1597
1662
|
font-size: var(--type-body-medium-size);
|
|
1598
1663
|
line-height: var(--type-body-medium-line-height);
|
|
1599
1664
|
font-weight: var(--type-body-medium-weight);
|
|
1600
1665
|
letter-spacing: var(--type-body-medium-tracking);
|
|
1666
|
+
}
|
|
1667
|
+
.bottom-sheet-supporting-text {
|
|
1668
|
+
margin: 0;
|
|
1601
1669
|
color: var(--block-muted);
|
|
1602
1670
|
}
|
|
1671
|
+
.bottom-sheet-peek {
|
|
1672
|
+
flex: none;
|
|
1673
|
+
padding: 0.75rem 1.25rem 1rem;
|
|
1674
|
+
}
|
|
1603
1675
|
.bottom-sheet-content {
|
|
1604
1676
|
position: relative;
|
|
1605
1677
|
flex: 1;
|
|
@@ -1613,6 +1685,22 @@
|
|
|
1613
1685
|
border: 0;
|
|
1614
1686
|
background: transparent;
|
|
1615
1687
|
}
|
|
1688
|
+
/* A modal sheet that bottomSheet() sizes (on a phone): the content scrolls only at full height; below it a touch on the
|
|
1689
|
+
content, also over a frame, pulls the sheet. */
|
|
1690
|
+
.bottom-sheet-container[data-sized] > :is(.bottom-sheet-drag-handle, .bottom-sheet-header) {
|
|
1691
|
+
touch-action: none;
|
|
1692
|
+
}
|
|
1693
|
+
.bottom-sheet-container[data-sized] > .bottom-sheet-content {
|
|
1694
|
+
overflow-y: auto;
|
|
1695
|
+
overscroll-behavior: contain;
|
|
1696
|
+
}
|
|
1697
|
+
.bottom-sheet-container[data-sized]:not([data-full]) > .bottom-sheet-content {
|
|
1698
|
+
overflow: hidden;
|
|
1699
|
+
touch-action: none;
|
|
1700
|
+
}
|
|
1701
|
+
.bottom-sheet-container[data-sized]:not([data-full]) > .bottom-sheet-content > iframe {
|
|
1702
|
+
pointer-events: none;
|
|
1703
|
+
}
|
|
1616
1704
|
/* Over the frame while it loads, or in its place: in the middle, scrolling when it is long. */
|
|
1617
1705
|
.bottom-sheet-cover {
|
|
1618
1706
|
position: absolute;
|
|
@@ -1622,7 +1710,7 @@
|
|
|
1622
1710
|
overflow-y: auto;
|
|
1623
1711
|
margin: 0;
|
|
1624
1712
|
padding: 1.25rem;
|
|
1625
|
-
background: var(--bottom-sheet-surface, var(--
|
|
1713
|
+
background: var(--bottom-sheet-surface, var(--elevation-1-surface));
|
|
1626
1714
|
color: var(--block-muted);
|
|
1627
1715
|
text-align: center;
|
|
1628
1716
|
}
|
|
@@ -1641,19 +1729,23 @@
|
|
|
1641
1729
|
color: var(--block-muted);
|
|
1642
1730
|
text-align: center;
|
|
1643
1731
|
}
|
|
1644
|
-
|
|
1645
|
-
|
|
1732
|
+
/* From the medium width a modal sheet becomes what its container's data-wide says (BottomSheet's `wide`). 'dialog', or a
|
|
1733
|
+
container without the attribute (hand-written ones: Calendly's, and the editor's sheets), is a dialog in the middle of
|
|
1734
|
+
the screen: the rules below, which the other two values keep out of with :where(:not(:has(...))) so their
|
|
1735
|
+
specificity stays what it was. 'side-sheet' and 'sheet' follow after the standard sheet's rules. */
|
|
1736
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1737
|
+
.bottom-sheet:where(:not(:has(> [data-wide='side-sheet'], > [data-wide='sheet']))) {
|
|
1646
1738
|
inset: 0;
|
|
1647
1739
|
height: min(88dvh, 52rem);
|
|
1648
1740
|
margin: auto;
|
|
1649
1741
|
}
|
|
1650
1742
|
/* A modal one only: a standard one stays at the bottom. */
|
|
1651
|
-
.bottom-sheet-container:where(:not(.bottom-sheet-standard)) {
|
|
1743
|
+
.bottom-sheet-container:where(:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) {
|
|
1652
1744
|
border-radius: var(--bottom-sheet-radius, var(--block-radius));
|
|
1653
|
-
box-shadow: var(--bottom-sheet-shadow-large, var(--elevation-3));
|
|
1745
|
+
box-shadow: var(--bottom-sheet-shadow-large, var(--elevation-3-rest-shadow));
|
|
1654
1746
|
padding-bottom: 0;
|
|
1655
1747
|
}
|
|
1656
|
-
:where(.bottom-sheet-container:not(.bottom-sheet-standard)) > .bottom-sheet-drag-handle {
|
|
1748
|
+
:where(.bottom-sheet-container:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) > .bottom-sheet-drag-handle {
|
|
1657
1749
|
display: none;
|
|
1658
1750
|
}
|
|
1659
1751
|
.bottom-sheet-fit {
|
|
@@ -1663,7 +1755,7 @@
|
|
|
1663
1755
|
width: min(92vw, 80rem);
|
|
1664
1756
|
height: 90vh;
|
|
1665
1757
|
}
|
|
1666
|
-
:where(.bottom-sheet-container:not(.bottom-sheet-standard)) > .bottom-sheet-header {
|
|
1758
|
+
:where(.bottom-sheet-container:not(.bottom-sheet-standard, [data-wide='side-sheet'], [data-wide='sheet'])) > .bottom-sheet-header {
|
|
1667
1759
|
padding-top: 1rem;
|
|
1668
1760
|
}
|
|
1669
1761
|
}
|
|
@@ -1682,7 +1774,11 @@
|
|
|
1682
1774
|
margin-inline: auto;
|
|
1683
1775
|
color: var(--block-text);
|
|
1684
1776
|
}
|
|
1777
|
+
/* The handle's button is Material 3's touch target, 3rem (48px) high, the bar centred in it. */
|
|
1685
1778
|
.bottom-sheet-standard > .bottom-sheet-drag-handle {
|
|
1779
|
+
align-items: center;
|
|
1780
|
+
min-height: 3rem;
|
|
1781
|
+
padding: 0;
|
|
1686
1782
|
width: 100%;
|
|
1687
1783
|
border: 0;
|
|
1688
1784
|
background: none;
|
|
@@ -1696,6 +1792,10 @@
|
|
|
1696
1792
|
cursor: grab;
|
|
1697
1793
|
touch-action: none;
|
|
1698
1794
|
}
|
|
1795
|
+
/* Without a handle the header is at the top. */
|
|
1796
|
+
.bottom-sheet-standard > .bottom-sheet-header:first-child {
|
|
1797
|
+
padding-top: 1rem;
|
|
1798
|
+
}
|
|
1699
1799
|
.bottom-sheet-standard > .bottom-sheet-content {
|
|
1700
1800
|
overflow-y: auto;
|
|
1701
1801
|
overscroll-behavior: contain;
|
|
@@ -1707,6 +1807,14 @@
|
|
|
1707
1807
|
.bottom-sheet-standard[data-state='collapsed'] > .bottom-sheet-header {
|
|
1708
1808
|
border-bottom-color: transparent;
|
|
1709
1809
|
}
|
|
1810
|
+
/* The resize button's caret: up at the lowest stop, down above it. The collapse button shows only at full height. */
|
|
1811
|
+
[data-bottom-sheet-resize][aria-expanded='true'] > .bottom-sheet-resize-up,
|
|
1812
|
+
[data-bottom-sheet-resize]:not([aria-expanded='true']) > .bottom-sheet-resize-down {
|
|
1813
|
+
display: none;
|
|
1814
|
+
}
|
|
1815
|
+
.bottom-sheet-standard:not([data-full]) [data-bottom-sheet-collapse] {
|
|
1816
|
+
display: none;
|
|
1817
|
+
}
|
|
1710
1818
|
.bottom-sheet-standard[data-state='half-expanded'] {
|
|
1711
1819
|
max-height: 50cqh;
|
|
1712
1820
|
}
|
|
@@ -1716,6 +1824,93 @@
|
|
|
1716
1824
|
.bottom-sheet-standard[data-moving] {
|
|
1717
1825
|
user-select: none;
|
|
1718
1826
|
}
|
|
1827
|
+
/* From the medium width a standard sheet becomes what data-wide says (BottomSheet's `wide`; bottomSheetControl.ts does
|
|
1828
|
+
nothing to it then). 'side-sheet': a standard side sheet (.side-sheet-standard's look, through its tokens) at the end
|
|
1829
|
+
of the screen, full height, without handle, resize, collapse and close buttons, and with every part shown whatever
|
|
1830
|
+
its state (but hidden stays hidden). 'sheet': stays at the bottom, --bottom-sheet-margin-wide from the sides and the
|
|
1831
|
+
top. */
|
|
1832
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1833
|
+
.bottom-sheet-standard[data-wide='side-sheet'] {
|
|
1834
|
+
inset-block: 0;
|
|
1835
|
+
inset-inline: auto 0;
|
|
1836
|
+
width: var(--side-sheet-width, 22.5rem);
|
|
1837
|
+
max-width: 100%;
|
|
1838
|
+
height: auto;
|
|
1839
|
+
max-height: none;
|
|
1840
|
+
margin: 0;
|
|
1841
|
+
padding-bottom: 0;
|
|
1842
|
+
border-radius: 0;
|
|
1843
|
+
border-inline-start: 1px solid var(--side-sheet-line, var(--block-line));
|
|
1844
|
+
background: var(--side-sheet-surface, var(--elevation-0-surface));
|
|
1845
|
+
box-shadow: none;
|
|
1846
|
+
}
|
|
1847
|
+
.bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-drag-handle,
|
|
1848
|
+
.bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-resize],
|
|
1849
|
+
.bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-collapse],
|
|
1850
|
+
.bottom-sheet-standard[data-wide='side-sheet'] [data-bottom-sheet-close] {
|
|
1851
|
+
display: none;
|
|
1852
|
+
}
|
|
1853
|
+
.bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-header {
|
|
1854
|
+
min-height: 4.5rem;
|
|
1855
|
+
padding: 1rem 0.75rem 0.5rem var(--side-sheet-padding, 1.5rem);
|
|
1856
|
+
border-bottom-color: transparent;
|
|
1857
|
+
cursor: auto;
|
|
1858
|
+
touch-action: auto;
|
|
1859
|
+
}
|
|
1860
|
+
.bottom-sheet-standard[data-wide='side-sheet'] > .bottom-sheet-content {
|
|
1861
|
+
padding: 0 var(--side-sheet-padding, 1.5rem) var(--side-sheet-padding, 1.5rem);
|
|
1862
|
+
}
|
|
1863
|
+
.bottom-sheet-standard[data-wide='side-sheet'] > :is(.bottom-sheet-content, .bottom-sheet-footer) {
|
|
1864
|
+
display: revert;
|
|
1865
|
+
}
|
|
1866
|
+
.bottom-sheet-standard[data-wide='sheet'] {
|
|
1867
|
+
width: calc(100% - 2 * var(--bottom-sheet-margin-wide, 3.5rem));
|
|
1868
|
+
}
|
|
1869
|
+
.bottom-sheet-standard[data-wide='sheet']:not([data-state='half-expanded']) {
|
|
1870
|
+
max-height: calc(100cqh - var(--bottom-sheet-margin-wide, 3.5rem));
|
|
1871
|
+
}
|
|
1872
|
+
}
|
|
1873
|
+
/* A modal sheet from the medium width. 'side-sheet': a modal side sheet (.side-sheet-modal's look, through its tokens) at
|
|
1874
|
+
the end of the screen, full height, over its scrim, without the drag handle; bottomSheet() slides it in from the end.
|
|
1875
|
+
'sheet': stays a bottom sheet (with its handle), --bottom-sheet-max-width wide at most and --bottom-sheet-margin-wide
|
|
1876
|
+
from the sides and the top; bottomSheet() slides it up. */
|
|
1877
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1878
|
+
.bottom-sheet:has(> [data-wide='side-sheet']) {
|
|
1879
|
+
inset: 0 0 0 auto;
|
|
1880
|
+
width: var(--side-sheet-width, 22.5rem);
|
|
1881
|
+
max-width: 100%;
|
|
1882
|
+
height: 100%;
|
|
1883
|
+
max-height: none;
|
|
1884
|
+
margin: 0;
|
|
1885
|
+
}
|
|
1886
|
+
.bottom-sheet:has(> [data-wide='side-sheet']):dir(rtl) {
|
|
1887
|
+
inset: 0 auto 0 0;
|
|
1888
|
+
}
|
|
1889
|
+
.bottom-sheet:has(> [data-wide='side-sheet'])::backdrop {
|
|
1890
|
+
background: var(--side-sheet-scrim, color-mix(in srgb, var(--theme-scrim-colour, var(--block-text)) 50%, transparent));
|
|
1891
|
+
}
|
|
1892
|
+
.bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] {
|
|
1893
|
+
border-radius: 0;
|
|
1894
|
+
border-start-start-radius: var(--side-sheet-radius, var(--block-radius));
|
|
1895
|
+
border-end-start-radius: var(--side-sheet-radius, var(--block-radius));
|
|
1896
|
+
background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--elevation-1-surface)));
|
|
1897
|
+
box-shadow: var(--side-sheet-shadow, var(--elevation-1-rest-shadow));
|
|
1898
|
+
padding-bottom: 0;
|
|
1899
|
+
}
|
|
1900
|
+
.bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] > .bottom-sheet-drag-handle {
|
|
1901
|
+
display: none;
|
|
1902
|
+
}
|
|
1903
|
+
.bottom-sheet-container:not(.bottom-sheet-standard)[data-wide='side-sheet'] > .bottom-sheet-header {
|
|
1904
|
+
min-height: 4.5rem;
|
|
1905
|
+
padding: 1rem 0.75rem 0.5rem var(--side-sheet-padding, 1.5rem);
|
|
1906
|
+
border-bottom-color: transparent;
|
|
1907
|
+
}
|
|
1908
|
+
.bottom-sheet:has(> [data-wide='sheet']) {
|
|
1909
|
+
width: calc(100% - 2 * var(--bottom-sheet-margin-wide, 3.5rem));
|
|
1910
|
+
max-width: var(--bottom-sheet-max-width, 40rem);
|
|
1911
|
+
max-height: calc(100dvh - var(--bottom-sheet-margin-wide, 3.5rem));
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1719
1914
|
|
|
1720
1915
|
/* A carousel: its items in a row to swipe, and the page indicator under them. */
|
|
1721
1916
|
.carousel-items {
|
|
@@ -1768,19 +1963,19 @@
|
|
|
1768
1963
|
width: var(--carousel-dot-selected-width, 1.25rem);
|
|
1769
1964
|
background: var(--carousel-dot-selected-colour, var(--block-accent));
|
|
1770
1965
|
}
|
|
1771
|
-
@media (width >=
|
|
1966
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1772
1967
|
.carousel-item {
|
|
1773
1968
|
width: calc((100% - 1rem) / 2);
|
|
1774
1969
|
}
|
|
1775
1970
|
}
|
|
1776
|
-
@media (width >=
|
|
1971
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1777
1972
|
.carousel-items {
|
|
1778
1973
|
margin: 0;
|
|
1779
1974
|
padding: 0;
|
|
1780
1975
|
scroll-padding-inline: 0;
|
|
1781
1976
|
}
|
|
1782
1977
|
}
|
|
1783
|
-
@media (width >=
|
|
1978
|
+
@media (width >= theme(--breakpoint-expanded)) {
|
|
1784
1979
|
.carousel-item {
|
|
1785
1980
|
width: calc((100% - 2rem) / 3);
|
|
1786
1981
|
}
|
|
@@ -1830,13 +2025,13 @@
|
|
|
1830
2025
|
width: 100%;
|
|
1831
2026
|
scroll-snap-stop: always;
|
|
1832
2027
|
}
|
|
1833
|
-
@media (width <
|
|
2028
|
+
@media (width < theme(--breakpoint-medium)) {
|
|
1834
2029
|
.carousel-full-screen .carousel-item-mask {
|
|
1835
2030
|
border-radius: var(--carousel-full-screen-radius, 0);
|
|
1836
2031
|
clip-path: none;
|
|
1837
2032
|
}
|
|
1838
2033
|
}
|
|
1839
|
-
@media (width >=
|
|
2034
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
1840
2035
|
.carousel-full-screen .carousel-items {
|
|
1841
2036
|
margin: 0;
|
|
1842
2037
|
}
|
|
@@ -1915,7 +2110,7 @@
|
|
|
1915
2110
|
transition: box-shadow 0.3s var(--block-ease-quick);
|
|
1916
2111
|
}
|
|
1917
2112
|
.card-elevated {
|
|
1918
|
-
--card-shadow: var(--card-elevated-shadow, var(--elevation-1));
|
|
2113
|
+
--card-shadow: var(--card-elevated-shadow, var(--elevation-1-rest-shadow));
|
|
1919
2114
|
}
|
|
1920
2115
|
.card-filled {
|
|
1921
2116
|
--card-shadow: var(--card-filled-shadow, var(--elevation-0));
|
|
@@ -1947,7 +2142,7 @@
|
|
|
1947
2142
|
cursor: grabbing;
|
|
1948
2143
|
}
|
|
1949
2144
|
.card-elevated {
|
|
1950
|
-
background: var(--card-elevated-surface, var(--
|
|
2145
|
+
background: var(--card-elevated-surface, var(--elevation-1-surface));
|
|
1951
2146
|
box-shadow:
|
|
1952
2147
|
inset 0 0 0 1px var(--card-elevated-line, transparent),
|
|
1953
2148
|
var(--card-shadow);
|
|
@@ -1959,7 +2154,7 @@
|
|
|
1959
2154
|
var(--card-shadow);
|
|
1960
2155
|
}
|
|
1961
2156
|
.card-outlined {
|
|
1962
|
-
background: var(--card-outlined-surface, var(--
|
|
2157
|
+
background: var(--card-outlined-surface, var(--elevation-0-surface));
|
|
1963
2158
|
box-shadow:
|
|
1964
2159
|
inset 0 0 0 1px var(--card-outlined-line, var(--block-line)),
|
|
1965
2160
|
var(--card-shadow);
|
|
@@ -2041,7 +2236,7 @@
|
|
|
2041
2236
|
display: block;
|
|
2042
2237
|
}
|
|
2043
2238
|
/* Columns: on a wide screen the headline and the supporting text side by side, each in half the item's text. */
|
|
2044
|
-
@media (
|
|
2239
|
+
@media (width >= theme(--breakpoint-expanded)) {
|
|
2045
2240
|
.list-item-columns .list-item-content {
|
|
2046
2241
|
display: grid;
|
|
2047
2242
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
@@ -2409,7 +2604,7 @@
|
|
|
2409
2604
|
.top-app-bar-large-flexible (a larger headline under the bar, wrapping; in the bar once [data-collapsed]); with
|
|
2410
2605
|
.top-app-bar-center the headline (or the search bar's text) in the middle.
|
|
2411
2606
|
--top-app-bar-surface, --top-app-bar-line, --top-app-bar-line-width, --top-app-bar-backdrop
|
|
2412
|
-
--top-app-bar-stuck-surface, --top-app-bar-stuck-line, --top-app-bar-stuck-shadow (the shadow: level 2, M3's on
|
|
2607
|
+
--top-app-bar-stuck-surface (level 2's colour), --top-app-bar-stuck-line, --top-app-bar-stuck-shadow (the shadow: level 2, M3's on
|
|
2413
2608
|
scroll; a theme that shows it by the surface alone, as the standard theme does, sets none)
|
|
2414
2609
|
--top-app-bar-height, --top-app-bar-padding, --top-app-bar-gap the bar's height, the room at its sides and between
|
|
2415
2610
|
its elements
|
|
@@ -2446,14 +2641,26 @@
|
|
|
2446
2641
|
--exposed-dropdown-menu-icon-size, --exposed-dropdown-menu-icon-color
|
|
2447
2642
|
Navigation drawer (NavigationDrawer, NavigationDrawerItem, NavigationDrawerToggle, NavigationDrawerSubitem,
|
|
2448
2643
|
navigationDrawerClass, navigationDrawerScrimClass): .navigation-drawer, the drawer, over .navigation-drawer-scrim;
|
|
2449
|
-
.navigation-drawer-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2644
|
+
.navigation-drawer-standard, the standard one, beside the content (--navigation-drawer-standard-shadow, level 0);
|
|
2645
|
+
.navigation-drawer-dialog, a <dialog> it is in, at the start edge (its ::backdrop the scrim); .navigation-drawer-item,
|
|
2646
|
+
a page (a link, or a button: the editor's) ([data-active]: the open one, or the one holding it), its
|
|
2647
|
+
.navigation-drawer-icon (24dp, outlined; the filled .navigation-drawer-selected-icon in its place while
|
|
2648
|
+
[data-active]) and .navigation-drawer-label, and evt. .navigation-drawer-badge, the text at its end
|
|
2649
|
+
(--navigation-drawer-badge-text, on surface variant; on secondary container on the active item);
|
|
2650
|
+
.navigation-drawer-trailing, an icon at the end of an item (an arrow to a list); .navigation-drawer-back, the back row
|
|
2651
|
+
(an item with an arrow before its label);
|
|
2652
|
+
.navigation-drawer-row, an item with .navigation-drawer-toggle after it (it unfolds its sub-pages, aria-expanded);
|
|
2653
|
+
.navigation-drawer-subitem, a sub-page ([data-active]); .navigation-drawer-section, items under a label
|
|
2654
|
+
(.navigation-drawer-section-label, title small) with, in one that follows another, the divider
|
|
2655
|
+
(.navigation-drawer-section-divider, edge to edge).
|
|
2656
|
+
--navigation-drawer-width (360dp, at most the screen less 56dp), --navigation-drawer-radius (0 16dp 16dp 0; under
|
|
2657
|
+
right-to-left --navigation-drawer-radius-rtl), --navigation-drawer-surface (level 1's colour),
|
|
2658
|
+
--navigation-drawer-shadow (level 1), --navigation-drawer-scrim, --navigation-drawer-inset (12dp each side, from
|
|
2659
|
+
the edges to the items), --navigation-drawer-padding (all of it, with room for the home indicator),
|
|
2660
|
+
--navigation-drawer-section-gap (8dp around the divider), --navigation-drawer-section-label-text
|
|
2661
|
+
--navigation-drawer-item-height (56dp), -padding (16dp start and end), -gap (12dp), -radius (full), -font-size,
|
|
2662
|
+
-line-height, -letter-spacing, -weight (label large), -text (on surface variant), -hover and -pressed (state
|
|
2663
|
+
layers), -active-surface (secondary container), -active-text (on secondary container), -active-weight (700)
|
|
2457
2664
|
--navigation-drawer-row-gap, --navigation-drawer-toggle-size, --navigation-drawer-toggle-hover
|
|
2458
2665
|
--navigation-drawer-subitem-indent, -line, -padding, -font-size, -text, -active-text
|
|
2459
2666
|
Tabs (Tabs, Tab, tabsClass, tabsClasses, tabClass, tabs.script.ts): .tabs, a row of tabs to swipe sideways, or sharing
|
|
@@ -2500,8 +2707,8 @@
|
|
|
2500
2707
|
}
|
|
2501
2708
|
.top-app-bar[data-stuck] {
|
|
2502
2709
|
border-color: var(--top-app-bar-stuck-line, color-mix(in oklab, var(--line) 60%, transparent));
|
|
2503
|
-
background: var(--top-app-bar-stuck-surface, var(--
|
|
2504
|
-
box-shadow: var(--top-app-bar-stuck-shadow, var(--elevation-2));
|
|
2710
|
+
background: var(--top-app-bar-stuck-surface, var(--elevation-2-surface));
|
|
2711
|
+
box-shadow: var(--top-app-bar-stuck-shadow, var(--elevation-2-rest-shadow));
|
|
2505
2712
|
}
|
|
2506
2713
|
/* With a kind: the leading button, the headline (or the search bar) and the trailing elements in a row, and what else
|
|
2507
2714
|
is in it under them. */
|
|
@@ -2630,11 +2837,11 @@
|
|
|
2630
2837
|
max-height: var(--menu-max-height, none);
|
|
2631
2838
|
overflow-y: auto;
|
|
2632
2839
|
border-radius: var(--menu-radius, var(--block-radius-small));
|
|
2633
|
-
background: var(--menu-surface, var(--
|
|
2840
|
+
background: var(--menu-surface, var(--elevation-2-surface));
|
|
2634
2841
|
padding: var(--menu-padding, 0.5rem);
|
|
2635
2842
|
box-shadow:
|
|
2636
2843
|
0 0 0 1px var(--menu-line, var(--block-line)),
|
|
2637
|
-
var(--menu-shadow, var(--elevation-2));
|
|
2844
|
+
var(--menu-shadow, var(--elevation-2-rest-shadow));
|
|
2638
2845
|
}
|
|
2639
2846
|
.menu-item {
|
|
2640
2847
|
display: flex;
|
|
@@ -2769,11 +2976,11 @@
|
|
|
2769
2976
|
}
|
|
2770
2977
|
.menu:has(> .menu-group):not(.menu-groups-divider) > .menu-group {
|
|
2771
2978
|
border-radius: var(--menu-group-inner-radius, var(--menu-radius, var(--block-radius-small)));
|
|
2772
|
-
background: var(--menu-surface, var(--
|
|
2979
|
+
background: var(--menu-surface, var(--elevation-2-surface));
|
|
2773
2980
|
padding: var(--menu-padding, 0.5rem);
|
|
2774
2981
|
box-shadow:
|
|
2775
2982
|
0 0 0 1px var(--menu-line, var(--block-line)),
|
|
2776
|
-
var(--menu-shadow, var(--elevation-2));
|
|
2983
|
+
var(--menu-shadow, var(--elevation-2-rest-shadow));
|
|
2777
2984
|
}
|
|
2778
2985
|
.menu:has(> .menu-group):not(.menu-groups-divider) > .menu-group:first-child {
|
|
2779
2986
|
border-start-start-radius: var(--menu-radius, var(--block-radius-small));
|
|
@@ -2883,7 +3090,7 @@
|
|
|
2883
3090
|
.menu:has(.menu-submenu:not([popover])) {
|
|
2884
3091
|
overflow: visible;
|
|
2885
3092
|
}
|
|
2886
|
-
@media (
|
|
3093
|
+
@media (width < theme(--breakpoint-medium)) {
|
|
2887
3094
|
/* No room beside it on a phone: under its item, a little in, as a popover flips when it has no room. */
|
|
2888
3095
|
.menu-submenu:not([popover]) {
|
|
2889
3096
|
top: calc(100% + var(--menu-submenu-gap, 0.25rem));
|
|
@@ -2946,11 +3153,11 @@
|
|
|
2946
3153
|
margin-block: var(--dropdown-menu-gap, 0.25rem);
|
|
2947
3154
|
border: 0;
|
|
2948
3155
|
border-radius: var(--menu-radius, var(--block-radius-small));
|
|
2949
|
-
background: var(--menu-surface, var(--
|
|
3156
|
+
background: var(--menu-surface, var(--elevation-2-surface));
|
|
2950
3157
|
padding: var(--menu-padding, 0.5rem);
|
|
2951
3158
|
box-shadow:
|
|
2952
3159
|
0 0 0 1px var(--menu-line, var(--block-line)),
|
|
2953
|
-
var(--menu-shadow, var(--elevation-2));
|
|
3160
|
+
var(--menu-shadow, var(--elevation-2-rest-shadow));
|
|
2954
3161
|
color: var(--block-text);
|
|
2955
3162
|
}
|
|
2956
3163
|
.exposed-dropdown-menu-option {
|
|
@@ -2991,22 +3198,37 @@
|
|
|
2991
3198
|
}
|
|
2992
3199
|
.navigation-drawer {
|
|
2993
3200
|
display: flex;
|
|
2994
|
-
width: var(--navigation-drawer-width, min(
|
|
3201
|
+
width: var(--navigation-drawer-width, min(22.5rem, calc(100vw - 3.5rem)));
|
|
2995
3202
|
flex-direction: column;
|
|
2996
3203
|
overflow-y: auto;
|
|
2997
|
-
border-radius: var(--navigation-drawer-radius, 0);
|
|
2998
|
-
|
|
2999
|
-
|
|
3204
|
+
border-radius: var(--navigation-drawer-radius, 0 1rem 1rem 0);
|
|
3205
|
+
padding: var(--navigation-drawer-padding, 0.75rem var(--navigation-drawer-inset, 0.75rem) max(1rem, env(safe-area-inset-bottom)));
|
|
3206
|
+
background: var(--navigation-drawer-surface, var(--elevation-1-surface));
|
|
3207
|
+
box-shadow: var(--navigation-drawer-shadow, var(--elevation-1-rest-shadow));
|
|
3208
|
+
}
|
|
3209
|
+
.navigation-drawer:dir(rtl) {
|
|
3210
|
+
border-radius: var(--navigation-drawer-radius-rtl, 1rem 0 0 1rem);
|
|
3211
|
+
}
|
|
3212
|
+
/* Nothing in it is squeezed when its content is higher than the screen: the drawer scrolls instead. */
|
|
3213
|
+
.navigation-drawer > * {
|
|
3214
|
+
flex-shrink: 0;
|
|
3215
|
+
}
|
|
3216
|
+
/* Standard: beside the content, as high as its row, no scrim, at level 0 (the content makes room for it). */
|
|
3217
|
+
.navigation-drawer-standard {
|
|
3218
|
+
height: 100%;
|
|
3219
|
+
flex-shrink: 0;
|
|
3220
|
+
box-shadow: var(--navigation-drawer-standard-shadow, var(--elevation-0, none));
|
|
3000
3221
|
}
|
|
3001
3222
|
.navigation-drawer-item {
|
|
3002
3223
|
display: flex;
|
|
3003
|
-
min-height: var(--navigation-drawer-item-height,
|
|
3224
|
+
min-height: var(--navigation-drawer-item-height, 3.5rem);
|
|
3004
3225
|
flex: 1;
|
|
3005
3226
|
align-items: center;
|
|
3006
|
-
gap: 0.75rem;
|
|
3007
|
-
border-radius: var(--navigation-drawer-item-radius,
|
|
3008
|
-
padding: var(--navigation-drawer-item-padding, 0
|
|
3009
|
-
color: var(--navigation-drawer-item-text,
|
|
3227
|
+
gap: var(--navigation-drawer-item-gap, 0.75rem);
|
|
3228
|
+
border-radius: var(--navigation-drawer-item-radius, 9999px);
|
|
3229
|
+
padding: var(--navigation-drawer-item-padding, 0 1rem);
|
|
3230
|
+
color: var(--navigation-drawer-item-text, var(--block-muted));
|
|
3231
|
+
text-decoration: none;
|
|
3010
3232
|
font-size: var(--navigation-drawer-item-font-size, var(--type-label-large-size));
|
|
3011
3233
|
line-height: var(--navigation-drawer-item-line-height, var(--type-label-large-line-height));
|
|
3012
3234
|
letter-spacing: var(--navigation-drawer-item-letter-spacing, var(--type-label-large-tracking));
|
|
@@ -3020,10 +3242,12 @@
|
|
|
3020
3242
|
text-align: start;
|
|
3021
3243
|
cursor: pointer;
|
|
3022
3244
|
}
|
|
3023
|
-
/* In a <dialog> (navigationDrawerDialogClass: the editor's): at the
|
|
3245
|
+
/* In a <dialog> (navigationDrawerDialogClass: the editor's): at the start of the screen (left, right in right-to-left
|
|
3246
|
+
languages), as high as it, over the scrim. */
|
|
3024
3247
|
.navigation-drawer-dialog {
|
|
3025
3248
|
position: fixed;
|
|
3026
|
-
inset: 0
|
|
3249
|
+
inset-block: 0;
|
|
3250
|
+
inset-inline: 0 auto;
|
|
3027
3251
|
width: auto;
|
|
3028
3252
|
max-width: none;
|
|
3029
3253
|
height: 100dvh;
|
|
@@ -3039,13 +3263,106 @@
|
|
|
3039
3263
|
.navigation-drawer-dialog::backdrop {
|
|
3040
3264
|
background: var(--navigation-drawer-scrim, color-mix(in srgb, var(--theme-scrim-colour) 45%, transparent));
|
|
3041
3265
|
}
|
|
3266
|
+
/* State layers (as the theme's other items): the item's own colour over it, 8% pointed at, 10% focused or pressed. */
|
|
3042
3267
|
.navigation-drawer-item:hover {
|
|
3043
|
-
background: var(--navigation-drawer-item-hover,
|
|
3268
|
+
background: var(--navigation-drawer-item-hover, color-mix(in srgb, currentColor 8%, transparent));
|
|
3269
|
+
}
|
|
3270
|
+
.navigation-drawer-item:focus-visible,
|
|
3271
|
+
.navigation-drawer-item:active {
|
|
3272
|
+
background: var(--navigation-drawer-item-pressed, color-mix(in srgb, currentColor 10%, transparent));
|
|
3273
|
+
}
|
|
3274
|
+
.navigation-drawer-item:focus-visible {
|
|
3275
|
+
outline-offset: -2px;
|
|
3044
3276
|
}
|
|
3045
3277
|
.navigation-drawer-item[data-active] {
|
|
3046
|
-
background: var(--navigation-drawer-item-active-surface, var(--
|
|
3047
|
-
color: var(--navigation-drawer-item-active-text, var(--
|
|
3048
|
-
font-weight: var(--navigation-drawer-item-active-weight,
|
|
3278
|
+
background: var(--navigation-drawer-item-active-surface, var(--secondary-container));
|
|
3279
|
+
color: var(--navigation-drawer-item-active-text, var(--on-secondary-container));
|
|
3280
|
+
font-weight: var(--navigation-drawer-item-active-weight, 700);
|
|
3281
|
+
}
|
|
3282
|
+
.navigation-drawer-item[data-active]:hover {
|
|
3283
|
+
background: color-mix(in srgb, currentColor 8%, var(--navigation-drawer-item-active-surface, var(--secondary-container)));
|
|
3284
|
+
}
|
|
3285
|
+
.navigation-drawer-item[data-active]:focus-visible,
|
|
3286
|
+
.navigation-drawer-item[data-active]:active {
|
|
3287
|
+
background: color-mix(in srgb, currentColor 10%, var(--navigation-drawer-item-active-surface, var(--secondary-container)));
|
|
3288
|
+
}
|
|
3289
|
+
/* Sections: a label (title small, 56dp high) over the items; the divider is in every section and shown only in one that
|
|
3290
|
+
follows another, edge to edge (it takes the drawer's inset back). */
|
|
3291
|
+
.navigation-drawer-section {
|
|
3292
|
+
display: flex;
|
|
3293
|
+
flex-direction: column;
|
|
3294
|
+
}
|
|
3295
|
+
.navigation-drawer-section-divider {
|
|
3296
|
+
display: none;
|
|
3297
|
+
}
|
|
3298
|
+
.navigation-drawer-section + .navigation-drawer-section > .navigation-drawer-section-divider {
|
|
3299
|
+
display: block;
|
|
3300
|
+
margin-block: var(--navigation-drawer-section-gap, 0.5rem);
|
|
3301
|
+
margin-inline: calc(-1 * var(--navigation-drawer-inset, 0.75rem));
|
|
3302
|
+
}
|
|
3303
|
+
.navigation-drawer-section-label {
|
|
3304
|
+
display: flex;
|
|
3305
|
+
min-height: var(--navigation-drawer-item-height, 3.5rem);
|
|
3306
|
+
align-items: center;
|
|
3307
|
+
padding-inline: var(--navigation-drawer-item-padding-inline, 1rem);
|
|
3308
|
+
color: var(--navigation-drawer-section-label-text, var(--block-muted));
|
|
3309
|
+
font-size: var(--type-title-small-size);
|
|
3310
|
+
line-height: var(--type-title-small-line-height);
|
|
3311
|
+
font-weight: var(--type-title-small-weight);
|
|
3312
|
+
letter-spacing: var(--type-title-small-tracking);
|
|
3313
|
+
}
|
|
3314
|
+
.navigation-drawer-icon {
|
|
3315
|
+
display: grid;
|
|
3316
|
+
width: 1.5rem;
|
|
3317
|
+
height: 1.5rem;
|
|
3318
|
+
flex-shrink: 0;
|
|
3319
|
+
place-items: center;
|
|
3320
|
+
}
|
|
3321
|
+
.navigation-drawer-icon > svg {
|
|
3322
|
+
width: 1.5rem;
|
|
3323
|
+
height: 1.5rem;
|
|
3324
|
+
}
|
|
3325
|
+
/* The outlined icon, and the filled one in its place on the active item. */
|
|
3326
|
+
.navigation-drawer-item:not([data-active]) > .navigation-drawer-icon > .navigation-drawer-selected-icon,
|
|
3327
|
+
.navigation-drawer-item[data-active] > .navigation-drawer-icon > .navigation-drawer-unselected-icon {
|
|
3328
|
+
display: none;
|
|
3329
|
+
}
|
|
3330
|
+
.navigation-drawer-label {
|
|
3331
|
+
min-width: 0;
|
|
3332
|
+
flex: 1;
|
|
3333
|
+
}
|
|
3334
|
+
/* The badge label text at the end of an item: how many there are (label large, on surface variant; on secondary container
|
|
3335
|
+
on the active item). */
|
|
3336
|
+
.navigation-drawer-badge {
|
|
3337
|
+
flex-shrink: 0;
|
|
3338
|
+
margin-inline-start: auto;
|
|
3339
|
+
color: var(--navigation-drawer-badge-text, var(--block-muted));
|
|
3340
|
+
font-size: var(--type-label-large-size);
|
|
3341
|
+
line-height: var(--type-label-large-line-height);
|
|
3342
|
+
font-weight: var(--type-label-large-weight);
|
|
3343
|
+
letter-spacing: var(--type-label-large-tracking);
|
|
3344
|
+
font-variant-numeric: tabular-nums;
|
|
3345
|
+
}
|
|
3346
|
+
.navigation-drawer-item[data-active] > .navigation-drawer-badge {
|
|
3347
|
+
color: var(--navigation-drawer-item-active-text, var(--on-secondary-container));
|
|
3348
|
+
}
|
|
3349
|
+
/* The trailing icon at the end of an item (an arrow to the list it opens); the back row has the item's look. */
|
|
3350
|
+
.navigation-drawer-trailing {
|
|
3351
|
+
display: grid;
|
|
3352
|
+
width: 1.5rem;
|
|
3353
|
+
height: 1.5rem;
|
|
3354
|
+
flex-shrink: 0;
|
|
3355
|
+
place-items: center;
|
|
3356
|
+
margin-inline-start: auto;
|
|
3357
|
+
}
|
|
3358
|
+
.navigation-drawer-trailing:dir(rtl) {
|
|
3359
|
+
scale: -1 1;
|
|
3360
|
+
}
|
|
3361
|
+
.navigation-drawer-badge + .navigation-drawer-trailing {
|
|
3362
|
+
margin-inline-start: 0;
|
|
3363
|
+
}
|
|
3364
|
+
.navigation-drawer-back:dir(rtl) > .navigation-drawer-icon {
|
|
3365
|
+
scale: -1 1;
|
|
3049
3366
|
}
|
|
3050
3367
|
.navigation-drawer-row {
|
|
3051
3368
|
display: flex;
|
|
@@ -3258,7 +3575,7 @@
|
|
|
3258
3575
|
justify-content: center;
|
|
3259
3576
|
border-radius: var(--fab-radius, var(--block-radius-small));
|
|
3260
3577
|
padding: 0 var(--fab-padding, 1rem);
|
|
3261
|
-
box-shadow: var(--fab-shadow, var(--elevation-3));
|
|
3578
|
+
box-shadow: var(--fab-shadow, var(--elevation-3-rest-shadow));
|
|
3262
3579
|
transition:
|
|
3263
3580
|
box-shadow var(--motion-effects),
|
|
3264
3581
|
background-color var(--motion-effects),
|
|
@@ -3279,7 +3596,7 @@
|
|
|
3279
3596
|
}
|
|
3280
3597
|
.fab:active,
|
|
3281
3598
|
.extended-fab:active {
|
|
3282
|
-
box-shadow: var(--fab-shadow, var(--elevation-3));
|
|
3599
|
+
box-shadow: var(--fab-shadow, var(--elevation-3-rest-shadow));
|
|
3283
3600
|
}
|
|
3284
3601
|
/* The medium and the large size (M3 Expressive): taller, with rounder corners and a larger icon, the theme's corners
|
|
3285
3602
|
scaled as Material's are (16, 20 and 28px). */
|
|
@@ -3445,7 +3762,7 @@
|
|
|
3445
3762
|
--button-group-inner-radius (the small and medium buttons'), --button-group-xsmall-inner-radius, -large-, -xlarge-
|
|
3446
3763
|
Toggles' colours are the buttons' (--button-toggle-*, --button-<kind>-selected-*, --icon-button-…-selected-*).
|
|
3447
3764
|
Segmented button (SegmentedButton, segmentedButtonClass, segmentedButtonSegmentClass): .segmented-button, the frame
|
|
3448
|
-
(the whole width on a phone, as wide as its choices from
|
|
3765
|
+
(the whole width on a phone, as wide as its choices from the medium width), with a .segmented-button-segment for each (the chosen with aria-pressed="true"), in it .segmented-button-check (shown
|
|
3449
3766
|
on the chosen), evt. .segmented-button-icon (hidden on the chosen, the check in its place) and
|
|
3450
3767
|
.segmented-button-label.
|
|
3451
3768
|
--segmented-button-height, -padding, -gap, -radius, -font-size, -icon-size (the button's where it has none)
|
|
@@ -3541,7 +3858,7 @@
|
|
|
3541
3858
|
|
|
3542
3859
|
/* Segmented buttons (m3.material.io/components/segmented-buttons): the choices side by side in one frame, each as
|
|
3543
3860
|
wide as the widest. */
|
|
3544
|
-
/* The whole width on a phone, the choices sharing it; as wide as its choices from
|
|
3861
|
+
/* The whole width on a phone, the choices sharing it; as wide as its choices from the medium width. */
|
|
3545
3862
|
.segmented-button {
|
|
3546
3863
|
display: grid;
|
|
3547
3864
|
grid-auto-columns: 1fr;
|
|
@@ -3550,7 +3867,7 @@
|
|
|
3550
3867
|
border-radius: var(--segmented-button-radius, var(--button-radius, var(--block-control-radius)));
|
|
3551
3868
|
background: var(--segmented-button-surface, var(--block-surface));
|
|
3552
3869
|
}
|
|
3553
|
-
@media (width >=
|
|
3870
|
+
@media (width >= theme(--breakpoint-medium)) {
|
|
3554
3871
|
.segmented-button {
|
|
3555
3872
|
display: inline-grid;
|
|
3556
3873
|
}
|
|
@@ -3811,8 +4128,11 @@
|
|
|
3811
4128
|
|
|
3812
4129
|
/* ---- Selection and the rest of containment: Switch, RadioButton, Slider, Divider, SideSheet ---- */
|
|
3813
4130
|
/*
|
|
3814
|
-
|
|
3815
|
-
.
|
|
4131
|
+
Setting rows (SettingRow.tsx): .setting-row, with its text (.setting-row-text: .setting-row-label and
|
|
4132
|
+
.setting-row-supporting) and after it what sets it.
|
|
4133
|
+
--setting-row-gap, --setting-row-label-weight, --setting-row-supporting-color the room before what sets it, the name
|
|
4134
|
+
and the line under it (else the switch's --switch-label-weight and --switch-supporting-color)
|
|
4135
|
+
Switches (Switch.tsx, switchClass; m3.material.io/components/switch): .switch, a setting row, a <label>, evt. what it is on or off (.switch-state), and after them the track
|
|
3816
4136
|
(.switch-track: the <input role="switch">,
|
|
3817
4137
|
.switch-input, drawn as the track with appearance: none, and its handle, .switch-handle, with the theme's icons,
|
|
3818
4138
|
.switch-icon-on and .switch-icon-off, when it has them: .switch-icons).
|
|
@@ -3880,32 +4200,37 @@
|
|
|
3880
4200
|
room inside it, the headline, and the line over the actions
|
|
3881
4201
|
*/
|
|
3882
4202
|
@layer components {
|
|
3883
|
-
/*
|
|
3884
|
-
|
|
4203
|
+
/* A setting's row (SettingRow.tsx): the name and the line under it, then what sets it, on one line; the switch's
|
|
4204
|
+
and the editor's dropdown row both. */
|
|
4205
|
+
.setting-row {
|
|
3885
4206
|
display: flex;
|
|
3886
4207
|
align-items: center;
|
|
3887
|
-
gap: var(--
|
|
3888
|
-
cursor: pointer;
|
|
3889
|
-
}
|
|
3890
|
-
.switch:has(.switch-input:disabled) {
|
|
3891
|
-
cursor: default;
|
|
4208
|
+
gap: var(--setting-row-gap, 1rem);
|
|
3892
4209
|
}
|
|
3893
|
-
.
|
|
4210
|
+
.setting-row-text {
|
|
3894
4211
|
flex: 1;
|
|
3895
4212
|
min-width: 0;
|
|
3896
4213
|
}
|
|
3897
|
-
.
|
|
4214
|
+
.setting-row-label {
|
|
3898
4215
|
display: block;
|
|
3899
|
-
font-weight: var(--switch-label-weight, 500);
|
|
4216
|
+
font-weight: var(--setting-row-label-weight, var(--switch-label-weight, 500));
|
|
3900
4217
|
}
|
|
3901
|
-
.
|
|
4218
|
+
.setting-row-supporting {
|
|
3902
4219
|
display: block;
|
|
3903
|
-
color: var(--switch-supporting-color, var(--block-muted));
|
|
4220
|
+
color: var(--setting-row-supporting-color, var(--switch-supporting-color, var(--block-muted)));
|
|
3904
4221
|
font-size: var(--type-body-medium-size);
|
|
3905
4222
|
line-height: var(--type-body-medium-line-height);
|
|
3906
4223
|
font-weight: var(--type-body-medium-weight);
|
|
3907
4224
|
letter-spacing: var(--type-body-medium-tracking);
|
|
3908
4225
|
}
|
|
4226
|
+
/* Switches: a setting row with the track and its handle after the name. */
|
|
4227
|
+
.switch {
|
|
4228
|
+
gap: var(--switch-gap, var(--setting-row-gap, 1rem));
|
|
4229
|
+
cursor: pointer;
|
|
4230
|
+
}
|
|
4231
|
+
.switch:has(.switch-input:disabled) {
|
|
4232
|
+
cursor: default;
|
|
4233
|
+
}
|
|
3909
4234
|
/* What it is, on or off (Til, Fra), before the track: in the accent while it is on. */
|
|
3910
4235
|
.switch-state {
|
|
3911
4236
|
color: var(--switch-state-color, var(--block-muted));
|
|
@@ -3952,7 +4277,7 @@
|
|
|
3952
4277
|
place-items: center;
|
|
3953
4278
|
border-radius: 9999px;
|
|
3954
4279
|
background: var(--switch-handle-surface, var(--block-surface));
|
|
3955
|
-
box-shadow: var(--switch-handle-shadow, var(--elevation-1));
|
|
4280
|
+
box-shadow: var(--switch-handle-shadow, var(--elevation-1-rest-shadow));
|
|
3956
4281
|
color: var(--switch-icon-color, var(--block-muted));
|
|
3957
4282
|
pointer-events: none;
|
|
3958
4283
|
translate: -50% -50%;
|
|
@@ -4259,7 +4584,7 @@
|
|
|
4259
4584
|
border: var(--slider-handle-line-width, 0.1875rem) solid var(--slider-handle-line, var(--block-surface));
|
|
4260
4585
|
border-radius: var(--slider-handle-radius, 9999px);
|
|
4261
4586
|
background: var(--slider-handle-surface, var(--block-accent));
|
|
4262
|
-
box-shadow: var(--slider-handle-shadow, var(--elevation-1));
|
|
4587
|
+
box-shadow: var(--slider-handle-shadow, var(--elevation-1-rest-shadow));
|
|
4263
4588
|
pointer-events: auto;
|
|
4264
4589
|
cursor: grab;
|
|
4265
4590
|
}
|
|
@@ -4270,7 +4595,7 @@
|
|
|
4270
4595
|
border: var(--slider-handle-line-width, 0.1875rem) solid var(--slider-handle-line, var(--block-surface));
|
|
4271
4596
|
border-radius: var(--slider-handle-radius, 9999px);
|
|
4272
4597
|
background: var(--slider-handle-surface, var(--block-accent));
|
|
4273
|
-
box-shadow: var(--slider-handle-shadow, var(--elevation-1));
|
|
4598
|
+
box-shadow: var(--slider-handle-shadow, var(--elevation-1-rest-shadow));
|
|
4274
4599
|
pointer-events: auto;
|
|
4275
4600
|
cursor: grab;
|
|
4276
4601
|
}
|
|
@@ -4396,7 +4721,7 @@
|
|
|
4396
4721
|
flex-direction: column;
|
|
4397
4722
|
flex-shrink: 0;
|
|
4398
4723
|
overflow: hidden;
|
|
4399
|
-
background: var(--side-sheet-surface, var(--
|
|
4724
|
+
background: var(--side-sheet-surface, var(--elevation-0-surface));
|
|
4400
4725
|
color: var(--block-text);
|
|
4401
4726
|
}
|
|
4402
4727
|
.side-sheet-standard {
|
|
@@ -4407,8 +4732,8 @@
|
|
|
4407
4732
|
height: 100%;
|
|
4408
4733
|
border-start-start-radius: var(--side-sheet-radius, var(--block-radius));
|
|
4409
4734
|
border-end-start-radius: var(--side-sheet-radius, var(--block-radius));
|
|
4410
|
-
background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--
|
|
4411
|
-
box-shadow: var(--side-sheet-shadow, var(--elevation-1));
|
|
4735
|
+
background: var(--side-sheet-modal-surface, var(--side-sheet-surface, var(--elevation-1-surface)));
|
|
4736
|
+
box-shadow: var(--side-sheet-shadow, var(--elevation-1-rest-shadow));
|
|
4412
4737
|
}
|
|
4413
4738
|
.side-sheet-header {
|
|
4414
4739
|
display: flex;
|
|
@@ -4804,7 +5129,7 @@
|
|
|
4804
5129
|
background-color: transparent;
|
|
4805
5130
|
padding: 0 1rem;
|
|
4806
5131
|
}
|
|
4807
|
-
@media (width <
|
|
5132
|
+
@media (width < theme(--breakpoint-medium)) {
|
|
4808
5133
|
body:has([data-action-bar]) .snackbar-stack {
|
|
4809
5134
|
bottom: calc(6.5rem + env(safe-area-inset-bottom));
|
|
4810
5135
|
}
|
|
@@ -4828,7 +5153,7 @@
|
|
|
4828
5153
|
font-size: var(--snackbar-font-size, var(--type-body-medium-size));
|
|
4829
5154
|
letter-spacing: var(--type-body-medium-tracking);
|
|
4830
5155
|
line-height: var(--snackbar-line-height, var(--type-body-medium-line-height));
|
|
4831
|
-
box-shadow: var(--snackbar-shadow, var(--elevation-3));
|
|
5156
|
+
box-shadow: var(--snackbar-shadow, var(--elevation-3-rest-shadow));
|
|
4832
5157
|
-webkit-backdrop-filter: var(--snackbar-backdrop, blur(8px));
|
|
4833
5158
|
backdrop-filter: var(--snackbar-backdrop, blur(8px));
|
|
4834
5159
|
-webkit-user-select: none;
|
|
@@ -4927,7 +5252,7 @@
|
|
|
4927
5252
|
gap: 0.25rem;
|
|
4928
5253
|
translate: var(--tooltip-shift, 0px) 0;
|
|
4929
5254
|
border-radius: var(--tooltip-rich-radius, var(--block-radius-small));
|
|
4930
|
-
background: var(--tooltip-rich-surface, var(--
|
|
5255
|
+
background: var(--tooltip-rich-surface, var(--elevation-2-surface));
|
|
4931
5256
|
padding: var(--tooltip-rich-padding, 0.75rem 1rem);
|
|
4932
5257
|
color: var(--tooltip-rich-text, var(--block-muted));
|
|
4933
5258
|
font-size: var(--type-body-medium-size);
|
|
@@ -4936,7 +5261,7 @@
|
|
|
4936
5261
|
letter-spacing: var(--type-body-medium-tracking);
|
|
4937
5262
|
box-shadow:
|
|
4938
5263
|
0 0 0 1px var(--tooltip-rich-line, var(--block-line)),
|
|
4939
|
-
var(--tooltip-rich-shadow, var(--elevation-2));
|
|
5264
|
+
var(--tooltip-rich-shadow, var(--elevation-2-rest-shadow));
|
|
4940
5265
|
}
|
|
4941
5266
|
.tooltip-subhead {
|
|
4942
5267
|
color: var(--tooltip-rich-subhead, var(--block-text));
|
|
@@ -5138,8 +5463,8 @@
|
|
|
5138
5463
|
content, which keeps its place, with its shadow and corners, over .navigation-rail-scrim just before it); its
|
|
5139
5464
|
behaviour: back into the collapsed rail, or .navigation-rail-hide, nothing while it is collapsed.
|
|
5140
5465
|
--navigation-rail-width, --navigation-rail-expanded-width, --navigation-rail-padding, --navigation-rail-radius,
|
|
5141
|
-
--navigation-rail-surface, --navigation-rail-line
|
|
5142
|
-
--navigation-rail-modal-surface, --navigation-rail-modal-radius, --navigation-rail-modal-shadow,
|
|
5466
|
+
--navigation-rail-surface (level 0's colour), --navigation-rail-line
|
|
5467
|
+
--navigation-rail-modal-surface (level 2's colour), --navigation-rail-modal-radius, --navigation-rail-modal-shadow,
|
|
5143
5468
|
--navigation-rail-scrim a modal one, expanded
|
|
5144
5469
|
--navigation-rail-item-gap, --navigation-rail-item-text, --navigation-rail-item-selected-text
|
|
5145
5470
|
--navigation-rail-indicator-width, --navigation-rail-indicator-height, --navigation-rail-expanded-indicator-height,
|
|
@@ -5152,7 +5477,7 @@
|
|
|
5152
5477
|
button with the leading icon, .search-bar-leading, and the placeholder, .search-bar-placeholder; and
|
|
5153
5478
|
.search-bar-trailing, what stands after it; .search-bar-input in place of the button in a bar that searches in place,
|
|
5154
5479
|
SearchBar) and .search-view (the <dialog> it opens: over the whole screen on a phone,
|
|
5155
|
-
docked where the bar is from
|
|
5480
|
+
docked where the bar is from the medium width, and so in the editor), in it .search-view-header (back, the field,
|
|
5156
5481
|
.search-view-input, a role="combobox", and .search-view-clear), .search-view-results (the theme's list as a
|
|
5157
5482
|
role="listbox", the option the arrow keys are on with aria-selected) and .search-view-empty (when nothing fits).
|
|
5158
5483
|
--search-bar-height, --search-bar-radius, --search-bar-padding, --search-bar-gap, --search-bar-surface,
|
|
@@ -5388,7 +5713,7 @@
|
|
|
5388
5713
|
overflow: hidden;
|
|
5389
5714
|
border-radius: var(--navigation-rail-radius, 0);
|
|
5390
5715
|
padding: var(--navigation-rail-padding, 1rem 0.75rem);
|
|
5391
|
-
background: var(--navigation-rail-surface, var(--
|
|
5716
|
+
background: var(--navigation-rail-surface, var(--elevation-0-surface));
|
|
5392
5717
|
box-shadow: inset -1px 0 0 var(--navigation-rail-line, var(--block-line));
|
|
5393
5718
|
transition:
|
|
5394
5719
|
width var(--motion-spatial),
|
|
@@ -5409,8 +5734,8 @@
|
|
|
5409
5734
|
margin-inline-end: calc(var(--navigation-rail-width, 5.5rem) - var(--navigation-rail-expanded-width, 16rem));
|
|
5410
5735
|
border-start-end-radius: var(--navigation-rail-modal-radius, var(--block-radius));
|
|
5411
5736
|
border-end-end-radius: var(--navigation-rail-modal-radius, var(--block-radius));
|
|
5412
|
-
background: var(--navigation-rail-modal-surface, var(--
|
|
5413
|
-
box-shadow: var(--navigation-rail-modal-shadow, var(--elevation-2));
|
|
5737
|
+
background: var(--navigation-rail-modal-surface, var(--elevation-2-surface));
|
|
5738
|
+
box-shadow: var(--navigation-rail-modal-shadow, var(--elevation-2-rest-shadow));
|
|
5414
5739
|
}
|
|
5415
5740
|
.navigation-rail-scrim {
|
|
5416
5741
|
position: fixed;
|
|
@@ -5523,6 +5848,10 @@
|
|
|
5523
5848
|
.navigation-rail-item[aria-current] {
|
|
5524
5849
|
color: var(--navigation-rail-item-selected-text, var(--block-text));
|
|
5525
5850
|
}
|
|
5851
|
+
button.navigation-rail-item {
|
|
5852
|
+
width: 100%;
|
|
5853
|
+
cursor: pointer;
|
|
5854
|
+
}
|
|
5526
5855
|
.navigation-rail-indicator {
|
|
5527
5856
|
display: contents;
|
|
5528
5857
|
}
|
|
@@ -5662,7 +5991,7 @@
|
|
|
5662
5991
|
inset 0 0 0 2px var(--block-accent),
|
|
5663
5992
|
var(--search-bar-shadow, var(--elevation-0));
|
|
5664
5993
|
}
|
|
5665
|
-
/* The view: over the whole screen on a phone; docked from
|
|
5994
|
+
/* The view: over the whole screen on a phone; docked from the medium width, where the bar is (search.script.ts sets where), and
|
|
5666
5995
|
as the editor draws it. */
|
|
5667
5996
|
.search-view {
|
|
5668
5997
|
inset: 0;
|
|
@@ -5674,7 +6003,7 @@
|
|
|
5674
6003
|
overflow: hidden;
|
|
5675
6004
|
border: 0;
|
|
5676
6005
|
padding: 0;
|
|
5677
|
-
background: var(--search-view-surface, var(--
|
|
6006
|
+
background: var(--search-view-surface, var(--elevation-3-surface));
|
|
5678
6007
|
color: var(--block-text);
|
|
5679
6008
|
}
|
|
5680
6009
|
.search-view[open] {
|
|
@@ -5693,7 +6022,7 @@
|
|
|
5693
6022
|
border-radius: var(--search-view-radius, var(--block-radius));
|
|
5694
6023
|
box-shadow:
|
|
5695
6024
|
0 0 0 1px var(--search-view-line, var(--block-line)),
|
|
5696
|
-
var(--search-view-shadow, var(--elevation-3));
|
|
6025
|
+
var(--search-view-shadow, var(--elevation-3-rest-shadow));
|
|
5697
6026
|
}
|
|
5698
6027
|
.search-view-docked {
|
|
5699
6028
|
inset: var(--search-view-top) auto auto var(--search-view-left);
|
|
@@ -5779,7 +6108,7 @@
|
|
|
5779
6108
|
padding: var(--toolbar-floating-padding, 0.5rem);
|
|
5780
6109
|
box-shadow:
|
|
5781
6110
|
0 0 0 1px var(--toolbar-floating-line, var(--block-line)),
|
|
5782
|
-
var(--toolbar-floating-shadow, var(--elevation-3));
|
|
6111
|
+
var(--toolbar-floating-shadow, var(--elevation-3-rest-shadow));
|
|
5783
6112
|
}
|
|
5784
6113
|
.toolbar-vertical {
|
|
5785
6114
|
flex-direction: column;
|
|
@@ -5967,7 +6296,7 @@
|
|
|
5967
6296
|
border-radius: var(--date-picker-docked-radius, var(--dialog-radius, var(--block-radius)));
|
|
5968
6297
|
box-shadow:
|
|
5969
6298
|
0 0 0 1px var(--dialog-line, var(--block-line)),
|
|
5970
|
-
var(--date-picker-docked-shadow, var(--dialog-shadow, var(--elevation-3)));
|
|
6299
|
+
var(--date-picker-docked-shadow, var(--dialog-shadow, var(--elevation-3-rest-shadow)));
|
|
5971
6300
|
}
|
|
5972
6301
|
.date-picker-header {
|
|
5973
6302
|
padding: 1rem 0.75rem 0.75rem 1.5rem;
|
|
@@ -6184,7 +6513,7 @@
|
|
|
6184
6513
|
|
|
6185
6514
|
/* The input mode: the theme's text fields, on the dialog's surface (behind an outlined field's name too). */
|
|
6186
6515
|
.date-picker-input {
|
|
6187
|
-
--text-field-label-surface: var(--dialog-surface, var(--
|
|
6516
|
+
--text-field-label-surface: var(--dialog-surface, var(--elevation-3-surface));
|
|
6188
6517
|
display: grid;
|
|
6189
6518
|
gap: 1rem;
|
|
6190
6519
|
padding: 1.25rem 0.75rem 0.5rem;
|