@refrakt-md/skeleton 0.22.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/README.md +41 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/index.css +145 -0
- package/package.json +37 -0
- package/styles/dimensions/checklist.css +43 -0
- package/styles/dimensions/cover.css +91 -0
- package/styles/dimensions/guest-posture.css +19 -0
- package/styles/dimensions/media.css +38 -0
- package/styles/dimensions/metadata.css +66 -0
- package/styles/dimensions/sections.css +22 -0
- package/styles/dimensions/sequence.css +109 -0
- package/styles/dimensions/state.css +28 -0
- package/styles/global.css +37 -0
- package/styles/layouts/blog.css +38 -0
- package/styles/layouts/default.css +51 -0
- package/styles/layouts/docs.css +82 -0
- package/styles/layouts/mobile.css +39 -0
- package/styles/layouts/on-this-page.css +4 -0
- package/styles/layouts/plan.css +103 -0
- package/styles/layouts/search.css +80 -0
- package/styles/layouts/split.css +127 -0
- package/styles/layouts/theme-toggle.css +26 -0
- package/styles/layouts/version-switcher.css +10 -0
- package/styles/runes/accordion.css +55 -0
- package/styles/runes/aggregate.css +13 -0
- package/styles/runes/annotate.css +55 -0
- package/styles/runes/audio.css +70 -0
- package/styles/runes/bento.css +118 -0
- package/styles/runes/bg.css +29 -0
- package/styles/runes/blog.css +13 -0
- package/styles/runes/bond.css +36 -0
- package/styles/runes/breadcrumb.css +16 -0
- package/styles/runes/budget.css +42 -0
- package/styles/runes/card.css +37 -0
- package/styles/runes/cast.css +33 -0
- package/styles/runes/changelog.css +9 -0
- package/styles/runes/character.css +22 -0
- package/styles/runes/chart.css +32 -0
- package/styles/runes/codegroup.css +25 -0
- package/styles/runes/collection.css +51 -0
- package/styles/runes/compare.css +19 -0
- package/styles/runes/comparison.css +54 -0
- package/styles/runes/conversation.css +29 -0
- package/styles/runes/cta.css +46 -0
- package/styles/runes/datatable.css +16 -0
- package/styles/runes/design-context.css +6 -0
- package/styles/runes/details.css +19 -0
- package/styles/runes/diagram.css +17 -0
- package/styles/runes/diff.css +40 -0
- package/styles/runes/drawer.css +118 -0
- package/styles/runes/embed.css +20 -0
- package/styles/runes/event.css +5 -0
- package/styles/runes/expand.css +7 -0
- package/styles/runes/faction.css +13 -0
- package/styles/runes/feature.css +56 -0
- package/styles/runes/figure.css +23 -0
- package/styles/runes/file-ref.css +2 -0
- package/styles/runes/form.css +55 -0
- package/styles/runes/gallery.css +128 -0
- package/styles/runes/grid.css +62 -0
- package/styles/runes/hero.css +130 -0
- package/styles/runes/hint.css +28 -0
- package/styles/runes/howto.css +35 -0
- package/styles/runes/itinerary.css +41 -0
- package/styles/runes/juxtapose.css +61 -0
- package/styles/runes/lore.css +12 -0
- package/styles/runes/map.css +45 -0
- package/styles/runes/mediatext.css +37 -0
- package/styles/runes/milestone.css +31 -0
- package/styles/runes/mockup.css +144 -0
- package/styles/runes/nav.css +258 -0
- package/styles/runes/organization.css +6 -0
- package/styles/runes/page-section.css +12 -0
- package/styles/runes/pagination.css +39 -0
- package/styles/runes/palette.css +33 -0
- package/styles/runes/placeholder.css +7 -0
- package/styles/runes/plan-history.css +38 -0
- package/styles/runes/plan-progress.css +10 -0
- package/styles/runes/playlist.css +61 -0
- package/styles/runes/plot.css +23 -0
- package/styles/runes/preview.css +45 -0
- package/styles/runes/pricing.css +40 -0
- package/styles/runes/progress.css +22 -0
- package/styles/runes/pullquote.css +39 -0
- package/styles/runes/realm.css +14 -0
- package/styles/runes/recipe.css +40 -0
- package/styles/runes/relationships.css +49 -0
- package/styles/runes/reveal.css +29 -0
- package/styles/runes/sandbox.css +30 -0
- package/styles/runes/section.css +36 -0
- package/styles/runes/showcase.css +12 -0
- package/styles/runes/spacing.css +45 -0
- package/styles/runes/steps.css +65 -0
- package/styles/runes/storyboard.css +22 -0
- package/styles/runes/swatch.css +12 -0
- package/styles/runes/symbol.css +8 -0
- package/styles/runes/tabs.css +28 -0
- package/styles/runes/testimonial.css +13 -0
- package/styles/runes/textblock.css +25 -0
- package/styles/runes/timeline.css +31 -0
- package/styles/runes/toc.css +10 -0
- package/styles/runes/track.css +55 -0
- package/styles/runes/typography.css +33 -0
- package/styles/runes/xref.css +5 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* sequence — structure. The counter mechanism + list resets, item gutters, the
|
|
2
|
+
* numbered counter-circle box placement, and the connected-timeline geometry
|
|
3
|
+
* (item position/gutter, marker box). The connector *lines* are borders (skin),
|
|
4
|
+
* as are the marker fill / radius / shadow / colour / type — those live in
|
|
5
|
+
* Lumina's dimensions/sequence.css. [data-sequence] is uncontested by layouts and
|
|
6
|
+
* sections, so the split is behavior-preserving. */
|
|
7
|
+
|
|
8
|
+
/* Numbered — counter circle to the left of each item */
|
|
9
|
+
[data-sequence="numbered"] {
|
|
10
|
+
counter-reset: sequence;
|
|
11
|
+
list-style: none;
|
|
12
|
+
padding-left: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[data-sequence="numbered"] > li {
|
|
16
|
+
counter-increment: sequence;
|
|
17
|
+
position: relative;
|
|
18
|
+
padding-left: 2.25rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[data-sequence="numbered"] > li::before {
|
|
22
|
+
content: counter(sequence);
|
|
23
|
+
position: absolute;
|
|
24
|
+
left: 0;
|
|
25
|
+
top: 0.625rem;
|
|
26
|
+
width: 1.5rem;
|
|
27
|
+
height: 1.5rem;
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Connected vertical — line with dots */
|
|
34
|
+
[data-sequence="connected"] {
|
|
35
|
+
list-style: none;
|
|
36
|
+
padding-left: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[data-sequence="connected"] > li {
|
|
40
|
+
position: relative;
|
|
41
|
+
padding-left: 2rem;
|
|
42
|
+
padding-bottom: 2rem;
|
|
43
|
+
margin-left: 0.375rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[data-sequence="connected"] > li:last-child {
|
|
47
|
+
padding-bottom: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
[data-sequence="connected"] > li::before {
|
|
51
|
+
content: '';
|
|
52
|
+
position: absolute;
|
|
53
|
+
left: -0.4375rem;
|
|
54
|
+
top: 0.25rem;
|
|
55
|
+
width: 0.75rem;
|
|
56
|
+
height: 0.75rem;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Connected horizontal — line with dots */
|
|
60
|
+
[data-sequence="connected"][data-sequence-direction="horizontal"] {
|
|
61
|
+
display: flex;
|
|
62
|
+
overflow-x: auto;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
[data-sequence="connected"][data-sequence-direction="horizontal"] > li {
|
|
66
|
+
position: relative;
|
|
67
|
+
min-width: 12rem;
|
|
68
|
+
padding-top: 1.5rem;
|
|
69
|
+
padding-left: 0;
|
|
70
|
+
padding-bottom: 0;
|
|
71
|
+
margin-left: 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[data-sequence="connected"][data-sequence-direction="horizontal"] > li::before {
|
|
75
|
+
left: 0.5rem;
|
|
76
|
+
top: -0.4375rem;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Plain — no indicators, just ordered semantics */
|
|
80
|
+
[data-sequence="plain"] {
|
|
81
|
+
list-style: none;
|
|
82
|
+
padding-left: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* === Density interaction === */
|
|
86
|
+
|
|
87
|
+
/* Compact: smaller circles, tighter spacing */
|
|
88
|
+
[data-density="compact"] [data-sequence="numbered"] > li {
|
|
89
|
+
padding-left: 1.75rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
[data-density="compact"] [data-sequence="numbered"] > li::before {
|
|
93
|
+
width: 1.25rem;
|
|
94
|
+
height: 1.25rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[data-density="compact"] [data-sequence="connected"] > li {
|
|
98
|
+
padding-bottom: 1rem;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Minimal: no indicators, collapsed list */
|
|
102
|
+
[data-density="minimal"] [data-sequence] > li::before {
|
|
103
|
+
display: none;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
[data-density="minimal"] [data-sequence="connected"] > li {
|
|
107
|
+
padding-left: 0;
|
|
108
|
+
margin-left: 0;
|
|
109
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Interactive State Dimension — structure layer.
|
|
2
|
+
* The visibility/interaction mechanisms a stateful rune breaks without:
|
|
3
|
+
* collapse, panel switching, and disabled pointer suppression. The aesthetic
|
|
4
|
+
* state treatments (active/inactive indicators, selection highlight, dim,
|
|
5
|
+
* expand animation) live in the skin. */
|
|
6
|
+
|
|
7
|
+
/* Open/closed collapse */
|
|
8
|
+
[data-state="closed"] > [class*="__body"],
|
|
9
|
+
[data-state="closed"] > [class*="__content"] {
|
|
10
|
+
display: none;
|
|
11
|
+
}
|
|
12
|
+
[data-state="open"] > [class*="__body"],
|
|
13
|
+
[data-state="open"] > [class*="__content"] {
|
|
14
|
+
display: block;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Tab/toggle panel switching */
|
|
18
|
+
[role="tabpanel"][data-state="inactive"] {
|
|
19
|
+
display: none;
|
|
20
|
+
}
|
|
21
|
+
[role="tabpanel"][data-state="active"] {
|
|
22
|
+
display: block;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Disabled — non-interactive (the dim is skin) */
|
|
26
|
+
[data-state="disabled"] {
|
|
27
|
+
pointer-events: none;
|
|
28
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* Global base — structure (SPEC-094 §3 / WORK-438). Box model, the consumed-meta
|
|
2
|
+
* hide, prose/heading/list/table rhythm, and the responsive-image + scroll
|
|
3
|
+
* mechanisms a page breaks without. Typography, colour, chrome
|
|
4
|
+
* (scrollbars/selection/focus/reduced-motion), and the surface treatment of
|
|
5
|
+
* code/pre/tables are skin (Lumina's styles/global.css).
|
|
6
|
+
*
|
|
7
|
+
* The prose rhythm (heading/paragraph/list margins) lives here, not in skin, so a
|
|
8
|
+
* rune's structural zone resets (`__title { margin-top:0 }`,
|
|
9
|
+
* `__body > :last-child { margin-bottom:0 }`) — also skeleton — can cancel it by
|
|
10
|
+
* specificity within the same layer. In skin it would beat those resets
|
|
11
|
+
* regardless of specificity, opening gaps at zone edges. */
|
|
12
|
+
|
|
13
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
14
|
+
|
|
15
|
+
body { margin: 0; }
|
|
16
|
+
|
|
17
|
+
/* Consumed meta tags never render. */
|
|
18
|
+
meta { display: none; }
|
|
19
|
+
|
|
20
|
+
/* Heading + paragraph vertical rhythm. */
|
|
21
|
+
h1, h2, h3, h4, h5, h6 { margin-top: 2em; margin-bottom: 0.5em; }
|
|
22
|
+
p { margin-top: 0; margin-bottom: 1rem; }
|
|
23
|
+
hr { margin: 2rem 0; }
|
|
24
|
+
|
|
25
|
+
/* Lists — indent + rhythm (rune list resets override these in-layer). */
|
|
26
|
+
ul, ol { padding-left: 1.5rem; margin-top: 0; margin-bottom: 1rem; }
|
|
27
|
+
li { margin-bottom: 0.25rem; }
|
|
28
|
+
li > p { margin-bottom: 0.5rem; }
|
|
29
|
+
|
|
30
|
+
/* Responsive image constraint. */
|
|
31
|
+
img { max-width: 100%; height: auto; }
|
|
32
|
+
|
|
33
|
+
/* Code block scroll + rhythm (its surface treatment is skin). */
|
|
34
|
+
pre { overflow-x: auto; margin: 1.5rem 0; }
|
|
35
|
+
|
|
36
|
+
/* Table layout + rhythm (cell treatment is skin). */
|
|
37
|
+
table { width: 100%; border-collapse: collapse; margin: 1.5rem 0; }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* blog layout — structure. The sticky header bar + order + brand box, the layout
|
|
2
|
+
* container width cap, the has-sidebar grid, the index/article width caps, the empty
|
|
3
|
+
* hide, the posts flex, the card block, the meta/tags flex rows, the sticky sidebar
|
|
4
|
+
* + list reset, and the responsive grid/sidebar reflow. Header height var, colours,
|
|
5
|
+
* borders, type, padding, and gaps are skin. */
|
|
6
|
+
.rf-blog-header { position: sticky; top: 0; z-index: 100; }
|
|
7
|
+
.rf-blog-header__inner { display: flex; align-items: center; }
|
|
8
|
+
.rf-blog-header__inner .rf-search-trigger { margin-left: auto; }
|
|
9
|
+
.rf-blog-header__inner p ~ p { order: 1; }
|
|
10
|
+
.rf-blog-header__inner .rf-mobile-menu-btn { order: 2; }
|
|
11
|
+
.rf-blog-header a { display: inline-block; }
|
|
12
|
+
.rf-blog-header p:first-child a { display: inline-flex; align-items: center; }
|
|
13
|
+
.rf-blog-header img,
|
|
14
|
+
.rf-blog-header p:first-child a > .rf-icon { height: 2rem; width: 2rem; }
|
|
15
|
+
.rf-blog-header p:first-child a > .rf-icon { display: inline-block; }
|
|
16
|
+
.rf-blog-header__inner p ~ p a svg { width: 1.1rem; height: 1.1rem; }
|
|
17
|
+
.rf-blog { max-width: 72rem; margin: 0 auto; }
|
|
18
|
+
.rf-blog--has-sidebar {
|
|
19
|
+
display: grid;
|
|
20
|
+
grid-template-columns: 1fr 16rem;
|
|
21
|
+
align-items: start;
|
|
22
|
+
}
|
|
23
|
+
.rf-blog-index { max-width: 42rem; }
|
|
24
|
+
.rf-blog-index__body:empty { display: none; }
|
|
25
|
+
.rf-blog-index__posts { display: flex; flex-direction: column; }
|
|
26
|
+
.rf-blog-card { display: block; }
|
|
27
|
+
.rf-blog-card__meta { display: flex; align-items: center; }
|
|
28
|
+
.rf-blog-card__tags { display: flex; flex-wrap: wrap; }
|
|
29
|
+
.rf-blog-article { max-width: 42rem; }
|
|
30
|
+
.rf-blog-article__meta { display: flex; align-items: center; }
|
|
31
|
+
.rf-blog-article__tags { display: flex; flex-wrap: wrap; }
|
|
32
|
+
.rf-blog-sidebar { position: sticky; top: 2.5rem; }
|
|
33
|
+
.rf-blog-sidebar ul { list-style: none; }
|
|
34
|
+
@media (max-width: 768px) {
|
|
35
|
+
.rf-blog-header__inner p ~ p { display: none; }
|
|
36
|
+
.rf-blog--has-sidebar { grid-template-columns: 1fr; }
|
|
37
|
+
.rf-blog-sidebar { position: static; }
|
|
38
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* default layout — structure. The sticky header bar + order, the brand/logo box,
|
|
2
|
+
* the named-track content grid + width-variant placement, the container context,
|
|
3
|
+
* and the footer flex + width cap. Colours, borders, type, padding, and the section
|
|
4
|
+
* rhythm/inset margins are skin (Lumina's layouts/default.css). */
|
|
5
|
+
.rf-header { position: sticky; top: 0; z-index: 100; }
|
|
6
|
+
.rf-header__inner { display: flex; align-items: center; }
|
|
7
|
+
.rf-header__inner .rf-search-trigger { margin-left: auto; order: 1; }
|
|
8
|
+
.rf-header__inner > rf-nav { order: 3; }
|
|
9
|
+
.rf-header__inner p ~ p { order: 1; }
|
|
10
|
+
.rf-header__inner .rf-mobile-menu-btn { order: 3; }
|
|
11
|
+
.rf-header a { display: inline-block; }
|
|
12
|
+
.rf-header p:first-child a { display: inline-flex; align-items: center; }
|
|
13
|
+
.rf-header img,
|
|
14
|
+
.rf-header p:first-child a > .rf-icon { height: 2rem; width: 2rem; }
|
|
15
|
+
.rf-header img { width: auto; }
|
|
16
|
+
.rf-header p:first-child a > .rf-icon { display: inline-block; }
|
|
17
|
+
.rf-header__inner p ~ p a svg { width: 1.1rem; height: 1.1rem; }
|
|
18
|
+
.rf-page-content { container-type: inline-size; }
|
|
19
|
+
.rf-page-content > article {
|
|
20
|
+
display: grid;
|
|
21
|
+
grid-template-columns:
|
|
22
|
+
[full-start] 1fr
|
|
23
|
+
[wide-start] minmax(0, var(--rf-wide-inset, 8rem))
|
|
24
|
+
[content-start] min(var(--rf-content-max), 100% - var(--rf-content-gutter) * 2)
|
|
25
|
+
[content-end] minmax(0, var(--rf-wide-inset, 8rem))
|
|
26
|
+
[wide-end] 1fr
|
|
27
|
+
[full-end];
|
|
28
|
+
}
|
|
29
|
+
.rf-page-content > article > * { grid-column: content; }
|
|
30
|
+
.rf-page-content > article > [data-width="compact"] {
|
|
31
|
+
max-width: var(--rf-width-compact, 30rem);
|
|
32
|
+
margin-inline: auto;
|
|
33
|
+
}
|
|
34
|
+
.rf-page-content > article > [data-width="narrow"] {
|
|
35
|
+
max-width: var(--rf-width-narrow, 40rem);
|
|
36
|
+
margin-inline: auto;
|
|
37
|
+
}
|
|
38
|
+
.rf-page-content > article > [data-width="wide"] { grid-column: wide; }
|
|
39
|
+
.rf-page-content > article > [data-width="full"] { grid-column: full; }
|
|
40
|
+
.rf-page-content > article > :is([data-tint], [data-color-scheme]):not([data-width]) {
|
|
41
|
+
grid-column: full;
|
|
42
|
+
}
|
|
43
|
+
@media (max-width: 768px) {
|
|
44
|
+
.rf-header__inner p ~ p { display: none; }
|
|
45
|
+
}
|
|
46
|
+
.rf-footer {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
align-items: center;
|
|
50
|
+
}
|
|
51
|
+
.rf-footer > * { width: 100%; max-width: 80rem; }
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* docs layout — structure. Fixed header bar + order + brand box, the sidebar/content
|
|
2
|
+
* flex row, the sticky sidebar box + fixed-header clearance, the content flex +
|
|
3
|
+
* container + width-variant grid, the has-toc flex + sticky TOC, the scroll-padding
|
|
4
|
+
* offset, the mobile toolbar flex + breadcrumb ellipsis, and the responsive hides.
|
|
5
|
+
* Colours, borders, type, padding, scrollbar chrome, and content padding are skin. */
|
|
6
|
+
.rf-docs-header { position: fixed; top: 0; left: 0; right: 0; z-index: 10; }
|
|
7
|
+
.rf-docs-header__inner { display: flex; align-items: center; }
|
|
8
|
+
.rf-docs-header__inner .rf-search-trigger { margin-left: auto; order: 1; }
|
|
9
|
+
.rf-docs-header__inner > rf-nav { order: 3; }
|
|
10
|
+
.rf-docs-header__inner p ~ p { order: 1; }
|
|
11
|
+
.rf-docs-header__inner .rf-mobile-menu-btn { order: 3; }
|
|
12
|
+
.rf-docs-header a { display: inline-block; }
|
|
13
|
+
.rf-docs-header p:first-child a { display: inline-flex; align-items: center; }
|
|
14
|
+
.rf-docs-header img,
|
|
15
|
+
.rf-docs-header p:first-child a > .rf-icon { height: 2rem; width: 2rem; }
|
|
16
|
+
.rf-docs-header p:first-child a > .rf-icon { display: inline-block; }
|
|
17
|
+
.rf-docs-header__inner p ~ p a svg { width: 1.1rem; height: 1.1rem; }
|
|
18
|
+
.rf-docs-body { display: flex; align-items: flex-start; }
|
|
19
|
+
.rf-docs-sidebar {
|
|
20
|
+
position: sticky;
|
|
21
|
+
top: 3.125rem;
|
|
22
|
+
align-self: flex-start;
|
|
23
|
+
flex-shrink: 0;
|
|
24
|
+
width: 240px;
|
|
25
|
+
height: calc(100vh - 3.125rem);
|
|
26
|
+
overflow-y: auto;
|
|
27
|
+
z-index: 5;
|
|
28
|
+
}
|
|
29
|
+
html:has(.rf-docs-header) .rf-docs-sidebar { margin-top: 3.125rem; }
|
|
30
|
+
.rf-docs-content {
|
|
31
|
+
flex: 1;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
container-type: inline-size;
|
|
34
|
+
}
|
|
35
|
+
.rf-docs-content__inner { max-width: 60rem; margin: 0 auto; }
|
|
36
|
+
.rf-docs-content__inner--has-toc {
|
|
37
|
+
display: flex;
|
|
38
|
+
max-width: calc(60rem + 220px + 6rem);
|
|
39
|
+
}
|
|
40
|
+
.rf-docs-content__inner--has-toc .rf-docs-content__body { flex: 1; min-width: 0; }
|
|
41
|
+
.rf-docs-content__body > div > article {
|
|
42
|
+
display: grid;
|
|
43
|
+
grid-template-columns:
|
|
44
|
+
[wide-start] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
|
|
45
|
+
[content-start] minmax(0, 1fr)
|
|
46
|
+
[content-end] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
|
|
47
|
+
[wide-end];
|
|
48
|
+
}
|
|
49
|
+
.rf-docs-content__body > div > article > * { grid-column: content; }
|
|
50
|
+
.rf-docs-content__body > div > article > [data-width="wide"],
|
|
51
|
+
.rf-docs-content__body > div > article > [data-width="full"] { grid-column: wide; }
|
|
52
|
+
.rf-docs-content__body > div > article > [data-width="compact"] { max-width: var(--rf-width-compact, 30rem); margin-inline: auto; }
|
|
53
|
+
.rf-docs-content__body > div > article > [data-width="narrow"] { max-width: var(--rf-width-narrow, 40rem); margin-inline: auto; }
|
|
54
|
+
.rf-docs-toc {
|
|
55
|
+
width: 220px;
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
position: sticky;
|
|
58
|
+
top: 5.75rem;
|
|
59
|
+
align-self: flex-start;
|
|
60
|
+
max-height: calc(100vh - 5.75rem);
|
|
61
|
+
overflow-y: auto;
|
|
62
|
+
}
|
|
63
|
+
html:has(.rf-docs-header) { scroll-padding-top: 5rem; }
|
|
64
|
+
.rf-docs-toolbar {
|
|
65
|
+
display: none;
|
|
66
|
+
align-items: center;
|
|
67
|
+
max-width: 100%;
|
|
68
|
+
overflow: hidden;
|
|
69
|
+
}
|
|
70
|
+
.rf-docs-toolbar__hamburger { flex-shrink: 0; }
|
|
71
|
+
.rf-docs-toolbar__breadcrumb { flex: 1 1 0; min-width: 0; overflow: hidden; }
|
|
72
|
+
@media (max-width: 1100px) {
|
|
73
|
+
.rf-docs-toc { display: none; }
|
|
74
|
+
.rf-docs-content__inner--has-toc { display: block; max-width: 60rem; }
|
|
75
|
+
}
|
|
76
|
+
@media (max-width: 768px) {
|
|
77
|
+
.rf-docs-header { position: sticky; top: 0; }
|
|
78
|
+
.rf-docs-header__inner p ~ p { display: none; }
|
|
79
|
+
.rf-docs-toolbar { display: flex; position: sticky; top: calc(3.5rem - 1px); z-index: 100; }
|
|
80
|
+
.rf-mobile-panel--nav { top: calc(6.25rem - 1px); }
|
|
81
|
+
.rf-docs-sidebar { display: none; }
|
|
82
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* mobile — structure. The menu-button hide/show + icon-state swaps, the docked
|
|
2
|
+
* panel positioning + scroll, the panel-link block display, the panel open, and the
|
|
3
|
+
* mobile media-query reveal/hide of the button + inline nav + duplicated brand.
|
|
4
|
+
* Button/link chrome, padding, and type are skin. */
|
|
5
|
+
.rf-mobile-menu-btn { display: none; }
|
|
6
|
+
.rf-mobile-menu-btn__icon-close { display: none; }
|
|
7
|
+
.rf-mobile-menu-btn[aria-expanded="true"] .rf-mobile-menu-btn__icon-open { display: none; }
|
|
8
|
+
.rf-mobile-menu-btn[aria-expanded="true"] .rf-mobile-menu-btn__icon-close { display: inline; }
|
|
9
|
+
.rf-mobile-panel {
|
|
10
|
+
display: none;
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: var(--rf-header-height, 3.5rem);
|
|
13
|
+
right: 0;
|
|
14
|
+
bottom: 0;
|
|
15
|
+
left: 0;
|
|
16
|
+
width: 100%;
|
|
17
|
+
max-width: 100vw;
|
|
18
|
+
z-index: 99;
|
|
19
|
+
overflow-x: hidden;
|
|
20
|
+
overflow-y: auto;
|
|
21
|
+
-webkit-overflow-scrolling: touch;
|
|
22
|
+
}
|
|
23
|
+
.rf-mobile-panel__nav img { display: none; }
|
|
24
|
+
.rf-mobile-panel__nav a,
|
|
25
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav__top-level .rf-nav-item__link,
|
|
26
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group .rf-nav-item__link,
|
|
27
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group__panel .rf-nav--columns .rf-nav-item__link {
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
.rf-mobile-panel[data-open] { display: block; }
|
|
31
|
+
@media (max-width: 768px) {
|
|
32
|
+
.rf-mobile-menu-btn { display: block; }
|
|
33
|
+
.rf-header__inner > rf-nav,
|
|
34
|
+
.rf-docs-header__inner > rf-nav,
|
|
35
|
+
.rf-blog-header__inner > rf-nav {
|
|
36
|
+
display: none;
|
|
37
|
+
}
|
|
38
|
+
.rf-mobile-panel__nav > p:first-child { display: none; }
|
|
39
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/* plan layout — structure. The dashboard grid, the fixed sidebar box + content
|
|
2
|
+
* offset, the sidebar trigger/title/status flex + disclosure, the link blocks +
|
|
3
|
+
* flex sizing, the content flex/has-toc + sticky TOC, the sticky mobile toolbar, the
|
|
4
|
+
* section-nav dropdown positioning + open, and the responsive hides/reflows.
|
|
5
|
+
* Colours, borders, radii, type, padding, scrollbar chrome, and the disclosure
|
|
6
|
+
* glyph are skin. */
|
|
7
|
+
.rf-plan-dashboard {
|
|
8
|
+
display: grid;
|
|
9
|
+
grid-template-columns: repeat(auto-fill, minmax(24rem, 1fr));
|
|
10
|
+
}
|
|
11
|
+
.rf-plan-dashboard__section { min-width: 0; }
|
|
12
|
+
.rf-plan-sidebar {
|
|
13
|
+
position: fixed;
|
|
14
|
+
inset-block: 0;
|
|
15
|
+
inset-inline-start: 0;
|
|
16
|
+
width: var(--plan-sidebar-width, 240px);
|
|
17
|
+
overflow-y: auto;
|
|
18
|
+
}
|
|
19
|
+
.rf-plan-sidebar__title {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
}
|
|
24
|
+
.rf-plan-sidebar__search-trigger {
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
}
|
|
29
|
+
.rf-plan-sidebar__search-trigger svg { width: 16px; height: 16px; flex-shrink: 0; }
|
|
30
|
+
.rf-plan-sidebar__status-header {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: space-between;
|
|
34
|
+
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
.rf-plan-sidebar__status-header::before { content: '\25B8'; display: inline-block; }
|
|
37
|
+
.rf-plan-sidebar__status-header[aria-expanded="true"]::before { transform: rotate(90deg); }
|
|
38
|
+
.rf-plan-sidebar__status-label { flex: 1; }
|
|
39
|
+
.rf-plan-sidebar__status-count { min-width: 1.25rem; }
|
|
40
|
+
.rf-plan-sidebar__status-items[hidden] { display: none; }
|
|
41
|
+
.rf-plan-sidebar__link { display: block; }
|
|
42
|
+
.rf-plan-sidebar__link--dashboard { display: flex; align-items: center; }
|
|
43
|
+
.rf-plan-sidebar__dashboard-icon { flex-shrink: 0; }
|
|
44
|
+
.rf-plan-sidebar__status-link { display: flex; align-items: center; justify-content: space-between; }
|
|
45
|
+
.rf-plan-sidebar__blocker-icon { margin-left: auto; flex-shrink: 0; }
|
|
46
|
+
.rf-plan-sidebar__link .rf-plan-sidebar__view-label { flex: 1; overflow: hidden; }
|
|
47
|
+
.rf-plan-sidebar__link .rf-plan-sidebar__view-count { min-width: 1.25rem; }
|
|
48
|
+
.rf-plan-sidebar__group[data-type="views"] .rf-plan-sidebar__link {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
justify-content: space-between;
|
|
52
|
+
}
|
|
53
|
+
.rf-plan-main { margin-inline-start: var(--plan-sidebar-width, 240px); }
|
|
54
|
+
.rf-plan-main__inner--has-toc {
|
|
55
|
+
display: flex;
|
|
56
|
+
max-width: calc(60rem + 200px + 2rem);
|
|
57
|
+
margin: 0 auto;
|
|
58
|
+
}
|
|
59
|
+
.rf-plan-main__inner--has-toc .rf-plan-main__body { flex: 1; min-width: 0; max-width: 60rem; }
|
|
60
|
+
.rf-plan-main__body { max-width: 60rem; margin: 0 auto; }
|
|
61
|
+
.rf-plan-toc {
|
|
62
|
+
width: 200px;
|
|
63
|
+
flex-shrink: 0;
|
|
64
|
+
position: sticky;
|
|
65
|
+
top: var(--rf-spacing-lg, 1.5rem);
|
|
66
|
+
align-self: flex-start;
|
|
67
|
+
max-height: calc(100vh - var(--rf-spacing-xl, 2rem) * 2);
|
|
68
|
+
overflow-y: auto;
|
|
69
|
+
}
|
|
70
|
+
.rf-plan-toolbar {
|
|
71
|
+
display: none;
|
|
72
|
+
align-items: center;
|
|
73
|
+
position: sticky;
|
|
74
|
+
top: 0;
|
|
75
|
+
z-index: 100;
|
|
76
|
+
}
|
|
77
|
+
.rf-plan-toolbar__hamburger { flex-shrink: 0; }
|
|
78
|
+
.rf-plan-toolbar__title { flex: 1; min-width: 0; }
|
|
79
|
+
.rf-plan-toolbar__section-nav-toggle { flex-shrink: 0; }
|
|
80
|
+
.rf-section-nav {
|
|
81
|
+
display: none;
|
|
82
|
+
position: absolute;
|
|
83
|
+
top: 100%;
|
|
84
|
+
right: 0.5rem;
|
|
85
|
+
min-width: 14rem;
|
|
86
|
+
z-index: 200;
|
|
87
|
+
}
|
|
88
|
+
.rf-section-nav[data-open] { display: block; }
|
|
89
|
+
.rf-section-nav__list { list-style: none; }
|
|
90
|
+
.rf-section-nav__link { display: block; }
|
|
91
|
+
@media (max-width: 64rem) {
|
|
92
|
+
.rf-plan-toc { display: none; }
|
|
93
|
+
.rf-plan-main__inner--has-toc { display: block; }
|
|
94
|
+
}
|
|
95
|
+
@media (max-width: 48rem) {
|
|
96
|
+
html:has(.rf-plan-toolbar) { scroll-padding-top: 3.5rem; }
|
|
97
|
+
.rf-plan-toolbar { display: flex; }
|
|
98
|
+
.rf-plan-sidebar { display: none; }
|
|
99
|
+
.rf-mobile-panel .rf-plan-sidebar__search-trigger { display: none; }
|
|
100
|
+
.rf-layout-plan .rf-mobile-panel--nav { top: 3.0625rem; }
|
|
101
|
+
.rf-plan-main { margin-inline-start: 0; }
|
|
102
|
+
.rf-plan-dashboard { grid-template-columns: 1fr; }
|
|
103
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* search — structure. The trigger inline-flex + icon box, the kbd box, the dialog
|
|
2
|
+
* modal positioning + open flex column, the header/footer flex, the input flex, the
|
|
3
|
+
* body scroll, the result/excerpt blocks, the native-clear hide, and the mobile
|
|
4
|
+
* full-screen dialog + footer hide. Surface chrome, borders, radii, type, and
|
|
5
|
+
* padding are skin. */
|
|
6
|
+
.rf-search-trigger {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
flex-shrink: 0;
|
|
10
|
+
}
|
|
11
|
+
.rf-search-trigger svg {
|
|
12
|
+
width: 16px;
|
|
13
|
+
height: 16px;
|
|
14
|
+
flex-shrink: 0;
|
|
15
|
+
}
|
|
16
|
+
.rf-search-trigger__label { pointer-events: none; }
|
|
17
|
+
.rf-search-trigger__kbd {
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
.rf-search-dialog {
|
|
22
|
+
position: fixed;
|
|
23
|
+
top: 15vh;
|
|
24
|
+
left: 50%;
|
|
25
|
+
transform: translateX(-50%);
|
|
26
|
+
width: min(560px, calc(100vw - 2rem));
|
|
27
|
+
max-height: 70vh;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
}
|
|
30
|
+
.rf-search-dialog[open] {
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
}
|
|
34
|
+
.rf-search-dialog__header {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
}
|
|
38
|
+
.rf-search-dialog__icon { flex-shrink: 0; }
|
|
39
|
+
.rf-search-dialog__input { flex: 1; }
|
|
40
|
+
.rf-search-dialog__input::-webkit-search-cancel-button { display: none; }
|
|
41
|
+
.rf-search-dialog__esc {
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
flex-shrink: 0;
|
|
45
|
+
}
|
|
46
|
+
.rf-search-dialog__body {
|
|
47
|
+
flex: 1;
|
|
48
|
+
overflow-y: auto;
|
|
49
|
+
overscroll-behavior: contain;
|
|
50
|
+
}
|
|
51
|
+
.rf-search-result { display: block; }
|
|
52
|
+
.rf-search-result__title { display: block; }
|
|
53
|
+
.rf-search-result__excerpt { display: block; }
|
|
54
|
+
.rf-search-dialog__footer {
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
}
|
|
58
|
+
.rf-search-dialog__footer kbd {
|
|
59
|
+
display: inline-flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: center;
|
|
62
|
+
min-width: 1.25rem;
|
|
63
|
+
}
|
|
64
|
+
@media (max-width: 768px) {
|
|
65
|
+
.rf-search-trigger__label,
|
|
66
|
+
.rf-search-trigger__kbd { display: none; }
|
|
67
|
+
.rf-search-dialog[open] {
|
|
68
|
+
top: 0;
|
|
69
|
+
left: 0;
|
|
70
|
+
right: 0;
|
|
71
|
+
bottom: 0;
|
|
72
|
+
transform: none;
|
|
73
|
+
width: 100%;
|
|
74
|
+
height: 100vh;
|
|
75
|
+
height: 100dvh;
|
|
76
|
+
max-height: 100vh;
|
|
77
|
+
max-height: 100dvh;
|
|
78
|
+
}
|
|
79
|
+
.rf-search-dialog__footer { display: none; }
|
|
80
|
+
}
|