@refrakt-md/lumina 0.4.0 → 0.5.1

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 (88) hide show
  1. package/base.css +18 -0
  2. package/contracts/structures.json +1360 -3
  3. package/dist/config.d.ts +2 -3
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +6 -229
  6. package/dist/config.js.map +1 -1
  7. package/dist/icons.d.ts +3 -0
  8. package/dist/icons.d.ts.map +1 -0
  9. package/dist/icons.js +86 -0
  10. package/dist/icons.js.map +1 -0
  11. package/dist/transform.d.ts +2 -0
  12. package/dist/transform.d.ts.map +1 -1
  13. package/dist/transform.js +2 -0
  14. package/dist/transform.js.map +1 -1
  15. package/index.css +12 -0
  16. package/package.json +18 -11
  17. package/styles/elements/blockquote.css +8 -4
  18. package/styles/elements/code.css +40 -0
  19. package/styles/global.css +0 -7
  20. package/styles/layouts/blog.css +267 -0
  21. package/styles/layouts/default.css +26 -6
  22. package/styles/layouts/docs.css +84 -18
  23. package/styles/layouts/mobile.css +84 -0
  24. package/styles/runes/bento.css +2 -0
  25. package/styles/runes/codegroup.css +7 -2
  26. package/styles/runes/design-context.css +25 -0
  27. package/styles/runes/feature.css +30 -14
  28. package/styles/runes/form.css +1 -2
  29. package/styles/runes/grid.css +25 -7
  30. package/styles/runes/hero.css +15 -0
  31. package/styles/runes/map.css +113 -0
  32. package/styles/runes/palette.css +91 -0
  33. package/styles/runes/preview.css +188 -0
  34. package/styles/runes/sandbox.css +23 -0
  35. package/styles/runes/spacing.css +110 -0
  36. package/styles/runes/steps.css +21 -3
  37. package/styles/runes/swatch.css +28 -0
  38. package/styles/runes/symbol.css +164 -0
  39. package/styles/runes/tabs.css +6 -0
  40. package/styles/runes/testimonial.css +2 -3
  41. package/styles/runes/timeline.css +43 -24
  42. package/styles/runes/typography.css +104 -0
  43. package/svelte/elements.ts +1 -0
  44. package/{sveltekit → svelte}/index.ts +0 -8
  45. package/svelte/layouts/BlogLayout.svelte +173 -0
  46. package/svelte/layouts/DefaultLayout.svelte +67 -0
  47. package/svelte/layouts/DocsLayout.svelte +155 -0
  48. package/{sveltekit → svelte}/manifest.json +1 -1
  49. package/svelte/registry.ts +2 -0
  50. package/svelte/tokens.css +6 -0
  51. package/dist/lib/engine.d.ts +0 -13
  52. package/dist/lib/engine.d.ts.map +0 -1
  53. package/dist/lib/engine.js +0 -218
  54. package/dist/lib/engine.js.map +0 -1
  55. package/dist/lib/helpers.d.ts +0 -14
  56. package/dist/lib/helpers.d.ts.map +0 -1
  57. package/dist/lib/helpers.js +0 -26
  58. package/dist/lib/helpers.js.map +0 -1
  59. package/dist/lib/types.d.ts +0 -74
  60. package/dist/lib/types.d.ts.map +0 -1
  61. package/dist/lib/types.js +0 -2
  62. package/dist/lib/types.js.map +0 -1
  63. package/sveltekit/components/Accordion.svelte +0 -26
  64. package/sveltekit/components/Bento.svelte +0 -50
  65. package/sveltekit/components/Chart.svelte +0 -121
  66. package/sveltekit/components/CodeGroup.svelte +0 -88
  67. package/sveltekit/components/Comparison.svelte +0 -209
  68. package/sveltekit/components/DataTable.svelte +0 -154
  69. package/sveltekit/components/Details.svelte +0 -23
  70. package/sveltekit/components/Diagram.svelte +0 -45
  71. package/sveltekit/components/Embed.svelte +0 -36
  72. package/sveltekit/components/Form.svelte +0 -194
  73. package/sveltekit/components/Grid.svelte +0 -42
  74. package/sveltekit/components/Nav.svelte +0 -62
  75. package/sveltekit/components/Pricing.svelte +0 -20
  76. package/sveltekit/components/Reveal.svelte +0 -62
  77. package/sveltekit/components/Storyboard.svelte +0 -41
  78. package/sveltekit/components/Tabs.svelte +0 -75
  79. package/sveltekit/components/Testimonial.svelte +0 -26
  80. package/sveltekit/elements/Blockquote.svelte +0 -37
  81. package/sveltekit/elements/Pre.svelte +0 -77
  82. package/sveltekit/elements/Table.svelte +0 -40
  83. package/sveltekit/elements.ts +0 -11
  84. package/sveltekit/layouts/BlogLayout.svelte +0 -382
  85. package/sveltekit/layouts/DefaultLayout.svelte +0 -70
  86. package/sveltekit/layouts/DocsLayout.svelte +0 -133
  87. package/sveltekit/registry.ts +0 -59
  88. package/sveltekit/tokens.css +0 -71
