@refrakt-md/lumina 0.11.3 → 0.14.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/assets/logo/prism-16-dark.png +0 -0
- package/assets/logo/prism-16-light.png +0 -0
- package/assets/logo/prism-180-dark.png +0 -0
- package/assets/logo/prism-180-light.png +0 -0
- package/assets/logo/prism-192-dark.png +0 -0
- package/assets/logo/prism-192-light.png +0 -0
- package/assets/logo/prism-24-dark.png +0 -0
- package/assets/logo/prism-24-light.png +0 -0
- package/assets/logo/prism-32-dark.png +0 -0
- package/assets/logo/prism-32-light.png +0 -0
- package/assets/logo/prism-48-dark.png +0 -0
- package/assets/logo/prism-48-light.png +0 -0
- package/assets/logo/prism-512-dark.png +0 -0
- package/assets/logo/prism-512-light.png +0 -0
- package/assets/logo/prism-64-dark.png +0 -0
- package/assets/logo/prism-64-light.png +0 -0
- package/assets/logo/prism-96-dark.png +0 -0
- package/assets/logo/prism-96-light.png +0 -0
- package/assets/logo/prism.svg +4 -0
- package/contracts/structures.json +23 -1
- package/dist/config.js +32 -32
- package/dist/config.js.map +1 -1
- package/dist/presets/niwaki.d.ts +23 -0
- package/dist/presets/niwaki.d.ts.map +1 -0
- package/dist/presets/niwaki.js +50 -0
- package/dist/presets/niwaki.js.map +1 -0
- package/dist/presets/tideline.d.ts +26 -0
- package/dist/presets/tideline.d.ts.map +1 -0
- package/dist/presets/tideline.js +132 -0
- package/dist/presets/tideline.js.map +1 -0
- package/dist/tokens.d.ts +20 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +178 -0
- package/dist/tokens.js.map +1 -0
- package/dist/transform.d.ts +5 -0
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +5 -0
- package/dist/transform.js.map +1 -1
- package/index.css +1 -0
- package/package.json +17 -6
- package/styles/dimensions/surfaces.css +4 -2
- package/styles/global.css +4 -4
- package/styles/layouts/blog.css +8 -2
- package/styles/layouts/default.css +37 -3
- package/styles/layouts/docs.css +24 -6
- package/styles/layouts/mobile.css +36 -5
- package/styles/runes/codegroup.css +19 -15
- package/styles/runes/hint.css +5 -9
- package/styles/runes/nav.css +330 -1
- package/styles/runes/pagination.css +85 -0
- package/styles/runes/palette.css +9 -0
- package/styles/runes/sandbox.css +17 -0
- package/styles/runes/tint.css +116 -72
- package/tokens/base.css +74 -53
- package/tokens/dark.css +97 -75
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lumina's design tokens — the new **neutral default** palette landing in
|
|
3
|
+
* v0.14.0 per SPEC-051. Warm-neutral surface, monochrome primary, the
|
|
4
|
+
* "quiet spectrum walk" syntax palette (teal / violet / rust / ochre /
|
|
5
|
+
* sage), and the four muted-earthy status colours.
|
|
6
|
+
*
|
|
7
|
+
* This is the *source of truth* for Lumina's runtime CSS values; the
|
|
8
|
+
* hand-authored `tokens/base.css` and `tokens/dark.css` mirror it
|
|
9
|
+
* verbatim and a coverage test keeps the two in lockstep.
|
|
10
|
+
*
|
|
11
|
+
* Sites that want the previous cream-and-navy appearance opt into the
|
|
12
|
+
* `tideline` preset shipping alongside this default (see
|
|
13
|
+
* `@refrakt-md/lumina/presets/tideline` once Chunk 7 lands).
|
|
14
|
+
*
|
|
15
|
+
* Sites that want Japanese-garden syntax colours on top of this neutral
|
|
16
|
+
* chrome opt into the `niwaki` preset (Chunk 7).
|
|
17
|
+
*/
|
|
18
|
+
export const luminaTokens = {
|
|
19
|
+
font: {
|
|
20
|
+
sans: "'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
21
|
+
mono: "'JetBrains Mono', 'Fira Code', ui-monospace, 'Cascadia Code', monospace",
|
|
22
|
+
},
|
|
23
|
+
color: {
|
|
24
|
+
text: '#1c1a17',
|
|
25
|
+
muted: '#6b6661',
|
|
26
|
+
border: '#e2e0dd',
|
|
27
|
+
bg: '#f5f4f1',
|
|
28
|
+
primary: '#1c1a17',
|
|
29
|
+
'primary-hover': '#3a342d',
|
|
30
|
+
// Warm-neutral axis from near-bg to near-text, eleven hand-picked stops.
|
|
31
|
+
// Several stops intentionally overlap with semantic tokens (surface.base,
|
|
32
|
+
// border, primary-hover, text) — that's normal; palette steps double as
|
|
33
|
+
// the implementations of the named tokens at their lightness level.
|
|
34
|
+
'primary-scale': {
|
|
35
|
+
'50': '#fbfaf7',
|
|
36
|
+
'100': '#f5f4f1',
|
|
37
|
+
'200': '#ecebe8',
|
|
38
|
+
'300': '#e2e0dd',
|
|
39
|
+
'400': '#bfbab2',
|
|
40
|
+
'500': '#94908a',
|
|
41
|
+
'600': '#76716a',
|
|
42
|
+
'700': '#5a564f',
|
|
43
|
+
'800': '#3a342d',
|
|
44
|
+
'900': '#2a2622',
|
|
45
|
+
'950': '#1c1a17',
|
|
46
|
+
},
|
|
47
|
+
surface: {
|
|
48
|
+
base: '#fbfaf7',
|
|
49
|
+
hover: '#ecebe8',
|
|
50
|
+
active: '#e2e0dd',
|
|
51
|
+
raised: '#ffffff',
|
|
52
|
+
},
|
|
53
|
+
// Muted earthy status colours — same saturation/lightness band across all
|
|
54
|
+
// four so no sentiment is more aggressive than another. Per SPEC-051.
|
|
55
|
+
info: { base: '#34547a', bg: '#e8edf4', border: '#c5d2e0' },
|
|
56
|
+
warning: { base: '#9c5a18', bg: '#f5ebd9', border: '#e0c9a3' },
|
|
57
|
+
danger: { base: '#a83232', bg: '#f5e0e0', border: '#e0b8b8' },
|
|
58
|
+
success: { base: '#2d6a3e', bg: '#e0eee4', border: '#b8d4be' },
|
|
59
|
+
code: {
|
|
60
|
+
bg: '#ebeae8',
|
|
61
|
+
text: '#1c1a17',
|
|
62
|
+
// Mapped to --rf-color-code-inline-bg per the contract.
|
|
63
|
+
// `--rf-color-inline-code-bg` (legacy variable name) is emitted as an
|
|
64
|
+
// alias via `extra` below for downstream CSS that still reads it.
|
|
65
|
+
'inline-bg': '#e6e5e3',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
radius: {
|
|
69
|
+
sm: '6px',
|
|
70
|
+
md: '10px',
|
|
71
|
+
lg: '16px',
|
|
72
|
+
full: '9999px',
|
|
73
|
+
},
|
|
74
|
+
spacing: {
|
|
75
|
+
xs: '0.25rem',
|
|
76
|
+
sm: '0.5rem',
|
|
77
|
+
md: '1.5rem',
|
|
78
|
+
lg: '2rem',
|
|
79
|
+
xl: '3rem',
|
|
80
|
+
'2xl': '4rem',
|
|
81
|
+
section: {
|
|
82
|
+
base: '4rem',
|
|
83
|
+
tight: '1.5rem',
|
|
84
|
+
loose: '6rem',
|
|
85
|
+
breathe: '8rem',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
inset: {
|
|
89
|
+
flush: '0',
|
|
90
|
+
tight: '1rem',
|
|
91
|
+
loose: '4rem',
|
|
92
|
+
breathe: '8rem',
|
|
93
|
+
},
|
|
94
|
+
shadow: {
|
|
95
|
+
xs: '0 1px 2px rgba(0,0,0,0.04)',
|
|
96
|
+
sm: '0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04)',
|
|
97
|
+
md: '0 4px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04)',
|
|
98
|
+
lg: '0 8px 24px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.04)',
|
|
99
|
+
},
|
|
100
|
+
// The "quiet spectrum walk": teal → violet → rust → ochre — cool, cool,
|
|
101
|
+
// warm, warm. Spectrum-adjacent without shouting. `constant` covers
|
|
102
|
+
// numeric literals + boolean/null/Symbol (Shiki paints them all from
|
|
103
|
+
// one slot).
|
|
104
|
+
syntax: {
|
|
105
|
+
keyword: '#2a5c63', // deep teal
|
|
106
|
+
function: '#4a3b6e', // slate violet
|
|
107
|
+
string: '#8a3a3a', // warm rust
|
|
108
|
+
constant: '#876327', // antique ochre
|
|
109
|
+
comment: '#8a857d', // warm muted (italic via rune CSS)
|
|
110
|
+
punctuation: '#6b6661', // tonal — same as color.muted
|
|
111
|
+
variable: '#1c1a17', // tonal — same as color.text
|
|
112
|
+
},
|
|
113
|
+
modes: {
|
|
114
|
+
dark: {
|
|
115
|
+
color: {
|
|
116
|
+
text: '#f6f4ef',
|
|
117
|
+
muted: '#94908a',
|
|
118
|
+
border: '#2a2825',
|
|
119
|
+
bg: '#1a1a17',
|
|
120
|
+
primary: '#f6f4ef',
|
|
121
|
+
'primary-hover': '#d4cfc5',
|
|
122
|
+
surface: {
|
|
123
|
+
base: '#211f1c',
|
|
124
|
+
hover: '#2a2825',
|
|
125
|
+
active: '#353330',
|
|
126
|
+
raised: '#292723',
|
|
127
|
+
},
|
|
128
|
+
info: { base: '#9bb4c7', bg: '#1f2530', border: '#3d4655' },
|
|
129
|
+
warning: { base: '#d4a868', bg: '#2a2519', border: '#4a3f2a' },
|
|
130
|
+
danger: { base: '#d48888', bg: '#2a1818', border: '#4a2a2a' },
|
|
131
|
+
success: { base: '#7eb398', bg: '#1a2a1f', border: '#2a4a35' },
|
|
132
|
+
code: {
|
|
133
|
+
bg: '#222220',
|
|
134
|
+
text: '#f6f4ef',
|
|
135
|
+
'inline-bg': '#2b2b29',
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
shadow: {
|
|
139
|
+
xs: '0 1px 2px rgba(0,0,0,0.3)',
|
|
140
|
+
sm: '0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3)',
|
|
141
|
+
md: '0 4px 12px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3)',
|
|
142
|
+
lg: '0 8px 24px rgba(0,0,0,0.5), 0 2px 6px rgba(0,0,0,0.3)',
|
|
143
|
+
},
|
|
144
|
+
// Dark-mode syntax — lifted and slightly desaturated from light values
|
|
145
|
+
// so they read against the warm-near-black surface without shouting.
|
|
146
|
+
syntax: {
|
|
147
|
+
keyword: '#7eb6bc', // light teal
|
|
148
|
+
function: '#a89bc7', // light slate violet
|
|
149
|
+
string: '#c79a9a', // light rust
|
|
150
|
+
constant: '#d4b07e', // light antique ochre
|
|
151
|
+
comment: '#6b6661', // warm muted (italic)
|
|
152
|
+
punctuation: '#94908a', // = dark color.muted
|
|
153
|
+
variable: '#f6f4ef', // = dark color.text
|
|
154
|
+
},
|
|
155
|
+
// Legacy alias — kept until the rename is fully rolled out. All the
|
|
156
|
+
// `rf-syntax-*` Shiki aliases (foreground/background/token-*) are
|
|
157
|
+
// auto-derived from the `syntax.*` and `color.{text,code.bg}` values
|
|
158
|
+
// above by the generator.
|
|
159
|
+
extra: {
|
|
160
|
+
'rf-color-inline-code-bg': '#2b2b29',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
/** Lumina-specific tokens outside the universal contract. `rf-color-
|
|
165
|
+
* inline-code-bg` is the legacy variable name for what the contract
|
|
166
|
+
* calls `color.code.inline-bg` (→ `--rf-color-code-inline-bg`).
|
|
167
|
+
* Aliased here so downstream CSS that reads the old name keeps
|
|
168
|
+
* working through v0.14.0; rename target is a future cleanup.
|
|
169
|
+
*
|
|
170
|
+
* The Shiki aliases (`--rf-syntax-foreground`, `--rf-syntax-background`,
|
|
171
|
+
* and `--rf-syntax-token-*`) are auto-derived by the generator from
|
|
172
|
+
* `color.text`, `color.code.bg`, and `syntax.*` — no need to repeat
|
|
173
|
+
* them here. */
|
|
174
|
+
extra: {
|
|
175
|
+
'rf-color-inline-code-bg': '#e6e5e3',
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
package/dist/transform.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ export { createTransform } from '@refrakt-md/transform';
|
|
|
2
2
|
export type { ThemeConfig, RuneConfig, SerializedTag, RendererNode } from '@refrakt-md/transform';
|
|
3
3
|
/** Lumina theme configuration — rune-to-BEM-block mappings, modifier sources, structural injection */
|
|
4
4
|
export { luminaConfig } from './config.js';
|
|
5
|
+
/** Lumina design tokens — the typed {@link ThemeTokensConfig} that drives the
|
|
6
|
+
* `--rf-*` CSS custom properties. Adapters consume this when composing
|
|
7
|
+
* site-level token overrides; see `@refrakt-md/transform`'s
|
|
8
|
+
* `mergeThemeTokensConfigs` and `generateThemeStylesheet`. */
|
|
9
|
+
export { luminaTokens } from './tokens.js';
|
|
5
10
|
/** Lumina identity transform — adds BEM classes, consumes meta tags, enhances structure */
|
|
6
11
|
export declare const identityTransform: (tree: import("@refrakt-md/transform").RendererNode) => import("@refrakt-md/transform").RendererNode;
|
|
7
12
|
//# sourceMappingURL=transform.d.ts.map
|
package/dist/transform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAElG,sGAAsG;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,sGAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAElG,sGAAsG;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;+DAG+D;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,sGAAgC,CAAC"}
|
package/dist/transform.js
CHANGED
|
@@ -4,6 +4,11 @@ import { luminaConfig } from './config.js';
|
|
|
4
4
|
export { createTransform } from '@refrakt-md/transform';
|
|
5
5
|
/** Lumina theme configuration — rune-to-BEM-block mappings, modifier sources, structural injection */
|
|
6
6
|
export { luminaConfig } from './config.js';
|
|
7
|
+
/** Lumina design tokens — the typed {@link ThemeTokensConfig} that drives the
|
|
8
|
+
* `--rf-*` CSS custom properties. Adapters consume this when composing
|
|
9
|
+
* site-level token overrides; see `@refrakt-md/transform`'s
|
|
10
|
+
* `mergeThemeTokensConfigs` and `generateThemeStylesheet`. */
|
|
11
|
+
export { luminaTokens } from './tokens.js';
|
|
7
12
|
/** Lumina identity transform — adds BEM classes, consumes meta tags, enhances structure */
|
|
8
13
|
export const identityTransform = createTransform(luminaConfig);
|
|
9
14
|
//# sourceMappingURL=transform.js.map
|
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,sGAAsG;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,sGAAsG;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;+DAG+D;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
package/index.css
CHANGED
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
@import './styles/runes/nav.css';
|
|
79
79
|
@import './styles/runes/organization.css';
|
|
80
80
|
@import './styles/runes/page-section.css';
|
|
81
|
+
@import './styles/runes/pagination.css';
|
|
81
82
|
@import './styles/runes/playlist.css';
|
|
82
83
|
@import './styles/runes/plot.css';
|
|
83
84
|
@import './styles/runes/preview.css';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/lumina",
|
|
3
3
|
"description": "Lumina theme for refrakt.md — design tokens, CSS, identity transform, and layout configs",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -27,7 +27,17 @@
|
|
|
27
27
|
"types": "./dist/layouts.d.ts",
|
|
28
28
|
"default": "./dist/layouts.js"
|
|
29
29
|
},
|
|
30
|
-
"./
|
|
30
|
+
"./presets/tideline": {
|
|
31
|
+
"types": "./dist/presets/tideline.d.ts",
|
|
32
|
+
"default": "./dist/presets/tideline.js"
|
|
33
|
+
},
|
|
34
|
+
"./presets/niwaki": {
|
|
35
|
+
"types": "./dist/presets/niwaki.d.ts",
|
|
36
|
+
"default": "./dist/presets/niwaki.js"
|
|
37
|
+
},
|
|
38
|
+
"./styles/runes/*.css": "./styles/runes/*.css",
|
|
39
|
+
"./assets/logo/prism.svg": "./assets/logo/prism.svg",
|
|
40
|
+
"./assets/*": "./assets/*"
|
|
31
41
|
},
|
|
32
42
|
"files": [
|
|
33
43
|
"dist",
|
|
@@ -38,15 +48,16 @@
|
|
|
38
48
|
"contracts",
|
|
39
49
|
"manifest.json",
|
|
40
50
|
"layouts",
|
|
41
|
-
"svelte"
|
|
51
|
+
"svelte",
|
|
52
|
+
"assets"
|
|
42
53
|
],
|
|
43
54
|
"scripts": {
|
|
44
55
|
"build": "tsc"
|
|
45
56
|
},
|
|
46
57
|
"dependencies": {
|
|
47
|
-
"@refrakt-md/runes": "0.
|
|
48
|
-
"@refrakt-md/transform": "0.
|
|
49
|
-
"@refrakt-md/types": "0.
|
|
58
|
+
"@refrakt-md/runes": "0.14.0",
|
|
59
|
+
"@refrakt-md/transform": "0.14.0",
|
|
60
|
+
"@refrakt-md/types": "0.14.0"
|
|
50
61
|
},
|
|
51
62
|
"devDependencies": {
|
|
52
63
|
"postcss": "^8.4.0"
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
/* ─── Rune Spacing ────────────────────────────────────────────────── */
|
|
8
8
|
/* Only top-level runes get vertical margin; child runes (nav items,
|
|
9
|
-
accordion items, grid cells, etc.) inherit spacing from their parent.
|
|
9
|
+
accordion items, grid cells, etc.) inherit spacing from their parent.
|
|
10
|
+
Layout-chrome navs (menubar in header, columns in footer) are excluded
|
|
11
|
+
so they sit flush with the surrounding header/footer container. */
|
|
10
12
|
|
|
11
|
-
[data-rune]:not([data-rune] [data-rune]) {
|
|
13
|
+
[data-rune]:not([data-rune] [data-rune]):not(:where([data-layout="menubar"], [data-layout="columns"])) {
|
|
12
14
|
margin: 1.5rem 0;
|
|
13
15
|
}
|
|
14
16
|
|
package/styles/global.css
CHANGED
|
@@ -27,10 +27,10 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
27
27
|
letter-spacing: -0.015em;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
h1 { font-size:
|
|
31
|
-
h2 { font-size: 1.
|
|
32
|
-
h3 { font-size: 1.
|
|
33
|
-
h4 { font-size: 1.
|
|
30
|
+
h1 { font-size: 1.875rem; font-weight: 700; letter-spacing: -0.025em; }
|
|
31
|
+
h2 { font-size: 1.5rem; }
|
|
32
|
+
h3 { font-size: 1.2rem; }
|
|
33
|
+
h4 { font-size: 1.05rem; }
|
|
34
34
|
|
|
35
35
|
p {
|
|
36
36
|
margin-top: 0;
|
package/styles/layouts/blog.css
CHANGED
|
@@ -39,9 +39,15 @@
|
|
|
39
39
|
font-size: 1.2rem;
|
|
40
40
|
letter-spacing: -0.02em;
|
|
41
41
|
}
|
|
42
|
-
.rf-blog-header img
|
|
42
|
+
.rf-blog-header img,
|
|
43
|
+
.rf-blog-header p:first-child a > .rf-icon {
|
|
43
44
|
height: 2rem;
|
|
44
|
-
width:
|
|
45
|
+
width: 2rem;
|
|
46
|
+
}
|
|
47
|
+
.rf-blog-header p:first-child a > .rf-icon {
|
|
48
|
+
display: inline-block;
|
|
49
|
+
vertical-align: middle;
|
|
50
|
+
color: currentColor;
|
|
45
51
|
}
|
|
46
52
|
.rf-blog-header__inner p ~ p {
|
|
47
53
|
font-size: 0.85rem;
|
|
@@ -10,16 +10,20 @@
|
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
12
|
gap: 1rem;
|
|
13
|
-
padding:
|
|
13
|
+
padding: 0.625rem 1.5rem;
|
|
14
14
|
}
|
|
15
15
|
.rf-header__inner .rf-search-trigger {
|
|
16
16
|
margin-left: auto;
|
|
17
|
+
order: 1;
|
|
18
|
+
}
|
|
19
|
+
.rf-header__inner > rf-nav {
|
|
20
|
+
order: 3;
|
|
17
21
|
}
|
|
18
22
|
.rf-header__inner p ~ p {
|
|
19
23
|
order: 1;
|
|
20
24
|
}
|
|
21
25
|
.rf-header__inner .rf-mobile-menu-btn {
|
|
22
|
-
order:
|
|
26
|
+
order: 3;
|
|
23
27
|
}
|
|
24
28
|
.rf-header p {
|
|
25
29
|
margin: 0;
|
|
@@ -48,10 +52,19 @@
|
|
|
48
52
|
font-size: 1.2rem;
|
|
49
53
|
letter-spacing: -0.02em;
|
|
50
54
|
}
|
|
51
|
-
.rf-header img
|
|
55
|
+
.rf-header img,
|
|
56
|
+
.rf-header p:first-child a > .rf-icon {
|
|
52
57
|
height: 2rem;
|
|
58
|
+
width: 2rem;
|
|
59
|
+
}
|
|
60
|
+
.rf-header img {
|
|
53
61
|
width: auto;
|
|
54
62
|
}
|
|
63
|
+
.rf-header p:first-child a > .rf-icon {
|
|
64
|
+
display: inline-block;
|
|
65
|
+
vertical-align: middle;
|
|
66
|
+
color: currentColor;
|
|
67
|
+
}
|
|
55
68
|
.rf-header__inner p ~ p {
|
|
56
69
|
font-size: 0.85rem;
|
|
57
70
|
}
|
|
@@ -211,3 +224,24 @@
|
|
|
211
224
|
display: none;
|
|
212
225
|
}
|
|
213
226
|
}
|
|
227
|
+
|
|
228
|
+
/* Site footer */
|
|
229
|
+
.rf-footer {
|
|
230
|
+
display: flex;
|
|
231
|
+
flex-direction: column;
|
|
232
|
+
align-items: center;
|
|
233
|
+
padding: 2.5rem 1.5rem 2rem;
|
|
234
|
+
border-top: 1px solid var(--rf-color-border);
|
|
235
|
+
background: var(--rf-color-bg);
|
|
236
|
+
color: var(--rf-color-muted);
|
|
237
|
+
font-size: 0.875rem;
|
|
238
|
+
}
|
|
239
|
+
.rf-footer > * {
|
|
240
|
+
width: 100%;
|
|
241
|
+
max-width: 80rem;
|
|
242
|
+
}
|
|
243
|
+
.rf-footer p {
|
|
244
|
+
margin: 1.5rem 0 0;
|
|
245
|
+
font-size: 0.8rem;
|
|
246
|
+
color: var(--rf-color-muted);
|
|
247
|
+
}
|
package/styles/layouts/docs.css
CHANGED
|
@@ -14,16 +14,20 @@
|
|
|
14
14
|
display: flex;
|
|
15
15
|
align-items: center;
|
|
16
16
|
gap: 1rem;
|
|
17
|
-
padding:
|
|
17
|
+
padding: 0.625rem 1.5rem;
|
|
18
18
|
}
|
|
19
19
|
.rf-docs-header__inner .rf-search-trigger {
|
|
20
20
|
margin-left: auto;
|
|
21
|
+
order: 1;
|
|
22
|
+
}
|
|
23
|
+
.rf-docs-header__inner > rf-nav {
|
|
24
|
+
order: 3;
|
|
21
25
|
}
|
|
22
26
|
.rf-docs-header__inner p ~ p {
|
|
23
27
|
order: 1;
|
|
24
28
|
}
|
|
25
29
|
.rf-docs-header__inner .rf-mobile-menu-btn {
|
|
26
|
-
order:
|
|
30
|
+
order: 3;
|
|
27
31
|
}
|
|
28
32
|
.rf-docs-header p {
|
|
29
33
|
margin: 0;
|
|
@@ -45,9 +49,15 @@
|
|
|
45
49
|
font-size: 1.2rem;
|
|
46
50
|
letter-spacing: -0.02em;
|
|
47
51
|
}
|
|
48
|
-
.rf-docs-header img
|
|
52
|
+
.rf-docs-header img,
|
|
53
|
+
.rf-docs-header p:first-child a > .rf-icon {
|
|
49
54
|
height: 2rem;
|
|
50
|
-
width:
|
|
55
|
+
width: 2rem;
|
|
56
|
+
}
|
|
57
|
+
.rf-docs-header p:first-child a > .rf-icon {
|
|
58
|
+
display: inline-block;
|
|
59
|
+
vertical-align: middle;
|
|
60
|
+
color: currentColor;
|
|
51
61
|
}
|
|
52
62
|
.rf-docs-header__inner p ~ p {
|
|
53
63
|
font-size: 0.85rem;
|
|
@@ -69,7 +79,7 @@
|
|
|
69
79
|
.rf-docs-sidebar {
|
|
70
80
|
position: fixed;
|
|
71
81
|
left: 0;
|
|
72
|
-
top:
|
|
82
|
+
top: 3.125rem;
|
|
73
83
|
bottom: 0;
|
|
74
84
|
width: 240px;
|
|
75
85
|
overflow-y: auto;
|
|
@@ -84,7 +94,7 @@
|
|
|
84
94
|
|
|
85
95
|
/* ---- Content area ---- */
|
|
86
96
|
.rf-docs-content {
|
|
87
|
-
padding-top:
|
|
97
|
+
padding-top: 4.75rem;
|
|
88
98
|
padding-bottom: 4rem;
|
|
89
99
|
container-type: inline-size;
|
|
90
100
|
}
|
|
@@ -133,6 +143,14 @@
|
|
|
133
143
|
margin-inline: auto;
|
|
134
144
|
}
|
|
135
145
|
|
|
146
|
+
/* Pagination wrapper sits outside the article grid, so it gets its own
|
|
147
|
+
horizontal padding so prev/next don't run to the viewport edges on
|
|
148
|
+
narrow viewports. Uses the same `--rf-content-padding` token the
|
|
149
|
+
article grid uses for its gutter columns. */
|
|
150
|
+
.rf-docs-content__pagination {
|
|
151
|
+
padding-inline: var(--rf-content-padding, 2.5rem);
|
|
152
|
+
}
|
|
153
|
+
|
|
136
154
|
/* ---- "On this page" sidebar ---- */
|
|
137
155
|
.rf-docs-toc {
|
|
138
156
|
width: 220px;
|
|
@@ -58,18 +58,36 @@
|
|
|
58
58
|
.rf-mobile-panel__nav img {
|
|
59
59
|
display: none;
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
/* Panel items — top-level links and group items render uniformly. The
|
|
62
|
+
four-class selectors below carry specificity (0,4,0), beating the
|
|
63
|
+
menubar's mobile rules in nav.css ((0,3,0)) on equal source position
|
|
64
|
+
so the panel's typography always wins (nav.css is imported later than
|
|
65
|
+
mobile.css in index.css). */
|
|
66
|
+
.rf-mobile-panel__nav a,
|
|
67
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav__top-level .rf-nav-item__link,
|
|
68
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group .rf-nav-item__link {
|
|
62
69
|
display: block;
|
|
63
|
-
padding: 0.
|
|
64
|
-
font-size: 1.
|
|
70
|
+
padding: 0.5rem 0;
|
|
71
|
+
font-size: 1.5rem;
|
|
72
|
+
font-weight: 700;
|
|
65
73
|
color: var(--rf-color-text);
|
|
66
74
|
text-decoration: none;
|
|
67
|
-
|
|
75
|
+
background: transparent;
|
|
76
|
+
border: 0;
|
|
68
77
|
}
|
|
69
|
-
.rf-mobile-panel__nav a:hover
|
|
78
|
+
.rf-mobile-panel__nav a:hover,
|
|
79
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav__top-level .rf-nav-item__link:hover,
|
|
80
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group .rf-nav-item__link:hover {
|
|
70
81
|
color: var(--rf-color-primary, var(--rf-color-text));
|
|
82
|
+
background: transparent;
|
|
71
83
|
text-decoration: none;
|
|
72
84
|
}
|
|
85
|
+
/* Group headings inside the panel — flush with items (no horizontal
|
|
86
|
+
padding) and breathing room above so each group reads as a section. */
|
|
87
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group h2,
|
|
88
|
+
.rf-mobile-panel .rf-nav--menubar .rf-nav-group h3 {
|
|
89
|
+
padding: 1.5rem 0 0.25rem;
|
|
90
|
+
}
|
|
73
91
|
.rf-mobile-panel__body {
|
|
74
92
|
padding: 1rem 1.5rem;
|
|
75
93
|
}
|
|
@@ -83,4 +101,17 @@
|
|
|
83
101
|
.rf-mobile-menu-btn {
|
|
84
102
|
display: block;
|
|
85
103
|
}
|
|
104
|
+
/* The inline menubar collapses behind the hamburger on mobile — the
|
|
105
|
+
.rf-mobile-panel duplicates the same nav and styles it as a flat
|
|
106
|
+
vertical list (see nav.css's rf-nav--menubar mobile rules). */
|
|
107
|
+
.rf-header__inner > rf-nav,
|
|
108
|
+
.rf-docs-header__inner > rf-nav,
|
|
109
|
+
.rf-blog-header__inner > rf-nav {
|
|
110
|
+
display: none;
|
|
111
|
+
}
|
|
112
|
+
/* Hide the duplicated brand line inside the mobile panel — the panel
|
|
113
|
+
already has its own "Menu" title. */
|
|
114
|
+
.rf-mobile-panel__nav > p:first-child {
|
|
115
|
+
display: none;
|
|
116
|
+
}
|
|
86
117
|
}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
/* Code Group
|
|
1
|
+
/* Code Group
|
|
2
|
+
*
|
|
3
|
+
* Chrome (the wrapper + topbar + tabs) uses `--rf-color-surface` so it
|
|
4
|
+
* reads against the page in both light and dark modes. The code areas
|
|
5
|
+
* themselves inherit `--rf-color-code-bg` from the global `pre` rule, so
|
|
6
|
+
* code stays on its own background even when the surrounding chrome
|
|
7
|
+
* flips with the page mode. */
|
|
2
8
|
.rf-codegroup {
|
|
3
9
|
border: 1px solid var(--rf-color-border);
|
|
4
10
|
overflow: hidden;
|
|
5
|
-
background: var(--rf-color-
|
|
6
|
-
color: var(--rf-color-
|
|
11
|
+
background: var(--rf-color-surface);
|
|
12
|
+
color: var(--rf-color-text);
|
|
7
13
|
box-shadow: var(--rf-shadow-md);
|
|
8
14
|
padding: 0;
|
|
9
15
|
}
|
|
@@ -12,8 +18,8 @@
|
|
|
12
18
|
align-items: center;
|
|
13
19
|
gap: 0.375rem;
|
|
14
20
|
padding: 0.75rem 1rem;
|
|
15
|
-
background:
|
|
16
|
-
border-bottom: 1px solid
|
|
21
|
+
background: transparent;
|
|
22
|
+
border-bottom: 1px solid var(--rf-color-border);
|
|
17
23
|
margin-bottom: 0;
|
|
18
24
|
}
|
|
19
25
|
.rf-codegroup__dot {
|
|
@@ -30,8 +36,7 @@
|
|
|
30
36
|
font-family: var(--rf-font-mono);
|
|
31
37
|
font-size: 0.8rem;
|
|
32
38
|
font-weight: normal;
|
|
33
|
-
color:
|
|
34
|
-
opacity: 0.7;
|
|
39
|
+
color: var(--rf-color-muted);
|
|
35
40
|
}
|
|
36
41
|
.rf-codegroup ul {
|
|
37
42
|
list-style: none;
|
|
@@ -40,8 +45,8 @@
|
|
|
40
45
|
}
|
|
41
46
|
.rf-codegroup__tabs {
|
|
42
47
|
display: flex;
|
|
43
|
-
background:
|
|
44
|
-
border-bottom: 1px solid
|
|
48
|
+
background: transparent;
|
|
49
|
+
border-bottom: 1px solid var(--rf-color-border);
|
|
45
50
|
overflow-x: auto;
|
|
46
51
|
overflow-y: hidden;
|
|
47
52
|
}
|
|
@@ -50,7 +55,7 @@
|
|
|
50
55
|
padding: 0.5rem 1rem;
|
|
51
56
|
font-size: 0.8rem;
|
|
52
57
|
font-family: var(--rf-font-mono);
|
|
53
|
-
color:
|
|
58
|
+
color: var(--rf-color-muted);
|
|
54
59
|
background: none;
|
|
55
60
|
border: none;
|
|
56
61
|
border-bottom: 2px solid transparent;
|
|
@@ -60,15 +65,15 @@
|
|
|
60
65
|
}
|
|
61
66
|
.rf-codegroup__tab:hover,
|
|
62
67
|
.rf-codegroup button[data-state="inactive"]:hover {
|
|
63
|
-
color:
|
|
68
|
+
color: var(--rf-color-text);
|
|
64
69
|
}
|
|
65
70
|
.rf-codegroup__tab--active,
|
|
66
71
|
.rf-codegroup button[data-state="active"] {
|
|
67
|
-
color:
|
|
68
|
-
border-bottom-color: var(--rf-color-
|
|
72
|
+
color: var(--rf-color-text);
|
|
73
|
+
border-bottom-color: var(--rf-color-primary);
|
|
69
74
|
}
|
|
70
75
|
.rf-codegroup button[data-state="inactive"] {
|
|
71
|
-
color:
|
|
76
|
+
color: var(--rf-color-muted);
|
|
72
77
|
}
|
|
73
78
|
.rf-codegroup .rf-codeblock {
|
|
74
79
|
margin: 0;
|
|
@@ -77,7 +82,6 @@
|
|
|
77
82
|
margin: 0;
|
|
78
83
|
padding: 1rem 1.25rem;
|
|
79
84
|
overflow-x: auto;
|
|
80
|
-
background: none;
|
|
81
85
|
border: none;
|
|
82
86
|
border-radius: 0;
|
|
83
87
|
}
|
package/styles/runes/hint.css
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/* Hint */
|
|
2
2
|
.rf-hint {
|
|
3
3
|
--hint-color: var(--rf-color-info);
|
|
4
|
-
--hint-bg: var(--rf-color-info-bg);
|
|
5
|
-
border-left: 3px solid var(--hint-color);
|
|
6
4
|
padding: 0.875rem 1.25rem;
|
|
7
|
-
border-radius:
|
|
8
|
-
background: var(--
|
|
5
|
+
border-radius: var(--rf-radius-md);
|
|
6
|
+
background: var(--rf-color-surface);
|
|
7
|
+
border: 1px solid var(--rf-color-border);
|
|
9
8
|
}
|
|
10
9
|
.rf-hint__header {
|
|
11
10
|
margin-bottom: 0.375rem;
|
|
@@ -56,21 +55,19 @@
|
|
|
56
55
|
.rf-hint__body p:last-child {
|
|
57
56
|
margin-bottom: 0;
|
|
58
57
|
}
|
|
58
|
+
/* Per-variant colour drives the icon and title only — surface stays
|
|
59
|
+
neutral so the hint reads as a quiet panel, not a saturated banner. */
|
|
59
60
|
.rf-hint--note {
|
|
60
61
|
--hint-color: var(--rf-color-info);
|
|
61
|
-
--hint-bg: var(--rf-color-info-bg);
|
|
62
62
|
}
|
|
63
63
|
.rf-hint--warning {
|
|
64
64
|
--hint-color: var(--rf-color-warning);
|
|
65
|
-
--hint-bg: var(--rf-color-warning-bg);
|
|
66
65
|
}
|
|
67
66
|
.rf-hint--caution {
|
|
68
67
|
--hint-color: var(--rf-color-danger);
|
|
69
|
-
--hint-bg: var(--rf-color-danger-bg);
|
|
70
68
|
}
|
|
71
69
|
.rf-hint--check {
|
|
72
70
|
--hint-color: var(--rf-color-success);
|
|
73
|
-
--hint-bg: var(--rf-color-success-bg);
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
/* Context-aware: compact hint when nested inside a hero */
|
|
@@ -88,6 +85,5 @@
|
|
|
88
85
|
.rf-hint--in-feature {
|
|
89
86
|
margin: 0.75rem 0 0;
|
|
90
87
|
padding: 0.5rem 0.875rem;
|
|
91
|
-
border-left-width: 2px;
|
|
92
88
|
font-size: 0.85rem;
|
|
93
89
|
}
|