component PublicPageShell { props { maxWidth: string = "full" fullWidth: boolean = true headerOffset: string = "none" background: string = "default" overflow: string = "clip" minHeight: string = "screen" size: string = "default" color: string = "primary" variant: string = "default" class: string = "" } view {
} style { .wire-page-shell { position: relative; isolation: isolate; width: 100%; min-width: 0; color: var(--wire-color-text); background: var(--wire-color-background); } .wire-page-shell[data-background="soft"] { background: var(--wire-color-surface-soft); } .wire-page-shell[data-background="raised"] { background: var(--wire-color-surface-raised); } .wire-page-shell[data-min-height="screen"] { min-height: 100vh; } /* * dvh tracks the browser chrome on a phone, so a full-height shell does * not leave a gap when the address bar collapses. */ .wire-page-shell[data-min-height="dvh"] { min-height: 100dvh; } .wire-page-shell[data-overflow="clip"] { overflow-x: clip; } .wire-page-shell[data-overflow="hidden"] { overflow-x: hidden; } /* * One main element rather than a branch per width. fullWidth is an * attribute, so the width cap and the gutters are a couple of rules * instead of two copies of the same markup. */ .wire-page-shell__main { width: 100%; min-width: 0; } .wire-page-shell__main[data-full-width="false"] { margin-inline: auto; padding-inline: 1rem; } .wire-page-shell__main[data-full-width="false"][data-max-width="lg"] { max-width: 64rem; } .wire-page-shell__main[data-full-width="false"][data-max-width="xl"] { max-width: 80rem; } .wire-page-shell__main[data-full-width="false"][data-max-width="2xl"] { max-width: 96rem; } @media (min-width: 640px) { .wire-page-shell__main[data-full-width="false"] { padding-inline: 1.5rem; } } @media (min-width: 1024px) { .wire-page-shell__main[data-full-width="false"] { padding-inline: 2rem; } } /* Room for a fixed header to sit over the top of the shell. */ .wire-page-shell[data-header-offset="sm"] { padding-top: 4rem; } .wire-page-shell[data-header-offset="md"] { padding-top: 5rem; } .wire-page-shell[data-header-offset="lg"] { padding-top: 6rem; } } }