@refrakt-md/lumina 0.16.0 → 0.17.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/contracts/structures.json +172 -326
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +11 -0
- package/dist/tokens.js.map +1 -1
- package/index.css +2 -0
- package/package.json +4 -4
- package/styles/dimensions/metadata.css +129 -92
- package/styles/elements/code.css +72 -0
- package/styles/layouts/split.css +53 -11
- package/styles/runes/api.css +6 -10
- package/styles/runes/badge.css +7 -21
- package/styles/runes/bar.css +10 -0
- package/styles/runes/budget.css +4 -4
- package/styles/runes/bug.css +7 -13
- package/styles/runes/character.css +10 -12
- package/styles/runes/codegroup.css +29 -8
- package/styles/runes/decision.css +4 -9
- package/styles/runes/diff.css +77 -9
- package/styles/runes/drawer.css +51 -6
- package/styles/runes/event.css +16 -12
- package/styles/runes/faction.css +8 -118
- package/styles/runes/file-ref.css +31 -0
- package/styles/runes/hint.css +14 -10
- package/styles/runes/howto.css +20 -5
- package/styles/runes/milestone.css +4 -13
- package/styles/runes/realm.css +8 -119
- package/styles/runes/recipe.css +20 -0
- package/styles/runes/spec.css +5 -9
- package/styles/runes/symbol.css +7 -4
- package/styles/runes/testimonial.css +2 -15
- package/styles/runes/work.css +19 -22
- package/tokens/base.css +14 -0
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,EAAE,iBA6L1B,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -64,6 +64,17 @@ export const luminaTokens = {
|
|
|
64
64
|
// alias via `extra` below for downstream CSS that still reads it.
|
|
65
65
|
'inline-bg': '#e6e5e3',
|
|
66
66
|
},
|
|
67
|
+
// WORK-304 — line-level annotation tokens shared by snippet /
|
|
68
|
+
// codegroup / diff. `highlight` is the neutral surface tint applied
|
|
69
|
+
// to `[data-line-status="highlight"]` rows; `highlight-rail` is the
|
|
70
|
+
// left-edge border colour (left as a soft accent so themes can
|
|
71
|
+
// repaint just the rail without touching the row background);
|
|
72
|
+
// `number` is the gutter colour for `pre[data-linenumbers]`.
|
|
73
|
+
line: {
|
|
74
|
+
highlight: 'color-mix(in srgb, var(--rf-color-text) 6%, transparent)',
|
|
75
|
+
'highlight-rail': 'var(--rf-color-primary, var(--rf-color-text))',
|
|
76
|
+
number: 'var(--rf-color-muted)',
|
|
77
|
+
},
|
|
67
78
|
},
|
|
68
79
|
radius: {
|
|
69
80
|
sm: '6px',
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
package/index.css
CHANGED
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
@import './styles/runes/api.css';
|
|
45
45
|
@import './styles/runes/card.css';
|
|
46
46
|
@import './styles/runes/badge.css';
|
|
47
|
+
@import './styles/runes/bar.css';
|
|
47
48
|
@import './styles/runes/bento.css';
|
|
48
49
|
@import './styles/runes/blog.css';
|
|
49
50
|
@import './styles/runes/bond.css';
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
@import './styles/runes/collection.css';
|
|
55
56
|
@import './styles/runes/relationships.css';
|
|
56
57
|
@import './styles/runes/aggregate.css';
|
|
58
|
+
@import './styles/runes/file-ref.css';
|
|
57
59
|
@import './styles/runes/progress.css';
|
|
58
60
|
@import './styles/runes/changelog.css';
|
|
59
61
|
@import './styles/runes/chart.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.17.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -83,9 +83,9 @@
|
|
|
83
83
|
"build": "tsc"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@refrakt-md/runes": "0.
|
|
87
|
-
"@refrakt-md/transform": "0.
|
|
88
|
-
"@refrakt-md/types": "0.
|
|
86
|
+
"@refrakt-md/runes": "0.17.0",
|
|
87
|
+
"@refrakt-md/transform": "0.17.0",
|
|
88
|
+
"@refrakt-md/types": "0.17.0"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
91
|
"postcss": "^8.4.0"
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
/* ─── Metadata Dimensions ──────────────────────────────────────────────
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
2
|
+
* SPEC-080 typography / geometry split:
|
|
3
|
+
* - `[data-meta-type=…]` selectors carry ONLY typography hints
|
|
4
|
+
* (monospace, tabular-nums). No padding, no border, no chip geometry.
|
|
5
|
+
* - Geometry comes from `[data-zone-layout=…]` selectors (`bar`,
|
|
6
|
+
* `definition-list`) and from the universal `.rf-badge` class, which
|
|
7
|
+
* is emitted by chip-type fields AND by the standalone `{% badge %}`
|
|
8
|
+
* rune.
|
|
9
|
+
* - Sentiment rules drive `--meta-color`, which the chip and any
|
|
10
|
+
* sentiment-tinted text inherits.
|
|
8
11
|
* ────────────────────────────────────────────────────────────────────── */
|
|
9
12
|
|
|
10
|
-
/* ─── Rank ─────────────────────────────────────────────────────────── */
|
|
11
|
-
|
|
12
|
-
[data-meta-rank="primary"],
|
|
13
|
-
[data-meta-rank="secondary"] {
|
|
14
|
-
--meta-font-size: 0.8125rem;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
13
|
/* ─── Sentiment ────────────────────────────────────────────────────── */
|
|
18
14
|
|
|
19
15
|
[data-meta-sentiment="positive"] { --meta-color: var(--rf-color-success, #10b981); }
|
|
@@ -21,105 +17,139 @@
|
|
|
21
17
|
[data-meta-sentiment="caution"] { --meta-color: var(--rf-color-warning, #f59e0b); }
|
|
22
18
|
[data-meta-sentiment="neutral"] { --meta-color: var(--rf-color-muted, #64748b); }
|
|
23
19
|
|
|
24
|
-
/*
|
|
25
|
-
[data-meta-sentiment]::before {
|
|
26
|
-
content: '';
|
|
27
|
-
width: 0.5rem;
|
|
28
|
-
height: 0.5rem;
|
|
29
|
-
border-radius: 50%;
|
|
30
|
-
background: var(--meta-color, var(--rf-color-muted));
|
|
31
|
-
flex-shrink: 0;
|
|
32
|
-
}
|
|
20
|
+
/* ─── Meta Types — typography only ─────────────────────────────────── */
|
|
33
21
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
[data-meta-type="status"] {
|
|
38
|
-
display: inline-flex;
|
|
39
|
-
align-items: center;
|
|
40
|
-
gap: 0.375rem;
|
|
41
|
-
padding: 0.5em 1.0em;
|
|
42
|
-
border: 1px solid var(--rf-color-border);
|
|
43
|
-
border-radius: 999px;
|
|
22
|
+
[data-meta-type="id"],
|
|
23
|
+
[data-meta-type="code"] {
|
|
24
|
+
font-family: var(--rf-font-mono, monospace);
|
|
44
25
|
font-size: var(--meta-font-size, 0.8125rem);
|
|
45
|
-
font-weight: 500;
|
|
46
|
-
color: var(--rf-color-muted);
|
|
47
26
|
}
|
|
48
27
|
|
|
49
|
-
/*
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
padding: 0.5em 1.0em;
|
|
55
|
-
border: 1px solid var(--rf-color-border);
|
|
56
|
-
border-radius: 999px;
|
|
57
|
-
font-size: var(--meta-font-size, 0.8125rem);
|
|
28
|
+
/* IDs read as primary-coloured references wherever they appear (eyebrow
|
|
29
|
+
* bars, metadata def-lists, etc.) — a semantic treatment of the `id` type,
|
|
30
|
+
* not a per-layout one. `code` (e.g. API paths) stays neutral monospace. */
|
|
31
|
+
[data-meta-type="id"] {
|
|
32
|
+
color: var(--rf-color-primary);
|
|
58
33
|
font-weight: 500;
|
|
59
|
-
color: var(--rf-color-muted);
|
|
60
34
|
}
|
|
61
35
|
|
|
62
|
-
/* Quantity: bordered pill with tabular numbers */
|
|
63
36
|
[data-meta-type="quantity"] {
|
|
64
|
-
display: inline-flex;
|
|
65
|
-
align-items: center;
|
|
66
|
-
padding: 0.5em 1.0em;
|
|
67
|
-
border: 1px solid var(--rf-color-border);
|
|
68
|
-
border-radius: 999px;
|
|
69
37
|
font-variant-numeric: tabular-nums;
|
|
70
|
-
font-weight: 600;
|
|
71
38
|
font-size: var(--meta-font-size, 0.8125rem);
|
|
72
|
-
color: var(--rf-color-muted);
|
|
73
39
|
}
|
|
74
40
|
|
|
75
|
-
/* Temporal: bordered pill with time association */
|
|
76
41
|
[data-meta-type="temporal"] {
|
|
77
|
-
display: inline-flex;
|
|
78
|
-
align-items: center;
|
|
79
|
-
gap: 0.25rem;
|
|
80
|
-
padding: 0.5em 1.0em;
|
|
81
|
-
border: 1px solid var(--rf-color-border);
|
|
82
|
-
border-radius: 999px;
|
|
83
|
-
font-size: var(--meta-font-size, 0.8125rem);
|
|
84
42
|
font-variant-numeric: tabular-nums;
|
|
85
|
-
|
|
43
|
+
font-size: var(--meta-font-size, 0.8125rem);
|
|
86
44
|
}
|
|
87
45
|
|
|
88
|
-
/*
|
|
89
|
-
|
|
46
|
+
/* Rating — `value` filled marks out of `total`; each mark carries
|
|
47
|
+
* `data-filled`. Stars via colour (filled = primary, empty = border). */
|
|
48
|
+
[data-meta-type="rating"] {
|
|
90
49
|
display: inline-flex;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
50
|
+
gap: 0.0625rem;
|
|
51
|
+
line-height: 1;
|
|
52
|
+
}
|
|
53
|
+
[data-meta-type="rating"] span::before {
|
|
54
|
+
content: '★';
|
|
55
|
+
}
|
|
56
|
+
[data-meta-type="rating"] span[data-filled="true"] {
|
|
57
|
+
color: var(--rf-color-primary);
|
|
58
|
+
}
|
|
59
|
+
[data-meta-type="rating"] span[data-filled="false"] {
|
|
60
|
+
color: var(--rf-color-border);
|
|
97
61
|
}
|
|
98
62
|
|
|
99
|
-
|
|
100
|
-
[data-meta-type="
|
|
101
|
-
|
|
63
|
+
[data-meta-type="status"],
|
|
64
|
+
[data-meta-type="category"],
|
|
65
|
+
[data-meta-type="tag"] {
|
|
66
|
+
font-size: var(--meta-font-size, 0.8125rem);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Linked eyebrow content (matches today's hero behaviour). */
|
|
70
|
+
[data-zone="eyebrow"] a {
|
|
71
|
+
color: var(--rf-color-primary);
|
|
72
|
+
text-decoration: underline;
|
|
73
|
+
text-underline-offset: 0.15em;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* ─── Layout: bar (SPEC-080) ───────────────────────────────────────── */
|
|
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. */
|
|
82
|
+
[data-zone-layout="bar"] {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-wrap: wrap;
|
|
85
|
+
gap: 0.5rem;
|
|
102
86
|
align-items: center;
|
|
103
|
-
|
|
87
|
+
}
|
|
88
|
+
[data-zone-layout="bar"][data-wrap="false"] {
|
|
89
|
+
flex-wrap: nowrap;
|
|
90
|
+
}
|
|
91
|
+
[data-zone-layout="bar"] [data-align="end"] {
|
|
92
|
+
margin-left: auto;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* ─── Layout: definition-list ──────────────────────────────────────── */
|
|
96
|
+
|
|
97
|
+
/* Single source of truth for the `definition-list` primitive, shared by
|
|
98
|
+
* both the projected metadata zone (`<dl data-zone="…">`) and the authored
|
|
99
|
+
* `{% deflist %}` rune (`<dl data-rune="deflist">`) — they emit the same
|
|
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. */
|
|
108
|
+
[data-zone-layout="definition-list"] {
|
|
109
|
+
display: grid;
|
|
110
|
+
grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
|
|
111
|
+
gap: 0.75rem;
|
|
112
|
+
margin: 1.25rem 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-zone-layout="definition-list"] > [data-name="row"] {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-direction: column;
|
|
118
|
+
gap: 0.125rem;
|
|
119
|
+
min-width: 0;
|
|
120
|
+
padding: 0.625rem 0.75rem;
|
|
104
121
|
border: 1px solid var(--rf-color-border);
|
|
105
|
-
border-radius:
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
border-radius: var(--rf-radius-sm);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[data-zone-layout="definition-list"] dt {
|
|
126
|
+
font-size: 0.75rem;
|
|
108
127
|
font-weight: 500;
|
|
109
128
|
color: var(--rf-color-muted);
|
|
110
129
|
}
|
|
111
130
|
|
|
131
|
+
[data-zone-layout="definition-list"] dd {
|
|
132
|
+
margin: 0;
|
|
133
|
+
font-size: 0.875rem;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Multi-value dd (fields with `splitOn`) renders a row of chips
|
|
137
|
+
* inside the cell, flowing naturally. */
|
|
138
|
+
[data-zone-layout="definition-list"] dd[data-multi-value] {
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-wrap: wrap;
|
|
141
|
+
gap: 0.25rem;
|
|
142
|
+
}
|
|
143
|
+
|
|
112
144
|
/* ─── Labels ──────────────────────────────────────────────────────── */
|
|
113
145
|
|
|
114
|
-
/* Label element within
|
|
115
|
-
* Themes can override or hide entirely: [data-meta-label] { display: none } */
|
|
146
|
+
/* Label element within a chip — thin, muted; pairs visually with the value */
|
|
116
147
|
[data-meta-label] {
|
|
117
148
|
font-weight: 400;
|
|
118
149
|
opacity: 0.65;
|
|
119
150
|
}
|
|
120
151
|
|
|
121
|
-
/* Visually hidden labels — accessible to screen readers
|
|
122
|
-
* Themes can restore with: [data-meta-label-hidden] { position: static; ... } */
|
|
152
|
+
/* Visually hidden labels — accessible to screen readers only */
|
|
123
153
|
[data-meta-label-hidden] {
|
|
124
154
|
position: absolute;
|
|
125
155
|
width: 1px;
|
|
@@ -132,22 +162,29 @@
|
|
|
132
162
|
border: 0;
|
|
133
163
|
}
|
|
134
164
|
|
|
135
|
-
/* ─── Mobile: compact
|
|
165
|
+
/* ─── Mobile: compact ──────────────────────────────────────────────── */
|
|
136
166
|
|
|
137
167
|
@media (max-width: 48rem) {
|
|
138
|
-
[data-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
168
|
+
[data-zone-layout="bar"] {
|
|
169
|
+
gap: 0.375rem;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* On narrow screens, fall back to the original label-left / value-right
|
|
173
|
+
* list: each row's dt/dd flow directly into a two-column grid via
|
|
174
|
+
* `display: contents`, which drops the per-item border (no box to paint).
|
|
175
|
+
* The border + padding move to the list itself so the whole group reads
|
|
176
|
+
* as one bordered card. */
|
|
177
|
+
[data-zone-layout="definition-list"] {
|
|
178
|
+
grid-template-columns: max-content 1fr;
|
|
179
|
+
gap: 0.25rem 1rem;
|
|
180
|
+
align-items: baseline;
|
|
181
|
+
padding: 0.75rem 1rem;
|
|
182
|
+
border: 1px solid var(--rf-color-border);
|
|
183
|
+
border-radius: var(--rf-radius-sm);
|
|
146
184
|
}
|
|
147
185
|
|
|
148
|
-
[data-
|
|
149
|
-
|
|
150
|
-
height: 0.375rem;
|
|
186
|
+
[data-zone-layout="definition-list"] > [data-name="row"] {
|
|
187
|
+
display: contents;
|
|
151
188
|
}
|
|
152
189
|
|
|
153
190
|
[data-section="header"] {
|
package/styles/elements/code.css
CHANGED
|
@@ -42,3 +42,75 @@
|
|
|
42
42
|
opacity: 1 !important;
|
|
43
43
|
color: var(--rf-color-success, #4ade80);
|
|
44
44
|
}
|
|
45
|
+
|
|
46
|
+
/* WORK-304 — fence-level annotations: line numbers + line highlight.
|
|
47
|
+
*
|
|
48
|
+
* Shiki renders each line as `<span class="line">…</span>`. The fence
|
|
49
|
+
* schema forwards `data-linenumbers` / `data-highlight-lines` /
|
|
50
|
+
* `data-lines` (start offset) from the AST node onto both `<pre>` and
|
|
51
|
+
* `<code>`; the highlight transform sets `data-line-status="highlight"`
|
|
52
|
+
* on the matching `span.line` rows post-Shiki (file-coordinate math
|
|
53
|
+
* lives there, not in CSS).
|
|
54
|
+
*
|
|
55
|
+
* The starting line counter is seeded from `--rf-start-line` which the
|
|
56
|
+
* fence transform inlines on `<pre>` when `data-lines` is set
|
|
57
|
+
* (e.g. lines="74-125" → --rf-start-line: 73 so the first
|
|
58
|
+
* counter-increment lands on 74). Defaults to 0 so unannotated fences
|
|
59
|
+
* count from 1.
|
|
60
|
+
*
|
|
61
|
+
* `<code>` becomes a CSS grid so:
|
|
62
|
+
* - consecutive `.line` rows tile perfectly with no subpixel cracks
|
|
63
|
+
* at non-100% zoom (the previous inline-block stacking left faint
|
|
64
|
+
* gaps the rail and bg shone through);
|
|
65
|
+
* - line bg + rail extend across the full horizontal scroll region
|
|
66
|
+
* (grid track width = max-content keeps lines full-width even
|
|
67
|
+
* when the pre scrolls).
|
|
68
|
+
*
|
|
69
|
+
* Every line carries a 3px transparent left border so geometry stays
|
|
70
|
+
* consistent across highlighted and plain rows — matches the diff row
|
|
71
|
+
* primitive at `runes/diff.css`. Highlighted rows just colour the
|
|
72
|
+
* border + add the surface tint. */
|
|
73
|
+
.rf-codeblock pre code {
|
|
74
|
+
display: grid;
|
|
75
|
+
min-width: max-content;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.rf-codeblock pre code .line {
|
|
79
|
+
border-left: 3px solid transparent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Line numbers — gutter::before owns the left column. Strip the pre's
|
|
83
|
+
* horizontal padding when linenumbers are on so the gutter sits flush
|
|
84
|
+
* against the codeblock edge; the gutter's own padding + right border
|
|
85
|
+
* provides the visual separation from the code body. */
|
|
86
|
+
.rf-codeblock pre[data-linenumbers] {
|
|
87
|
+
padding-left: 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.rf-codeblock pre[data-linenumbers] code {
|
|
91
|
+
counter-reset: rf-line var(--rf-start-line, 0);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.rf-codeblock pre[data-linenumbers] code .line::before {
|
|
95
|
+
counter-increment: rf-line;
|
|
96
|
+
content: counter(rf-line);
|
|
97
|
+
display: inline-block;
|
|
98
|
+
width: 3em;
|
|
99
|
+
padding-inline: 0.75rem 0.5rem;
|
|
100
|
+
margin-right: 0.75rem;
|
|
101
|
+
text-align: right;
|
|
102
|
+
color: var(--rf-color-line-number);
|
|
103
|
+
font-variant-numeric: tabular-nums;
|
|
104
|
+
user-select: none;
|
|
105
|
+
border-right: 1px solid var(--rf-color-border);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* Highlighted lines share diff's row template — neutral surface tint
|
|
109
|
+
* + primary-coloured left rail, no `+`/`-` sigil. The grid layout on
|
|
110
|
+
* `<code>` above keeps consecutive highlighted rows continuous (no
|
|
111
|
+
* subpixel gaps between the rails). Border is on every `.line` (above)
|
|
112
|
+
* so the content alignment doesn't jump when highlighting a row. */
|
|
113
|
+
.rf-codeblock pre code .line[data-line-status="highlight"] {
|
|
114
|
+
background: var(--rf-color-line-highlight);
|
|
115
|
+
border-left-color: var(--rf-color-line-highlight-rail);
|
|
116
|
+
}
|
package/styles/layouts/split.css
CHANGED
|
@@ -43,22 +43,40 @@
|
|
|
43
43
|
|
|
44
44
|
/* ─── Media zone base styles ──────────────────────────────────────── */
|
|
45
45
|
|
|
46
|
-
/*
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
/* Clip overflow + round corners when the media zone holds media-like
|
|
47
|
+
content: an image, or a self-contained block rune that wants the same
|
|
48
|
+
"fills the slot" treatment (codegroup, snippet, chart, sandbox). Anything
|
|
49
|
+
else keeps overflow visible so interactive bleed effects (preview,
|
|
50
|
+
juxtapose) still work. Add new rune-typed media here when they should
|
|
51
|
+
participate in the same chrome. */
|
|
52
|
+
[data-section="media"]:where(
|
|
53
|
+
:has(> img),
|
|
54
|
+
:has(> [data-rune="code-group"]),
|
|
55
|
+
:has(> [data-rune="snippet"]),
|
|
56
|
+
:has(> [data-rune="chart"]),
|
|
57
|
+
:has(> [data-rune="sandbox"])
|
|
58
|
+
) {
|
|
49
59
|
border-radius: var(--rf-radius-lg);
|
|
50
60
|
overflow: hidden;
|
|
51
61
|
}
|
|
52
|
-
[data-section="media"]
|
|
62
|
+
[data-section="media"] > :where(
|
|
63
|
+
img,
|
|
64
|
+
[data-rune="code-group"],
|
|
65
|
+
[data-rune="snippet"],
|
|
66
|
+
[data-rune="chart"],
|
|
67
|
+
[data-rune="sandbox"]
|
|
68
|
+
) {
|
|
53
69
|
display: block;
|
|
54
70
|
width: 100%;
|
|
55
71
|
height: auto;
|
|
56
72
|
border-radius: var(--rf-radius-lg);
|
|
73
|
+
margin: 0;
|
|
57
74
|
}
|
|
58
75
|
|
|
59
|
-
/* Split layout
|
|
60
|
-
|
|
61
|
-
[data-layout="split
|
|
76
|
+
/* Split layout images get subtle depth. Block runes carry their own visual
|
|
77
|
+
weight (topbars, frames) so the shadow is image-only. */
|
|
78
|
+
[data-layout="split"] > [data-section="media"] > img,
|
|
79
|
+
[data-layout="split-reverse"] > [data-section="media"] > img {
|
|
62
80
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
63
81
|
}
|
|
64
82
|
|
|
@@ -109,7 +127,13 @@
|
|
|
109
127
|
margin-bottom: var(--rune-padding, var(--rf-spacing-md));
|
|
110
128
|
border-radius: 0;
|
|
111
129
|
}
|
|
112
|
-
[data-media-position="top"] > [data-section="media"]
|
|
130
|
+
[data-media-position="top"] > [data-section="media"] > :where(
|
|
131
|
+
img,
|
|
132
|
+
[data-rune="code-group"],
|
|
133
|
+
[data-rune="snippet"],
|
|
134
|
+
[data-rune="chart"],
|
|
135
|
+
[data-rune="sandbox"]
|
|
136
|
+
) {
|
|
113
137
|
border-radius: var(--rf-radius-md) var(--rf-radius-md) 0 0;
|
|
114
138
|
}
|
|
115
139
|
|
|
@@ -134,7 +158,13 @@
|
|
|
134
158
|
margin-bottom: var(--rune-padding, var(--rf-spacing-md));
|
|
135
159
|
border-radius: 0;
|
|
136
160
|
}
|
|
137
|
-
[data-media-position="top"][data-collapse="sm"] > [data-section="media"]
|
|
161
|
+
[data-media-position="top"][data-collapse="sm"] > [data-section="media"] > :where(
|
|
162
|
+
img,
|
|
163
|
+
[data-rune="code-group"],
|
|
164
|
+
[data-rune="snippet"],
|
|
165
|
+
[data-rune="chart"],
|
|
166
|
+
[data-rune="sandbox"]
|
|
167
|
+
) {
|
|
138
168
|
border-radius: var(--rf-radius-md) var(--rf-radius-md) 0 0;
|
|
139
169
|
}
|
|
140
170
|
/* Reset grid placement on collapse for header/content */
|
|
@@ -157,7 +187,13 @@
|
|
|
157
187
|
margin-bottom: var(--rune-padding, var(--rf-spacing-md));
|
|
158
188
|
border-radius: 0;
|
|
159
189
|
}
|
|
160
|
-
[data-media-position="top"][data-collapse="md"] > [data-section="media"]
|
|
190
|
+
[data-media-position="top"][data-collapse="md"] > [data-section="media"] > :where(
|
|
191
|
+
img,
|
|
192
|
+
[data-rune="code-group"],
|
|
193
|
+
[data-rune="snippet"],
|
|
194
|
+
[data-rune="chart"],
|
|
195
|
+
[data-rune="sandbox"]
|
|
196
|
+
) {
|
|
161
197
|
border-radius: var(--rf-radius-md) var(--rf-radius-md) 0 0;
|
|
162
198
|
}
|
|
163
199
|
[data-media-position="top"][data-collapse="md"] > [data-section="header"],
|
|
@@ -179,7 +215,13 @@
|
|
|
179
215
|
margin-bottom: var(--rune-padding, var(--rf-spacing-md));
|
|
180
216
|
border-radius: 0;
|
|
181
217
|
}
|
|
182
|
-
[data-media-position="top"][data-collapse="lg"] > [data-section="media"]
|
|
218
|
+
[data-media-position="top"][data-collapse="lg"] > [data-section="media"] > :where(
|
|
219
|
+
img,
|
|
220
|
+
[data-rune="code-group"],
|
|
221
|
+
[data-rune="snippet"],
|
|
222
|
+
[data-rune="chart"],
|
|
223
|
+
[data-rune="sandbox"]
|
|
224
|
+
) {
|
|
183
225
|
border-radius: var(--rf-radius-md) var(--rf-radius-md) 0 0;
|
|
184
226
|
}
|
|
185
227
|
[data-media-position="top"][data-collapse="lg"] > [data-section="header"],
|
package/styles/runes/api.css
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
/* Api */
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
/* SPEC-080: the endpoint header is a projected `eyebrow` bar (method + path
|
|
4
|
+
* + auth). Geometry + the auth right-push come from `[data-zone-layout="bar"]`
|
|
5
|
+
* in dimensions/metadata.css; field shape (method/auth chips, path mono code)
|
|
6
|
+
* is intrinsic to metaType. */
|
|
7
|
+
.rf-api__eyebrow {
|
|
3
8
|
padding: 0.5rem 0;
|
|
4
9
|
}
|
|
5
|
-
.rf-api__method {
|
|
6
|
-
font-family: var(--rf-font-mono);
|
|
7
|
-
}
|
|
8
|
-
.rf-api__path {
|
|
9
|
-
background: none;
|
|
10
|
-
}
|
|
11
|
-
.rf-api__auth {
|
|
12
|
-
margin-left: auto;
|
|
13
|
-
}
|
|
14
10
|
.rf-api__body {
|
|
15
11
|
padding: 0;
|
|
16
12
|
}
|
package/styles/runes/badge.css
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/* Badge rune — standalone inline chip.
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
3
|
+
* The universal chip primitive emitted by `{% badge %}` AND by every
|
|
4
|
+
* chip-type field a block renders (`bar` chips, `definition-list` `<dd>`
|
|
5
|
+
* for chip-type fields). Tints come from the
|
|
6
|
+
* universal `--meta-color` set by `dimensions/metadata.css`'s
|
|
7
|
+
* sentiment rules (positive / caution / negative / neutral → success
|
|
8
|
+
* / warning / danger / muted). Background is a `color-mix` of that
|
|
9
|
+
* color, so the chip stays sentiment-flexible — any value the theme
|
|
10
10
|
* gives `--meta-color` works without per-status selectors.
|
|
11
|
-
*
|
|
12
|
-
* `rank="primary"` boosts emphasis with a heavier tint and bolder weight,
|
|
13
|
-
* useful for labels that should dominate over neighbours.
|
|
14
11
|
*/
|
|
15
12
|
|
|
16
13
|
.rf-badge {
|
|
@@ -24,14 +21,3 @@
|
|
|
24
21
|
border-radius: var(--rf-radius-sm);
|
|
25
22
|
white-space: nowrap;
|
|
26
23
|
}
|
|
27
|
-
|
|
28
|
-
.rf-badge[data-meta-rank="primary"] {
|
|
29
|
-
background: color-mix(in srgb, var(--meta-color, var(--rf-color-muted)) 28%, transparent);
|
|
30
|
-
font-weight: 600;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* Drop the sentiment dot — the background tint carries the cue for
|
|
34
|
-
* standalone chips, and the dot competes visually with adjacent prose. */
|
|
35
|
-
.rf-badge::before {
|
|
36
|
-
display: none;
|
|
37
|
-
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* Bar rune — composable handle for the SPEC-080 `bar` layout.
|
|
2
|
+
*
|
|
3
|
+
* Geometry comes from `[data-zone-layout="bar"]` in
|
|
4
|
+
* `dimensions/metadata.css` (flex row, wrap, `[data-align="end"]`
|
|
5
|
+
* right-push). This file only carries the minimum class hook so the rune
|
|
6
|
+
* participates in CSS tree-shaking. */
|
|
7
|
+
|
|
8
|
+
.rf-bar {
|
|
9
|
+
margin: 0.5rem 0;
|
|
10
|
+
}
|
package/styles/runes/budget.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* Budget */
|
|
2
|
+
|
|
3
|
+
/* Duration + currency meta row — flex/gap from the shared
|
|
4
|
+
* `[data-zone-layout=bar]` primitive; this block owns only its spacing. */
|
|
2
5
|
.rf-budget__meta {
|
|
3
|
-
|
|
4
|
-
flex-wrap: wrap;
|
|
5
|
-
align-items: center;
|
|
6
|
-
gap: 0.5rem;
|
|
6
|
+
margin-bottom: 0.75rem;
|
|
7
7
|
}
|
|
8
8
|
.rf-budget__preamble {
|
|
9
9
|
margin-bottom: 1.5rem;
|