@refrakt-md/lumina 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/base.css +2 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/tokens.d.ts +5 -3
  6. package/dist/tokens.d.ts.map +1 -1
  7. package/dist/tokens.js +44 -3
  8. package/dist/tokens.js.map +1 -1
  9. package/index.css +11 -1
  10. package/package.json +7 -5
  11. package/styles/base/attributes.css +6 -7
  12. package/styles/dimensions/checklist.css +7 -36
  13. package/styles/dimensions/cover.css +13 -95
  14. package/styles/dimensions/density.css +6 -3
  15. package/styles/dimensions/frame.css +7 -4
  16. package/styles/dimensions/media.css +14 -61
  17. package/styles/dimensions/metadata.css +30 -80
  18. package/styles/dimensions/sections.css +16 -30
  19. package/styles/dimensions/sequence.css +17 -82
  20. package/styles/dimensions/state.css +39 -56
  21. package/styles/dimensions/substrate.css +3 -0
  22. package/styles/dimensions/surfaces.css +73 -113
  23. package/styles/elements/blockquote.css +3 -2
  24. package/styles/elements/code.css +3 -0
  25. package/styles/elements/table.css +3 -0
  26. package/styles/global.css +24 -63
  27. package/styles/layouts/blog.css +34 -95
  28. package/styles/layouts/default.css +12 -86
  29. package/styles/layouts/docs.css +9 -159
  30. package/styles/layouts/mobile.css +3 -52
  31. package/styles/layouts/on-this-page.css +8 -7
  32. package/styles/layouts/plan.css +27 -158
  33. package/styles/layouts/search.css +17 -82
  34. package/styles/layouts/split.css +24 -169
  35. package/styles/layouts/theme-toggle.css +3 -29
  36. package/styles/layouts/version-switcher.css +9 -10
  37. package/styles/runes/accordion.css +25 -68
  38. package/styles/runes/aggregate.css +4 -13
  39. package/styles/runes/annotate.css +11 -40
  40. package/styles/runes/api.css +4 -1
  41. package/styles/runes/audio.css +12 -50
  42. package/styles/runes/badge.css +5 -2
  43. package/styles/runes/bar.css +3 -0
  44. package/styles/runes/bento.css +18 -161
  45. package/styles/runes/bg.css +3 -37
  46. package/styles/runes/blog.css +18 -20
  47. package/styles/runes/bond.css +6 -26
  48. package/styles/runes/breadcrumb.css +7 -15
  49. package/styles/runes/budget.css +23 -45
  50. package/styles/runes/bug.css +5 -2
  51. package/styles/runes/card.css +27 -95
  52. package/styles/runes/cast.css +10 -27
  53. package/styles/runes/changelog.css +13 -17
  54. package/styles/runes/character.css +6 -20
  55. package/styles/runes/chart.css +15 -57
  56. package/styles/runes/codegroup.css +18 -26
  57. package/styles/runes/collection.css +8 -85
  58. package/styles/runes/compare.css +8 -19
  59. package/styles/runes/comparison.css +29 -56
  60. package/styles/runes/conversation.css +9 -31
  61. package/styles/runes/cta.css +17 -40
  62. package/styles/runes/datatable.css +33 -48
  63. package/styles/runes/decision.css +5 -2
  64. package/styles/runes/design-context.css +5 -4
  65. package/styles/runes/details.css +9 -17
  66. package/styles/runes/diagram.css +8 -16
  67. package/styles/runes/diff.css +11 -94
  68. package/styles/runes/drawer.css +9 -113
  69. package/styles/runes/embed.css +5 -13
  70. package/styles/runes/event.css +5 -3
  71. package/styles/runes/expand.css +10 -45
  72. package/styles/runes/faction.css +6 -12
  73. package/styles/runes/feature.css +15 -43
  74. package/styles/runes/figure.css +7 -26
  75. package/styles/runes/file-ref.css +3 -18
  76. package/styles/runes/form.css +19 -48
  77. package/styles/runes/gallery.css +8 -140
  78. package/styles/runes/grid.css +4 -56
  79. package/styles/runes/hero.css +28 -140
  80. package/styles/runes/hint.css +23 -48
  81. package/styles/runes/howto.css +9 -31
  82. package/styles/runes/itinerary.css +15 -44
  83. package/styles/runes/juxtapose.css +17 -92
  84. package/styles/runes/lore.css +7 -14
  85. package/styles/runes/map.css +9 -42
  86. package/styles/runes/mediatext.css +4 -45
  87. package/styles/runes/milestone.css +15 -28
  88. package/styles/runes/mockup.css +10 -115
  89. package/styles/runes/nav.css +37 -212
  90. package/styles/runes/organization.css +6 -5
  91. package/styles/runes/page-section.css +3 -4
  92. package/styles/runes/pagination.css +10 -42
  93. package/styles/runes/palette.css +16 -35
  94. package/styles/runes/placeholder.css +16 -0
  95. package/styles/runes/plan-history.css +23 -43
  96. package/styles/runes/plan-progress.css +6 -7
  97. package/styles/runes/plan-ref.css +4 -1
  98. package/styles/runes/playlist.css +10 -44
  99. package/styles/runes/plot.css +9 -25
  100. package/styles/runes/preview.css +9 -34
  101. package/styles/runes/pricing.css +23 -41
  102. package/styles/runes/progress.css +8 -27
  103. package/styles/runes/pullquote.css +9 -31
  104. package/styles/runes/realm.css +6 -12
  105. package/styles/runes/recipe.css +12 -36
  106. package/styles/runes/relationships.css +5 -36
  107. package/styles/runes/reveal.css +17 -22
  108. package/styles/runes/sandbox.css +9 -39
  109. package/styles/runes/section.css +10 -24
  110. package/styles/runes/showcase.css +3 -20
  111. package/styles/runes/sidenote.css +5 -4
  112. package/styles/runes/snippet.css +3 -0
  113. package/styles/runes/spacing.css +14 -33
  114. package/styles/runes/spec.css +5 -2
  115. package/styles/runes/steps.css +14 -46
  116. package/styles/runes/storyboard.css +4 -19
  117. package/styles/runes/swatch.css +4 -7
  118. package/styles/runes/symbol.css +16 -14
  119. package/styles/runes/tabs.css +15 -18
  120. package/styles/runes/testimonial.css +12 -13
  121. package/styles/runes/textblock.css +6 -24
  122. package/styles/runes/timeline.css +10 -28
  123. package/styles/runes/tint.css +3 -0
  124. package/styles/runes/toc.css +9 -7
  125. package/styles/runes/track.css +12 -41
  126. package/styles/runes/typography.css +15 -27
  127. package/styles/runes/work.css +5 -2
  128. package/styles/runes/xref.css +3 -1
  129. package/tokens/base.css +56 -66
  130. package/tokens/dark.css +79 -80
  131. package/styles/dimensions/guest-posture.css +0 -27
