@refrakt-md/lumina 0.21.0 → 0.23.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 +2 -1
- 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 +5 -3
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +44 -3
- package/dist/tokens.js.map +1 -1
- package/index.css +11 -1
- package/package.json +7 -5
- package/styles/base/attributes.css +6 -7
- package/styles/dimensions/checklist.css +7 -36
- package/styles/dimensions/cover.css +13 -95
- package/styles/dimensions/density.css +6 -3
- package/styles/dimensions/frame.css +7 -4
- package/styles/dimensions/media.css +14 -61
- package/styles/dimensions/metadata.css +30 -80
- package/styles/dimensions/sections.css +16 -30
- package/styles/dimensions/sequence.css +17 -82
- 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 +24 -63
- package/styles/layouts/blog.css +34 -95
- package/styles/layouts/default.css +12 -86
- package/styles/layouts/docs.css +9 -159
- package/styles/layouts/mobile.css +3 -52
- package/styles/layouts/on-this-page.css +8 -7
- package/styles/layouts/plan.css +27 -158
- package/styles/layouts/search.css +17 -82
- package/styles/layouts/split.css +24 -169
- package/styles/layouts/theme-toggle.css +3 -29
- package/styles/layouts/version-switcher.css +9 -10
- package/styles/runes/accordion.css +25 -68
- package/styles/runes/aggregate.css +4 -13
- package/styles/runes/annotate.css +11 -40
- package/styles/runes/api.css +4 -1
- package/styles/runes/audio.css +12 -50
- package/styles/runes/badge.css +5 -2
- package/styles/runes/bar.css +3 -0
- package/styles/runes/bento.css +18 -161
- package/styles/runes/bg.css +3 -37
- package/styles/runes/blog.css +18 -20
- package/styles/runes/bond.css +6 -26
- package/styles/runes/breadcrumb.css +7 -15
- package/styles/runes/budget.css +23 -45
- package/styles/runes/bug.css +5 -2
- package/styles/runes/card.css +27 -95
- package/styles/runes/cast.css +10 -27
- package/styles/runes/changelog.css +13 -17
- package/styles/runes/character.css +6 -20
- package/styles/runes/chart.css +15 -57
- package/styles/runes/codegroup.css +18 -26
- package/styles/runes/collection.css +8 -85
- package/styles/runes/compare.css +8 -19
- package/styles/runes/comparison.css +29 -56
- package/styles/runes/conversation.css +9 -31
- package/styles/runes/cta.css +17 -40
- package/styles/runes/datatable.css +33 -48
- package/styles/runes/decision.css +5 -2
- package/styles/runes/design-context.css +5 -4
- package/styles/runes/details.css +9 -17
- package/styles/runes/diagram.css +8 -16
- package/styles/runes/diff.css +11 -94
- package/styles/runes/drawer.css +9 -113
- package/styles/runes/embed.css +5 -13
- package/styles/runes/event.css +5 -3
- package/styles/runes/expand.css +10 -45
- package/styles/runes/faction.css +6 -12
- package/styles/runes/feature.css +15 -43
- package/styles/runes/figure.css +7 -26
- package/styles/runes/file-ref.css +3 -18
- package/styles/runes/form.css +19 -48
- package/styles/runes/gallery.css +8 -140
- package/styles/runes/grid.css +4 -56
- package/styles/runes/hero.css +28 -140
- package/styles/runes/hint.css +23 -48
- package/styles/runes/howto.css +9 -31
- package/styles/runes/itinerary.css +15 -44
- package/styles/runes/juxtapose.css +17 -92
- package/styles/runes/lore.css +7 -14
- package/styles/runes/map.css +9 -42
- package/styles/runes/mediatext.css +4 -45
- package/styles/runes/milestone.css +15 -28
- package/styles/runes/mockup.css +10 -115
- package/styles/runes/nav.css +37 -212
- package/styles/runes/organization.css +6 -5
- package/styles/runes/page-section.css +3 -4
- package/styles/runes/pagination.css +10 -42
- package/styles/runes/palette.css +16 -35
- package/styles/runes/placeholder.css +16 -0
- package/styles/runes/plan-history.css +23 -43
- package/styles/runes/plan-progress.css +6 -7
- package/styles/runes/plan-ref.css +4 -1
- package/styles/runes/playlist.css +10 -44
- package/styles/runes/plot.css +9 -25
- package/styles/runes/preview.css +9 -34
- package/styles/runes/pricing.css +23 -41
- package/styles/runes/progress.css +8 -27
- package/styles/runes/pullquote.css +9 -31
- package/styles/runes/realm.css +6 -12
- package/styles/runes/recipe.css +12 -36
- package/styles/runes/relationships.css +5 -36
- package/styles/runes/reveal.css +17 -22
- package/styles/runes/sandbox.css +9 -39
- package/styles/runes/section.css +10 -24
- package/styles/runes/showcase.css +3 -20
- package/styles/runes/sidenote.css +5 -4
- package/styles/runes/snippet.css +3 -0
- package/styles/runes/spacing.css +14 -33
- package/styles/runes/spec.css +5 -2
- package/styles/runes/steps.css +14 -46
- package/styles/runes/storyboard.css +4 -19
- package/styles/runes/swatch.css +4 -7
- package/styles/runes/symbol.css +16 -14
- package/styles/runes/tabs.css +15 -18
- package/styles/runes/testimonial.css +12 -13
- package/styles/runes/textblock.css +6 -24
- package/styles/runes/timeline.css +10 -28
- package/styles/runes/tint.css +3 -0
- package/styles/runes/toc.css +9 -7
- package/styles/runes/track.css +12 -41
- package/styles/runes/typography.css +15 -27
- package/styles/runes/work.css +5 -2
- package/styles/runes/xref.css +3 -1
- package/tokens/base.css +56 -66
- package/tokens/dark.css +79 -80
- package/styles/dimensions/guest-posture.css +0 -27
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - Sentiment rules drive `--meta-color`,
|
|
10
|
-
* sentiment-tinted text inherits.
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* ─── Metadata Dimensions — skin ───────────────────────────────────────
|
|
3
|
+
* SPEC-080 typography / geometry split. The zone-layout *structure* (bar +
|
|
4
|
+
* definition-list display/grid, the rating flex row, the sr-only label
|
|
5
|
+
* mechanism) lives in @refrakt-md/skeleton (dimensions/metadata.css). What
|
|
6
|
+
* remains here is skin: sentiment colours, meta-type typography, the rating
|
|
7
|
+
* glyph + colours, the chip/def-list spacing + borders + radius, and labels.
|
|
8
|
+
* - `[data-meta-type=…]` selectors carry ONLY typography hints.
|
|
9
|
+
* - Sentiment rules drive `--meta-color`, inherited by chips + tinted text.
|
|
11
10
|
* ────────────────────────────────────────────────────────────────────── */
|
|
12
11
|
|
|
13
12
|
/* ─── Sentiment ────────────────────────────────────────────────────── */
|
|
@@ -22,7 +21,7 @@
|
|
|
22
21
|
[data-meta-type="id"],
|
|
23
22
|
[data-meta-type="code"] {
|
|
24
23
|
font-family: var(--rf-font-mono, monospace);
|
|
25
|
-
font-size: var(--meta-font-size,
|
|
24
|
+
font-size: var(--meta-font-size, var(--rf-text-sm));
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
/* IDs read as primary-coloured references wherever they appear (eyebrow
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
* not a per-layout one. `code` (e.g. API paths) stays neutral monospace. */
|
|
31
30
|
[data-meta-type="id"] {
|
|
32
31
|
color: var(--rf-color-primary);
|
|
33
|
-
font-weight:
|
|
32
|
+
font-weight: var(--rf-weight-medium);
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
[data-meta-type="quantity"] {
|
|
@@ -44,9 +43,10 @@
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
/* Rating — `value` filled marks out of `total`; each mark carries
|
|
47
|
-
* `data-filled`. Stars via colour (filled = primary, empty = border).
|
|
46
|
+
* `data-filled`. Stars via colour (filled = primary, empty = border). The
|
|
47
|
+
* inline-flex row is structure (skeleton); the glyph + spacing + colours are
|
|
48
|
+
* skin. */
|
|
48
49
|
[data-meta-type="rating"] {
|
|
49
|
-
display: inline-flex;
|
|
50
50
|
gap: 0.0625rem;
|
|
51
51
|
line-height: 1;
|
|
52
52
|
}
|
|
@@ -73,71 +73,38 @@
|
|
|
73
73
|
text-underline-offset: 0.15em;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
/* ─── Layout: bar
|
|
77
|
-
|
|
78
|
-
/* Horizontal flex row of fields, each in its own intrinsic shape (chip or
|
|
79
|
-
* bare). Wraps by default; `data-wrap="false"` keeps it on one line. A field
|
|
80
|
-
* tagged `data-align="end"` (and everything after it) is pushed to the right
|
|
81
|
-
* edge. */
|
|
76
|
+
/* ─── Layout: bar — spacing ────────────────────────────────────────── */
|
|
77
|
+
/* The flex row + end-push are structure (skeleton); the gap is skin. */
|
|
82
78
|
[data-zone-layout="bar"] {
|
|
83
|
-
display: flex;
|
|
84
|
-
flex-wrap: wrap;
|
|
85
79
|
gap: 0.5rem;
|
|
86
|
-
align-items: center;
|
|
87
|
-
}
|
|
88
|
-
[data-zone-layout="bar"][data-wrap="false"] {
|
|
89
|
-
flex-wrap: nowrap;
|
|
90
80
|
}
|
|
91
|
-
[data-zone-layout="bar"] [data-align="end"] {
|
|
92
|
-
margin-left: auto;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/* ─── Layout: definition-list ──────────────────────────────────────── */
|
|
96
81
|
|
|
97
|
-
/*
|
|
98
|
-
|
|
99
|
-
*
|
|
100
|
-
* `data-zone-layout` so they render identically (geometry, borders, margin).
|
|
101
|
-
*
|
|
102
|
-
* Each row stacks `dt` above `dd`. Rows flow into multiple columns
|
|
103
|
-
* via `auto-fit` — CSS grid naturally collapses to a single column
|
|
104
|
-
* when the container is narrower than the minimum, so the same rule
|
|
105
|
-
* reads fine on mobile and packs dense on wider screens without a
|
|
106
|
-
* media-query step. The 8rem minimum keeps short label / value pairs
|
|
107
|
-
* like "Prep" + "15m" tight while leaving room for the per-item border. */
|
|
82
|
+
/* ─── Layout: definition-list — spacing + chrome ───────────────────── */
|
|
83
|
+
/* The grid + row stacking are structure (skeleton); the gaps, the per-row
|
|
84
|
+
* border/padding/radius card chrome, and the dt/dd type are skin. */
|
|
108
85
|
[data-zone-layout="definition-list"] {
|
|
109
|
-
display: grid;
|
|
110
|
-
grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
|
|
111
86
|
gap: 0.75rem;
|
|
112
87
|
margin: 1.25rem 0;
|
|
113
88
|
}
|
|
114
89
|
|
|
115
90
|
[data-zone-layout="definition-list"] > [data-name="row"] {
|
|
116
|
-
display: flex;
|
|
117
|
-
flex-direction: column;
|
|
118
91
|
gap: 0.125rem;
|
|
119
|
-
min-width: 0;
|
|
120
92
|
padding: 0.625rem 0.75rem;
|
|
121
93
|
border: 1px solid var(--rf-color-border);
|
|
122
94
|
border-radius: var(--rf-radius-sm);
|
|
123
95
|
}
|
|
124
96
|
|
|
125
97
|
[data-zone-layout="definition-list"] dt {
|
|
126
|
-
font-size:
|
|
127
|
-
font-weight:
|
|
98
|
+
font-size: var(--rf-text-xs);
|
|
99
|
+
font-weight: var(--rf-weight-medium);
|
|
128
100
|
color: var(--rf-color-muted);
|
|
129
101
|
}
|
|
130
102
|
|
|
131
103
|
[data-zone-layout="definition-list"] dd {
|
|
132
|
-
|
|
133
|
-
font-size: 0.875rem;
|
|
104
|
+
font-size: var(--rf-text-sm);
|
|
134
105
|
}
|
|
135
106
|
|
|
136
|
-
/* Multi-value dd (fields with `splitOn`) renders a row of chips
|
|
137
|
-
* inside the cell, flowing naturally. */
|
|
138
107
|
[data-zone-layout="definition-list"] dd[data-multi-value] {
|
|
139
|
-
display: flex;
|
|
140
|
-
flex-wrap: wrap;
|
|
141
108
|
gap: 0.25rem;
|
|
142
109
|
}
|
|
143
110
|
|
|
@@ -145,23 +112,10 @@
|
|
|
145
112
|
|
|
146
113
|
/* Label element within a chip — thin, muted; pairs visually with the value */
|
|
147
114
|
[data-meta-label] {
|
|
148
|
-
font-weight:
|
|
115
|
+
font-weight: var(--rf-weight-normal);
|
|
149
116
|
opacity: 0.65;
|
|
150
117
|
}
|
|
151
118
|
|
|
152
|
-
/* Visually hidden labels — accessible to screen readers only */
|
|
153
|
-
[data-meta-label-hidden] {
|
|
154
|
-
position: absolute;
|
|
155
|
-
width: 1px;
|
|
156
|
-
height: 1px;
|
|
157
|
-
padding: 0;
|
|
158
|
-
margin: -1px;
|
|
159
|
-
overflow: hidden;
|
|
160
|
-
clip: rect(0, 0, 0, 0);
|
|
161
|
-
white-space: nowrap;
|
|
162
|
-
border: 0;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
119
|
/* ─── Mobile: compact ──────────────────────────────────────────────── */
|
|
166
120
|
|
|
167
121
|
@media (max-width: 48rem) {
|
|
@@ -169,26 +123,22 @@
|
|
|
169
123
|
gap: 0.375rem;
|
|
170
124
|
}
|
|
171
125
|
|
|
172
|
-
/*
|
|
173
|
-
*
|
|
174
|
-
* `display: contents
|
|
175
|
-
* The border + padding move to the list itself so the whole group reads
|
|
176
|
-
* as one bordered card. */
|
|
126
|
+
/* The border + padding move to the list itself so the whole group reads as
|
|
127
|
+
* one bordered card (the per-row box is dropped by the skeleton's
|
|
128
|
+
* `display: contents`). */
|
|
177
129
|
[data-zone-layout="definition-list"] {
|
|
178
|
-
grid-template-columns: max-content 1fr;
|
|
179
130
|
gap: 0.25rem 1rem;
|
|
180
|
-
align-items: baseline;
|
|
181
131
|
padding: 0.75rem 1rem;
|
|
182
132
|
border: 1px solid var(--rf-color-border);
|
|
183
133
|
border-radius: var(--rf-radius-sm);
|
|
184
134
|
}
|
|
185
135
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
136
|
+
/* Header rhythm stays skin with sections.css (deferred until the split layout
|
|
137
|
+
* + sections promote together). */
|
|
190
138
|
[data-section="header"] {
|
|
191
139
|
gap: 0.375rem;
|
|
192
140
|
margin-bottom: 1.5rem;
|
|
193
141
|
}
|
|
194
142
|
}
|
|
143
|
+
|
|
144
|
+
}
|
|
@@ -1,66 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* ─── Section Anatomy Dimension — skin ──────────────────────────────────
|
|
3
|
+
* Zone rhythm (margins, gaps, padding), typography, and borders for the 6
|
|
4
|
+
* standard section roles. The flex zone *containers* (header / preamble /
|
|
5
|
+
* footer) live in @refrakt-md/skeleton (dimensions/sections.css). Rhythm stays
|
|
6
|
+
* here so rune zone overrides resolve against it by source order.
|
|
6
7
|
* ────────────────────────────────────────────────────────────────────── */
|
|
7
8
|
|
|
8
9
|
/* ─── Header: chrome metadata row (badges, status, icons) ────────── */
|
|
9
|
-
|
|
10
10
|
[data-section="header"] {
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-wrap: wrap;
|
|
13
|
-
align-items: center;
|
|
14
11
|
gap: 0.5rem;
|
|
15
12
|
margin-bottom: 3rem;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
15
|
/* ─── Preamble: intro section (eyebrow, headline, blurb) ─────────── */
|
|
19
|
-
|
|
20
16
|
[data-section="preamble"] {
|
|
21
|
-
display: flex;
|
|
22
|
-
flex-direction: column;
|
|
23
17
|
gap: 0.25rem;
|
|
24
18
|
}
|
|
25
19
|
|
|
26
20
|
/* ─── Title: primary heading ──────────────────────────────────────── */
|
|
27
|
-
|
|
28
21
|
/* The size rides --rf-title-size (set per density root in density.css) so a
|
|
29
|
-
* nested rune's own density re-declares it
|
|
30
|
-
*
|
|
31
|
-
* (e.g. .rf-hero__headline) outranks the bare attribute selector. The old
|
|
32
|
-
* `[data-density="compact"] [data-section="title"]` descendant rule leaked
|
|
33
|
-
* through nested densities AND beat per-rune title sizes. */
|
|
22
|
+
* nested rune's own density re-declares it, and a rune's own title CSS
|
|
23
|
+
* (e.g. .rf-hero__headline) outranks the bare attribute selector. */
|
|
34
24
|
[data-section="title"] {
|
|
35
25
|
font-family: var(--rf-font-sans);
|
|
36
|
-
font-size: var(--rf-title-size,
|
|
37
|
-
font-weight:
|
|
38
|
-
line-height:
|
|
26
|
+
font-size: var(--rf-title-size, var(--rf-text-2xl));
|
|
27
|
+
font-weight: var(--rf-weight-bold);
|
|
28
|
+
line-height: var(--rf-leading-tight);
|
|
39
29
|
color: var(--rf-color-text);
|
|
40
30
|
margin: 0;
|
|
41
31
|
}
|
|
42
32
|
|
|
43
33
|
/* ─── Description: secondary text ─────────────────────────────────── */
|
|
44
|
-
|
|
45
34
|
[data-section="description"] {
|
|
46
|
-
font-size:
|
|
47
|
-
line-height:
|
|
35
|
+
font-size: var(--rf-text);
|
|
36
|
+
line-height: var(--rf-leading-normal);
|
|
48
37
|
color: var(--rf-color-muted);
|
|
49
38
|
margin: var(--rf-spacing-xs) 0 var(--rf-spacing-md);
|
|
50
39
|
}
|
|
51
40
|
|
|
52
41
|
/* ─── Body: main content ──────────────────────────────────────────── */
|
|
53
|
-
|
|
54
42
|
[data-section="body"] {
|
|
55
|
-
line-height:
|
|
43
|
+
line-height: var(--rf-leading-relaxed);
|
|
56
44
|
color: var(--rf-color-text);
|
|
57
45
|
}
|
|
58
46
|
|
|
59
47
|
/* ─── Footer: actions and links ───────────────────────────────────── */
|
|
60
|
-
|
|
61
48
|
[data-section="footer"] {
|
|
62
|
-
display: flex;
|
|
63
|
-
flex-wrap: wrap;
|
|
64
49
|
gap: var(--rf-spacing-sm);
|
|
65
50
|
margin-top: var(--rf-spacing-md);
|
|
66
51
|
padding-top: var(--rf-spacing-sm);
|
|
@@ -68,10 +53,11 @@
|
|
|
68
53
|
}
|
|
69
54
|
|
|
70
55
|
/* ─── Media: visual content ───────────────────────────────────────── */
|
|
71
|
-
|
|
72
56
|
[data-section="media"] {
|
|
73
57
|
/* Media zones manage their own spacing via their layout (split gap, cell
|
|
74
58
|
* padding, flow margins); a blanket block margin here misaligns media in
|
|
75
59
|
* flex/beside layouts, so keep it neutral. */
|
|
76
60
|
margin: 0;
|
|
77
61
|
}
|
|
62
|
+
|
|
63
|
+
}
|
|
@@ -1,30 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[data-sequence="numbered"] > li {
|
|
11
|
-
counter-increment: sequence;
|
|
12
|
-
position: relative;
|
|
13
|
-
padding-left: 2.25rem;
|
|
14
|
-
}
|
|
15
|
-
|
|
1
|
+
@layer skin {
|
|
2
|
+
/* === Sequential Items — skin ===
|
|
3
|
+
* The connector lines (borders), the marker chrome (fill, radius, shadow), the
|
|
4
|
+
* counter type, and the layout gaps. The counter mechanism, list resets, item
|
|
5
|
+
* geometry, and marker box placement live in @refrakt-md/skeleton
|
|
6
|
+
* (dimensions/sequence.css). */
|
|
7
|
+
|
|
8
|
+
/* Numbered — counter circle chrome + type. */
|
|
16
9
|
[data-sequence="numbered"] > li::before {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
left: 0;
|
|
20
|
-
top: 0.625rem;
|
|
21
|
-
width: 1.5rem;
|
|
22
|
-
height: 1.5rem;
|
|
23
|
-
display: flex;
|
|
24
|
-
align-items: center;
|
|
25
|
-
justify-content: center;
|
|
26
|
-
font-size: 0.75rem;
|
|
27
|
-
font-weight: 700;
|
|
10
|
+
font-size: var(--rf-text-xs);
|
|
11
|
+
font-weight: var(--rf-weight-bold);
|
|
28
12
|
font-variant-numeric: tabular-nums;
|
|
29
13
|
color: var(--rf-color-primary);
|
|
30
14
|
background: var(--rf-color-surface-active);
|
|
@@ -35,95 +19,46 @@
|
|
|
35
19
|
border-top: 1px solid var(--rf-color-border);
|
|
36
20
|
}
|
|
37
21
|
|
|
38
|
-
/* Connected vertical — line
|
|
39
|
-
[data-sequence="connected"] {
|
|
40
|
-
list-style: none;
|
|
41
|
-
padding-left: 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
22
|
+
/* Connected vertical — the line is a left border; the dot is the marker. */
|
|
44
23
|
[data-sequence="connected"] > li {
|
|
45
|
-
position: relative;
|
|
46
|
-
padding-left: 2rem;
|
|
47
|
-
padding-bottom: 2rem;
|
|
48
24
|
border-left: 2px solid var(--rf-color-border);
|
|
49
|
-
margin-left: 0.375rem;
|
|
50
25
|
}
|
|
51
26
|
|
|
52
27
|
[data-sequence="connected"] > li:last-child {
|
|
53
28
|
border-left-color: transparent;
|
|
54
|
-
padding-bottom: 0;
|
|
55
29
|
}
|
|
56
30
|
|
|
57
31
|
[data-sequence="connected"] > li::before {
|
|
58
|
-
content: '';
|
|
59
|
-
position: absolute;
|
|
60
|
-
left: -0.4375rem;
|
|
61
|
-
top: 0.25rem;
|
|
62
|
-
width: 0.75rem;
|
|
63
|
-
height: 0.75rem;
|
|
64
32
|
border-radius: 50%;
|
|
65
33
|
background: var(--rf-color-primary);
|
|
66
34
|
border: 2px solid var(--rf-color-bg);
|
|
67
35
|
box-shadow: 0 0 0 2px var(--rf-color-primary);
|
|
68
36
|
}
|
|
69
37
|
|
|
70
|
-
/* Connected horizontal — line
|
|
38
|
+
/* Connected horizontal — the line moves to the top border; gap spaces the items. */
|
|
71
39
|
[data-sequence="connected"][data-sequence-direction="horizontal"] {
|
|
72
|
-
display: flex;
|
|
73
40
|
gap: 2rem;
|
|
74
|
-
overflow-x: auto;
|
|
75
41
|
}
|
|
76
42
|
|
|
77
43
|
[data-sequence="connected"][data-sequence-direction="horizontal"] > li {
|
|
78
|
-
position: relative;
|
|
79
|
-
min-width: 12rem;
|
|
80
|
-
padding-top: 1.5rem;
|
|
81
|
-
padding-left: 0;
|
|
82
|
-
padding-bottom: 0;
|
|
83
44
|
border-left: none;
|
|
84
45
|
border-top: 2px solid var(--rf-color-border);
|
|
85
|
-
margin-left: 0;
|
|
86
46
|
}
|
|
87
47
|
|
|
88
48
|
[data-sequence="connected"][data-sequence-direction="horizontal"] > li:last-child {
|
|
89
49
|
border-top-color: var(--rf-color-border);
|
|
90
50
|
}
|
|
91
51
|
|
|
92
|
-
[data-sequence="connected"][data-sequence-direction="horizontal"] > li::before {
|
|
93
|
-
left: 0.5rem;
|
|
94
|
-
top: -0.4375rem;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/* Plain — no indicators, just ordered semantics */
|
|
98
|
-
[data-sequence="plain"] {
|
|
99
|
-
list-style: none;
|
|
100
|
-
padding-left: 0;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
52
|
/* === Density interaction === */
|
|
104
53
|
|
|
105
|
-
/* Compact: smaller
|
|
106
|
-
[data-density="compact"] [data-sequence="numbered"] > li {
|
|
107
|
-
padding-left: 1.75rem;
|
|
108
|
-
}
|
|
109
|
-
|
|
54
|
+
/* Compact: smaller circle keeps the same type scale. */
|
|
110
55
|
[data-density="compact"] [data-sequence="numbered"] > li::before {
|
|
111
|
-
|
|
112
|
-
height: 1.25rem;
|
|
113
|
-
font-size: 0.625rem;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
[data-density="compact"] [data-sequence="connected"] > li {
|
|
117
|
-
padding-bottom: 1rem;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/* Minimal: no indicators, collapsed list */
|
|
121
|
-
[data-density="minimal"] [data-sequence] > li::before {
|
|
122
|
-
display: none;
|
|
56
|
+
font-size: var(--rf-text-xs);
|
|
123
57
|
}
|
|
124
58
|
|
|
59
|
+
/* Minimal: drop the connector line on the collapsed list. */
|
|
125
60
|
[data-density="minimal"] [data-sequence="connected"] > li {
|
|
126
61
|
border-left: none;
|
|
127
|
-
|
|
128
|
-
|
|
62
|
+
}
|
|
63
|
+
|
|
129
64
|
}
|
|
@@ -1,57 +1,40 @@
|
|
|
1
|
-
/* ─── Interactive State Dimension
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/*
|
|
37
|
-
[
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
[role="tabpanel"][data-state="active"] {
|
|
42
|
-
display: block;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/* ─── Selected: user selection highlight ──────────────────────────── */
|
|
46
|
-
|
|
47
|
-
[data-state="selected"] {
|
|
48
|
-
background: var(--rf-color-primary-bg);
|
|
49
|
-
outline: 2px solid var(--rf-color-primary);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* ─── Disabled: dimmed non-interactive ────────────────────────────── */
|
|
53
|
-
|
|
54
|
-
[data-state="disabled"] {
|
|
55
|
-
opacity: 0.4;
|
|
56
|
-
pointer-events: none;
|
|
1
|
+
/* ─── Interactive State Dimension — skin ────────────────────────────────
|
|
2
|
+
* Aesthetic state treatments. The visibility/interaction mechanisms (collapse,
|
|
3
|
+
* panel switching, disabled pointer suppression) are structure and live in
|
|
4
|
+
* `@refrakt-md/skeleton` (styles/dimensions/state.css). Skin sits in @layer skin,
|
|
5
|
+
* ordered after skeleton, so these low-specificity rules win where they overlap. */
|
|
6
|
+
|
|
7
|
+
@layer skin {
|
|
8
|
+
/* Expand animation for opening collapsibles (decorative — the rune works
|
|
9
|
+
* without it; the skeleton supplies the display:block). */
|
|
10
|
+
[data-state="open"] > [class*="__body"],
|
|
11
|
+
[data-state="open"] > [class*="__content"] {
|
|
12
|
+
animation: rf-expand 0.2s ease-out;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@keyframes rf-expand {
|
|
16
|
+
from { opacity: 0; transform: translateY(-0.5rem); }
|
|
17
|
+
to { opacity: 1; transform: translateY(0); }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Active/inactive selection indicators */
|
|
21
|
+
button[data-state="active"] {
|
|
22
|
+
border-bottom: 2px solid var(--rf-color-primary);
|
|
23
|
+
color: var(--rf-color-primary);
|
|
24
|
+
}
|
|
25
|
+
button[data-state="inactive"] {
|
|
26
|
+
border-bottom: 2px solid transparent;
|
|
27
|
+
color: var(--rf-color-muted);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Selected highlight */
|
|
31
|
+
[data-state="selected"] {
|
|
32
|
+
background: var(--rf-color-primary-bg);
|
|
33
|
+
outline: 2px solid var(--rf-color-primary);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Disabled dim (the pointer-events:none is structure) */
|
|
37
|
+
[data-state="disabled"] {
|
|
38
|
+
opacity: 0.4;
|
|
39
|
+
}
|
|
57
40
|
}
|