@refrakt-md/lumina 0.22.0 → 0.24.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 (132) hide show
  1. package/base.css +7 -1
  2. package/contracts/structures.json +537 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +7 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/tokens.d.ts.map +1 -1
  7. package/dist/tokens.js +13 -0
  8. package/dist/tokens.js.map +1 -1
  9. package/index.css +11 -1
  10. package/package.json +5 -4
  11. package/styles/base/attributes.css +6 -7
  12. package/styles/dimensions/checklist.css +6 -35
  13. package/styles/dimensions/cover.css +13 -95
  14. package/styles/dimensions/density.css +3 -0
  15. package/styles/dimensions/frame.css +3 -0
  16. package/styles/dimensions/media.css +14 -61
  17. package/styles/dimensions/metadata.css +24 -74
  18. package/styles/dimensions/motion.css +102 -0
  19. package/styles/dimensions/sections.css +10 -24
  20. package/styles/dimensions/sequence.css +14 -79
  21. package/styles/dimensions/state.css +39 -56
  22. package/styles/dimensions/substrate.css +3 -0
  23. package/styles/dimensions/surfaces.css +73 -113
  24. package/styles/elements/blockquote.css +3 -2
  25. package/styles/elements/code.css +3 -0
  26. package/styles/elements/table.css +3 -0
  27. package/styles/global.css +9 -48
  28. package/styles/layouts/blog.css +3 -64
  29. package/styles/layouts/default.css +3 -77
  30. package/styles/layouts/docs.css +3 -153
  31. package/styles/layouts/mobile.css +1 -50
  32. package/styles/layouts/on-this-page.css +3 -2
  33. package/styles/layouts/plan.css +3 -134
  34. package/styles/layouts/search.css +3 -68
  35. package/styles/layouts/split.css +24 -169
  36. package/styles/layouts/theme-toggle.css +3 -29
  37. package/styles/layouts/version-switcher.css +3 -4
  38. package/styles/runes/accordion.css +15 -58
  39. package/styles/runes/aggregate.css +3 -12
  40. package/styles/runes/annotate.css +6 -35
  41. package/styles/runes/api.css +3 -0
  42. package/styles/runes/audio.css +3 -41
  43. package/styles/runes/badge.css +3 -0
  44. package/styles/runes/bar.css +3 -0
  45. package/styles/runes/bento.css +16 -159
  46. package/styles/runes/bg.css +3 -37
  47. package/styles/runes/blog.css +3 -5
  48. package/styles/runes/bond.css +3 -23
  49. package/styles/runes/breadcrumb.css +5 -13
  50. package/styles/runes/budget.css +3 -25
  51. package/styles/runes/bug.css +3 -0
  52. package/styles/runes/card.css +24 -92
  53. package/styles/runes/cast.css +5 -22
  54. package/styles/runes/changelog.css +5 -9
  55. package/styles/runes/character.css +3 -17
  56. package/styles/runes/chart.css +35 -53
  57. package/styles/runes/codegroup.css +15 -23
  58. package/styles/runes/collection.css +5 -82
  59. package/styles/runes/compare.css +3 -14
  60. package/styles/runes/comparison.css +7 -34
  61. package/styles/runes/conversation.css +5 -27
  62. package/styles/runes/cta.css +3 -26
  63. package/styles/runes/datatable.css +25 -40
  64. package/styles/runes/decision.css +3 -0
  65. package/styles/runes/design-context.css +3 -2
  66. package/styles/runes/details.css +5 -13
  67. package/styles/runes/diagram.css +5 -13
  68. package/styles/runes/diff.css +5 -88
  69. package/styles/runes/drawer.css +1 -105
  70. package/styles/runes/embed.css +4 -12
  71. package/styles/runes/event.css +3 -1
  72. package/styles/runes/expand.css +5 -40
  73. package/styles/runes/faction.css +3 -9
  74. package/styles/runes/feature.css +4 -32
  75. package/styles/runes/figure.css +5 -24
  76. package/styles/runes/file-ref.css +3 -18
  77. package/styles/runes/form.css +3 -32
  78. package/styles/runes/gallery.css +3 -135
  79. package/styles/runes/grid.css +4 -56
  80. package/styles/runes/hero.css +13 -126
  81. package/styles/runes/hint.css +16 -41
  82. package/styles/runes/howto.css +3 -25
  83. package/styles/runes/itinerary.css +3 -32
  84. package/styles/runes/juxtapose.css +12 -87
  85. package/styles/runes/lore.css +3 -10
  86. package/styles/runes/map.css +3 -36
  87. package/styles/runes/mediatext.css +3 -44
  88. package/styles/runes/milestone.css +3 -16
  89. package/styles/runes/mockup.css +15 -108
  90. package/styles/runes/nav.css +3 -178
  91. package/styles/runes/organization.css +3 -2
  92. package/styles/runes/page-section.css +3 -4
  93. package/styles/runes/pagination.css +5 -37
  94. package/styles/runes/palette.css +3 -22
  95. package/styles/runes/placeholder.css +3 -3
  96. package/styles/runes/plan-history.css +3 -23
  97. package/styles/runes/plan-progress.css +3 -4
  98. package/styles/runes/plan-ref.css +3 -0
  99. package/styles/runes/playlist.css +2 -36
  100. package/styles/runes/plot.css +3 -19
  101. package/styles/runes/preview.css +7 -25
  102. package/styles/runes/pricing.css +7 -25
  103. package/styles/runes/progress.css +6 -25
  104. package/styles/runes/pullquote.css +3 -26
  105. package/styles/runes/realm.css +3 -9
  106. package/styles/runes/recipe.css +3 -27
  107. package/styles/runes/relationships.css +3 -34
  108. package/styles/runes/reveal.css +7 -12
  109. package/styles/runes/sandbox.css +6 -36
  110. package/styles/runes/section.css +4 -18
  111. package/styles/runes/showcase.css +3 -20
  112. package/styles/runes/sidenote.css +3 -2
  113. package/styles/runes/snippet.css +3 -0
  114. package/styles/runes/spacing.css +3 -22
  115. package/styles/runes/spec.css +3 -0
  116. package/styles/runes/steps.css +4 -36
  117. package/styles/runes/storyboard.css +2 -17
  118. package/styles/runes/swatch.css +3 -6
  119. package/styles/runes/symbol.css +6 -4
  120. package/styles/runes/tabs.css +6 -9
  121. package/styles/runes/testimonial.css +5 -6
  122. package/styles/runes/textblock.css +2 -20
  123. package/styles/runes/timeline.css +3 -21
  124. package/styles/runes/tint.css +3 -0
  125. package/styles/runes/toc.css +5 -3
  126. package/styles/runes/track.css +2 -31
  127. package/styles/runes/typography.css +3 -15
  128. package/styles/runes/work.css +3 -0
  129. package/styles/runes/xref.css +3 -1
  130. package/tokens/base.css +19 -0
  131. package/tokens/dark.css +3 -0
  132. package/styles/dimensions/guest-posture.css +0 -27