@@ -1,3 +1,4 @@
1
+ @layer skin {
1
2
  /* Blog layout */
2
3
 
3
4
  /* The blog header chrome is taller (1.125rem padding + 2rem logo), so
@@ -8,33 +9,18 @@
8
9
  }
9
10
  /* ---- Header ---- */
10
11
  .rf-blog-header {
11
- position: sticky;
12
- top: 0;
13
- z-index: 100;
14
12
  background: var(--rf-color-bg);
15
13
  border-bottom: 1px solid var(--rf-color-border);
16
14
  }
17
15
  .rf-blog-header__inner {
18
- display: flex;
19
- align-items: center;
20
16
  gap: 1rem;
21
17
  padding: 1.125rem 1.5rem;
22
18
  }
23
- .rf-blog-header__inner .rf-search-trigger {
24
- margin-left: auto;
25
- }
26
- .rf-blog-header__inner p ~ p {
27
- order: 1;
28
- }
29
- .rf-blog-header__inner .rf-mobile-menu-btn {
30
- order: 2;
31
- }
32
19
  .rf-blog-header p {
33
20
  margin: 0;
34
21
  line-height: 1;
35
22
  }
36
23
  .rf-blog-header a {
37
- display: inline-block;
38
24
  color: inherit;
39
25
  text-decoration: none;
40
26
  }
@@ -42,25 +28,17 @@
42
28
  text-decoration: none;
43
29
  }
