@refrakt-md/lumina 0.32.0 → 0.34.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 +58 -60
- 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 +32 -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 +92 -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/drawer.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Drawer — addressable modal panel (SPEC-060).
|
|
2
|
+
/* Drawer — addressable modal panel (SPEC-060).
|
|
3
3
|
*
|
|
4
4
|
* Two visual modes ride on the same `.rf-drawer` element:
|
|
5
5
|
*
|
|
@@ -19,230 +19,309 @@
|
|
|
19
19
|
* scroll the page underneath the open dialog.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
.rf-drawer {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
22
|
+
.rf-drawer {
|
|
23
|
+
--rf-drawer-bg: var(--rf-color-surface);
|
|
24
|
+
--rf-drawer-fg: var(--rf-color-text);
|
|
25
|
+
--rf-drawer-border: var(--rf-color-border);
|
|
26
|
+
--rf-drawer-shadow: 0 18px 48px -12px rgb(0 0 0 / 0.35);
|
|
27
|
+
--rf-drawer-gutter: var(--rf-spacing-sm);
|
|
28
|
+
--rf-drawer-radius: var(--rf-radius-md);
|
|
29
|
+
--rf-drawer-anim-duration: 220ms;
|
|
30
|
+
--rf-drawer-anim-ease: cubic-bezier(0.32, 0.72, 0, 1);
|
|
31
|
+
}
|
|
32
32
|
|
|
33
|
-
/* ─── No-JS / in-flow mode ─────────────────────────────────────── */
|
|
33
|
+
/* ─── No-JS / in-flow mode ─────────────────────────────────────── */
|
|
34
34
|
|
|
35
|
-
section.rf-drawer {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
35
|
+
section.rf-drawer {
|
|
36
|
+
margin: var(--rf-spacing-lg) 0;
|
|
37
|
+
padding: var(--rf-spacing-md) var(--rf-spacing-lg);
|
|
38
|
+
background: var(--rf-drawer-bg);
|
|
39
|
+
color: var(--rf-drawer-fg);
|
|
40
|
+
border: 1px solid var(--rf-drawer-border);
|
|
41
|
+
border-left: 4px solid var(--rf-color-primary);
|
|
42
|
+
border-radius: var(--rf-drawer-radius);
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
section.rf-drawer .rf-drawer__header {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
45
|
+
section.rf-drawer .rf-drawer__header {
|
|
46
|
+
gap: var(--rf-spacing-sm);
|
|
47
|
+
margin-bottom: var(--rf-spacing-sm);
|
|
48
|
+
}
|
|
49
49
|
|
|
50
|
-
section.rf-drawer .rf-drawer__title {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
50
|
+
section.rf-drawer .rf-drawer__title {
|
|
51
|
+
margin: 0;
|
|
52
|
+
font-size: var(--rf-text);
|
|
53
|
+
font-weight: var(--rf-weight-semibold);
|
|
54
|
+
color: var(--rf-color-primary);
|
|
55
|
+
letter-spacing: var(--rf-tracking-normal);
|
|
56
|
+
}
|
|
57
57
|
|
|
58
|
-
section.rf-drawer .rf-drawer__body > :first-child {
|
|
59
|
-
|
|
58
|
+
section.rf-drawer .rf-drawer__body > :first-child {
|
|
59
|
+
margin-top: 0;
|
|
60
|
+
}
|
|
61
|
+
section.rf-drawer .rf-drawer__body > :last-child {
|
|
62
|
+
margin-bottom: 0;
|
|
63
|
+
}
|
|
60
64
|
|
|
61
|
-
/* In-flow footer — small text, top divider, mirrors the dialog-mode look so
|
|
65
|
+
/* In-flow footer — small text, top divider, mirrors the dialog-mode look so
|
|
62
66
|
* authors get the same chrome whether JS is enhancing or not. */
|
|
63
|
-
section.rf-drawer .rf-drawer__footer {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
section.rf-drawer .rf-drawer__footer > :first-child {
|
|
71
|
-
|
|
67
|
+
section.rf-drawer .rf-drawer__footer {
|
|
68
|
+
margin-top: var(--rf-spacing-md);
|
|
69
|
+
padding-top: var(--rf-spacing-sm);
|
|
70
|
+
border-top: 1px solid var(--rf-drawer-border);
|
|
71
|
+
font-size: var(--rf-text-sm);
|
|
72
|
+
color: var(--rf-color-muted);
|
|
73
|
+
}
|
|
74
|
+
section.rf-drawer .rf-drawer__footer > :first-child {
|
|
75
|
+
margin-top: 0;
|
|
76
|
+
}
|
|
77
|
+
section.rf-drawer .rf-drawer__footer > :last-child {
|
|
78
|
+
margin-bottom: 0;
|
|
79
|
+
}
|
|
72
80
|
|
|
73
|
-
/* ─── JS / dialog mode ─────────────────────────────────────────── */
|
|
81
|
+
/* ─── JS / dialog mode ─────────────────────────────────────────── */
|
|
74
82
|
|
|
75
|
-
/* Dialog base. Crucially the `display: flex` rule below is scoped to the
|
|
83
|
+
/* Dialog base. Crucially the `display: flex` rule below is scoped to the
|
|
76
84
|
* `[open]` state — without that scope, declaring `display: flex` on the
|
|
77
85
|
* bare `dialog.rf-drawer` overrides the browser UA's `display: none` for
|
|
78
86
|
* closed dialogs, so the closed dialog renders visibly as an empty box
|
|
79
87
|
* positioned by the side `inset` rules. */
|
|
80
|
-
dialog.rf-drawer {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
88
|
+
dialog.rf-drawer {
|
|
89
|
+
background: var(--rf-drawer-bg);
|
|
90
|
+
color: var(--rf-drawer-fg);
|
|
91
|
+
border: 1px solid var(--rf-drawer-border);
|
|
92
|
+
border-radius: var(--rf-drawer-radius);
|
|
93
|
+
box-shadow: var(--rf-drawer-shadow);
|
|
94
|
+
padding: 0;
|
|
95
|
+
margin: 0;
|
|
96
|
+
}
|
|
89
97
|
|
|
90
|
-
dialog.rf-drawer::backdrop {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
98
|
+
dialog.rf-drawer::backdrop {
|
|
99
|
+
background: rgb(0 0 0 / 0.35);
|
|
100
|
+
backdrop-filter: blur(2px);
|
|
101
|
+
}
|
|
94
102
|
|
|
95
|
-
dialog.rf-drawer .rf-drawer__header {
|
|
96
|
-
|
|
97
|
-
|
|
103
|
+
dialog.rf-drawer .rf-drawer__header {
|
|
104
|
+
gap: var(--rf-spacing-md);
|
|
105
|
+
/* Reset the generous `[data-section="header"]` bottom margin (3rem) — the
|
|
98
106
|
* dialog chrome spaces the header from the body via the body's own
|
|
99
107
|
* padding, so the section default would push the body off-screen. */
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
dialog.rf-drawer .rf-drawer__title {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
108
|
+
margin: 0;
|
|
109
|
+
padding: var(--rf-spacing-md) var(--rf-spacing-lg);
|
|
110
|
+
border-bottom: 1px solid var(--rf-drawer-border);
|
|
111
|
+
background: var(--rf-drawer-bg);
|
|
112
|
+
}
|
|
113
|
+
dialog.rf-drawer .rf-drawer__title {
|
|
114
|
+
margin: 0;
|
|
115
|
+
font-size: var(--rf-text);
|
|
116
|
+
font-weight: var(--rf-weight-semibold);
|
|
117
|
+
}
|
|
110
118
|
|
|
111
|
-
dialog.rf-drawer .rf-drawer__close {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
dialog.rf-drawer .rf-drawer__close:hover {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
119
|
+
dialog.rf-drawer .rf-drawer__close {
|
|
120
|
+
appearance: none;
|
|
121
|
+
background: transparent;
|
|
122
|
+
border: 0;
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
color: var(--rf-color-muted);
|
|
125
|
+
padding: var(--rf-spacing-xs) var(--rf-spacing-sm);
|
|
126
|
+
font-size: var(--rf-text-xl);
|
|
127
|
+
line-height: 1;
|
|
128
|
+
border-radius: var(--rf-radius-sm);
|
|
129
|
+
}
|
|
130
|
+
dialog.rf-drawer .rf-drawer__close:hover {
|
|
131
|
+
color: var(--rf-color-text);
|
|
132
|
+
background: var(--rf-color-surface-hover);
|
|
133
|
+
}
|
|
126
134
|
|
|
127
|
-
dialog.rf-drawer .rf-drawer__body {
|
|
128
|
-
|
|
129
|
-
}
|
|
135
|
+
dialog.rf-drawer .rf-drawer__body {
|
|
136
|
+
padding: var(--rf-spacing-md) var(--rf-spacing-lg);
|
|
137
|
+
}
|
|
130
138
|
|
|
131
|
-
/* Dialog footer — small text, top divider, pinned at bottom via flex.
|
|
139
|
+
/* Dialog footer — small text, top divider, pinned at bottom via flex.
|
|
132
140
|
* Stays visible regardless of body scroll depth so links like "View
|
|
133
141
|
* source on GitHub →" (the SPEC-078 use case) are always one tap away. */
|
|
134
|
-
dialog.rf-drawer .rf-drawer__footer {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
dialog.rf-drawer .rf-drawer__footer > :first-child {
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
dialog.rf-drawer .rf-drawer__footer {
|
|
143
|
+
padding: var(--rf-spacing-sm) var(--rf-spacing-lg);
|
|
144
|
+
border-top: 1px solid var(--rf-drawer-border);
|
|
145
|
+
background: var(--rf-drawer-bg);
|
|
146
|
+
font-size: var(--rf-text-sm);
|
|
147
|
+
color: var(--rf-color-muted);
|
|
148
|
+
}
|
|
149
|
+
dialog.rf-drawer .rf-drawer__footer > :first-child {
|
|
150
|
+
margin-top: 0;
|
|
151
|
+
}
|
|
152
|
+
dialog.rf-drawer .rf-drawer__footer > :last-child {
|
|
153
|
+
margin-bottom: 0;
|
|
154
|
+
}
|
|
155
|
+
dialog.rf-drawer .rf-drawer__footer p {
|
|
156
|
+
margin: 0;
|
|
157
|
+
}
|
|
144
158
|
|
|
145
|
-
/* Collapse the vertical margins of first / last children inside the body
|
|
159
|
+
/* Collapse the vertical margins of first / last children inside the body
|
|
146
160
|
* so the drawer's own padding is what spaces content from the chrome —
|
|
147
161
|
* otherwise a `<figure>` or `<p>` with its own top/bottom margin stacks
|
|
148
162
|
* on top of the body's padding and the content looks adrift. A snippet
|
|
149
163
|
* inside a drawer compiles to `body > .rf-codeblock > .rf-snippet > <pre>`,
|
|
150
164
|
* so the margin-zero walk reaches two levels deep to catch the figure. */
|
|
151
|
-
dialog.rf-drawer .rf-drawer__body > :first-child,
|
|
152
|
-
dialog.rf-drawer .rf-drawer__body > :first-child > :first-child {
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
dialog.rf-drawer .rf-drawer__body > :last-child,
|
|
156
|
-
dialog.rf-drawer .rf-drawer__body > :last-child > :last-child {
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
dialog.rf-drawer[data-side="right"][open]:not([data-state="closing"]) {
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
dialog.rf-drawer[data-side="right"][data-state="closing"] {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
dialog.rf-drawer[data-side="bottom"][data-state="closing"] {
|
|
181
|
-
|
|
182
|
-
}
|
|
165
|
+
dialog.rf-drawer .rf-drawer__body > :first-child,
|
|
166
|
+
dialog.rf-drawer .rf-drawer__body > :first-child > :first-child {
|
|
167
|
+
margin-top: 0;
|
|
168
|
+
}
|
|
169
|
+
dialog.rf-drawer .rf-drawer__body > :last-child,
|
|
170
|
+
dialog.rf-drawer .rf-drawer__body > :last-child > :last-child {
|
|
171
|
+
margin-bottom: 0;
|
|
172
|
+
}
|
|
173
|
+
dialog.rf-drawer[data-side="right"][open]:not([data-state="closing"]) {
|
|
174
|
+
animation: rf-drawer-slide-in-right var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease);
|
|
175
|
+
}
|
|
176
|
+
dialog.rf-drawer[data-side="right"][data-state="closing"] {
|
|
177
|
+
animation: rf-drawer-slide-out-right var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease)
|
|
178
|
+
forwards;
|
|
179
|
+
}
|
|
180
|
+
dialog.rf-drawer[data-side="left"][open]:not([data-state="closing"]) {
|
|
181
|
+
animation: rf-drawer-slide-in-left var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease);
|
|
182
|
+
}
|
|
183
|
+
dialog.rf-drawer[data-side="left"][data-state="closing"] {
|
|
184
|
+
animation: rf-drawer-slide-out-left var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease)
|
|
185
|
+
forwards;
|
|
186
|
+
}
|
|
187
|
+
dialog.rf-drawer[data-side="top"][open]:not([data-state="closing"]) {
|
|
188
|
+
animation: rf-drawer-slide-in-top var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease);
|
|
189
|
+
}
|
|
190
|
+
dialog.rf-drawer[data-side="top"][data-state="closing"] {
|
|
191
|
+
animation: rf-drawer-slide-out-top var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease)
|
|
192
|
+
forwards;
|
|
193
|
+
}
|
|
194
|
+
dialog.rf-drawer[data-side="bottom"][open]:not([data-state="closing"]) {
|
|
195
|
+
animation: rf-drawer-slide-in-bottom var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease);
|
|
196
|
+
}
|
|
197
|
+
dialog.rf-drawer[data-side="bottom"][data-state="closing"] {
|
|
198
|
+
animation: rf-drawer-slide-out-bottom var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease)
|
|
199
|
+
forwards;
|
|
200
|
+
}
|
|
183
201
|
|
|
184
|
-
dialog.rf-drawer[open]:not([data-state="closing"])::backdrop {
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
dialog.rf-drawer[data-state="closing"]::backdrop {
|
|
188
|
-
|
|
189
|
-
|
|
202
|
+
dialog.rf-drawer[open]:not([data-state="closing"])::backdrop {
|
|
203
|
+
animation: rf-drawer-backdrop-in var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease);
|
|
204
|
+
}
|
|
205
|
+
dialog.rf-drawer[data-state="closing"]::backdrop {
|
|
206
|
+
animation: rf-drawer-backdrop-out var(--rf-drawer-anim-duration) var(--rf-drawer-anim-ease)
|
|
207
|
+
forwards;
|
|
208
|
+
}
|
|
190
209
|
|
|
191
|
-
@keyframes rf-drawer-slide-in-right {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
210
|
+
@keyframes rf-drawer-slide-in-right {
|
|
211
|
+
from {
|
|
212
|
+
transform: translateX(calc(100% + var(--rf-drawer-gutter)));
|
|
213
|
+
opacity: 0;
|
|
214
|
+
}
|
|
215
|
+
to {
|
|
216
|
+
transform: translateX(0);
|
|
217
|
+
opacity: 1;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
@keyframes rf-drawer-slide-in-left {
|
|
221
|
+
from {
|
|
222
|
+
transform: translateX(calc(-100% - var(--rf-drawer-gutter)));
|
|
223
|
+
opacity: 0;
|
|
224
|
+
}
|
|
225
|
+
to {
|
|
226
|
+
transform: translateX(0);
|
|
227
|
+
opacity: 1;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
@keyframes rf-drawer-slide-in-top {
|
|
231
|
+
from {
|
|
232
|
+
transform: translateY(calc(-100% - var(--rf-drawer-gutter)));
|
|
233
|
+
opacity: 0;
|
|
234
|
+
}
|
|
235
|
+
to {
|
|
236
|
+
transform: translateY(0);
|
|
237
|
+
opacity: 1;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
@keyframes rf-drawer-slide-in-bottom {
|
|
241
|
+
from {
|
|
242
|
+
transform: translateY(calc(100% + var(--rf-drawer-gutter)));
|
|
243
|
+
opacity: 0;
|
|
244
|
+
}
|
|
245
|
+
to {
|
|
246
|
+
transform: translateY(0);
|
|
247
|
+
opacity: 1;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
@keyframes rf-drawer-backdrop-in {
|
|
251
|
+
from {
|
|
252
|
+
background: rgb(0 0 0 / 0);
|
|
253
|
+
backdrop-filter: blur(0);
|
|
254
|
+
}
|
|
255
|
+
to {
|
|
256
|
+
background: rgb(0 0 0 / 0.35);
|
|
257
|
+
backdrop-filter: blur(2px);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
211
260
|
|
|
212
|
-
@keyframes rf-drawer-slide-out-right {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
261
|
+
@keyframes rf-drawer-slide-out-right {
|
|
262
|
+
from {
|
|
263
|
+
transform: translateX(0);
|
|
264
|
+
opacity: 1;
|
|
265
|
+
}
|
|
266
|
+
to {
|
|
267
|
+
transform: translateX(calc(100% + var(--rf-drawer-gutter)));
|
|
268
|
+
opacity: 0;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
@keyframes rf-drawer-slide-out-left {
|
|
272
|
+
from {
|
|
273
|
+
transform: translateX(0);
|
|
274
|
+
opacity: 1;
|
|
275
|
+
}
|
|
276
|
+
to {
|
|
277
|
+
transform: translateX(calc(-100% - var(--rf-drawer-gutter)));
|
|
278
|
+
opacity: 0;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
@keyframes rf-drawer-slide-out-top {
|
|
282
|
+
from {
|
|
283
|
+
transform: translateY(0);
|
|
284
|
+
opacity: 1;
|
|
285
|
+
}
|
|
286
|
+
to {
|
|
287
|
+
transform: translateY(calc(-100% - var(--rf-drawer-gutter)));
|
|
288
|
+
opacity: 0;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
@keyframes rf-drawer-slide-out-bottom {
|
|
292
|
+
from {
|
|
293
|
+
transform: translateY(0);
|
|
294
|
+
opacity: 1;
|
|
295
|
+
}
|
|
296
|
+
to {
|
|
297
|
+
transform: translateY(calc(100% + var(--rf-drawer-gutter)));
|
|
298
|
+
opacity: 0;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
@keyframes rf-drawer-backdrop-out {
|
|
302
|
+
from {
|
|
303
|
+
background: rgb(0 0 0 / 0.35);
|
|
304
|
+
backdrop-filter: blur(2px);
|
|
305
|
+
}
|
|
306
|
+
to {
|
|
307
|
+
background: rgb(0 0 0 / 0);
|
|
308
|
+
backdrop-filter: blur(0);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
232
311
|
|
|
233
|
-
@media (prefers-reduced-motion: reduce) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
312
|
+
@media (prefers-reduced-motion: reduce) {
|
|
313
|
+
dialog.rf-drawer[data-side="right"][open],
|
|
314
|
+
dialog.rf-drawer[data-side="left"][open],
|
|
315
|
+
dialog.rf-drawer[data-side="top"][open],
|
|
316
|
+
dialog.rf-drawer[data-side="bottom"][open],
|
|
317
|
+
dialog.rf-drawer[data-state="closing"],
|
|
318
|
+
dialog.rf-drawer[open]::backdrop,
|
|
319
|
+
dialog.rf-drawer[data-state="closing"]::backdrop {
|
|
320
|
+
animation: none;
|
|
321
|
+
}
|
|
242
322
|
}
|
|
243
|
-
}
|
|
244
323
|
|
|
245
|
-
/* ─── Mobile tightening ────────────────────────────────────────────
|
|
324
|
+
/* ─── Mobile tightening ────────────────────────────────────────────
|
|
246
325
|
*
|
|
247
326
|
* On narrow viewports the drawer fills the screen (capped by
|
|
248
327
|
* `max-width: 100vw - 2*gutter`), so the desktop-comfortable
|
|
@@ -250,12 +329,11 @@ dialog.rf-drawer[data-state="closing"]::backdrop {
|
|
|
250
329
|
* roughly to 0.75rem / 1rem so the body has more room without
|
|
251
330
|
* losing the chrome's breathing space.
|
|
252
331
|
*/
|
|
253
|
-
@media (max-width: 640px) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
332
|
+
@media (max-width: 640px) {
|
|
333
|
+
dialog.rf-drawer .rf-drawer__header,
|
|
334
|
+
dialog.rf-drawer .rf-drawer__body,
|
|
335
|
+
dialog.rf-drawer .rf-drawer__footer {
|
|
336
|
+
padding: 0.75rem 1rem;
|
|
337
|
+
}
|
|
258
338
|
}
|
|
259
339
|
}
|
|
260
|
-
|
|
261
|
-
}
|
package/styles/runes/embed.css
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Embed — skin. The responsive iframe wrapper + empty-fallback hide live in
|
|
2
|
+
/* Embed — skin. The responsive iframe wrapper + empty-fallback hide live in
|
|
3
3
|
* @refrakt-md/skeleton (styles/runes/embed.css). */
|
|
4
|
-
.rf-embed {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
.rf-embed__wrapper {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
.rf-embed__wrapper iframe {
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
.rf-embed__fallback {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
.rf-embed__fallback p:last-child {
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
4
|
+
.rf-embed {
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: 0;
|
|
7
|
+
}
|
|
8
|
+
.rf-embed__wrapper {
|
|
9
|
+
border-radius: var(--rf-radius-md);
|
|
10
|
+
background: var(--rf-color-surface);
|
|
11
|
+
}
|
|
12
|
+
.rf-embed__wrapper iframe {
|
|
13
|
+
border: none;
|
|
14
|
+
}
|
|
15
|
+
.rf-embed__fallback {
|
|
16
|
+
font-size: var(--rf-text-sm);
|
|
17
|
+
color: var(--rf-color-muted);
|
|
18
|
+
margin-top: 0.5rem;
|
|
19
|
+
}
|
|
20
|
+
.rf-embed__fallback p:last-child {
|
|
21
|
+
margin-bottom: 0;
|
|
22
|
+
}
|
|
24
23
|
}
|
package/styles/runes/event.css
CHANGED
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
@layer skin {
|
|
2
|
-
/* Event */
|
|
2
|
+
/* Event */
|
|
3
3
|
|
|
4
|
-
/* When/where def-list — geometry from the shared `[data-zone-layout=
|
|
4
|
+
/* When/where def-list — geometry from the shared `[data-zone-layout=
|
|
5
5
|
* definition-list]` primitive; this block owns only its top margin. */
|
|
6
|
-
.rf-event__metadata {
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/* Register CTA — a bar-wrapped link; style the inner `<a>` as a button. */
|
|
11
|
-
.rf-event__register {
|
|
12
|
-
margin-top: 1.5rem;
|
|
13
|
-
}
|
|
14
|
-
.rf-event__register a {
|
|
15
|
-
padding: 0.5rem 1rem;
|
|
16
|
-
background: var(--rf-color-primary);
|
|
17
|
-
color: var(--rf-color-on-primary);
|
|
18
|
-
border-radius: var(--rf-radius-md);
|
|
19
|
-
font-weight: var(--rf-weight-medium);
|
|
20
|
-
font-size: var(--rf-text-sm);
|
|
21
|
-
text-decoration: none;
|
|
22
|
-
}
|
|
23
|
-
.rf-event__register a:hover {
|
|
24
|
-
background: var(--rf-color-primary-hover);
|
|
25
|
-
}
|
|
26
|
-
.rf-event__body {
|
|
27
|
-
margin-top: 1.5rem;
|
|
28
|
-
}
|
|
29
|
-
.rf-event__body ul,
|
|
30
|
-
.rf-event__body ol {
|
|
31
|
-
padding-left: 1.5rem;
|
|
32
|
-
}
|
|
33
|
-
.rf-event__body a {
|
|
34
|
-
color: var(--rf-color-primary);
|
|
35
|
-
text-decoration: none;
|
|
36
|
-
}
|
|
37
|
-
.rf-event__body a:hover {
|
|
38
|
-
color: var(--rf-color-primary-hover);
|
|
39
|
-
}
|
|
6
|
+
.rf-event__metadata {
|
|
7
|
+
margin-top: 1.25rem;
|
|
8
|
+
}
|
|
40
9
|
|
|
10
|
+
/* Register CTA — a bar-wrapped link; style the inner `<a>` as a button. */
|
|
11
|
+
.rf-event__register {
|
|
12
|
+
margin-top: 1.5rem;
|
|
13
|
+
}
|
|
14
|
+
.rf-event__register a {
|
|
15
|
+
padding: 0.5rem 1rem;
|
|
16
|
+
background: var(--rf-color-primary);
|
|
17
|
+
color: var(--rf-color-on-primary);
|
|
18
|
+
border-radius: var(--rf-radius-md);
|
|
19
|
+
font-weight: var(--rf-weight-medium);
|
|
20
|
+
font-size: var(--rf-text-sm);
|
|
21
|
+
text-decoration: none;
|
|
22
|
+
}
|
|
23
|
+
.rf-event__register a:hover {
|
|
24
|
+
background: var(--rf-color-primary-hover);
|
|
25
|
+
}
|
|
26
|
+
.rf-event__body {
|
|
27
|
+
margin-top: 1.5rem;
|
|
28
|
+
}
|
|
29
|
+
.rf-event__body ul,
|
|
30
|
+
.rf-event__body ol {
|
|
31
|
+
padding-left: 1.5rem;
|
|
32
|
+
}
|
|
33
|
+
.rf-event__body a {
|
|
34
|
+
color: var(--rf-color-primary);
|
|
35
|
+
text-decoration: none;
|
|
36
|
+
}
|
|
37
|
+
.rf-event__body a:hover {
|
|
38
|
+
color: var(--rf-color-primary-hover);
|
|
39
|
+
}
|
|
41
40
|
}
|