@@ -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,7 +40,6 @@
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
44
  font-size: var(--rf-text-2xl);
72
45
  font-weight: var(--rf-weight-bold);
@@ -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,3 +1,4 @@
1
+ @layer skin {
1
2
  /* On This Page — TOC sidebar navigation */
2
3
 
3
4
  .rf-on-this-page {
@@ -14,7 +15,6 @@
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,7 +28,6 @@
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;
@@ -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
+ }
@@ -1,18 +1,13 @@
1
+ @layer skin {
1
2
  /* Plan layout */
2
3
 
3
4
  /* ---- Dashboard grid ---- */
4
5
 
5
6
  .rf-plan-dashboard {
6
- display: grid;
7
- grid-template-columns: repeat(auto-fill, minmax(24rem, 1fr));
8
7
  gap: var(--rf-spacing-lg, 1.5rem);
9
8
  padding: var(--rf-spacing-lg, 1.5rem);
10
9
  }
11
10
 
12
- .rf-plan-dashboard__section {
13
- min-width: 0;
14
- }
15
-
16
11
  .rf-plan-dashboard__section-title {
17
12
  font-size: var(--rf-text-lg);
18
13
  font-weight: var(--rf-weight-semibold);
@@ -25,14 +20,9 @@
25
20
  /* ---- Fixed sidebar ---- */
26
21
 
27
22
  .rf-plan-sidebar {
28
- position: fixed;
29
- inset-block: 0;
30
- inset-inline-start: 0;
31
- width: var(--plan-sidebar-width, 240px);
32
23
  background: var(--rf-color-bg, #fff);
33
24
  border-inline-end: 1px solid var(--rf-color-border, #dee2e6);
34
25
  padding: var(--rf-spacing-lg, 1.5rem) var(--rf-spacing-md, 1rem);
35
- overflow-y: auto;
36
26
  }
37
27
 
38
28
  .rf-plan-sidebar::-webkit-scrollbar {
@@ -40,9 +30,6 @@
40
30
  }
41
31
 
42
32
  .rf-plan-sidebar__title {
43
- display: flex;
44
- align-items: center;
45
- justify-content: space-between;
46
33
  font-size: var(--rf-text-lg);
47
34
  font-weight: var(--rf-weight-bold);
48
35
  margin-block-end: var(--rf-spacing-lg, 1.5rem);
@@ -50,9 +37,6 @@
50
37
  }
51
38
 
52
39
  .rf-plan-sidebar__search-trigger {
53
- display: inline-flex;
54
- align-items: center;
55
- justify-content: center;
56
40
  padding: 0.25rem;
57
41
  border: 1px solid var(--rf-color-border, #dee2e6);
58
42
  border-radius: var(--rf-radius-sm, 4px);
@@ -66,11 +50,6 @@
66
50
  color: var(--rf-color-text, #212529);
67
51
  background: var(--rf-color-surface-hover, #f1f3f5);
68
52
  }
69
- .rf-plan-sidebar__search-trigger svg {
70
- width: 16px;
71
- height: 16px;
72
- flex-shrink: 0;
73
- }
74
53
 
75
54
  .rf-plan-sidebar__group {
76
55
  margin-block-end: var(--rf-spacing-lg, 1.5rem);
@@ -91,10 +70,6 @@
91
70
  }
92
71
 
93
72
  .rf-plan-sidebar__status-header {
94
- display: flex;
95
- align-items: center;
96
- justify-content: space-between;
97
- width: 100%;
98
73
  padding: 0.25rem 0.5rem;
99
74
  border: none;
100
75
  border-radius: var(--rf-radius-sm, 0.25rem);
@@ -111,19 +86,12 @@
111
86
  }
112
87
 
113
88
  .rf-plan-sidebar__status-header::before {
114
- content: '\25B8';
115
- display: inline-block;
116
89
  margin-inline-end: 0.25rem;
117
90
  transition: transform 0.15s ease;
118
91
  font-size: 0.75em;
119
92
  }
120
93
 
121
- .rf-plan-sidebar__status-header[aria-expanded="true"]::before {
122
- transform: rotate(90deg);
123
- }
124
-
125
94
  .rf-plan-sidebar__status-label {
126
- flex: 1;
127
95
  font-weight: var(--rf-weight-medium);
128
96
  }
129
97
 
@@ -134,7 +102,6 @@
134
102
  background: var(--rf-color-surface-active, #f1f3f5);
135
103
  padding: 0 0.375rem;
136
104
  border-radius: var(--rf-radius-full, 9999px);
137
- min-width: 1.25rem;
138
105
  text-align: center;
139
106
  }
140
107
 
@@ -142,12 +109,7 @@
142
109
  padding-inline-start: var(--rf-spacing-sm, 0.5rem);
143
110
  }
144
111
 
145
- .rf-plan-sidebar__status-items[hidden] {
146
- display: none;
147
- }
148
-
149
112
  .rf-plan-sidebar__link {
150
- display: block;
151
113
  padding: 0.25rem 0.5rem;
152
114
  border-radius: var(--rf-radius-sm, 0.25rem);
153
115
  color: var(--rf-color-text, #212529);
@@ -161,14 +123,11 @@
161
123
  }
162
124
 
163
125
  .rf-plan-sidebar__link--dashboard {
164
- display: flex;
165
- align-items: center;
166
126
  gap: 0.375rem;
167
127
  margin-block-end: var(--rf-spacing-md, 1rem);
168
128
  }
169
129
 
170
130
  .rf-plan-sidebar__dashboard-icon {
171
- flex-shrink: 0;
172
131
  opacity: 0.6;
173
132
  }
174
133
 
@@ -192,17 +151,9 @@
192
151
  border-left: 2px solid var(--rf-color-danger, #ff6b6b);
193
152
  }
194
153
 
195
- .rf-plan-sidebar__status-link {
196
- display: flex;
197
- align-items: center;
198
- justify-content: space-between;
199
- }
200
-
201
154
  .rf-plan-sidebar__blocker-icon {
202
- margin-left: auto;
203
155
  font-size: var(--rf-text-xs);
204
156
  color: var(--rf-color-danger, #ff6b6b);
205
- flex-shrink: 0;
206
157
  }
207
158
 
208
159
  /* Views section in sidebar */
@@ -221,8 +172,6 @@
221
172
  }
222
173
 
223
174
  .rf-plan-sidebar__link .rf-plan-sidebar__view-label {
224
- flex: 1;
225
- overflow: hidden;
226
175
  text-overflow: ellipsis;
227
176
  white-space: nowrap;
228
177
  }
@@ -234,66 +183,31 @@
234
183
  background: var(--rf-color-surface-active, #f1f3f5);
235
184
  padding: 0 0.375rem;
236
185
  border-radius: var(--rf-radius-full, 9999px);
237
- min-width: 1.25rem;
238
186
  text-align: center;
239
187
  }
240
188
 
241
- .rf-plan-sidebar__group[data-type="views"] .rf-plan-sidebar__link {
242
- display: flex;
243
- align-items: center;
244
- justify-content: space-between;
245
- }
246
-
247
189
  /* ---- Content area ---- */
248
190
 
249
191
  .rf-plan-main {
250
- margin-inline-start: var(--plan-sidebar-width, 240px);
251
192
  padding: var(--rf-spacing-xl, 2rem);
252
193
  }
253
194
 
254
195
  /* Inner wrapper: flex layout when TOC is present */
255
196
  .rf-plan-main__inner--has-toc {
256
- display: flex;
257
197
  gap: var(--rf-spacing-xl, 2rem);
258
- max-width: calc(60rem + 200px + 2rem);
259
- margin: 0 auto;
260
- }
261
- .rf-plan-main__inner--has-toc .rf-plan-main__body {
262
- flex: 1;
263
- min-width: 0;
264
- max-width: 60rem;
265
198
  }
266
199
 
267
200
  .rf-plan-main__body {
268
- max-width: 60rem;
269
- margin: 0 auto;
270
201
  padding: 0 2.5rem;
271
202
  }
272
203
 
273
- /* ---- "On this page" TOC aside ---- */
274
-
275
- .rf-plan-toc {
276
- width: 200px;
277
- flex-shrink: 0;
278
- position: sticky;
279
- top: var(--rf-spacing-lg, 1.5rem);
280
- align-self: flex-start;
281
- max-height: calc(100vh - var(--rf-spacing-xl, 2rem) * 2);
282
- overflow-y: auto;
283
- }
284
-
285
204
  /* ---- Mobile toolbar (hidden on desktop) ---- */
286
205
 
287
206
  .rf-plan-toolbar {
288
- display: none;
289
- align-items: center;
290
207
  gap: 0.75rem;
291
208
  padding: 0.625rem 1rem;
292
209
  border-block-end: 1px solid var(--rf-color-border, #dee2e6);
293
210
  background: var(--rf-color-bg, #fff);
294
- position: sticky;
295
- top: 0;
296
- z-index: 100;
297
211
  }
298
212
 
299
213
  .rf-plan-toolbar__hamburger {
@@ -303,7 +217,6 @@
303
217
  cursor: pointer;
304
218
  color: var(--rf-color-muted, #6c757d);
305
219
  line-height: 0;
306
- flex-shrink: 0;
307
220
  }
308
221
 
309
222
  .rf-plan-toolbar__hamburger:hover {
@@ -314,8 +227,6 @@
314
227
  font-size: var(--rf-text-sm);
315
228
  font-weight: var(--rf-weight-semibold);
316
229
  color: var(--rf-color-text, #212529);
317
- flex: 1;
318
- min-width: 0;
319
230
  }
320
231
 
321
232
  .rf-plan-toolbar__section-nav-toggle {
@@ -325,7 +236,6 @@
325
236
  cursor: pointer;
326
237
  color: var(--rf-color-muted, #6c757d);
327
238
  line-height: 0;
328
- flex-shrink: 0;
329
239
  }
330
240
 
331
241
  .rf-plan-toolbar__section-nav-toggle:hover {
@@ -335,25 +245,14 @@
335
245
  /* ---- Section nav dropdown ---- */
336
246
 
337
247
  .rf-section-nav {
338
- display: none;
339
- position: absolute;
340
- top: 100%;
341
- right: 0.5rem;
342
- min-width: 14rem;
343
248
  background: var(--rf-color-bg, #fff);
344
249
  border: 1px solid var(--rf-color-border, #dee2e6);
345
250
  border-radius: var(--rf-radius-md, 0.5rem);
346
251
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
347
- z-index: 200;
348
252
  padding: 0.25rem 0;
349
253
  }
350
254
 
351
- .rf-section-nav[data-open] {
352
- display: block;
353
- }
354
-
355
255
  .rf-section-nav__list {
356
- list-style: none;
357
256
  margin: 0;
358
257
  padding: 0;
359
258
  }
@@ -363,7 +262,6 @@
363
262
  }
364
263
 
365
264
  .rf-section-nav__link {
366
- display: block;
367
265
  padding: 0.5rem 1rem;
368
266
  color: var(--rf-color-text, #212529);
369
267
  text-decoration: none;
@@ -387,40 +285,10 @@
387
285
  /* ---- Responsive ---- */
388
286
 
389
287
  /* Hide TOC on medium screens */
390
- @media (max-width: 64rem) {
391
- .rf-plan-toc {
392
- display: none;
393
- }
394
- .rf-plan-main__inner--has-toc {
395
- display: block;
396
- }
397
- }
398
288
 
399
289
  @media (max-width: 48rem) {
400
- /* Offset scroll targets for sticky toolbar */
401
- html:has(.rf-plan-toolbar) {
402
- scroll-padding-top: 3.5rem;
403
- }
404
-
405
- .rf-plan-toolbar {
406
- display: flex;
407
- }
408
-
409
- .rf-plan-sidebar {
410
- display: none;
411
- }
412
-
413
- /* Search trigger is in the toolbar on mobile; hide the sidebar copy */
414
- .rf-mobile-panel .rf-plan-sidebar__search-trigger {
415
- display: none;
416
- }
417
-
418
- .rf-layout-plan .rf-mobile-panel--nav {
419
- top: 3.0625rem;
420
- }
421
290
 
422
291
  .rf-plan-main {
423
- margin-inline-start: 0;
424
292
  padding: var(--rf-spacing-md, 1rem);
425
293
  }
426
294
 
@@ -429,7 +297,8 @@
429
297
  }
430
298
 
431
299
  .rf-plan-dashboard {
432
- grid-template-columns: 1fr;
433
300
  padding: var(--rf-spacing-md, 1rem);
434
301
  }
435
302
  }
303
+
304
+ }
@@ -1,7 +1,6 @@
1
+ @layer skin {
1
2
  /* Search trigger button */
2
3
  .rf-search-trigger {
3
- display: inline-flex;
4
- align-items: center;
5
4
  gap: 0.5rem;
6
5
  padding: 0.375rem 0.625rem 0.375rem 0.5rem;
7
6
  border: 1px solid var(--rf-color-border);
@@ -14,24 +13,13 @@
14
13
  transition: border-color 0.15s, color 0.15s, background 0.15s;
15
14
  line-height: 1;
16
15
  white-space: nowrap;
17
- flex-shrink: 0;
18
16
  }
19
17
  .rf-search-trigger:hover {
20
18
  border-color: var(--rf-color-primary);
21
19
  color: var(--rf-color-text);
22
20
  background: var(--rf-color-surface-hover);
23
21
  }
24
- .rf-search-trigger svg {
25
- width: 16px;
26
- height: 16px;
27
- flex-shrink: 0;
28
- }
29
- .rf-search-trigger__label {
30
- pointer-events: none;
31
- }
32
22
  .rf-search-trigger__kbd {
33
- display: inline-flex;
34
- align-items: center;
35
23
  padding: 0.125rem 0.375rem;
36
24
  border: 1px solid var(--rf-color-border);
37
25
  border-radius: var(--rf-radius-sm);
@@ -44,43 +32,28 @@
44
32
 
45
33
  /* Search dialog */
46
34
  .rf-search-dialog {
47
- position: fixed;
48
- top: 15vh;
49
- left: 50%;
50
- transform: translateX(-50%);
51
- width: min(560px, calc(100vw - 2rem));
52
- max-height: 70vh;
53
35
  margin: 0;
54
36
  padding: 0;
55
37
  border: 1px solid var(--rf-color-border);
56
38
  border-radius: var(--rf-radius-lg);
57
39
  background: var(--rf-color-bg);
58
40
  box-shadow: var(--rf-shadow-lg);
59
- overflow: hidden;
60
41
  font-family: var(--rf-font-sans);
61
42
  }
62
- .rf-search-dialog[open] {
63
- display: flex;
64
- flex-direction: column;
65
- }
66
43
  .rf-search-dialog::backdrop {
67
44
  background: rgba(0, 0, 0, 0.4);
68
45
  }
69
46
 
70
47
  /* Dialog header */
71
48
  .rf-search-dialog__header {
72
- display: flex;
73
- align-items: center;
74
49
  gap: 0.75rem;
75
50
  padding: 0.875rem 1rem;
76
51
  border-bottom: 1px solid var(--rf-color-border);
77
52
  }
78
53
  .rf-search-dialog__icon {
79
- flex-shrink: 0;
80
54
  color: var(--rf-color-muted);
81
55
  }
82
56
  .rf-search-dialog__input {
83
- flex: 1;
84
57
  border: none;
85
58
  outline: none;
86
59
  background: transparent;
@@ -91,13 +64,7 @@
91
64
  .rf-search-dialog__input::placeholder {
92
65
  color: var(--rf-color-muted);
93
66
  }
94
- /* Hide native search clear button */
95
- .rf-search-dialog__input::-webkit-search-cancel-button {
96
- display: none;
97
- }
98
67
  .rf-search-dialog__esc {
99
- display: inline-flex;
100
- align-items: center;
101
68
  padding: 0.125rem 0.375rem;
102
69
  border: 1px solid var(--rf-color-border);
103
70
  border-radius: var(--rf-radius-sm);
@@ -105,14 +72,6 @@
105
72
  font-family: var(--rf-font-sans);
106
73
  font-size: var(--rf-text-xs);
107
74
  color: var(--rf-color-muted);
108
- flex-shrink: 0;
109
- }
110
-
111
- /* Dialog body */
112
- .rf-search-dialog__body {
113
- flex: 1;
114
- overflow-y: auto;
115
- overscroll-behavior: contain;
116
75
  }
117
76
 
118
77
  /* Results */
@@ -120,7 +79,6 @@
120
79
  padding: 0.5rem;
121
80
  }
122
81
  .rf-search-result {
123
- display: block;
124
82
  padding: 0.625rem 0.75rem;
125
83
  border-radius: var(--rf-radius-md);
126
84
  text-decoration: none;
@@ -132,14 +90,12 @@
132
90
  background: var(--rf-color-surface-hover);
133
91
  }
134
92
  .rf-search-result__title {
135
- display: block;
136
93
  font-weight: var(--rf-weight-medium);
137
94
  font-size: var(--rf-text-sm);
138
95
  line-height: var(--rf-leading-snug);
139
96
  margin-bottom: 0.125rem;
140
97
  }
141
98
  .rf-search-result__excerpt {
142
- display: block;
143
99
  font-size: var(--rf-text-xs);
144
100
  line-height: var(--rf-leading-normal);
145
101
  color: var(--rf-color-muted);
@@ -161,8 +117,6 @@
161
117
 
162
118
  /* Footer */
163
119
  .rf-search-dialog__footer {
164
- display: flex;
165
- align-items: center;
166
120
  gap: 1rem;
167
121
  padding: 0.5rem 1rem;
168
122
  border-top: 1px solid var(--rf-color-border);
@@ -170,10 +124,6 @@
170
124
  color: var(--rf-color-muted);
171
125
  }
172
126
  .rf-search-dialog__footer kbd {
173
- display: inline-flex;
174
- align-items: center;
175
- justify-content: center;
176
- min-width: 1.25rem;
177
127
  padding: 0 0.25rem;
178
128
  border: 1px solid var(--rf-color-border);
179
129
  border-radius: 3px;
@@ -185,29 +135,14 @@
185
135
 
186
136
  /* Mobile */
187
137
  @media (max-width: 768px) {
188
- .rf-search-trigger__label,
189
- .rf-search-trigger__kbd {
190
- display: none;
191
- }
192
138
  .rf-search-trigger {
193
139
  padding: 0.375rem;
194
140
  border-radius: var(--rf-radius-sm);
195
141
  }
196
142
  .rf-search-dialog[open] {
197
- top: 0;
198
- left: 0;
199
- right: 0;
200
- bottom: 0;
201
- transform: none;
202
- width: 100%;
203
- height: 100vh;
204
- height: 100dvh;
205
- max-height: 100vh;
206
- max-height: 100dvh;
207
143
  border-radius: 0;
208
144
  border: none;
209
145
  }
210
- .rf-search-dialog__footer {
211
- display: none;
212
- }
146
+ }
147
+
213
148
  }