44
30
  .rf-blog-header p:first-child a {
45
- display: inline-flex;
46
- align-items: center;
47
31
  gap: 0.5rem;
48
- font-weight: 600;
49
- font-size: 1.2rem;
50
- letter-spacing: -0.02em;
32
+ font-weight: var(--rf-weight-semibold);
33
+ font-size: var(--rf-text-xl);
34
+ letter-spacing: var(--rf-tracking-tight);
51
35
  }
52
- .rf-blog-header img,
53
36
  .rf-blog-header p:first-child a > .rf-icon {
54
- height: 2rem;
55
- width: 2rem;
56
- }
57
- .rf-blog-header p:first-child a > .rf-icon {
58
- display: inline-block;
59
37
  vertical-align: middle;
60
38
  color: currentColor;
61
39
  }
62
40
  .rf-blog-header__inner p ~ p {
63
- font-size: 0.85rem;
41
+ font-size: var(--rf-text-sm);
64
42
  }
65
43
  .rf-blog-header__inner p ~ p a {
66
44
  margin-left: 1.5rem;
@@ -70,53 +48,35 @@
70
48
  color: var(--rf-color-text);
71
49
  }
72
50
  .rf-blog-header__inner p ~ p a svg {
73
- width: 1.1rem;
74
- height: 1.1rem;
75
51
  vertical-align: -0.15em;
76
52
  }
77
53
 
78
54
  /* ---- Layout container ---- */
79
55
  .rf-blog {
80
- max-width: 72rem;
81
- margin: 0 auto;
82
56
  padding: 2.5rem 1.5rem 4rem;
83
57
  }
84
58
  .rf-blog--has-sidebar {
85
- display: grid;
86
- grid-template-columns: 1fr 16rem;
87
59
  gap: 3rem;
88
- align-items: start;
89
- }
90
-
91
- /* ---- Blog index ---- */
92
- .rf-blog-index {
93
- max-width: 42rem;
94
60
  }
95
61
  .rf-blog-index__title {
96
- font-size: 2.25rem;
97
- font-weight: 800;
98
- line-height: 1.15;
99
- letter-spacing: -0.02em;
62
+ font-size: var(--rf-text-4xl);
63
+ font-weight: var(--rf-weight-bold);
64
+ line-height: var(--rf-leading-tight);
65
+ letter-spacing: var(--rf-tracking-tight);
100
66
  margin: 0 0 1rem;
101
67
  color: var(--rf-color-text);
102
68
  }
103
69
  .rf-blog-index__body {
104
70
  margin-bottom: 2rem;
105
- line-height: 1.8;
71
+ line-height: var(--rf-leading-relaxed);
106
72
  color: var(--rf-color-muted);
107
73
  }
108
- .rf-blog-index__body:empty {
109
- display: none;
110
- }
111
74
  .rf-blog-index__posts {
112
- display: flex;
113
- flex-direction: column;
114
75
  gap: 1.5rem;
115
76
  }
116
77
 
117
78
  /* ---- Post card ---- */
118
79
  .rf-blog-card {
119
- display: block;
120
80
  padding: 1.5rem;
121
81
  border: 1px solid var(--rf-color-border);
122
82
  border-radius: var(--rf-radius-md, 0.5rem);
@@ -130,16 +90,14 @@
130
90
  text-decoration: none;
131
91
  }
132
92
  .rf-blog-card__title {
133
- font-size: 1.35rem;
134
- font-weight: 700;
93
+ font-size: var(--rf-text-xl);
94
+ font-weight: var(--rf-weight-bold);
135
95
  margin: 0 0 0.5rem;
136
96
  color: var(--rf-color-text);
137
97
  }
