@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,40 +1,20 @@
1
+ @layer skin {
1
2
  /* Docs layout */
2
3
 
3
4
  /* ---- Fixed header ---- */
4
5
  .rf-docs-header {
5
- position: fixed;
6
- top: 0;
7
- left: 0;
8
- right: 0;
9
- z-index: 10;
10
6
  background: var(--rf-color-bg, #fff);
11
7
  border-bottom: 1px solid var(--rf-color-border);
12
8
  }
13
9
  .rf-docs-header__inner {
14
- display: flex;
15
- align-items: center;
16
10
  gap: 1rem;
17
11
  padding: 0.625rem 1.5rem;
18
12
  }
19
- .rf-docs-header__inner .rf-search-trigger {
20
- margin-left: auto;
21
- order: 1;
22
- }
23
- .rf-docs-header__inner > rf-nav {
24
- order: 3;
25
- }
26
- .rf-docs-header__inner p ~ p {
27
- order: 1;
28
- }
29
- .rf-docs-header__inner .rf-mobile-menu-btn {
30
- order: 3;
31
- }
32
13
  .rf-docs-header p {
33
14
  margin: 0;
34
15
  line-height: 1;
35
16
  }
36
17
  .rf-docs-header a {
37
- display: inline-block;
38
18
  color: inherit;
39
19
  text-decoration: none;
40
20
  }
@@ -42,25 +22,17 @@
42
22
  text-decoration: none;
43
23
  }
44
24
  .rf-docs-header p:first-child a {
45
- display: inline-flex;
46
- align-items: center;
47
25
  gap: 0.5rem;
48
- font-weight: 600;
49
- font-size: 1.2rem;
50
- letter-spacing: -0.02em;
51
- }
52
- .rf-docs-header img,
53
- .rf-docs-header p:first-child a > .rf-icon {
54
- height: 2rem;
55
- width: 2rem;
26
+ font-weight: var(--rf-weight-semibold);
27
+ font-size: var(--rf-text-xl);
28
+ letter-spacing: var(--rf-tracking-tight);
56
29
  }
57
30
  .rf-docs-header p:first-child a > .rf-icon {
58
- display: inline-block;
59
31
  vertical-align: middle;
60
32
  color: currentColor;
61
33
  }
62
34
  .rf-docs-header__inner p ~ p {
63
- font-size: 0.85rem;
35
+ font-size: var(--rf-text-sm);
64
36
  }
65
37
  .rf-docs-header__inner p ~ p a {
66
38
  margin-left: 1.5rem;
@@ -70,44 +42,14 @@
70
42
  color: var(--rf-color-text);
71
43
  }
72
44
  .rf-docs-header__inner p ~ p a svg {
73
- width: 1.1rem;
74
- height: 1.1rem;
75
45
  vertical-align: -0.15em;
76
46
  }
77
47
 
78
- /* ---- Body wrapper: sidebar + content row ----
79
- * The `body` slot in docsLayout groups sidebar + main so `position: sticky`
80
- * on the sidebar has a containing block that ends *before* the footer.
81
- * When the user scrolls past the wrapper's bottom (i.e. when the footer
82
- * comes into view) sticky releases and the sidebar scrolls away with the
83
- * page rather than overlaying the footer. */
84
- .rf-docs-body {
85
- display: flex;
86
- align-items: flex-start;
87
- }
88
-
89
48
  /* ---- Sticky sidebar ---- */
90
49
  .rf-docs-sidebar {
91
- position: sticky;
92
- top: 3.125rem;
93
- align-self: flex-start;
94
- flex-shrink: 0;
95
- width: 240px;
96
- height: calc(100vh - 3.125rem);
97
- overflow-y: auto;
98
50
  padding: 1.5rem;
99
51
  border-right: 1px solid var(--rf-color-border);
100
52
  background: var(--rf-color-bg, #fff);
101
- z-index: 5;
102
- }
103
- /* Match the sticky offset in the natural-flow position too. The fixed header
104
- * is out of flow so `.rf-docs-body` starts at viewport top; without this
105
- * margin, the sidebar's static position sits at Y=0 with its top 3.125rem
106
- * hidden under the header — visible only when the page scrolls enough for
107
- * sticky to activate. Scoped to `:has(.rf-docs-header)` so layouts without a
108
- * header don't gain an unwanted top gap. */
109
- html:has(.rf-docs-header) .rf-docs-sidebar {
110
- margin-top: 3.125rem;
111
53
  }
112
54
  .rf-docs-sidebar::-webkit-scrollbar {
113
55
  width: 0;
@@ -115,52 +57,14 @@ html:has(.rf-docs-header) .rf-docs-sidebar {
115
57
 
116
58
  /* ---- Content area ---- */
117
59
  .rf-docs-content {
118
- flex: 1;
119
- min-width: 0;
120
60
  padding-top: 4.75rem;
121
61
  padding-bottom: 4rem;
122
- container-type: inline-size;
123
62
  }
124
63
  .rf-docs-content__inner {
125
- max-width: 60rem;
126
- margin: 0 auto;
127
64
  --rf-content-padding: 2.5rem;
128
65
  }
129
66
  .rf-docs-content__inner--has-toc {
130
- display: flex;
131
67
  gap: 6rem;
132
- max-width: calc(60rem + 220px + 6rem);
133
- }
134
- .rf-docs-content__inner--has-toc .rf-docs-content__body {
135
- flex: 1;
136
- min-width: 0;
137
- }
138
-
139
- /* Width-variant grid — mirrors default layout's 5-track grid,
140
- simplified to 3 tracks (no full breakout in docs context).
141
- The wide inset tracks also serve as the content gutter. */
142
- .rf-docs-content__body > div > article {
143
- display: grid;
144
- grid-template-columns:
145
- [wide-start] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
146
- [content-start] minmax(0, 1fr)
147
- [content-end] minmax(var(--rf-content-padding, 2.5rem), var(--rf-docs-wide-inset, 3rem))
148
- [wide-end];
149
- }
150
- .rf-docs-content__body > div > article > * {
151
- grid-column: content;
152
- }
153
- .rf-docs-content__body > div > article > [data-width="wide"],
154
- .rf-docs-content__body > div > article > [data-width="full"] {
155
- grid-column: wide;
156
- }
157
- .rf-docs-content__body > div > article > [data-width="compact"] {
158
- max-width: var(--rf-width-compact, 30rem);
159
- margin-inline: auto;
160
- }
161
- .rf-docs-content__body > div > article > [data-width="narrow"] {
162
- max-width: var(--rf-width-narrow, 40rem);
163
- margin-inline: auto;
164
68
  }
165
69
 
166
70
  /* Pagination wrapper sits outside the article grid, so it gets its own
@@ -173,34 +77,18 @@ html:has(.rf-docs-header) .rf-docs-sidebar {
173
77
 
174
78
  /* ---- "On this page" sidebar ---- */
175
79
  .rf-docs-toc {
176
- width: 220px;
177
- flex-shrink: 0;
178
- position: sticky;
179
- top: 5.75rem;
180
- align-self: flex-start;
181
- max-height: calc(100vh - 5.75rem);
182
- overflow-y: auto;
183
80
  padding: 0 1.25rem;
184
81
  }
185
82
  .rf-docs-toc::-webkit-scrollbar {
186
83
  width: 0;
187
84
  }
188
85
 
189
- /* ---- Fixed-header offset ---- */
190
- html:has(.rf-docs-header) {
191
- scroll-padding-top: 5rem;
192
- }
193
-
194
86
  /* ---- Mobile toolbar (hidden on desktop) ---- */
195
87
  .rf-docs-toolbar {
196
- display: none;
197
- align-items: center;
198
88
  gap: 0.75rem;
199
89
  padding: 0.625rem 1rem;
200
90
  border-bottom: 1px solid var(--rf-color-border);
201
91
  background: var(--rf-color-bg, #fff);
202
- max-width: 100%;
203
- overflow: hidden;
204
92
  }
205
93
  .rf-docs-toolbar__hamburger {
206
94
  background: none;
@@ -209,22 +97,18 @@ html:has(.rf-docs-header) {
209
97
  cursor: pointer;
210
98
  color: var(--rf-color-muted);
211
99
  line-height: 0;
212
- flex-shrink: 0;
213
100
  }
214
101
  .rf-docs-toolbar__hamburger:hover {
215
102
  color: var(--rf-color-text);
216
103
  }
217
104
  .rf-docs-toolbar__breadcrumb {
218
- font-size: 0.8rem;
105
+ font-size: var(--rf-text-xs);
219
106
  color: var(--rf-color-muted);
220
107
  /* `flex: 1 1 0` (basis 0, not auto) so the breadcrumb shrinks against
221
108
  * the available space rather than starting at its full content width —
222
109
  * combined with `min-width: 0` this is what triggers ellipsis on long
223
110
  * titles. Without basis 0 a long page title overflows the toolbar and
224
111
  * forces horizontal page scroll on narrow viewports. */
225
- flex: 1 1 0;
226
- min-width: 0;
227
- overflow: hidden;
228
112
  text-overflow: ellipsis;
229
113
  white-space: nowrap;
230
114
  }
@@ -237,49 +121,13 @@ html:has(.rf-docs-header) {
237
121
  }
238
122
  .rf-docs-breadcrumb-page {
239
123
  color: var(--rf-color-text);
240
- font-weight: 500;
124
+ font-weight: var(--rf-weight-medium);
241
125
  }
242
126
 
243
127
  /* ---- Hide TOC on medium screens ---- */
244
- @media (max-width: 1100px) {
245
- .rf-docs-toc {
246
- display: none;
247
- }
248
- .rf-docs-content__inner--has-toc {
249
- display: block;
250
- max-width: 60rem;
251
- }
252
- }
253
128
 
254
129
  /* ---- Mobile overrides ---- */
255
130
  @media (max-width: 768px) {
256
- .rf-docs-header {
257
- position: sticky;
258
- top: 0;
259
- }
260
- .rf-docs-header__inner p ~ p {
261
- display: none;
262
- }
263
- /* The toolbar is sticky directly below the header so the hamburger —
264
- which doubles as the open/close trigger for the sidebar-nav panel —
265
- stays reachable while the panel is open or the page is scrolled.
266
- `top` is 1px less than the header height so the two bars overlap by
267
- a pixel — sub-pixel rounding during scroll can otherwise leave a
268
- hairline gap that lets page content shine through.
269
- z-index sits above the .rf-mobile-panel (99) so the hamburger
270
- stays clickable while the panel is open. */
271
- .rf-docs-toolbar {
272
- display: flex;
273
- position: sticky;
274
- top: calc(3.5rem - 1px);
275
- z-index: 100;
276
- }
277
- .rf-mobile-panel--nav {
278
- top: calc(6.25rem - 1px);
279
- }
280
- .rf-docs-sidebar {
281
- display: none;
282
- }
283
131
  .rf-docs-content {
284
132
  padding-top: 2rem;
285
133
  }
@@ -288,3 +136,5 @@ html:has(.rf-docs-header) {
288
136
  --rf-docs-wide-inset: 1.5rem;
289
137
  }
290
138
  }
139
+
140
+ }
@@ -1,8 +1,8 @@
1
+ @layer skin {
1
2
  /* Shared mobile UI — menu button, panel docked below header, close */
2
3
 
3
4
  /* ---- Mobile menu button (hidden on desktop) ---- */
4
5
  .rf-mobile-menu-btn {
5
- display: none;
6
6
  background: none;
7
7
  border: none;
8
8
  padding: 0.25rem;
@@ -13,17 +13,6 @@
13
13
  .rf-mobile-menu-btn:hover {
14
14
  color: var(--rf-color-text);
15
15
  }
16
- /* Dots/X toggle — the SVG has both icons stacked; we show one at a time
17
- based on the button's aria-expanded state. */
18
- .rf-mobile-menu-btn__icon-close {
19
- display: none;
20
- }
21
- .rf-mobile-menu-btn[aria-expanded="true"] .rf-mobile-menu-btn__icon-open {
22
- display: none;
23
- }
24
- .rf-mobile-menu-btn[aria-expanded="true"] .rf-mobile-menu-btn__icon-close {
25
- display: inline;
26
- }
27
16
 
28
17
  /* ---- Mobile panel — docks below the header ----
29
18
  The header height is fixed by --rf-header-height (default 3.5rem to
@@ -31,19 +20,7 @@
31
20
  line-box rounding). Layouts with a taller header set the variable on
32
21
  their layout root so the panel — a sibling of the header — inherits. */
33
22
  .rf-mobile-panel {
34
- display: none;
35
- position: fixed;
36
- top: var(--rf-header-height, 3.5rem);
37
- right: 0;
38
- bottom: 0;
39
- left: 0;
40
- width: 100%;
41
- max-width: 100vw;
42
- z-index: 99;
43
23
  background: var(--rf-color-bg, #fff);
44
- overflow-x: hidden;
45
- overflow-y: auto;
46
- -webkit-overflow-scrolling: touch;
47
24
  }
48
25
  /* Layout-specific panels (e.g. the docs sidebar-nav panel that sits
49
26
  under the docs header *and* toolbar) override `top` in their own
@@ -54,9 +31,6 @@
54
31
  .rf-mobile-panel__nav p {
55
32
  margin: 0;
56
33
  }
57
- .rf-mobile-panel__nav img {
58
- display: none;
59
- }
60
34
  /* Panel items — top-level links and group items render uniformly. The
61
35
  selectors below need to beat nav.css's nested-columns mobile overrides
62
36
  ((0,4,0)) on equal source position (nav.css is imported later than
@@ -66,10 +40,9 @@
66
40
  .rf-mobile-panel .rf-nav--menubar .rf-nav__top-level .rf-nav-item__link,
67
41
  .rf-mobile-panel .rf-nav--menubar .rf-nav-group .rf-nav-item__link,
68
42
  .rf-mobile-panel .rf-nav--menubar .rf-nav-group__panel .rf-nav--columns .rf-nav-item__link {
69
- display: block;
70
43
  padding: 0;
71
- font-size: 1.5rem;
72
- font-weight: 700;
44
+ font-size: var(--rf-text-2xl);
45
+ font-weight: var(--rf-weight-bold);
73
46
  color: var(--rf-color-text);
74
47
  text-decoration: none;
75
48
  background: transparent;
@@ -96,26 +69,4 @@
96
69
  padding: 1rem 1.5rem;
97
70
  }
98
71
 
99
- /* Panel opens via data-open attribute (set by mobile-menu behavior) */
100
- .rf-mobile-panel[data-open] {
101
- display: block;
102
- }
103
-
104
- @media (max-width: 768px) {
105
- .rf-mobile-menu-btn {
106
- display: block;
107
- }
108
- /* The inline menubar collapses behind the kebab on mobile — the
109
- .rf-mobile-panel duplicates the same nav and styles it as a flat
110
- vertical list (see nav.css's rf-nav--menubar mobile rules). */
111
- .rf-header__inner > rf-nav,
112
- .rf-docs-header__inner > rf-nav,
113
- .rf-blog-header__inner > rf-nav {
114
- display: none;
115
- }
116
- /* Hide the duplicated brand line inside the mobile panel — the header
117
- above the panel already shows it. */
118
- .rf-mobile-panel__nav > p:first-child {
119
- display: none;
120
- }
121
72
  }
@@ -1,20 +1,20 @@
1
+ @layer skin {
1
2
  /* On This Page — TOC sidebar navigation */
2
3
 
3
4
  .rf-on-this-page {
4
- font-size: 0.8rem;
5
+ font-size: var(--rf-text-xs);
5
6
  }
6
7
 
7
8
  .rf-on-this-page__title {
8
- font-size: 0.7rem;
9
- font-weight: 600;
9
+ font-size: var(--rf-text-xs);
10
+ font-weight: var(--rf-weight-semibold);
10
11
  text-transform: uppercase;
11
- letter-spacing: 0.05em;
12
+ letter-spacing: var(--rf-tracking-wider);
12
13
  color: var(--rf-color-muted, #64748b);
13
14
  margin: 0 0 0.75rem;
14
15
  }
15
16
 
16
17
  .rf-on-this-page__list {
17
- list-style: none;
18
18
  margin: 0;
19
19
  padding: 0;
20
20
  }
@@ -28,11 +28,10 @@
28
28
  }
29
29
 
30
30
  .rf-on-this-page__item a {
31
- display: block;
32
31
  padding: 0.25rem 0.75rem;
33
32
  color: var(--rf-color-muted, #64748b);
34
33
  text-decoration: none;
35
- line-height: 1.4;
34
+ line-height: var(--rf-leading-snug);
36
35
  }
37
36
 
38
37
  .rf-on-this-page__item a:hover {
@@ -46,3 +45,5 @@
46
45
  .rf-on-this-page__item[data-active] a {
47
46
  color: var(--rf-color-primary);
48
47
  }
48
+
49
+ }