@@ -1,5 +1,5 @@
1
1
  /* Blockquote */
2
- .rf-blockquote {
2
+ blockquote {
3
3
  position: relative;
4
4
  border-left: 3px solid var(--rf-color-primary);
5
5
  margin: 1.5rem 0;
@@ -8,15 +8,19 @@
8
8
  background: var(--rf-color-surface);
9
9
  border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
10
10
  }
11
- .rf-blockquote__mark {
11
+ blockquote::before {
12
+ content: '';
12
13
  position: absolute;
13
14
  left: 0.75rem;
14
15
  top: 1rem;
15
16
  width: 18px;
16
17
  height: 18px;
17
- color: var(--rf-color-primary);
18
+ background: var(--rf-color-primary);
18
19
  opacity: 0.4;
20
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 8C10 5.79 8.21 4 6 4C3.79 4 2 5.79 2 8C2 10.21 3.79 12 6 12C6.67 12 7.31 11.83 7.88 11.54C7.63 14.08 5.55 16.09 3 16.34V18.36C6.68 18.09 9.64 15.13 9.93 11.45C9.98 10.99 10 10.5 10 10V8ZM22 8C22 5.79 20.21 4 18 4C15.79 4 14 5.79 14 8C14 10.21 15.79 12 18 12C18.67 12 19.31 11.83 19.88 11.54C19.63 14.08 17.55 16.09 15 16.34V18.36C18.68 18.09 21.64 15.13 21.93 11.45C21.98 10.99 22 10.5 22 10V8Z'/%3E%3C/svg%3E");
21
+ mask-size: contain;
22
+ mask-repeat: no-repeat;
19
23
  }
20
- .rf-blockquote p:last-child {
24
+ blockquote p:last-child {
21
25
  margin-bottom: 0;
22
26
  }
@@ -0,0 +1,40 @@
1
+ /* Code wrapper — behavior-injected copy button for code blocks */
2
+ .rf-code-wrapper {
3
+ position: relative;
4
+ }
5
+
6
+ .rf-code-wrapper > pre {
7
+ margin: 0;
8
+ }
9
+
10
+ .rf-copy-btn {
11
+ position: absolute;
12
+ top: 0.5rem;
13
+ right: 0.5rem;
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+ width: 2rem;
18
+ height: 2rem;
19
+ border: none;
20
+ border-radius: var(--rf-radius-sm);
21
+ background: transparent;
22
+ color: var(--rf-color-code-text, #e2e8f0);
23
+ cursor: pointer;
24
+ opacity: 0;
25
+ transition: opacity 150ms ease, background-color 150ms ease;
26
+ }
27
+
28
+ .rf-code-wrapper:hover .rf-copy-btn {
29
+ opacity: 0.6;
30
+ }
31
+
32
+ .rf-copy-btn:hover {
33
+ opacity: 1 !important;
34
+ background: rgba(255, 255, 255, 0.1);
35
+ }
36
+
37
+ .rf-copy-btn--copied {
38
+ opacity: 1 !important;
39
+ color: var(--rf-color-success, #4ade80);
40
+ }
package/styles/global.css CHANGED
@@ -102,13 +102,6 @@ li > p {
102
102
  margin-bottom: 0.5rem;
103
103
  }
104
104
 
105
- blockquote {
106
- border-left: 3px solid var(--rf-color-border);
107
- margin: 1.5rem 0;
108
- padding: 0.5rem 1rem;
109
- color: var(--rf-color-muted);
110
- }
111
-
112
105
  table {
113
106
  width: 100%;
114
107
  border-collapse: collapse;
@@ -0,0 +1,267 @@
1
+ /* Blog layout */
2
+
3
+ /* ---- Header ---- */
4
+ .rf-blog-header {
5
+ border-bottom: 1px solid var(--rf-color-border);
6
+ }
7
+ .rf-blog-header__inner {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ padding: 1.125rem 1.5rem;
12
+ }
13
+ .rf-blog-header p {
14
+ margin: 0;
15
+ line-height: 1;
16
+ }
17
+ .rf-blog-header a {
18
+ display: inline-block;
19
+ color: inherit;
20
+ text-decoration: none;
21
+ }
22
+ .rf-blog-header a:hover {
23
+ text-decoration: none;
24
+ }
25
+ .rf-blog-header p:first-child a {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ gap: 0.5rem;
29
+ font-weight: 600;
30
+ font-size: 1.2rem;
31
+ letter-spacing: -0.02em;
32
+ }
33
+ .rf-blog-header img {
34
+ height: 2rem;
35
+ width: auto;
36
+ }
37
+ .rf-blog-header__inner p ~ p {
38
+ font-size: 0.85rem;
39
+ }
40
+ .rf-blog-header__inner p ~ p a {
41
+ margin-left: 1.5rem;
42
+ color: var(--rf-color-muted);
43
+ }
44
+ .rf-blog-header__inner p ~ p a:hover {
45
+ color: var(--rf-color-text);
46
+ }
47
+ .rf-blog-header__inner p ~ p a svg {
48
+ width: 1.1rem;
49
+ height: 1.1rem;
50
+ vertical-align: -0.15em;
51
+ }
52
+
53
+ /* ---- Layout container ---- */
54
+ .rf-blog {
55
+ max-width: 72rem;
56
+ margin: 0 auto;
57
+ padding: 2.5rem 1.5rem 4rem;
58
+ }
59
+ .rf-blog--has-sidebar {
60
+ display: grid;
61
+ grid-template-columns: 1fr 16rem;
62
+ gap: 3rem;
63
+ align-items: start;
64
+ }
65
+
66
+ /* ---- Blog index ---- */
67
+ .rf-blog-index {
68
+ max-width: 42rem;
69
+ }
70
+ .rf-blog-index__title {
71
+ font-size: 2.25rem;
72
+ font-weight: 800;
73
+ line-height: 1.15;
74
+ letter-spacing: -0.02em;
75
+ margin: 0 0 1rem;
76
+ color: var(--rf-color-text);
77
+ }
78
+ .rf-blog-index__body {
79
+ margin-bottom: 2rem;
80
+ line-height: 1.8;
81
+ color: var(--rf-color-muted);
82
+ }
83
+ .rf-blog-index__body:empty {
84
+ display: none;
85
+ }
86
+ .rf-blog-index__posts {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: 1.5rem;
90
+ }
91
+
92
+ /* ---- Post card ---- */
93
+ .rf-blog-card {
94
+ display: block;
95
+ padding: 1.5rem;
96
+ border: 1px solid var(--rf-color-border);
97
+ border-radius: var(--rf-radius-md, 0.5rem);
98
+ text-decoration: none;
99
+ color: inherit;
100
+ transition: border-color 0.15s, box-shadow 0.15s;
101
+ }
102
+ .rf-blog-card:hover {
103
+ border-color: var(--rf-color-text);
104
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
105
+ text-decoration: none;
106
+ }
107
+ .rf-blog-card__title {
108
+ font-size: 1.35rem;
109
+ font-weight: 700;
110
+ margin: 0 0 0.5rem;
111
+ color: var(--rf-color-text);
112
+ }
113
+ .rf-blog-card__meta {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.75rem;
117
+ font-size: 0.85rem;
118
+ color: var(--rf-color-muted);
119
+ margin-bottom: 0.5rem;
120
+ }
121
+ .rf-blog-card__author::before {
122
+ content: '\00b7';
123
+ margin-right: 0.75rem;
124
+ }
125
+ .rf-blog-card__desc {
126
+ margin: 0 0 0.75rem;
127
+ font-size: 0.95rem;
128
+ line-height: 1.6;
129
+ color: var(--rf-color-muted);
130
+ }
131
+ .rf-blog-card__tags {
132
+ display: flex;
133
+ flex-wrap: wrap;
134
+ gap: 0.5rem;
135
+ margin-bottom: 0.75rem;
136
+ }
137
+ .rf-blog-card__link {
138
+ font-size: 0.85rem;
139
+ font-weight: 600;
140
+ color: var(--rf-color-primary, var(--rf-color-text));
141
+ }
142
+
143
+ /* ---- Article ---- */
144
+ .rf-blog-article {
145
+ max-width: 42rem;
146
+ }
147
+ .rf-blog-article__header {
148
+ margin-bottom: 2.5rem;
149
+ padding-bottom: 1.5rem;
150
+ border-bottom: 1px solid var(--rf-color-border);
151
+ }
152
+ .rf-blog-article__title {
153
+ font-size: 2.25rem;
154
+ font-weight: 800;
155
+ line-height: 1.15;
156
+ letter-spacing: -0.02em;
157
+ margin: 0 0 1rem;
158
+ color: var(--rf-color-text);
159
+ }
160
+ .rf-blog-article__meta {
161
+ display: flex;
162
+ align-items: center;
163
+ gap: 0.75rem;
164
+ font-size: 0.9rem;
165
+ color: var(--rf-color-muted);
166
+ }
167
+ .rf-blog-article__meta time {
168
+ font-weight: 500;
169
+ }
170
+ .rf-blog-article__author::before {
171
+ content: '\00b7';
172
+ margin-right: 0.75rem;
173
+ }
174
+ .rf-blog-article__tags {
175
+ display: flex;
176
+ flex-wrap: wrap;
177
+ gap: 0.5rem;
178
+ margin-top: 0.75rem;
179
+ }
180
+ .rf-blog-article__tag {
181
+ font-size: 0.75rem;
182
+ font-weight: 500;
183
+ padding: 0.2rem 0.6rem;
184
+ border-radius: 9999px;
185
+ background: var(--rf-color-surface);
186
+ color: var(--rf-color-muted);
187
+ border: 1px solid var(--rf-color-border);
188
+ }
189
+
190
+ /* ---- Article body typography ---- */
191
+ .rf-blog-article__body {
192
+ line-height: 1.8;
193
+ }
194
+ .rf-blog-article__body h2 {
195
+ margin-top: 2.5rem;
196
+ }
197
+ .rf-blog-article__body h3 {
198
+ margin-top: 2rem;
199
+ }
200
+ .rf-blog-article__body p {
201
+ margin-bottom: 1.25rem;
202
+ }
203
+ .rf-blog-article__body img {
204
+ border-radius: var(--rf-radius-md);
205
+ margin: 1.5rem 0;
206
+ }
207
+
208
+ /* ---- Sidebar ---- */
209
+ .rf-blog-sidebar {
210
+ position: sticky;
211
+ top: 2.5rem;
212
+ font-size: 0.85rem;
213
+ color: var(--rf-color-muted);
214
+ }
215
+ .rf-blog-sidebar h2,
216
+ .rf-blog-sidebar h3,
217
+ .rf-blog-sidebar h4 {
218
+ font-size: 0.75rem;
219
+ font-weight: 600;
220
+ text-transform: uppercase;
221
+ letter-spacing: 0.05em;
222
+ color: var(--rf-color-muted);
223
+ margin-top: 0;
224
+ margin-bottom: 0.5rem;
225
+ }
226
+ .rf-blog-sidebar ul {
227
+ list-style: none;
228
+ padding: 0;
229
+ margin: 0;
230
+ }
231
+ .rf-blog-sidebar li {
232
+ padding: 0.25rem 0;
233
+ }
234
+ .rf-blog-sidebar a {
235
+ color: var(--rf-color-muted);
236
+ text-decoration: none;
237
+ }
238
+ .rf-blog-sidebar a:hover {
239
+ color: var(--rf-color-text);
240
+ }
241
+
242
+ /* ---- Footer ---- */
243
+ .rf-blog-footer {
244
+ border-top: 1px solid var(--rf-color-border);
245
+ padding: 2rem 1.5rem;
246
+ text-align: center;
247
+ font-size: 0.85rem;
248
+ color: var(--rf-color-muted);
249
+ }
250
+
251
+ /* ---- Mobile ---- */
252
+ @media (max-width: 768px) {
253
+ .rf-blog-header__inner p ~ p {
254
+ display: none;
255
+ }
256
+ .rf-blog--has-sidebar {
257
+ grid-template-columns: 1fr;
258
+ }
259
+ .rf-blog-article__title {
260
+ font-size: 1.75rem;
261
+ }
262
+ .rf-blog-sidebar {
263
+ position: static;
264
+ border-top: 1px solid var(--rf-color-border);
265
+ padding-top: 1.5rem;
266
+ }
267
+ }
@@ -6,7 +6,7 @@
6
6
  display: flex;
7
7
  align-items: center;
8
8
  justify-content: space-between;
9
- padding: 0.875rem 1.5rem;
9
+ padding: 1.125rem 1.5rem;
10
10
  }
11
11
  .rf-header p {
12
12
  margin: 0;
@@ -20,21 +20,33 @@
20
20
  .rf-header a:hover {
21
21
  text-decoration: none;
22
22
  }
23
+ .rf-header p:first-child a {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ gap: 0.5rem;
27
+ font-weight: 600;
28
+ font-size: 1.2rem;
29
+ letter-spacing: -0.02em;
30
+ }
23
31
  .rf-header img {
24
- display: block;
25
- height: 1.5rem;
32
+ height: 2rem;
26
33
  width: auto;
27
34
  }
28
- .rf-header__inner p:last-child:not(:first-child) {
35
+ .rf-header__inner p ~ p {
29
36
  font-size: 0.85rem;
30
37
  }
31
- .rf-header__inner p:last-child:not(:first-child) a {
38
+ .rf-header__inner p ~ p a {
32
39
  margin-left: 1.5rem;
33
40
  color: var(--rf-color-muted);
34
41
  }
35
- .rf-header__inner p:last-child:not(:first-child) a:hover {
42
+ .rf-header__inner p ~ p a:hover {
36
43
  color: var(--rf-color-text);
37
44
  }
45
+ .rf-header__inner p ~ p a svg {
46
+ width: 1.1rem;
47
+ height: 1.1rem;
48
+ vertical-align: -0.15em;
49
+ }
38
50
  .rf-page-content {
39
51
  padding-top: 2.5rem;
40
52
  padding-bottom: 4rem;
@@ -42,4 +54,12 @@
42
54
  margin: 0 auto;
43
55
  padding-left: 1.5rem;
44
56
  padding-right: 1.5rem;
57
+ --rf-content-padding: 1.5rem;
58
+ container-type: inline-size;
59
+ }
60
+
61
+ @media (max-width: 768px) {
62
+ .rf-header__inner p ~ p {
63
+ display: none;
64
+ }
45
65
  }
@@ -1,18 +1,20 @@
1
1
  /* Docs layout */
2
+
3
+ /* ---- Fixed header ---- */
2
4
  .rf-docs-header {
3
5
  position: fixed;
4
6
  top: 0;
5
7
  left: 0;
6
8
  right: 0;
7
9
  z-index: 10;
8
- background: var(--rf-color-bg);
10
+ background: var(--rf-color-bg, #fff);
9
11
  border-bottom: 1px solid var(--rf-color-border);
10
12
  }
11
13
  .rf-docs-header__inner {
12
14
  display: flex;
13
15
  align-items: center;
14
16
  justify-content: space-between;
15
- padding: 0.875rem 1.5rem;
17
+ padding: 1.125rem 1.5rem;
16
18
  }
17
19
  .rf-docs-header p {
18
20
  margin: 0;
@@ -26,41 +28,56 @@
26
28
  .rf-docs-header a:hover {
27
29
  text-decoration: none;
28
30
  }
31
+ .rf-docs-header p:first-child a {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ gap: 0.5rem;
35
+ font-weight: 600;
36
+ font-size: 1.2rem;
37
+ letter-spacing: -0.02em;
38
+ }
29
39
  .rf-docs-header img {
30
- display: block;
31
- height: 1.5rem;
40
+ height: 2rem;
32
41
  width: auto;
33
42
  }
34
- .rf-docs-header__inner p:last-child:not(:first-child) {
43
+ .rf-docs-header__inner p ~ p {
35
44
  font-size: 0.85rem;
36
45
  }
37
- .rf-docs-header__inner p:last-child:not(:first-child) a {
46
+ .rf-docs-header__inner p ~ p a {
38
47
  margin-left: 1.5rem;
39
48
  color: var(--rf-color-muted);
40
49
  }
41
- .rf-docs-header__inner p:last-child:not(:first-child) a:hover {
50
+ .rf-docs-header__inner p ~ p a:hover {
42
51
  color: var(--rf-color-text);
43
52
  }
44
- /* Sidebar */
53
+ .rf-docs-header__inner p ~ p a svg {
54
+ width: 1.1rem;
55
+ height: 1.1rem;
56
+ vertical-align: -0.15em;
57
+ }
58
+
59
+ /* ---- Fixed sidebar ---- */
45
60
  .rf-docs-sidebar {
46
61
  position: fixed;
47
62
  left: 0;
48
- top: 3.375rem;
63
+ top: 4.125rem;
49
64
  bottom: 0;
50
65
  width: 240px;
51
66
  overflow-y: auto;
52
67
  padding: 1.5rem;
53
68
  border-right: 1px solid var(--rf-color-border);
54
- background: var(--rf-color-bg);
69
+ background: var(--rf-color-bg, #fff);
55
70
  z-index: 5;
56
71
  }
57
72
  .rf-docs-sidebar::-webkit-scrollbar {
58
73
  width: 0;
59
74
  }
60
- /* Content area */
75
+
76
+ /* ---- Content area ---- */
61
77
  .rf-docs-content {
62
- padding-top: 5rem;
78
+ padding-top: 5.75rem;
63
79
  padding-bottom: 4rem;
80
+ container-type: inline-size;
64
81
  }
65
82
  .rf-docs-content--has-nav {
66
83
  margin-left: 240px;
@@ -69,18 +86,66 @@
69
86
  max-width: 60rem;
70
87
  margin: 0 auto;
71
88
  padding: 0 2.5rem;
89
+ --rf-content-padding: 2.5rem;
90
+ }
91
+
92
+ /* ---- Mobile toolbar (hidden on desktop) ---- */
93
+ .rf-docs-toolbar {
94
+ display: none;
95
+ align-items: center;
96
+ gap: 0.75rem;
97
+ padding: 0.625rem 1rem;
98
+ border-bottom: 1px solid var(--rf-color-border);
99
+ background: var(--rf-color-bg, #fff);
72
100
  }
73
- /* Mobile */
101
+ .rf-docs-toolbar__hamburger {
102
+ background: none;
103
+ border: none;
104
+ padding: 0.25rem;
105
+ cursor: pointer;
106
+ color: var(--rf-color-muted);
107
+ line-height: 0;
108
+ flex-shrink: 0;
109
+ }
110
+ .rf-docs-toolbar__hamburger:hover {
111
+ color: var(--rf-color-text);
112
+ }
113
+ .rf-docs-toolbar__breadcrumb {
114
+ font-size: 0.8rem;
115
+ color: var(--rf-color-muted);
116
+ min-width: 0;
117
+ overflow: hidden;
118
+ text-overflow: ellipsis;
119
+ white-space: nowrap;
120
+ }
121
+ .rf-docs-breadcrumb-category {
122
+ color: var(--rf-color-muted);
123
+ }
124
+ .rf-docs-breadcrumb-sep {
125
+ margin: 0 0.35rem;
126
+ color: var(--rf-color-border);
127
+ }
128
+ .rf-docs-breadcrumb-page {
129
+ color: var(--rf-color-text);
130
+ font-weight: 500;
131
+ }
132
+
133
+ /* ---- Mobile overrides ---- */
74
134
  @media (max-width: 768px) {
75
135
  .rf-docs-header {
76
136
  position: static;
77
137
  }
138
+ .rf-docs-header__inner p ~ p {
139
+ display: none;
140
+ }
141
+ .rf-docs-toolbar {
142
+ display: flex;
143
+ }
144
+ .rf-mobile-panel--nav {
145
+ top: 6.25rem;
146
+ }
78
147
  .rf-docs-sidebar {
79
- position: static;
80
- width: auto;
81
- border-right: none;
82
- border-bottom: 1px solid var(--rf-color-border);
83
- padding: 1rem 1.5rem;
148
+ display: none;
84
149
  }
85
150
  .rf-docs-content {
86
151
  padding-top: 2rem;
@@ -90,5 +155,6 @@
90
155
  }
91
156
  .rf-docs-content__inner {
92
157
  padding: 0 1.5rem;
158
+ --rf-content-padding: 1.5rem;
93
159
  }
94
160
  }
@@ -0,0 +1,84 @@
1
+ /* Shared mobile UI — menu button, fullscreen panel, close */
2
+
3
+ /* ---- Mobile menu button (hidden on desktop) ---- */
4
+ .rf-mobile-menu-btn {
5
+ display: none;
6
+ background: none;
7
+ border: none;
8
+ padding: 0.25rem;
9
+ cursor: pointer;
10
+ color: var(--rf-color-muted);
11
+ line-height: 0;
12
+ }
13
+ .rf-mobile-menu-btn:hover {
14
+ color: var(--rf-color-text);
15
+ }
16
+
17
+ /* ---- Fullscreen mobile panel ---- */
18
+ .rf-mobile-panel {
19
+ display: none;
20
+ position: fixed;
21
+ inset: 0;
22
+ z-index: 100;
23
+ background: var(--rf-color-bg, #fff);
24
+ overflow-y: auto;
25
+ -webkit-overflow-scrolling: touch;
26
+ }
27
+ .rf-mobile-panel__header {
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: space-between;
31
+ padding: 1.125rem 1.5rem;
32
+ border-bottom: 1px solid var(--rf-color-border);
33
+ }
34
+ .rf-mobile-panel__title {
35
+ font-size: 0.85rem;
36
+ font-weight: 600;
37
+ text-transform: uppercase;
38
+ letter-spacing: 0.05em;
39
+ color: var(--rf-color-muted);
40
+ }
41
+ .rf-mobile-panel__close {
42
+ background: none;
43
+ border: none;
44
+ padding: 0.25rem;
45
+ cursor: pointer;
46
+ color: var(--rf-color-muted);
47
+ line-height: 0;
48
+ }
49
+ .rf-mobile-panel__close:hover {
50
+ color: var(--rf-color-text);
51
+ }
52
+ .rf-mobile-panel__nav {
53
+ padding: 1.5rem;
54
+ }
55
+ .rf-mobile-panel__nav p {
56
+ margin: 0;
57
+ }
58
+ .rf-mobile-panel__nav img {
59
+ display: none;
60
+ }
61
+ .rf-mobile-panel__nav a {
62
+ display: block;
63
+ padding: 0.75rem 0;
64
+ font-size: 1.1rem;
65
+ color: var(--rf-color-text);
66
+ text-decoration: none;
67
+ border-bottom: 1px solid var(--rf-color-border);
68
+ }
69
+ .rf-mobile-panel__nav a:hover {
70
+ color: var(--rf-color-primary, var(--rf-color-text));
71
+ text-decoration: none;
72
+ }
73
+ .rf-mobile-panel__body {
74
+ padding: 1rem 1.5rem;
75
+ }
76
+
77
+ @media (max-width: 768px) {
78
+ .rf-mobile-menu-btn {
79
+ display: block;
80
+ }
81
+ .rf-mobile-panel {
82
+ display: block;
83
+ }
84
+ }
@@ -4,6 +4,8 @@
4
4
  }
5
5
  .rf-bento__grid {
6
6
  display: grid;
7
+ grid-template-columns: repeat(var(--bento-columns, 4), 1fr);
8
+ gap: var(--bento-gap, 1rem);
7
9
  }
8
10
  .rf-bento-cell {
9
11
  border: 1px solid var(--rf-color-border);
@@ -31,6 +31,11 @@
31
31
  font-size: 0.8rem;
32
32
  opacity: 0.7;
33
33
  }
34
+ .rf-codegroup ul {
35
+ list-style: none;
36
+ padding: 0;
37
+ margin: 0;
38
+ }
34
39
  .rf-codegroup__tabs {
35
40
  display: flex;
36
41
  background: rgba(255, 255, 255, 0.03);
@@ -58,7 +63,7 @@
58
63
  color: rgba(255, 255, 255, 0.95);
59
64
  border-bottom-color: var(--rf-color-primary);
60
65
  }
61
- .rf-codegroup__content pre {
66
+ .rf-codegroup pre {
62
67
  margin: 0;
63
68
  padding: 1rem 1.25rem;
64
69
  overflow-x: auto;
@@ -66,7 +71,7 @@
66
71
  border: none;
67
72
  border-radius: 0;
68
73
  }
69
- .rf-codegroup__content code {
74
+ .rf-codegroup code {
70
75
  font-family: var(--rf-font-mono);
71
76
  font-size: 0.85rem;
72
77
  }