138
98
  .rf-blog-card__meta {
139
- display: flex;
140
- align-items: center;
141
99
  gap: 0.75rem;
142
- font-size: 0.85rem;
100
+ font-size: var(--rf-text-sm);
143
101
  color: var(--rf-color-muted);
144
102
  margin-bottom: 0.5rem;
145
103
  }
@@ -149,62 +107,51 @@
149
107
  }
150
108
  .rf-blog-card__desc {
151
109
  margin: 0 0 0.75rem;
152
- font-size: 0.95rem;
153
- line-height: 1.6;
110
+ font-size: var(--rf-text);
111
+ line-height: var(--rf-leading-relaxed);
154
112
  color: var(--rf-color-muted);
155
113
  }
156
114
  .rf-blog-card__tags {
157
- display: flex;
158
- flex-wrap: wrap;
159
115
  gap: 0.5rem;
160
116
  margin-bottom: 0.75rem;
161
117
  }
162
118
  .rf-blog-card__link {
163
- font-size: 0.85rem;
164
- font-weight: 600;
119
+ font-size: var(--rf-text-sm);
120
+ font-weight: var(--rf-weight-semibold);
165
121
  color: var(--rf-color-primary, var(--rf-color-text));
166
122
  }
167
-
168
- /* ---- Article ---- */
169
- .rf-blog-article {
170
- max-width: 42rem;
171
- }
172
123
  .rf-blog-article__header {
173
124
  margin-bottom: 2.5rem;
174
125
  padding-bottom: 1.5rem;
175
126
  border-bottom: 1px solid var(--rf-color-border);
176
127
  }
177
128
  .rf-blog-article__title {
178
- font-size: 2.25rem;
179
- font-weight: 800;
180
- line-height: 1.15;
181
- letter-spacing: -0.02em;
129
+ font-size: var(--rf-text-4xl);
130
+ font-weight: var(--rf-weight-bold);
131
+ line-height: var(--rf-leading-tight);
132
+ letter-spacing: var(--rf-tracking-tight);
182
133
  margin: 0 0 1rem;
183
134
  color: var(--rf-color-text);
184
135
  }
185
136
  .rf-blog-article__meta {
186
- display: flex;
187
- align-items: center;
188
137
  gap: 0.75rem;
189
- font-size: 0.9rem;
138
+ font-size: var(--rf-text-sm);
190
139
  color: var(--rf-color-muted);
191
140
  }
192
141
  .rf-blog-article__meta time {
193
- font-weight: 500;
142
+ font-weight: var(--rf-weight-medium);
194
143
  }
195
144
  .rf-blog-article__author::before {
196
145
  content: '\00b7';
197
146
  margin-right: 0.75rem;
198
147
  }
199
148
  .rf-blog-article__tags {
200
- display: flex;
201
- flex-wrap: wrap;
202
149
  gap: 0.5rem;
203
150
  margin-top: 0.75rem;
204
151
  }
