@refrakt-md/lumina 0.33.0 → 0.35.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 +29 -29
- package/contracts/structures.json +623 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +57 -57
- package/dist/icons.js.map +1 -1
- package/dist/presets/catppuccin.js.map +1 -1
- package/dist/presets/dracula.js.map +1 -1
- package/dist/presets/gruvbox.js.map +1 -1
- package/dist/presets/niwaki.js.map +1 -1
- package/dist/presets/nord.js.map +1 -1
- package/dist/presets/one-dark.js.map +1 -1
- package/dist/presets/solarized.js.map +1 -1
- package/dist/presets/tideline.d.ts.map +1 -1
- package/dist/presets/tideline.js +20 -4
- package/dist/presets/tideline.js.map +1 -1
- package/dist/presets/tokyo-night.js.map +1 -1
- package/dist/tokens.js.map +1 -1
- package/index.css +124 -124
- package/package.json +5 -5
- package/presets.json +61 -13
- package/styles/base/attributes.css +32 -13
- package/styles/dimensions/checklist.css +45 -46
- package/styles/dimensions/cover.css +71 -51
- package/styles/dimensions/density.css +69 -65
- package/styles/dimensions/frame.css +116 -57
- package/styles/dimensions/metadata.css +110 -103
- package/styles/dimensions/motion.css +42 -13
- package/styles/dimensions/reading.css +27 -27
- package/styles/dimensions/sections.css +44 -45
- package/styles/dimensions/sequence.css +56 -57
- package/styles/dimensions/state.css +8 -2
- package/styles/dimensions/substrate.css +82 -58
- package/styles/dimensions/surfaces.css +65 -62
- package/styles/elements/blockquote.css +24 -25
- package/styles/elements/code.css +72 -71
- package/styles/elements/table.css +36 -37
- package/styles/global.css +163 -121
- package/styles/layouts/blog.css +219 -218
- package/styles/layouts/default.css +168 -167
- package/styles/layouts/docs.css +121 -122
- package/styles/layouts/mobile.css +54 -55
- package/styles/layouts/on-this-page.css +46 -47
- package/styles/layouts/plan.css +248 -247
- package/styles/layouts/search.css +142 -140
- package/styles/layouts/split.css +45 -45
- package/styles/layouts/theme-toggle.css +33 -31
- package/styles/layouts/version-switcher.css +38 -37
- package/styles/runes/accordion.css +90 -81
- package/styles/runes/aggregate.css +50 -39
- package/styles/runes/annotate.css +46 -45
- package/styles/runes/api.css +22 -23
- package/styles/runes/audio.css +140 -141
- package/styles/runes/badge.css +12 -13
- package/styles/runes/bar.css +4 -5
- package/styles/runes/bento.css +73 -62
- package/styles/runes/bg.css +62 -47
- package/styles/runes/blog.css +89 -90
- package/styles/runes/bond.css +49 -50
- package/styles/runes/breadcrumb.css +34 -35
- package/styles/runes/budget.css +126 -127
- package/styles/runes/bug.css +28 -27
- package/styles/runes/card.css +63 -60
- package/styles/runes/carousel.css +15 -15
- package/styles/runes/cast.css +50 -51
- package/styles/runes/changelog.css +45 -46
- package/styles/runes/character.css +31 -32
- package/styles/runes/chart.css +194 -106
- package/styles/runes/codegroup.css +109 -100
- package/styles/runes/collection.css +87 -86
- package/styles/runes/compare.css +38 -39
- package/styles/runes/comparison.css +205 -179
- package/styles/runes/conversation.css +36 -33
- package/styles/runes/cta.css +135 -132
- package/styles/runes/datatable.css +84 -83
- package/styles/runes/decision.css +25 -26
- package/styles/runes/design-context.css +21 -23
- package/styles/runes/details.css +26 -27
- package/styles/runes/diagram.css +28 -29
- package/styles/runes/diff.css +75 -72
- package/styles/runes/drawer.css +276 -198
- package/styles/runes/embed.css +20 -21
- package/styles/runes/event.css +35 -36
- package/styles/runes/expand.css +43 -34
- package/styles/runes/faction.css +47 -48
- package/styles/runes/feature.css +119 -112
- package/styles/runes/figure.css +11 -12
- package/styles/runes/file-ref.css +11 -13
- package/styles/runes/form.css +155 -154
- package/styles/runes/gallery.css +59 -60
- package/styles/runes/grid.css +10 -7
- package/styles/runes/hero.css +189 -185
- package/styles/runes/hint.css +57 -58
- package/styles/runes/howto.css +62 -64
- package/styles/runes/itinerary.css +133 -134
- package/styles/runes/juxtapose.css +83 -82
- package/styles/runes/lore.css +36 -34
- package/styles/runes/map.css +106 -99
- package/styles/runes/mediatext.css +30 -27
- package/styles/runes/milestone.css +98 -97
- package/styles/runes/mockup.css +338 -335
- package/styles/runes/nav.css +465 -450
- package/styles/runes/organization.css +23 -20
- package/styles/runes/page-section.css +14 -15
- package/styles/runes/pagination.css +45 -44
- package/styles/runes/palette.css +78 -80
- package/styles/runes/placeholder.css +8 -9
- package/styles/runes/plan-history.css +160 -161
- package/styles/runes/plan-progress.css +15 -16
- package/styles/runes/plan-ref.css +32 -23
- package/styles/runes/playlist.css +106 -107
- package/styles/runes/plot.css +96 -91
- package/styles/runes/preview.css +152 -149
- package/styles/runes/pricing.css +133 -123
- package/styles/runes/progress.css +32 -27
- package/styles/runes/pullquote.css +89 -90
- package/styles/runes/realm.css +47 -48
- package/styles/runes/recipe.css +112 -114
- package/styles/runes/relationships.css +77 -76
- package/styles/runes/reveal.css +90 -79
- package/styles/runes/sandbox.css +59 -60
- package/styles/runes/section.css +57 -50
- package/styles/runes/showcase.css +35 -16
- package/styles/runes/sidenote.css +30 -27
- package/styles/runes/snippet.css +8 -9
- package/styles/runes/spacing.css +86 -88
- package/styles/runes/spec.css +24 -25
- package/styles/runes/steps.css +89 -80
- package/styles/runes/storyboard.css +46 -45
- package/styles/runes/swatch.css +22 -23
- package/styles/runes/symbol.css +117 -118
- package/styles/runes/tabs.css +88 -79
- package/styles/runes/testimonial.css +43 -44
- package/styles/runes/textblock.css +32 -28
- package/styles/runes/timeline.css +63 -64
- package/styles/runes/tint.css +214 -215
- package/styles/runes/toc.css +40 -41
- package/styles/runes/track.css +89 -90
- package/styles/runes/typography.css +89 -91
- package/styles/runes/work.css +47 -36
- package/styles/runes/xref.css +21 -22
package/styles/runes/plot.css
CHANGED
|
@@ -1,101 +1,106 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
.rf-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
.rf-plot__title {
|
|
3
|
+
/* No `font-size` — see the note on .rf-lore__title. This rule was *live*
|
|
4
|
+
under its old `[property="name"]` selector, so plot's prominence axis and
|
|
5
|
+
density ramp have both been inert: `{% plot prominence="display" %}` did
|
|
6
|
+
nothing. The guard could not see it because the selector named the
|
|
7
|
+
schema.org channel rather than the BEM slot. */
|
|
8
|
+
font-weight: var(--rf-weight-bold);
|
|
9
|
+
margin-bottom: 0.5rem;
|
|
10
|
+
color: var(--rf-color-text);
|
|
11
|
+
}
|
|
8
12
|
|
|
9
|
-
/* Description */
|
|
10
|
-
.rf-plot > p {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
13
|
+
/* Description */
|
|
14
|
+
.rf-plot > p {
|
|
15
|
+
color: var(--rf-color-muted);
|
|
16
|
+
margin-bottom: 1rem;
|
|
17
|
+
margin-top: 0;
|
|
18
|
+
}
|
|
15
19
|
|
|
16
|
-
/* Beats list */
|
|
17
|
-
.rf-plot ol {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
20
|
+
/* Beats list */
|
|
21
|
+
.rf-plot ol {
|
|
22
|
+
padding-left: 0;
|
|
23
|
+
margin: 1rem 0 0;
|
|
24
|
+
}
|
|
21
25
|
|
|
22
|
-
/* Beat — all variants use left padding with dot at left: 0 */
|
|
23
|
-
.rf-beat {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
.rf-beat + .rf-beat {
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
.rf-beat::before {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
.rf-beat > span[data-field="label"] {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
.rf-beat__body {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
.rf-beat__body p {
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.rf-plot--linear ol {
|
|
51
|
-
margin-top: 1.5rem;
|
|
52
|
-
}
|
|
53
|
-
/* Linear variant — connector line matching timeline pattern */
|
|
54
|
-
.rf-plot--linear .rf-beat {
|
|
55
|
-
padding: 0 0 2rem 2rem;
|
|
56
|
-
border-left: 2px solid var(--rf-color-border);
|
|
57
|
-
margin-left: 0.375rem;
|
|
58
|
-
}
|
|
59
|
-
.rf-plot--linear .rf-beat > span[data-field="label"] {
|
|
60
|
-
line-height: 1;
|
|
61
|
-
margin-top: -0.5rem;
|
|
62
|
-
}
|
|
63
|
-
.rf-plot--linear .rf-beat + .rf-beat {
|
|
64
|
-
border-top: none;
|
|
65
|
-
}
|
|
66
|
-
.rf-plot--linear .rf-beat:last-child {
|
|
67
|
-
border-left-color: transparent;
|
|
68
|
-
padding-bottom: 0;
|
|
69
|
-
}
|
|
26
|
+
/* Beat — all variants use left padding with dot at left: 0 */
|
|
27
|
+
.rf-beat {
|
|
28
|
+
padding: 0.625rem 0 0.625rem 2.25rem;
|
|
29
|
+
}
|
|
30
|
+
.rf-beat + .rf-beat {
|
|
31
|
+
border-top: 1px solid var(--rf-color-border);
|
|
32
|
+
}
|
|
33
|
+
.rf-beat::before {
|
|
34
|
+
border-radius: 50%;
|
|
35
|
+
background: var(--rf-color-surface-active);
|
|
36
|
+
border: 2px solid var(--rf-color-bg);
|
|
37
|
+
box-shadow: 0 0 0 2px var(--rf-color-surface-active);
|
|
38
|
+
}
|
|
39
|
+
.rf-beat > span[data-field="label"] {
|
|
40
|
+
font-weight: var(--rf-weight-semibold);
|
|
41
|
+
font-size: var(--rf-text);
|
|
42
|
+
color: var(--rf-color-text);
|
|
43
|
+
}
|
|
44
|
+
.rf-beat__body {
|
|
45
|
+
margin-top: 0.25rem;
|
|
46
|
+
font-size: var(--rf-text);
|
|
47
|
+
color: var(--rf-color-muted);
|
|
48
|
+
line-height: var(--rf-leading-relaxed);
|
|
49
|
+
}
|
|
50
|
+
.rf-beat__body p {
|
|
51
|
+
margin: 0;
|
|
52
|
+
}
|
|
70
53
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
54
|
+
.rf-plot--linear ol {
|
|
55
|
+
margin-top: 1.5rem;
|
|
56
|
+
}
|
|
57
|
+
/* Linear variant — connector line matching timeline pattern */
|
|
58
|
+
.rf-plot--linear .rf-beat {
|
|
59
|
+
padding: 0 0 2rem 2rem;
|
|
60
|
+
border-left: 2px solid var(--rf-color-border);
|
|
61
|
+
margin-left: 0.375rem;
|
|
62
|
+
}
|
|
63
|
+
.rf-plot--linear .rf-beat > span[data-field="label"] {
|
|
64
|
+
line-height: 1;
|
|
65
|
+
margin-top: -0.5rem;
|
|
66
|
+
}
|
|
67
|
+
.rf-plot--linear .rf-beat + .rf-beat {
|
|
68
|
+
border-top: none;
|
|
69
|
+
}
|
|
70
|
+
.rf-plot--linear .rf-beat:last-child {
|
|
71
|
+
border-left-color: transparent;
|
|
72
|
+
padding-bottom: 0;
|
|
73
|
+
}
|
|
79
74
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
75
|
+
/* Beat status variants */
|
|
76
|
+
.rf-beat--complete::before {
|
|
77
|
+
background: var(--rf-color-success);
|
|
78
|
+
box-shadow: 0 0 0 2px var(--rf-color-success);
|
|
79
|
+
}
|
|
80
|
+
.rf-beat--complete > span[data-field="label"] {
|
|
81
|
+
color: var(--rf-color-muted);
|
|
82
|
+
}
|
|
87
83
|
|
|
88
|
-
.rf-beat--
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
.rf-beat--active::before {
|
|
85
|
+
background: var(--rf-color-primary);
|
|
86
|
+
box-shadow:
|
|
87
|
+
0 0 0 2px var(--rf-color-primary),
|
|
88
|
+
0 0 0 5px color-mix(in srgb, var(--rf-color-primary) 20%, transparent);
|
|
89
|
+
}
|
|
90
|
+
.rf-beat--active > span[data-field="label"] {
|
|
91
|
+
color: var(--rf-color-primary);
|
|
92
|
+
}
|
|
91
93
|
|
|
92
|
-
.rf-beat--
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
.rf-beat--abandoned::before {
|
|
97
|
-
background: var(--rf-color-muted);
|
|
98
|
-
box-shadow: 0 0 0 2px var(--rf-color-muted);
|
|
99
|
-
}
|
|
94
|
+
.rf-beat--planned::before {
|
|
95
|
+
background: var(--rf-color-surface-active);
|
|
96
|
+
}
|
|
100
97
|
|
|
98
|
+
.rf-beat--abandoned > span[data-field="label"] {
|
|
99
|
+
text-decoration: line-through;
|
|
100
|
+
color: var(--rf-color-muted);
|
|
101
|
+
}
|
|
102
|
+
.rf-beat--abandoned::before {
|
|
103
|
+
background: var(--rf-color-muted);
|
|
104
|
+
box-shadow: 0 0 0 2px var(--rf-color-muted);
|
|
105
|
+
}
|
|
101
106
|
}
|
package/styles/runes/preview.css
CHANGED
|
@@ -1,173 +1,176 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Preview — Component showcase with theme toggle and width control */
|
|
3
|
-
.rf-preview {
|
|
4
|
-
|
|
5
|
-
}
|
|
2
|
+
/* Preview — Component showcase with theme toggle and width control */
|
|
3
|
+
.rf-preview {
|
|
4
|
+
margin: 2rem 0;
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
/* Toolbar — transparent, controls float above the canvas (flush to the canvas
|
|
7
|
+
/* Toolbar — transparent, controls float above the canvas (flush to the canvas
|
|
8
8
|
* edges, no horizontal inset). */
|
|
9
|
-
.rf-preview__toolbar {
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
.rf-preview__title {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
9
|
+
.rf-preview__toolbar {
|
|
10
|
+
padding: 0.25rem 0 0.5rem;
|
|
11
|
+
}
|
|
12
|
+
.rf-preview__title {
|
|
13
|
+
font-size: var(--rf-text-xs);
|
|
14
|
+
font-weight: var(--rf-weight-semibold);
|
|
15
|
+
color: var(--rf-color-muted);
|
|
16
|
+
text-transform: uppercase;
|
|
17
|
+
letter-spacing: var(--rf-tracking-wider);
|
|
18
|
+
}
|
|
19
19
|
|
|
20
|
-
/* Toolbar groups — view-mode toggle on the left, preview-only controls (viewport
|
|
20
|
+
/* Toolbar groups — view-mode toggle on the left, preview-only controls (viewport
|
|
21
21
|
* + theme) on the right. */
|
|
22
|
-
.rf-preview__controls {
|
|
23
|
-
|
|
24
|
-
}
|
|
22
|
+
.rf-preview__controls {
|
|
23
|
+
gap: 0.5rem;
|
|
24
|
+
}
|
|
25
25
|
|
|
26
|
-
/* View toggle pill (code/preview) */
|
|
27
|
-
.rf-preview__view-toggle {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
26
|
+
/* View toggle pill (code/preview) */
|
|
27
|
+
.rf-preview__view-toggle {
|
|
28
|
+
gap: 0.125rem;
|
|
29
|
+
background: var(--rf-color-surface-active);
|
|
30
|
+
border-radius: var(--rf-radius-full);
|
|
31
|
+
padding: 0.125rem;
|
|
32
|
+
}
|
|
33
33
|
|
|
34
|
-
/* Theme toggle pill */
|
|
35
|
-
.rf-preview__toggle {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
.rf-preview__toggle-btn {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
/* Theme toggle pill */
|
|
35
|
+
.rf-preview__toggle {
|
|
36
|
+
gap: 0.125rem;
|
|
37
|
+
background: var(--rf-color-surface-active);
|
|
38
|
+
border-radius: var(--rf-radius-full);
|
|
39
|
+
padding: 0.125rem;
|
|
40
|
+
}
|
|
41
|
+
.rf-preview__toggle-btn {
|
|
42
|
+
border: none;
|
|
43
|
+
border-radius: var(--rf-radius-full);
|
|
44
|
+
background: transparent;
|
|
45
|
+
color: var(--rf-color-muted);
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
transition:
|
|
48
|
+
background 150ms ease,
|
|
49
|
+
color 150ms ease;
|
|
50
|
+
padding: 0;
|
|
51
|
+
}
|
|
52
|
+
.rf-preview__toggle-btn:hover {
|
|
53
|
+
color: var(--rf-color-text);
|
|
54
|
+
}
|
|
55
|
+
.rf-preview__toggle-btn--active {
|
|
56
|
+
background: var(--rf-color-bg);
|
|
57
|
+
color: var(--rf-color-text);
|
|
58
|
+
box-shadow: var(--rf-shadow-xs);
|
|
59
|
+
}
|
|
58
60
|
|
|
59
|
-
/* Canvas — framed area for the preview content */
|
|
60
|
-
.rf-preview__canvas {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
/* Centre a standalone mockup whose `data-fit="none"` makes it inline-block —
|
|
61
|
+
/* Canvas — framed area for the preview content */
|
|
62
|
+
.rf-preview__canvas {
|
|
63
|
+
padding: 2rem 2.5rem;
|
|
64
|
+
background: var(--rf-color-bg);
|
|
65
|
+
color: var(--rf-color-text);
|
|
66
|
+
border: 1px solid var(--rf-color-border);
|
|
67
|
+
border-radius: var(--rf-radius-lg);
|
|
68
|
+
}
|
|
69
|
+
/* Centre a standalone mockup whose `data-fit="none"` makes it inline-block —
|
|
68
70
|
* margin-inline auto can't centre an inline-block, only its parent's text
|
|
69
71
|
* alignment can. Scoped to a *direct-child* mockup so a card or bento cell
|
|
70
72
|
* that happens to hold a mockup doesn't get its body text centred too. */
|
|
71
|
-
.rf-preview__canvas:has(> .rf-mockup) {
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
.rf-preview__canvas > *:first-child {
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
.rf-preview__canvas > *:last-child {
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
.rf-preview__canvas > [data-rune] + [data-rune] {
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/* Viewport simulation toggle pill */
|
|
85
|
-
.rf-preview__viewport-toggle {
|
|
86
|
-
gap: 0.125rem;
|
|
87
|
-
background: var(--rf-color-surface-active);
|
|
88
|
-
border-radius: var(--rf-radius-full);
|
|
89
|
-
padding: 0.125rem;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/* Viewport simulation frame */
|
|
93
|
-
.rf-preview__viewport-frame {
|
|
94
|
-
transition: max-width 300ms ease;
|
|
95
|
-
}
|
|
96
|
-
.rf-preview__viewport-frame--constrained {
|
|
97
|
-
border: 1px dashed var(--rf-color-border);
|
|
98
|
-
border-radius: var(--rf-radius-sm);
|
|
99
|
-
}
|
|
100
|
-
.rf-preview__viewport-label {
|
|
101
|
-
font-size: var(--rf-text-xs);
|
|
102
|
-
color: var(--rf-color-muted);
|
|
103
|
-
font-variant-numeric: tabular-nums;
|
|
104
|
-
}
|
|
73
|
+
.rf-preview__canvas:has(> .rf-mockup) {
|
|
74
|
+
text-align: center;
|
|
75
|
+
}
|
|
76
|
+
.rf-preview__canvas > *:first-child {
|
|
77
|
+
margin-top: 0;
|
|
78
|
+
}
|
|
79
|
+
.rf-preview__canvas > *:last-child {
|
|
80
|
+
margin-bottom: 0;
|
|
81
|
+
}
|
|
82
|
+
.rf-preview__canvas > [data-rune] + [data-rune] {
|
|
83
|
+
margin-top: 0.75rem;
|
|
84
|
+
}
|
|
105
85
|
|
|
106
|
-
/*
|
|
107
|
-
.rf-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
.
|
|
112
|
-
|
|
113
|
-
border-radius: 0;
|
|
114
|
-
}
|
|
115
|
-
.rf-preview__source .rf-codeblock {
|
|
116
|
-
border-radius: 0;
|
|
117
|
-
margin: 0;
|
|
118
|
-
}
|
|
86
|
+
/* Viewport simulation toggle pill */
|
|
87
|
+
.rf-preview__viewport-toggle {
|
|
88
|
+
gap: 0.125rem;
|
|
89
|
+
background: var(--rf-color-surface-active);
|
|
90
|
+
border-radius: var(--rf-radius-full);
|
|
91
|
+
padding: 0.125rem;
|
|
92
|
+
}
|
|
119
93
|
|
|
120
|
-
/*
|
|
121
|
-
.rf-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
cursor: pointer;
|
|
134
|
-
border-bottom: 2px solid transparent;
|
|
135
|
-
transition: color 150ms ease, border-color 150ms ease;
|
|
136
|
-
}
|
|
137
|
-
.rf-preview__source-tab:hover {
|
|
138
|
-
color: var(--rf-color-text);
|
|
139
|
-
}
|
|
140
|
-
.rf-preview__source-tab--active {
|
|
141
|
-
color: var(--rf-color-text);
|
|
142
|
-
border-bottom-color: var(--rf-color-primary);
|
|
143
|
-
}
|
|
94
|
+
/* Viewport simulation frame */
|
|
95
|
+
.rf-preview__viewport-frame {
|
|
96
|
+
transition: max-width 300ms ease;
|
|
97
|
+
}
|
|
98
|
+
.rf-preview__viewport-frame--constrained {
|
|
99
|
+
border: 1px dashed var(--rf-color-border);
|
|
100
|
+
border-radius: var(--rf-radius-sm);
|
|
101
|
+
}
|
|
102
|
+
.rf-preview__viewport-label {
|
|
103
|
+
font-size: var(--rf-text-xs);
|
|
104
|
+
color: var(--rf-color-muted);
|
|
105
|
+
font-variant-numeric: tabular-nums;
|
|
106
|
+
}
|
|
144
107
|
|
|
145
|
-
/*
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
108
|
+
/* Source code view — bordered frame matching the canvas */
|
|
109
|
+
.rf-preview__source {
|
|
110
|
+
border: 1px solid var(--rf-color-border);
|
|
111
|
+
border-radius: var(--rf-radius-lg);
|
|
149
112
|
}
|
|
150
|
-
.rf-
|
|
113
|
+
.rf-preview__source pre {
|
|
114
|
+
margin: 0;
|
|
151
115
|
border-radius: 0;
|
|
152
|
-
border-left: none;
|
|
153
|
-
border-right: none;
|
|
154
|
-
padding: 1.5rem var(--rf-content-padding, 1.5rem);
|
|
155
116
|
}
|
|
156
|
-
.rf-preview__source {
|
|
117
|
+
.rf-preview__source .rf-codeblock {
|
|
157
118
|
border-radius: 0;
|
|
158
|
-
|
|
159
|
-
|
|
119
|
+
margin: 0;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Source tabs (data-source panels) */
|
|
123
|
+
.rf-preview__source-tabs {
|
|
124
|
+
gap: 0;
|
|
125
|
+
background: var(--rf-color-surface);
|
|
126
|
+
border-radius: var(--rf-radius-lg);
|
|
160
127
|
}
|
|
161
|
-
|
|
128
|
+
.rf-preview__source-tab {
|
|
129
|
+
padding: 0.5rem 1rem;
|
|
130
|
+
border: none;
|
|
131
|
+
background: transparent;
|
|
132
|
+
color: var(--rf-color-muted);
|
|
133
|
+
font-size: var(--rf-text-xs);
|
|
134
|
+
font-weight: var(--rf-weight-medium);
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
border-bottom: 2px solid transparent;
|
|
137
|
+
transition:
|
|
138
|
+
color 150ms ease,
|
|
139
|
+
border-color 150ms ease;
|
|
140
|
+
}
|
|
141
|
+
.rf-preview__source-tab:hover {
|
|
142
|
+
color: var(--rf-color-text);
|
|
143
|
+
}
|
|
144
|
+
.rf-preview__source-tab--active {
|
|
145
|
+
color: var(--rf-color-text);
|
|
146
|
+
border-bottom-color: var(--rf-color-primary);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Small containers: edge-to-edge bleed */
|
|
150
|
+
@container (max-width: 1280px) {
|
|
151
|
+
.rf-preview__toolbar {
|
|
152
|
+
padding: 0.25rem var(--rf-content-padding, 1.5rem) 0.5rem;
|
|
153
|
+
}
|
|
154
|
+
.rf-preview__canvas {
|
|
155
|
+
border-radius: 0;
|
|
156
|
+
border-left: none;
|
|
157
|
+
border-right: none;
|
|
158
|
+
padding: 1.5rem var(--rf-content-padding, 1.5rem);
|
|
159
|
+
}
|
|
160
|
+
.rf-preview__source {
|
|
161
|
+
border-radius: 0;
|
|
162
|
+
border-left: none;
|
|
163
|
+
border-right: none;
|
|
164
|
+
}
|
|
165
|
+
/* Break out of the feature's padding-inline to reach the viewport edges. Stays
|
|
162
166
|
* skin (not skeleton): this overrides the skin rule `.rf-preview { margin: 2rem 0 }`
|
|
163
167
|
* by specificity, and that only wins within the same cascade layer — in
|
|
164
168
|
* @layer skeleton it loses to the skin margin and the bleed is nullified. */
|
|
165
|
-
|
|
166
|
-
|
|
169
|
+
.rf-preview--in-feature {
|
|
170
|
+
margin-inline: calc(-1 * var(--rf-content-gutter, 1.5rem));
|
|
171
|
+
}
|
|
172
|
+
.rf-preview--in-feature .rf-preview__toolbar {
|
|
173
|
+
padding-inline: var(--rf-content-gutter, 1.5rem);
|
|
174
|
+
}
|
|
167
175
|
}
|
|
168
|
-
.rf-preview--in-feature .rf-preview__toolbar {
|
|
169
|
-
padding-inline: var(--rf-content-gutter, 1.5rem);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
176
|
}
|