@astronox/core 0.4.16 → 0.4.17
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/package.json
CHANGED
|
@@ -12,6 +12,7 @@ import Breadcrumbs from '../components/navigation/Breadcrumbs/Breadcrumbs.astro'
|
|
|
12
12
|
import ScrollToTop from '../components/actions/ScrollToTop/ScrollToTop.astro';
|
|
13
13
|
import ThemeBootstrap from '../components/feedback/ThemeBootstrap/ThemeBootstrap.astro';
|
|
14
14
|
import { defaultThemeStorageKey } from '../theme/storage';
|
|
15
|
+
import type { SiteScrollMode } from './contracts';
|
|
15
16
|
|
|
16
17
|
type Props = HTMLAttributes<'html'> & {
|
|
17
18
|
meta: PageMeta;
|
|
@@ -22,6 +23,7 @@ type Props = HTMLAttributes<'html'> & {
|
|
|
22
23
|
breadcrumbLabel: string;
|
|
23
24
|
breadcrumbTone?: Tone;
|
|
24
25
|
scrollToTopLabel?: string;
|
|
26
|
+
scrollMode?: SiteScrollMode;
|
|
25
27
|
structuredData?: readonly JsonLdNode[];
|
|
26
28
|
tone?: Tone;
|
|
27
29
|
themeStorageKey?: string;
|
|
@@ -36,6 +38,7 @@ const {
|
|
|
36
38
|
meta,
|
|
37
39
|
pageSurfaceAttributes,
|
|
38
40
|
scrollToTopLabel,
|
|
41
|
+
scrollMode = 'shell',
|
|
39
42
|
site,
|
|
40
43
|
structuredData,
|
|
41
44
|
tone,
|
|
@@ -47,7 +50,13 @@ const resolvedTone = tone ?? dataTone;
|
|
|
47
50
|
---
|
|
48
51
|
|
|
49
52
|
<!doctype html>
|
|
50
|
-
<html
|
|
53
|
+
<html
|
|
54
|
+
{...htmlAttrs}
|
|
55
|
+
lang={lang}
|
|
56
|
+
data-site-scroll-mode={scrollMode}
|
|
57
|
+
data-site-scroll-root={scrollMode === 'document' ? true : undefined}
|
|
58
|
+
data-tone={resolvedTone}
|
|
59
|
+
>
|
|
51
60
|
<head>
|
|
52
61
|
<meta charset="utf-8" />
|
|
53
62
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
@@ -62,10 +71,13 @@ const resolvedTone = tone ?? dataTone;
|
|
|
62
71
|
<slot name="head" />
|
|
63
72
|
</head>
|
|
64
73
|
<body>
|
|
65
|
-
<div
|
|
74
|
+
<div
|
|
75
|
+
class="site-shell"
|
|
76
|
+
data-site-scroll-root={scrollMode === 'shell' ? true : undefined}
|
|
77
|
+
>
|
|
66
78
|
<slot name="skip-link" />
|
|
67
79
|
<slot name="header" />
|
|
68
|
-
<div class="site-viewport" data-site-
|
|
80
|
+
<div class="site-viewport" data-site-viewport>
|
|
69
81
|
<main id="content" class="site-main" tabindex="-1">
|
|
70
82
|
<div class="site-main__content">
|
|
71
83
|
{
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SiteScrollMode = 'document' | 'shell';
|
package/src/layouts/index.ts
CHANGED
package/src/styles/base.css
CHANGED
|
@@ -66,8 +66,12 @@ body {
|
|
|
66
66
|
height: 100vh;
|
|
67
67
|
min-height: 100vh;
|
|
68
68
|
grid-template-rows: auto minmax(0, 1fr);
|
|
69
|
-
overflow: hidden;
|
|
69
|
+
overflow-x: hidden;
|
|
70
|
+
overflow-y: auto;
|
|
71
|
+
scroll-padding-block-start: var(--nox-site-header-responsive-height);
|
|
72
|
+
scrollbar-gutter: stable;
|
|
70
73
|
background: var(--nox-page-background);
|
|
74
|
+
overscroll-behavior-y: contain;
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
@supports (height: 100svh) {
|
|
@@ -133,16 +137,34 @@ p {
|
|
|
133
137
|
|
|
134
138
|
.site-viewport {
|
|
135
139
|
--site-content-gap: var(--nox-space-5);
|
|
140
|
+
--nox-sticky-viewport-offset: var(--nox-site-header-responsive-height);
|
|
136
141
|
|
|
137
142
|
min-width: 0;
|
|
138
143
|
min-height: 0;
|
|
144
|
+
overflow: visible;
|
|
145
|
+
background: var(--nox-page-background);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
html[data-site-scroll-mode='document'] {
|
|
149
|
+
height: auto;
|
|
139
150
|
overflow-x: hidden;
|
|
140
151
|
overflow-y: auto;
|
|
152
|
+
scroll-padding-block-start: var(--nox-site-header-responsive-height);
|
|
141
153
|
scrollbar-gutter: stable;
|
|
142
|
-
background: var(--nox-page-background);
|
|
143
154
|
overscroll-behavior-y: contain;
|
|
144
155
|
}
|
|
145
156
|
|
|
157
|
+
html[data-site-scroll-mode='document'] body {
|
|
158
|
+
height: auto;
|
|
159
|
+
overflow: visible;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
html[data-site-scroll-mode='document'] .site-shell {
|
|
163
|
+
height: auto;
|
|
164
|
+
grid-template-rows: auto auto;
|
|
165
|
+
overflow: visible;
|
|
166
|
+
}
|
|
167
|
+
|
|
146
168
|
.site-main {
|
|
147
169
|
display: grid;
|
|
148
170
|
width: var(--nox-page-width);
|