205
152
  .rf-blog-article__tag {
206
- font-size: 0.75rem;
207
- font-weight: 500;
153
+ font-size: var(--rf-text-xs);
154
+ font-weight: var(--rf-weight-medium);
208
155
  padding: 0.2rem 0.6rem;
209
156
  border-radius: 9999px;
210
157
  background: var(--rf-color-surface);
@@ -214,7 +161,7 @@
214
161
 
215
162
  /* ---- Article body typography ---- */
216
163
  .rf-blog-article__body {
217
- line-height: 1.8;
164
+ line-height: var(--rf-leading-relaxed);
218
165
  }
219
166
  .rf-blog-article__body h2 {
220
167
  margin-top: 2.5rem;
@@ -232,24 +179,21 @@
232
179
 
233
180
  /* ---- Sidebar ---- */
234
181
  .rf-blog-sidebar {
235
- position: sticky;
236
- top: 2.5rem;
237
- font-size: 0.85rem;
182
+ font-size: var(--rf-text-sm);
238
183
  color: var(--rf-color-muted);
239
184
  }
240
185
  .rf-blog-sidebar h2,
241
186
  .rf-blog-sidebar h3,
242
187
  .rf-blog-sidebar h4 {
243
- font-size: 0.75rem;
244
- font-weight: 600;
188
+ font-size: var(--rf-text-xs);
189
+ font-weight: var(--rf-weight-semibold);
245
190
  text-transform: uppercase;
246
- letter-spacing: 0.05em;
191
+ letter-spacing: var(--rf-tracking-wider);
247
192
  color: var(--rf-color-muted);
248
193
  margin-top: 0;
249
194
  margin-bottom: 0.5rem;
250
195
  }
251
196
  .rf-blog-sidebar ul {
252
- list-style: none;
253
197
  padding: 0;
254
198
  margin: 0;
255
199
  }
@@ -269,24 +213,19 @@
269
213
  border-top: 1px solid var(--rf-color-border);
270
214
  padding: 2rem 1.5rem;
271
215
  text-align: center;
272
- font-size: 0.85rem;
216
+ font-size: var(--rf-text-sm);
273
217
  color: var(--rf-color-muted);
274
218
  }
275
219
 
276
220
  /* ---- Mobile ---- */
277
221
  @media (max-width: 768px) {
278
- .rf-blog-header__inner p ~ p {
279
- display: none;
280
- }
281
- .rf-blog--has-sidebar {
282
- grid-template-columns: 1fr;
283
- }
284
222
  .rf-blog-article__title {
285
- font-size: 1.75rem;
223
+ font-size: var(--rf-text-3xl);
286
224
  }
287
225
  .rf-blog-sidebar {
288
- position: static;
289
226
  border-top: 1px solid var(--rf-color-border);
290
227
  padding-top: 1.5rem;
291
228
  }
292
229
  }
230
+
231
+ }
@@ -1,43 +1,25 @@
1
+ @layer skin {
1
2
  /* Default layout */
2
3
  .rf-header {
3
- position: sticky;
4
- top: 0;
5
- z-index: 100;
6
4
  background: var(--rf-color-bg);
7
5
  border-bottom: 1px solid var(--rf-color-border);
8
6
  }
9
7
  .rf-header__inner {
10
- display: flex;
11
- align-items: center;
12
8
  gap: 1rem;
13
9
  padding: 0.625rem 1.5rem;
14
10
  }
15
- .rf-header__inner .rf-search-trigger {
16
- margin-left: auto;
17
- order: 1;
18
- }
19
- .rf-header__inner > rf-nav {
20
- order: 3;
21
- }
22
- .rf-header__inner p ~ p {
23
- order: 1;
24
- }
25
- .rf-header__inner .rf-mobile-menu-btn {
26
- order: 3;
27
- }
28
11
  .rf-header p {
29
12
  margin: 0;
30
13
  line-height: 1;
31
14
  }
32
15
  .rf-header h1, .rf-header h2, .rf-header h3 {
33
16
  margin: 0;
34
- font-size: 1.2rem;
35
- font-weight: 600;
36
- letter-spacing: -0.02em;
17
+ font-size: var(--rf-text-xl);
18
+ font-weight: var(--rf-weight-semibold);
19
+ letter-spacing: var(--rf-tracking-tight);
37
20
  line-height: 1;
38
21
  }
39
22
  .rf-header a {
40
- display: inline-block;
41
23
  color: inherit;
42
24
  text-decoration: none;
43
25
  }
@@ -45,28 +27,17 @@
45
27
  text-decoration: none;
46
28
  }
47
29
  .rf-header p:first-child a {
48
- display: inline-flex;
49
- align-items: center;
50
30
  gap: 0.5rem;
51
- font-weight: 600;
52
- font-size: 1.2rem;
53
- letter-spacing: -0.02em;
31
+ font-weight: var(--rf-weight-semibold);
32
+ font-size: var(--rf-text-xl);
33
+ letter-spacing: var(--rf-tracking-tight);
54
34
  }
