@refrakt-md/lumina 0.22.0 → 0.24.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/base.css +7 -1
- package/contracts/structures.json +537 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +13 -0
- package/dist/tokens.js.map +1 -1
- package/index.css +11 -1
- package/package.json +5 -4
- package/styles/base/attributes.css +6 -7
- package/styles/dimensions/checklist.css +6 -35
- package/styles/dimensions/cover.css +13 -95
- package/styles/dimensions/density.css +3 -0
- package/styles/dimensions/frame.css +3 -0
- package/styles/dimensions/media.css +14 -61
- package/styles/dimensions/metadata.css +24 -74
- package/styles/dimensions/motion.css +102 -0
- package/styles/dimensions/sections.css +10 -24
- package/styles/dimensions/sequence.css +14 -79
- package/styles/dimensions/state.css +39 -56
- package/styles/dimensions/substrate.css +3 -0
- package/styles/dimensions/surfaces.css +73 -113
- package/styles/elements/blockquote.css +3 -2
- package/styles/elements/code.css +3 -0
- package/styles/elements/table.css +3 -0
- package/styles/global.css +9 -48
- package/styles/layouts/blog.css +3 -64
- package/styles/layouts/default.css +3 -77
- package/styles/layouts/docs.css +3 -153
- package/styles/layouts/mobile.css +1 -50
- package/styles/layouts/on-this-page.css +3 -2
- package/styles/layouts/plan.css +3 -134
- package/styles/layouts/search.css +3 -68
- package/styles/layouts/split.css +24 -169
- package/styles/layouts/theme-toggle.css +3 -29
- package/styles/layouts/version-switcher.css +3 -4
- package/styles/runes/accordion.css +15 -58
- package/styles/runes/aggregate.css +3 -12
- package/styles/runes/annotate.css +6 -35
- package/styles/runes/api.css +3 -0
- package/styles/runes/audio.css +3 -41
- package/styles/runes/badge.css +3 -0
- package/styles/runes/bar.css +3 -0
- package/styles/runes/bento.css +16 -159
- package/styles/runes/bg.css +3 -37
- package/styles/runes/blog.css +3 -5
- package/styles/runes/bond.css +3 -23
- package/styles/runes/breadcrumb.css +5 -13
- package/styles/runes/budget.css +3 -25
- package/styles/runes/bug.css +3 -0
- package/styles/runes/card.css +24 -92
- package/styles/runes/cast.css +5 -22
- package/styles/runes/changelog.css +5 -9
- package/styles/runes/character.css +3 -17
- package/styles/runes/chart.css +35 -53
- package/styles/runes/codegroup.css +15 -23
- package/styles/runes/collection.css +5 -82
- package/styles/runes/compare.css +3 -14
- package/styles/runes/comparison.css +7 -34
- package/styles/runes/conversation.css +5 -27
- package/styles/runes/cta.css +3 -26
- package/styles/runes/datatable.css +25 -40
- package/styles/runes/decision.css +3 -0
- package/styles/runes/design-context.css +3 -2
- package/styles/runes/details.css +5 -13
- package/styles/runes/diagram.css +5 -13
- package/styles/runes/diff.css +5 -88
- package/styles/runes/drawer.css +1 -105
- package/styles/runes/embed.css +4 -12
- package/styles/runes/event.css +3 -1
- package/styles/runes/expand.css +5 -40
- package/styles/runes/faction.css +3 -9
- package/styles/runes/feature.css +4 -32
- package/styles/runes/figure.css +5 -24
- package/styles/runes/file-ref.css +3 -18
- package/styles/runes/form.css +3 -32
- package/styles/runes/gallery.css +3 -135
- package/styles/runes/grid.css +4 -56
- package/styles/runes/hero.css +13 -126
- package/styles/runes/hint.css +16 -41
- package/styles/runes/howto.css +3 -25
- package/styles/runes/itinerary.css +3 -32
- package/styles/runes/juxtapose.css +12 -87
- package/styles/runes/lore.css +3 -10
- package/styles/runes/map.css +3 -36
- package/styles/runes/mediatext.css +3 -44
- package/styles/runes/milestone.css +3 -16
- package/styles/runes/mockup.css +15 -108
- package/styles/runes/nav.css +3 -178
- package/styles/runes/organization.css +3 -2
- package/styles/runes/page-section.css +3 -4
- package/styles/runes/pagination.css +5 -37
- package/styles/runes/palette.css +3 -22
- package/styles/runes/placeholder.css +3 -3
- package/styles/runes/plan-history.css +3 -23
- package/styles/runes/plan-progress.css +3 -4
- package/styles/runes/plan-ref.css +3 -0
- package/styles/runes/playlist.css +2 -36
- package/styles/runes/plot.css +3 -19
- package/styles/runes/preview.css +7 -25
- package/styles/runes/pricing.css +7 -25
- package/styles/runes/progress.css +6 -25
- package/styles/runes/pullquote.css +3 -26
- package/styles/runes/realm.css +3 -9
- package/styles/runes/recipe.css +3 -27
- package/styles/runes/relationships.css +3 -34
- package/styles/runes/reveal.css +7 -12
- package/styles/runes/sandbox.css +6 -36
- package/styles/runes/section.css +4 -18
- package/styles/runes/showcase.css +3 -20
- package/styles/runes/sidenote.css +3 -2
- package/styles/runes/snippet.css +3 -0
- package/styles/runes/spacing.css +3 -22
- package/styles/runes/spec.css +3 -0
- package/styles/runes/steps.css +4 -36
- package/styles/runes/storyboard.css +2 -17
- package/styles/runes/swatch.css +3 -6
- package/styles/runes/symbol.css +6 -4
- package/styles/runes/tabs.css +6 -9
- package/styles/runes/testimonial.css +5 -6
- package/styles/runes/textblock.css +2 -20
- package/styles/runes/timeline.css +3 -21
- package/styles/runes/tint.css +3 -0
- package/styles/runes/toc.css +5 -3
- package/styles/runes/track.css +2 -31
- package/styles/runes/typography.css +3 -15
- package/styles/runes/work.css +3 -0
- package/styles/runes/xref.css +3 -1
- package/tokens/base.css +19 -0
- package/tokens/dark.css +3 -0
- package/styles/dimensions/guest-posture.css +0 -27
package/styles/global.css
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* Lumina Theme — Global Base Styles (skin).
|
|
3
|
+
*
|
|
4
|
+
* Structure (box model, zone resets, prose/heading/list/table rhythm, the
|
|
5
|
+
* responsive-image + scroll mechanisms) lives in @refrakt-md/skeleton
|
|
6
|
+
* (styles/global.css) per SPEC-094 §3 / WORK-438. What remains here is skin:
|
|
7
|
+
* typography, colour, native chrome, and the surface treatment of code/pre/
|
|
8
|
+
* tables. */
|
|
7
9
|
|
|
8
10
|
html {
|
|
9
11
|
font-family: var(--rf-font-sans);
|
|
@@ -24,18 +26,12 @@ html {
|
|
|
24
26
|
text-size-adjust: 100%;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
body {
|
|
28
|
-
margin: 0;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
29
|
/* ─── Theme-aware browser chrome (WORK-351) ─────────────────────────
|
|
32
30
|
* Make native chrome — scrollbars, form controls, the main viewport
|
|
33
31
|
* scrollbar — follow the active theme instead of always rendering in
|
|
34
32
|
* the OS default scheme. */
|
|
35
33
|
|
|
36
|
-
/* `color-scheme` so the UA paints native widgets/scrollbars per mode.
|
|
37
|
-
* Mirrors the dark-token selectors (explicit toggle + system preference
|
|
38
|
-
* unless forced light). */
|
|
34
|
+
/* `color-scheme` so the UA paints native widgets/scrollbars per mode. */
|
|
39
35
|
:root { color-scheme: light; }
|
|
40
36
|
[data-theme="dark"] { color-scheme: dark; }
|
|
41
37
|
@media (prefers-color-scheme: dark) {
|
|
@@ -98,8 +94,6 @@ body {
|
|
|
98
94
|
|
|
99
95
|
h1, h2, h3, h4, h5, h6 {
|
|
100
96
|
line-height: var(--rf-leading-tight);
|
|
101
|
-
margin-top: 2em;
|
|
102
|
-
margin-bottom: 0.5em;
|
|
103
97
|
font-weight: var(--rf-weight-semibold);
|
|
104
98
|
letter-spacing: var(--rf-tracking-tight);
|
|
105
99
|
}
|
|
@@ -109,11 +103,6 @@ h2 { font-size: var(--rf-text-2xl); }
|
|
|
109
103
|
h3 { font-size: var(--rf-text-xl); }
|
|
110
104
|
h4 { font-size: var(--rf-text); }
|
|
111
105
|
|
|
112
|
-
p {
|
|
113
|
-
margin-top: 0;
|
|
114
|
-
margin-bottom: 1rem;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
106
|
a {
|
|
118
107
|
color: var(--rf-color-primary);
|
|
119
108
|
text-decoration: none;
|
|
@@ -140,8 +129,6 @@ pre {
|
|
|
140
129
|
color: var(--rf-color-code-text);
|
|
141
130
|
padding: 1.25rem 1.5rem;
|
|
142
131
|
border-radius: var(--rf-radius-md);
|
|
143
|
-
overflow-x: auto;
|
|
144
|
-
margin: 1.5rem 0;
|
|
145
132
|
font-size: var(--rf-text-sm);
|
|
146
133
|
line-height: var(--rf-leading-relaxed);
|
|
147
134
|
border: 1px solid var(--rf-color-border);
|
|
@@ -154,35 +141,12 @@ pre code {
|
|
|
154
141
|
border-radius: 0;
|
|
155
142
|
}
|
|
156
143
|
|
|
157
|
-
img {
|
|
158
|
-
max-width: 100%;
|
|
159
|
-
height: auto;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
144
|
hr {
|
|
163
145
|
border: none;
|
|
164
146
|
border-top: 1px solid var(--rf-color-border);
|
|
165
|
-
margin: 2rem 0;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
ul, ol {
|
|
169
|
-
padding-left: 1.5rem;
|
|
170
|
-
margin-top: 0;
|
|
171
|
-
margin-bottom: 1rem;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
li {
|
|
175
|
-
margin-bottom: 0.25rem;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
li > p {
|
|
179
|
-
margin-bottom: 0.5rem;
|
|
180
147
|
}
|
|
181
148
|
|
|
182
149
|
table {
|
|
183
|
-
width: 100%;
|
|
184
|
-
border-collapse: collapse;
|
|
185
|
-
margin: 1.5rem 0;
|
|
186
150
|
font-size: var(--rf-text-sm);
|
|
187
151
|
}
|
|
188
152
|
|
|
@@ -202,7 +166,4 @@ td {
|
|
|
202
166
|
border-bottom: 1px solid var(--rf-color-border);
|
|
203
167
|
}
|
|
204
168
|
|
|
205
|
-
meta {
|
|
206
|
-
display: none;
|
|
207
169
|
}
|
|
208
|
-
|
package/styles/layouts/blog.css
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@layer skin {
|
|
1
2
|
/* Blog layout */
|
|
2
3
|
|
|
3
4
|
/* The blog header chrome is taller (1.125rem padding + 2rem logo), so
|
|
@@ -8,33 +9,18 @@
|
|
|
8
9
|
}
|
|
9
10
|
/* ---- Header ---- */
|
|
10
11
|
.rf-blog-header {
|
|
11
|
-
position: sticky;
|
|
12
|
-
top: 0;
|
|
13
|
-
z-index: 100;
|
|
14
12
|
background: var(--rf-color-bg);
|
|
15
13
|
border-bottom: 1px solid var(--rf-color-border);
|
|
16
14
|
}
|
|
17
15
|
.rf-blog-header__inner {
|
|
18
|
-
display: flex;
|
|
19
|
-
align-items: center;
|
|
20
16
|
gap: 1rem;
|
|
21
17
|
padding: 1.125rem 1.5rem;
|
|
22
18
|
}
|
|
23
|
-
.rf-blog-header__inner .rf-search-trigger {
|
|
24
|
-
margin-left: auto;
|
|
25
|
-
}
|
|
26
|
-
.rf-blog-header__inner p ~ p {
|
|
27
|
-
order: 1;
|
|
28
|
-
}
|
|
29
|
-
.rf-blog-header__inner .rf-mobile-menu-btn {
|
|
30
|
-
order: 2;
|
|
31
|
-
}
|
|
32
19
|
.rf-blog-header p {
|
|
33
20
|
margin: 0;
|
|
34
21
|
line-height: 1;
|
|
35
22
|
}
|
|
36
23
|
.rf-blog-header a {
|
|
37
|
-
display: inline-block;
|
|
38
24
|
color: inherit;
|
|
39
25
|
text-decoration: none;
|
|
40
26
|
}
|
|
@@ -42,20 +28,12 @@
|
|
|
42
28
|
text-decoration: none;
|
|
43
29
|
}
|
|
44
30
|
.rf-blog-header p:first-child a {
|
|
45
|
-
display: inline-flex;
|
|
46
|
-
align-items: center;
|
|
47
31
|
gap: 0.5rem;
|
|
48
32
|
font-weight: var(--rf-weight-semibold);
|
|
49
33
|
font-size: var(--rf-text-xl);
|
|
50
34
|
letter-spacing: var(--rf-tracking-tight);
|
|
51
35
|
}
|
|
52
|
-
.rf-blog-header img,
|
|
53
36
|
.rf-blog-header p:first-child a > .rf-icon {
|
|
54
|
-
height: 2rem;
|
|
55
|
-
width: 2rem;
|
|
56
|
-
}
|
|
57
|
-
.rf-blog-header p:first-child a > .rf-icon {
|
|
58
|
-
display: inline-block;
|
|
59
37
|
vertical-align: middle;
|
|
60
38
|
color: currentColor;
|
|
61
39
|
}
|
|
@@ -70,27 +48,15 @@
|
|
|
70
48
|
color: var(--rf-color-text);
|
|
71
49
|
}
|
|
72
50
|
.rf-blog-header__inner p ~ p a svg {
|
|
73
|
-
width: 1.1rem;
|
|
74
|
-
height: 1.1rem;
|
|
75
51
|
vertical-align: -0.15em;
|
|
76
52
|
}
|
|
77
53
|
|
|
78
54
|
/* ---- Layout container ---- */
|
|
79
55
|
.rf-blog {
|
|
80
|
-
max-width: 72rem;
|
|
81
|
-
margin: 0 auto;
|
|
82
56
|
padding: 2.5rem 1.5rem 4rem;
|
|
83
57
|
}
|
|
84
58
|
.rf-blog--has-sidebar {
|
|
85
|
-
display: grid;
|
|
86
|
-
grid-template-columns: 1fr 16rem;
|
|
87
59
|
gap: 3rem;
|
|
88
|
-
align-items: start;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/* ---- Blog index ---- */
|
|
92
|
-
.rf-blog-index {
|
|
93
|
-
max-width: 42rem;
|
|
94
60
|
}
|
|
95
61
|
.rf-blog-index__title {
|
|
96
62
|
font-size: var(--rf-text-4xl);
|
|
@@ -105,18 +71,12 @@
|
|
|
105
71
|
line-height: var(--rf-leading-relaxed);
|
|
106
72
|
color: var(--rf-color-muted);
|
|
107
73
|
}
|
|
108
|
-
.rf-blog-index__body:empty {
|
|
109
|
-
display: none;
|
|
110
|
-
}
|
|
111
74
|
.rf-blog-index__posts {
|
|
112
|
-
display: flex;
|
|
113
|
-
flex-direction: column;
|
|
114
75
|
gap: 1.5rem;
|
|
115
76
|
}
|
|
116
77
|
|
|
117
78
|
/* ---- Post card ---- */
|
|
118
79
|
.rf-blog-card {
|
|
119
|
-
display: block;
|
|
120
80
|
padding: 1.5rem;
|
|
121
81
|
border: 1px solid var(--rf-color-border);
|
|
122
82
|
border-radius: var(--rf-radius-md, 0.5rem);
|
|
@@ -136,8 +96,6 @@
|
|
|
136
96
|
color: var(--rf-color-text);
|
|
137
97
|
}
|
|
138
98
|
.rf-blog-card__meta {
|
|
139
|
-
display: flex;
|
|
140
|
-
align-items: center;
|
|
141
99
|
gap: 0.75rem;
|
|
142
100
|
font-size: var(--rf-text-sm);
|
|
143
101
|
color: var(--rf-color-muted);
|
|
@@ -154,8 +112,6 @@
|
|
|
154
112
|
color: var(--rf-color-muted);
|
|
155
113
|
}
|
|
156
114
|
.rf-blog-card__tags {
|
|
157
|
-
display: flex;
|
|
158
|
-
flex-wrap: wrap;
|
|
159
115
|
gap: 0.5rem;
|
|
160
116
|
margin-bottom: 0.75rem;
|
|
161
117
|
}
|
|
@@ -164,11 +120,6 @@
|
|
|
164
120
|
font-weight: var(--rf-weight-semibold);
|
|
165
121
|
color: var(--rf-color-primary, var(--rf-color-text));
|
|
166
122
|
}
|
|
167
|
-
|
|
168
|
-
/* ---- Article ---- */
|
|
169
|
-
.rf-blog-article {
|
|
170
|
-
max-width: 42rem;
|
|
171
|
-
}
|
|
172
123
|
.rf-blog-article__header {
|
|
173
124
|
margin-bottom: 2.5rem;
|
|
174
125
|
padding-bottom: 1.5rem;
|
|
@@ -183,8 +134,6 @@
|
|
|
183
134
|
color: var(--rf-color-text);
|
|
184
135
|
}
|
|
185
136
|
.rf-blog-article__meta {
|
|
186
|
-
display: flex;
|
|
187
|
-
align-items: center;
|
|
188
137
|
gap: 0.75rem;
|
|
189
138
|
font-size: var(--rf-text-sm);
|
|
190
139
|
color: var(--rf-color-muted);
|
|
@@ -197,8 +146,6 @@
|
|
|
197
146
|
margin-right: 0.75rem;
|
|
198
147
|
}
|
|
199
148
|
.rf-blog-article__tags {
|
|
200
|
-
display: flex;
|
|
201
|
-
flex-wrap: wrap;
|
|
202
149
|
gap: 0.5rem;
|
|
203
150
|
margin-top: 0.75rem;
|
|
204
151
|
}
|
|
@@ -232,8 +179,6 @@
|
|
|
232
179
|
|
|
233
180
|
/* ---- Sidebar ---- */
|
|
234
181
|
.rf-blog-sidebar {
|
|
235
|
-
position: sticky;
|
|
236
|
-
top: 2.5rem;
|
|
237
182
|
font-size: var(--rf-text-sm);
|
|
238
183
|
color: var(--rf-color-muted);
|
|
239
184
|
}
|
|
@@ -249,7 +194,6 @@
|
|
|
249
194
|
margin-bottom: 0.5rem;
|
|
250
195
|
}
|
|
251
196
|
.rf-blog-sidebar ul {
|
|
252
|
-
list-style: none;
|
|
253
197
|
padding: 0;
|
|
254
198
|
margin: 0;
|
|
255
199
|
}
|
|
@@ -275,18 +219,13 @@
|
|
|
275
219
|
|
|
276
220
|
/* ---- Mobile ---- */
|
|
277
221
|
@media (max-width: 768px) {
|
|
278
|
-
.rf-blog-header__inner p ~ p {
|
|
279
|
-
display: none;
|
|
280
|
-
}
|
|
281
|
-
.rf-blog--has-sidebar {
|
|
282
|
-
grid-template-columns: 1fr;
|
|
283
|
-
}
|
|
284
222
|
.rf-blog-article__title {
|
|
285
223
|
font-size: var(--rf-text-3xl);
|
|
286
224
|
}
|
|
287
225
|
.rf-blog-sidebar {
|
|
288
|
-
position: static;
|
|
289
226
|
border-top: 1px solid var(--rf-color-border);
|
|
290
227
|
padding-top: 1.5rem;
|
|
291
228
|
}
|
|
292
229
|
}
|
|
230
|
+
|
|
231
|
+
}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
+
@layer skin {
|
|
1
2
|
/* Default layout */
|
|
2
3
|
.rf-header {
|
|
3
|
-
position: sticky;
|
|
4
|
-
top: 0;
|
|
5
|
-
z-index: 100;
|
|
6
4
|
background: var(--rf-color-bg);
|
|
7
5
|
border-bottom: 1px solid var(--rf-color-border);
|
|
8
6
|
}
|
|
9
7
|
.rf-header__inner {
|
|
10
|
-
display: flex;
|
|
11
|
-
align-items: center;
|
|
12
8
|
gap: 1rem;
|
|
13
9
|
padding: 0.625rem 1.5rem;
|
|
14
10
|
}
|
|
15
|
-
.rf-header__inner .rf-search-trigger {
|
|
16
|
-
margin-left: auto;
|
|
17
|
-
order: 1;
|
|
18
|
-
}
|
|
19
|
-
.rf-header__inner > rf-nav {
|
|
20
|
-
order: 3;
|
|
21
|
-
}
|
|
22
|
-
.rf-header__inner p ~ p {
|
|
23
|
-
order: 1;
|
|
24
|
-
}
|
|
25
|
-
.rf-header__inner .rf-mobile-menu-btn {
|
|
26
|
-
order: 3;
|
|
27
|
-
}
|
|
28
11
|
.rf-header p {
|
|
29
12
|
margin: 0;
|
|
30
13
|
line-height: 1;
|
|
@@ -37,7 +20,6 @@
|
|
|
37
20
|
line-height: 1;
|
|
38
21
|
}
|
|
39
22
|
.rf-header a {
|
|
40
|
-
display: inline-block;
|
|
41
23
|
color: inherit;
|
|
42
24
|
text-decoration: none;
|
|
43
25
|
}
|
|
@@ -45,23 +27,12 @@
|
|
|
45
27
|
text-decoration: none;
|
|
46
28
|
}
|
|
47
29
|
.rf-header p:first-child a {
|
|
48
|
-
display: inline-flex;
|
|
49
|
-
align-items: center;
|
|
50
30
|
gap: 0.5rem;
|
|
51
31
|
font-weight: var(--rf-weight-semibold);
|
|
52
32
|
font-size: var(--rf-text-xl);
|
|
53
33
|
letter-spacing: var(--rf-tracking-tight);
|
|
54
34
|
}
|
|
55
|
-
.rf-header img,
|
|
56
35
|
.rf-header p:first-child a > .rf-icon {
|
|
57
|
-
height: 2rem;
|
|
58
|
-
width: 2rem;
|
|
59
|
-
}
|
|
60
|
-
.rf-header img {
|
|
61
|
-
width: auto;
|
|
62
|
-
}
|
|
63
|
-
.rf-header p:first-child a > .rf-icon {
|
|
64
|
-
display: inline-block;
|
|
65
36
|
vertical-align: middle;
|
|
66
37
|
color: currentColor;
|
|
67
38
|
}
|
|
@@ -76,8 +47,6 @@
|
|
|
76
47
|
color: var(--rf-color-text);
|
|
77
48
|
}
|
|
78
49
|
.rf-header__inner p ~ p a svg {
|
|
79
|
-
width: 1.1rem;
|
|
80
|
-
height: 1.1rem;
|
|
81
50
|
vertical-align: -0.15em;
|
|
82
51
|
}
|
|
83
52
|
.rf-page-content {
|
|
@@ -86,39 +55,8 @@
|
|
|
86
55
|
|
|
87
56
|
padding-top: 2.5rem;
|
|
88
57
|
padding-bottom: 4rem;
|
|
89
|
-
container-type: inline-size;
|
|
90
|
-
}
|
|
91
|
-
/* Markdoc wraps content in <article>; make it the grid container.
|
|
92
|
-
5-track named grid: full | wide | content | wide | full */
|
|
93
|
-
.rf-page-content > article {
|
|
94
|
-
display: grid;
|
|
95
|
-
grid-template-columns:
|
|
96
|
-
[full-start] 1fr
|
|
97
|
-
[wide-start] minmax(0, var(--rf-wide-inset, 8rem))
|
|
98
|
-
[content-start] min(var(--rf-content-max), 100% - var(--rf-content-gutter) * 2)
|
|
99
|
-
[content-end] minmax(0, var(--rf-wide-inset, 8rem))
|
|
100
|
-
[wide-end] 1fr
|
|
101
|
-
[full-end];
|
|
102
|
-
}
|
|
103
|
-
.rf-page-content > article > * {
|
|
104
|
-
grid-column: content;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/* Width constraint via data-width attribute — narrower than content */
|
|
108
|
-
.rf-page-content > article > [data-width="compact"] {
|
|
109
|
-
max-width: var(--rf-width-compact, 30rem);
|
|
110
|
-
margin-inline: auto;
|
|
111
|
-
}
|
|
112
|
-
.rf-page-content > article > [data-width="narrow"] {
|
|
113
|
-
max-width: var(--rf-width-narrow, 40rem);
|
|
114
|
-
margin-inline: auto;
|
|
115
|
-
}
|
|
116
|
-
/* Width breakout via data-width attribute — wider than content */
|
|
117
|
-
.rf-page-content > article > [data-width="wide"] {
|
|
118
|
-
grid-column: wide;
|
|
119
58
|
}
|
|
120
59
|
.rf-page-content > article > [data-width="full"] {
|
|
121
|
-
grid-column: full;
|
|
122
60
|
padding-inline: max(
|
|
123
61
|
var(--rf-content-gutter, 1.5rem),
|
|
124
62
|
calc((100% - var(--rf-content-max, 80rem)) / 2)
|
|
@@ -126,7 +64,6 @@
|
|
|
126
64
|
}
|
|
127
65
|
/* Tinted sections also break out to full width */
|
|
128
66
|
.rf-page-content > article > :is([data-tint], [data-color-scheme]):not([data-width]) {
|
|
129
|
-
grid-column: full;
|
|
130
67
|
padding-inline: max(
|
|
131
68
|
var(--rf-content-gutter, 1.5rem),
|
|
132
69
|
calc((100% - var(--rf-content-max, 80rem)) / 2)
|
|
@@ -219,29 +156,18 @@
|
|
|
219
156
|
padding-bottom: 0;
|
|
220
157
|
}
|
|
221
158
|
|
|
222
|
-
@media (max-width: 768px) {
|
|
223
|
-
.rf-header__inner p ~ p {
|
|
224
|
-
display: none;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
159
|
/* Site footer */
|
|
229
160
|
.rf-footer {
|
|
230
|
-
display: flex;
|
|
231
|
-
flex-direction: column;
|
|
232
|
-
align-items: center;
|
|
233
161
|
padding: 2.5rem 1.5rem 2rem;
|
|
234
162
|
border-top: 1px solid var(--rf-color-border);
|
|
235
163
|
background: var(--rf-color-bg);
|
|
236
164
|
color: var(--rf-color-muted);
|
|
237
165
|
font-size: var(--rf-text-sm);
|
|
238
166
|
}
|
|
239
|
-
.rf-footer > * {
|
|
240
|
-
width: 100%;
|
|
241
|
-
max-width: 80rem;
|
|
242
|
-
}
|
|
243
167
|
.rf-footer p {
|
|
244
168
|
margin: 1.5rem 0 0;
|
|
245
169
|
font-size: var(--rf-text-xs);
|
|
246
170
|
color: var(--rf-color-muted);
|
|
247
171
|
}
|
|
172
|
+
|
|
173
|
+
}
|
package/styles/layouts/docs.css
CHANGED
|
@@ -1,40 +1,20 @@
|
|
|
1
|
+
@layer skin {
|
|
1
2
|
/* Docs layout */
|
|
2
3
|
|
|
3
4
|
/* ---- Fixed header ---- */
|
|
4
5
|
.rf-docs-header {
|
|
5
|
-
position: fixed;
|
|
6
|
-
top: 0;
|
|
7
|
-
left: 0;
|
|
8
|
-
right: 0;
|
|
9
|
-
z-index: 10;
|
|
10
6
|
background: var(--rf-color-bg, #fff);
|
|
11
7
|
border-bottom: 1px solid var(--rf-color-border);
|
|
12
8
|
}
|
|
13
9
|
.rf-docs-header__inner {
|
|
14
|
-
display: flex;
|
|
15
|
-
align-items: center;
|
|
16
10
|
gap: 1rem;
|
|
17
11
|
padding: 0.625rem 1.5rem;
|
|
18
12
|
}
|
|
19
|
-
.rf-docs-header__inner .rf-search-trigger {
|
|
20
|
-
margin-left: auto;
|
|
21
|
-
order: 1;
|
|
22
|
-
}
|
|
23
|
-
.rf-docs-header__inner > rf-nav {
|
|
24
|
-
order: 3;
|
|
25
|
-
}
|
|
26
|
-
.rf-docs-header__inner p ~ p {
|
|
27
|
-
order: 1;
|
|
28
|
-
}
|
|
29
|
-
.rf-docs-header__inner .rf-mobile-menu-btn {
|
|
30
|
-
order: 3;
|
|
31
|
-
}
|
|
32
13
|
.rf-docs-header p {
|
|
33
14
|
margin: 0;
|
|
34
15
|
line-height: 1;
|
|
35
16
|
}
|
|
36
17
|
.rf-docs-header a {
|
|
37
|
-
display: inline-block;
|
|
38
18
|
color: inherit;
|
|
39
19
|
text-decoration: none;
|
|
40
20
|
}
|
|
@@ -42,20 +22,12 @@
|
|
|
42
22
|
text-decoration: none;
|
|
43
23
|
}
|
|
44
24
|
.rf-docs-header p:first-child a {
|
|
45
|
-
display: inline-flex;
|
|
46
|
-
align-items: center;
|
|
47
25
|
gap: 0.5rem;
|
|
48
26
|
font-weight: var(--rf-weight-semibold);
|
|
49
27
|
font-size: var(--rf-text-xl);
|
|
50
28
|
letter-spacing: var(--rf-tracking-tight);
|
|
51
29
|
}
|
|
52
|
-
.rf-docs-header img,
|
|
53
|
-
.rf-docs-header p:first-child a > .rf-icon {
|
|
54
|
-
height: 2rem;
|
|
55
|
-
width: 2rem;
|
|
56
|
-
}
|
|
57
30
|
.rf-docs-header p:first-child a > .rf-icon {
|
|
58
|
-
display: inline-block;
|
|
59
31
|
vertical-align: middle;
|
|
60
32
|
color: currentColor;
|
|
61
33
|
}
|
|
@@ -70,44 +42,14 @@
|
|
|
70
42
|
color: var(--rf-color-text);
|
|
71
43
|
}
|
|
72
44
|
.rf-docs-header__inner p ~ p a svg {
|
|
73
|
-
width: 1.1rem;
|
|
74
|
-
height: 1.1rem;
|
|
75
45
|
vertical-align: -0.15em;
|
|
76
46
|
}
|
|
77
47
|
|
|
78
|
-
/* ---- Body wrapper: sidebar + content row ----
|
|
79
|
-
* The `body` slot in docsLayout groups sidebar + main so `position: sticky`
|
|
80
|
-
* on the sidebar has a containing block that ends *before* the footer.
|
|
81
|
-
* When the user scrolls past the wrapper's bottom (i.e. when the footer
|
|
82
|
-
* comes into view) sticky releases and the sidebar scrolls away with the
|
|
83
|
-
* page rather than overlaying the footer. */
|
|
84
|
-
.rf-docs-body {
|
|
85
|
-
display: flex;
|
|
86
|
-
align-items: flex-start;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
48
|
/* ---- Sticky sidebar ---- */
|
|
90
49
|
.rf-docs-sidebar {
|
|
91
|
-
position: sticky;
|
|
92
|
-
top: 3.125rem;
|
|
93
|
-
align-self: flex-start;
|
|
94
|
-
flex-shrink: 0;
|
|
95
|
-
width: 240px;
|
|
96
|
-
height: calc(100vh - 3.125rem);
|
|
97
|
-
overflow-y: auto;
|
|
98
50
|
padding: 1.5rem;
|
|
99
51
|
border-right: 1px solid var(--rf-color-border);
|
|
100
52
|
background: var(--rf-color-bg, #fff);
|
|
101
|
-
z-index: 5;
|
|
102
|
-
}
|
|
103
|
-
/* Match the sticky offset in the natural-flow position too. The fixed header
|
|
104
|
-
* is out of flow so `.rf-docs-body` starts at viewport top; without this
|
|
105
|
-
* margin, the sidebar's static position sits at Y=0 with its top 3.125rem
|
|
106
|
-
* hidden under the header — visible only when the page scrolls enough for
|
|
107
|
-
* sticky to activate. Scoped to `:has(.rf-docs-header)` so layouts without a
|
|
108
|
-
* header don't gain an unwanted top gap. */
|
|
109
|
-
html:has(.rf-docs-header) .rf-docs-sidebar {
|
|
110
|
-
margin-top: 3.125rem;
|
|
111
53
|
}
|
|
112
54
|
.rf-docs-sidebar::-webkit-scrollbar {
|
|
113
55
|
width: 0;
|
|
@@ -115,52 +57,14 @@ html:has(.rf-docs-header) .rf-docs-sidebar {
|
|
|
115
57
|
|
|
116
58
|
/* ---- Content area ---- */
|
|
117
59
|
.rf-docs-content {
|
|
118
|
-
flex: 1;
|
|
119
|
-
min-width: 0;
|
|
120
60
|
padding-top: 4.75rem;
|
|
121
61
|
padding-bottom: 4rem;
|
|
122
|
-
container-type: inline-size;
|
|
123
62
|
}
|
|
124
63
|
.rf-docs-content__inner {
|
|
125
|
-
max-width: 60rem;
|
|
126
|
-
margin: 0 auto;
|
|
127
64
|
--rf-content-padding: 2.5rem;
|
|
128
65
|
}
|
|
129
66
|
.rf-docs-content__inner--has-toc {
|
|
130
|
-
display: flex;
|
|
131
67
|
gap: 6rem;
|
|
132
|
-
max-width: calc(60rem + 220px + 6rem);
|
|
133
|
-
}
|
|
134
|
-
.rf-docs-content__inner--has-toc .rf-docs-content__body {
|
|
135
|
-
flex: 1;
|
|
136
|
-
min-width: 0;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/* Width-variant grid — mirrors default layout's 5-track grid,
|
|
140
|
-
simplified to 3 tracks (no full breakout in docs context).
|
|
141
|
-
The wide inset tracks also serve as the content gutter. */
|
|
142
|
-
.rf-docs-content__body > div > article {
|
|
143
|
-
display: grid;
|
|
144
|
-
grid-template-columns:
|
|
145
|
-
[wide-start] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
|
|
146
|
-
[content-start] minmax(0, 1fr)
|
|
147
|
-
[content-end] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
|
|
148
|
-
[wide-end];
|
|
149
|
-
}
|
|
150
|
-
.rf-docs-content__body > div > article > * {
|
|
151
|
-
grid-column: content;
|
|
152
|
-
}
|
|
153
|
-
.rf-docs-content__body > div > article > [data-width="wide"],
|
|
154
|
-
.rf-docs-content__body > div > article > [data-width="full"] {
|
|
155
|
-
grid-column: wide;
|
|
156
|
-
}
|
|
157
|
-
.rf-docs-content__body > div > article > [data-width="compact"] {
|
|
158
|
-
max-width: var(--rf-width-compact, 30rem);
|
|
159
|
-
margin-inline: auto;
|
|
160
|
-
}
|
|
161
|
-
.rf-docs-content__body > div > article > [data-width="narrow"] {
|
|
162
|
-
max-width: var(--rf-width-narrow, 40rem);
|
|
163
|
-
margin-inline: auto;
|
|
164
68
|
}
|
|
165
69
|
|
|
166
70
|
/* Pagination wrapper sits outside the article grid, so it gets its own
|
|
@@ -173,34 +77,18 @@ html:has(.rf-docs-header) .rf-docs-sidebar {
|
|
|
173
77
|
|
|
174
78
|
/* ---- "On this page" sidebar ---- */
|
|
175
79
|
.rf-docs-toc {
|
|
176
|
-
width: 220px;
|
|
177
|
-
flex-shrink: 0;
|
|
178
|
-
position: sticky;
|
|
179
|
-
top: 5.75rem;
|
|
180
|
-
align-self: flex-start;
|
|
181
|
-
max-height: calc(100vh - 5.75rem);
|
|
182
|
-
overflow-y: auto;
|
|
183
80
|
padding: 0 1.25rem;
|
|
184
81
|
}
|
|
185
82
|
.rf-docs-toc::-webkit-scrollbar {
|
|
186
83
|
width: 0;
|
|
187
84
|
}
|
|
188
85
|
|
|
189
|
-
/* ---- Fixed-header offset ---- */
|
|
190
|
-
html:has(.rf-docs-header) {
|
|
191
|
-
scroll-padding-top: 5rem;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
86
|
/* ---- Mobile toolbar (hidden on desktop) ---- */
|
|
195
87
|
.rf-docs-toolbar {
|
|
196
|
-
display: none;
|
|
197
|
-
align-items: center;
|
|
198
88
|
gap: 0.75rem;
|
|
199
89
|
padding: 0.625rem 1rem;
|
|
200
90
|
border-bottom: 1px solid var(--rf-color-border);
|
|
201
91
|
background: var(--rf-color-bg, #fff);
|
|
202
|
-
max-width: 100%;
|
|
203
|
-
overflow: hidden;
|
|
204
92
|
}
|
|
205
93
|
.rf-docs-toolbar__hamburger {
|
|
206
94
|
background: none;
|
|
@@ -209,7 +97,6 @@ html:has(.rf-docs-header) {
|
|
|
209
97
|
cursor: pointer;
|
|
210
98
|
color: var(--rf-color-muted);
|
|
211
99
|
line-height: 0;
|
|
212
|
-
flex-shrink: 0;
|
|
213
100
|
}
|
|
214
101
|
.rf-docs-toolbar__hamburger:hover {
|
|
215
102
|
color: var(--rf-color-text);
|
|
@@ -222,9 +109,6 @@ html:has(.rf-docs-header) {
|
|
|
222
109
|
* combined with `min-width: 0` this is what triggers ellipsis on long
|
|
223
110
|
* titles. Without basis 0 a long page title overflows the toolbar and
|
|
224
111
|
* forces horizontal page scroll on narrow viewports. */
|
|
225
|
-
flex: 1 1 0;
|
|
226
|
-
min-width: 0;
|
|
227
|
-
overflow: hidden;
|
|
228
112
|
text-overflow: ellipsis;
|
|
229
113
|
white-space: nowrap;
|
|
230
114
|
}
|
|
@@ -241,45 +125,9 @@ html:has(.rf-docs-header) {
|
|
|
241
125
|
}
|
|
242
126
|
|
|
243
127
|
/* ---- Hide TOC on medium screens ---- */
|
|
244
|
-
@media (max-width: 1100px) {
|
|
245
|
-
.rf-docs-toc {
|
|
246
|
-
display: none;
|
|
247
|
-
}
|
|
248
|
-
.rf-docs-content__inner--has-toc {
|
|
249
|
-
display: block;
|
|
250
|
-
max-width: 60rem;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
128
|
|
|
254
129
|
/* ---- Mobile overrides ---- */
|
|
255
130
|
@media (max-width: 768px) {
|
|
256
|
-
.rf-docs-header {
|
|
257
|
-
position: sticky;
|
|
258
|
-
top: 0;
|
|
259
|
-
}
|
|
260
|
-
.rf-docs-header__inner p ~ p {
|
|
261
|
-
display: none;
|
|
262
|
-
}
|
|
263
|
-
/* The toolbar is sticky directly below the header so the hamburger —
|
|
264
|
-
which doubles as the open/close trigger for the sidebar-nav panel —
|
|
265
|
-
stays reachable while the panel is open or the page is scrolled.
|
|
266
|
-
`top` is 1px less than the header height so the two bars overlap by
|
|
267
|
-
a pixel — sub-pixel rounding during scroll can otherwise leave a
|
|
268
|
-
hairline gap that lets page content shine through.
|
|
269
|
-
z-index sits above the .rf-mobile-panel (99) so the hamburger
|
|
270
|
-
stays clickable while the panel is open. */
|
|
271
|
-
.rf-docs-toolbar {
|
|
272
|
-
display: flex;
|
|
273
|
-
position: sticky;
|
|
274
|
-
top: calc(3.5rem - 1px);
|
|
275
|
-
z-index: 100;
|
|
276
|
-
}
|
|
277
|
-
.rf-mobile-panel--nav {
|
|
278
|
-
top: calc(6.25rem - 1px);
|
|
279
|
-
}
|
|
280
|
-
.rf-docs-sidebar {
|
|
281
|
-
display: none;
|
|
282
|
-
}
|
|
283
131
|
.rf-docs-content {
|
|
284
132
|
padding-top: 2rem;
|
|
285
133
|
}
|
|
@@ -288,3 +136,5 @@ html:has(.rf-docs-header) {
|
|
|
288
136
|
--rf-docs-wide-inset: 1.5rem;
|
|
289
137
|
}
|
|
290
138
|
}
|
|
139
|
+
|
|
140
|
+
}
|