55
- .rf-header img,
56
35
  .rf-header p:first-child a > .rf-icon {
57
- height: 2rem;
58
- width: 2rem;
59
- }
60
- .rf-header img {
61
- width: auto;
62
- }
63
- .rf-header p:first-child a > .rf-icon {
64
- display: inline-block;
65
36
  vertical-align: middle;
66
37
  color: currentColor;
67
38
  }
68
39
  .rf-header__inner p ~ p {
69
- font-size: 0.85rem;
40
+ font-size: var(--rf-text-sm);
70
41
  }
71
42
  .rf-header__inner p ~ p a {
72
43
  margin-left: 1.5rem;
@@ -76,8 +47,6 @@
76
47
  color: var(--rf-color-text);
77
48
  }
78
49
  .rf-header__inner p ~ p a svg {
79
- width: 1.1rem;
80
- height: 1.1rem;
81
50
  vertical-align: -0.15em;
82
51
  }
83
52
  .rf-page-content {
@@ -86,39 +55,8 @@
86
55
 
87
56
  padding-top: 2.5rem;
88
57
  padding-bottom: 4rem;
89
- container-type: inline-size;
90
- }
91
- /* Markdoc wraps content in <article>; make it the grid container.
92
- 5-track named grid: full | wide | content | wide | full */
93
- .rf-page-content > article {
94
- display: grid;
95
- grid-template-columns:
96
- [full-start] 1fr
97
- [wide-start] minmax(0, var(--rf-wide-inset, 8rem))
98
- [content-start] min(var(--rf-content-max), 100% - var(--rf-content-gutter) * 2)
99
- [content-end] minmax(0, var(--rf-wide-inset, 8rem))
100
- [wide-end] 1fr
101
- [full-end];
102
- }
103
- .rf-page-content > article > * {
104
- grid-column: content;
105
- }
106
-
107
- /* Width constraint via data-width attribute — narrower than content */
108
- .rf-page-content > article > [data-width="compact"] {
109
- max-width: var(--rf-width-compact, 30rem);
110
- margin-inline: auto;
111
- }
112
- .rf-page-content > article > [data-width="narrow"] {
113
- max-width: var(--rf-width-narrow, 40rem);
114
- margin-inline: auto;
115
- }
116
- /* Width breakout via data-width attribute — wider than content */
117
- .rf-page-content > article > [data-width="wide"] {
118
- grid-column: wide;
119
58
  }
120
59
  .rf-page-content > article > [data-width="full"] {
121
- grid-column: full;
122
60
  padding-inline: max(
123
61
  var(--rf-content-gutter, 1.5rem),
124
62
  calc((100% - var(--rf-content-max, 80rem)) / 2)
@@ -126,7 +64,6 @@
126
64
  }
127
65
  /* Tinted sections also break out to full width */
128
66
  .rf-page-content > article > :is([data-tint], [data-color-scheme]):not([data-width]) {
129
- grid-column: full;
130
67
  padding-inline: max(
131
68
  var(--rf-content-gutter, 1.5rem),
132
69
  calc((100% - var(--rf-content-max, 80rem)) / 2)
@@ -219,29 +156,18 @@
219
156
  padding-bottom: 0;
220
157
  }
221
158
 
222
- @media (max-width: 768px) {
223
- .rf-header__inner p ~ p {
224
- display: none;
225
- }
226
- }
227
-
228
159
  /* Site footer */
229
160
  .rf-footer {
230
- display: flex;
231
- flex-direction: column;
232
- align-items: center;
233
161
  padding: 2.5rem 1.5rem 2rem;
234
162
  border-top: 1px solid var(--rf-color-border);
235
163
  background: var(--rf-color-bg);
236
164
  color: var(--rf-color-muted);
237
- font-size: 0.875rem;
238
- }
239
- .rf-footer > * {
240
- width: 100%;
241
- max-width: 80rem;
165
+ font-size: var(--rf-text-sm);
242
166
  }
243
167
  .rf-footer p {
244
168
  margin: 1.5rem 0 0;
245
- font-size: 0.8rem;
169
+ font-size: var(--rf-text-xs);
246
170
  color: var(--rf-color-muted);
247
171
  }
172
+
173
+ }