@noxion/renderer 0.1.1 → 0.3.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 (113) hide show
  1. package/README.md +9 -8
  2. package/dist/components/NoxionLogo.d.ts +5 -0
  3. package/dist/components/NoxionLogo.d.ts.map +1 -0
  4. package/dist/components/NoxionLogo.js +7 -0
  5. package/dist/components/NoxionLogo.js.map +1 -0
  6. package/dist/index.d.ts +2 -20
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -17
  9. package/dist/index.js.map +1 -1
  10. package/dist/theme/types.d.ts +61 -17
  11. package/dist/theme/types.d.ts.map +1 -1
  12. package/package.json +1 -1
  13. package/dist/components/EmptyState.d.ts +0 -7
  14. package/dist/components/EmptyState.d.ts.map +0 -1
  15. package/dist/components/EmptyState.js +0 -6
  16. package/dist/components/EmptyState.js.map +0 -1
  17. package/dist/components/Footer.d.ts +0 -5
  18. package/dist/components/Footer.d.ts.map +0 -1
  19. package/dist/components/Footer.js +0 -7
  20. package/dist/components/Footer.js.map +0 -1
  21. package/dist/components/Header.d.ts +0 -5
  22. package/dist/components/Header.d.ts.map +0 -1
  23. package/dist/components/Header.js +0 -7
  24. package/dist/components/Header.js.map +0 -1
  25. package/dist/components/PostCard.d.ts +0 -5
  26. package/dist/components/PostCard.d.ts.map +0 -1
  27. package/dist/components/PostCard.js +0 -8
  28. package/dist/components/PostCard.js.map +0 -1
  29. package/dist/components/PostList.d.ts +0 -5
  30. package/dist/components/PostList.d.ts.map +0 -1
  31. package/dist/components/PostList.js +0 -13
  32. package/dist/components/PostList.js.map +0 -1
  33. package/dist/components/Search.d.ts +0 -5
  34. package/dist/components/Search.d.ts.map +0 -1
  35. package/dist/components/Search.js +0 -25
  36. package/dist/components/Search.js.map +0 -1
  37. package/dist/components/TOC.d.ts +0 -5
  38. package/dist/components/TOC.d.ts.map +0 -1
  39. package/dist/components/TOC.js +0 -7
  40. package/dist/components/TOC.js.map +0 -1
  41. package/dist/components/TagFilter.d.ts +0 -5
  42. package/dist/components/TagFilter.d.ts.map +0 -1
  43. package/dist/components/TagFilter.js +0 -19
  44. package/dist/components/TagFilter.js.map +0 -1
  45. package/dist/components/ThemeToggle.d.ts +0 -4
  46. package/dist/components/ThemeToggle.d.ts.map +0 -1
  47. package/dist/components/ThemeToggle.js +0 -20
  48. package/dist/components/ThemeToggle.js.map +0 -1
  49. package/dist/layouts/BaseLayout.d.ts +0 -3
  50. package/dist/layouts/BaseLayout.d.ts.map +0 -1
  51. package/dist/layouts/BaseLayout.js +0 -11
  52. package/dist/layouts/BaseLayout.js.map +0 -1
  53. package/dist/layouts/BlogLayout.d.ts +0 -3
  54. package/dist/layouts/BlogLayout.d.ts.map +0 -1
  55. package/dist/layouts/BlogLayout.js +0 -6
  56. package/dist/layouts/BlogLayout.js.map +0 -1
  57. package/dist/layouts/DocsLayout.d.ts +0 -3
  58. package/dist/layouts/DocsLayout.d.ts.map +0 -1
  59. package/dist/layouts/DocsLayout.js +0 -11
  60. package/dist/layouts/DocsLayout.js.map +0 -1
  61. package/dist/layouts/MagazineLayout.d.ts +0 -3
  62. package/dist/layouts/MagazineLayout.d.ts.map +0 -1
  63. package/dist/layouts/MagazineLayout.js +0 -11
  64. package/dist/layouts/MagazineLayout.js.map +0 -1
  65. package/dist/layouts/index.d.ts +0 -5
  66. package/dist/layouts/index.d.ts.map +0 -1
  67. package/dist/layouts/index.js +0 -5
  68. package/dist/layouts/index.js.map +0 -1
  69. package/dist/templates/ArchivePage.d.ts +0 -3
  70. package/dist/templates/ArchivePage.d.ts.map +0 -1
  71. package/dist/templates/ArchivePage.js +0 -8
  72. package/dist/templates/ArchivePage.js.map +0 -1
  73. package/dist/templates/HomePage.d.ts +0 -3
  74. package/dist/templates/HomePage.d.ts.map +0 -1
  75. package/dist/templates/HomePage.js +0 -7
  76. package/dist/templates/HomePage.js.map +0 -1
  77. package/dist/templates/PostPage.d.ts +0 -3
  78. package/dist/templates/PostPage.d.ts.map +0 -1
  79. package/dist/templates/PostPage.js +0 -11
  80. package/dist/templates/PostPage.js.map +0 -1
  81. package/dist/templates/TagPage.d.ts +0 -3
  82. package/dist/templates/TagPage.d.ts.map +0 -1
  83. package/dist/templates/TagPage.js +0 -8
  84. package/dist/templates/TagPage.js.map +0 -1
  85. package/dist/templates/index.d.ts +0 -5
  86. package/dist/templates/index.d.ts.map +0 -1
  87. package/dist/templates/index.js +0 -5
  88. package/dist/templates/index.js.map +0 -1
  89. package/dist/theme/ThemeProvider.d.ts +0 -21
  90. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  91. package/dist/theme/ThemeProvider.js +0 -71
  92. package/dist/theme/ThemeProvider.js.map +0 -1
  93. package/dist/theme/component-resolver.d.ts +0 -3
  94. package/dist/theme/component-resolver.d.ts.map +0 -1
  95. package/dist/theme/component-resolver.js +0 -16
  96. package/dist/theme/component-resolver.js.map +0 -1
  97. package/dist/theme/css-generator.d.ts +0 -4
  98. package/dist/theme/css-generator.d.ts.map +0 -1
  99. package/dist/theme/css-generator.js +0 -80
  100. package/dist/theme/css-generator.js.map +0 -1
  101. package/dist/theme/define-theme.d.ts +0 -4
  102. package/dist/theme/define-theme.d.ts.map +0 -1
  103. package/dist/theme/define-theme.js +0 -45
  104. package/dist/theme/define-theme.js.map +0 -1
  105. package/dist/theme/slot-resolver.d.ts +0 -3
  106. package/dist/theme/slot-resolver.d.ts.map +0 -1
  107. package/dist/theme/slot-resolver.js +0 -13
  108. package/dist/theme/slot-resolver.js.map +0 -1
  109. package/dist/theme/template-resolver.d.ts +0 -4
  110. package/dist/theme/template-resolver.d.ts.map +0 -1
  111. package/dist/theme/template-resolver.js +0 -4
  112. package/dist/theme/template-resolver.js.map +0 -1
  113. package/src/styles/noxion.css +0 -739
@@ -1,739 +0,0 @@
1
- :root {
2
- --noxion-primary: #000000;
3
- --noxion-primaryForeground: #ffffff;
4
- --noxion-background: #ffffff;
5
- --noxion-foreground: #111111;
6
- --noxion-muted: #f2f2f2;
7
- --noxion-mutedForeground: #6b6b6b;
8
- --noxion-border: #e8e8e8;
9
- --noxion-accent: #f7f7f7;
10
- --noxion-accentForeground: #111111;
11
- --noxion-card: #ffffff;
12
- --noxion-cardForeground: #111111;
13
-
14
- --noxion-font-sans: "Geist", "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
15
- --noxion-font-serif: Georgia, "Times New Roman", serif;
16
- --noxion-font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
17
-
18
- --noxion-spacing-content: 720px;
19
- --noxion-spacing-sidebar: 260px;
20
- --noxion-border-radius: 0.5rem;
21
-
22
- --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 1px rgba(0, 0, 0, 0.03);
23
- --noxion-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
24
- --noxion-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
25
-
26
- --noxion-transition-fast: 100ms cubic-bezier(0.4, 0, 0.2, 1);
27
- --noxion-transition-normal: 180ms cubic-bezier(0.4, 0, 0.2, 1);
28
- --noxion-transition-slow: 280ms cubic-bezier(0.4, 0, 0.2, 1);
29
-
30
- --noxion-breakpoint-sm: 640px;
31
- --noxion-breakpoint-md: 768px;
32
- --noxion-breakpoint-lg: 1024px;
33
- --noxion-breakpoint-xl: 1280px;
34
- }
35
-
36
- [data-theme="dark"] {
37
- --noxion-primary: #ffffff;
38
- --noxion-primaryForeground: #000000;
39
- --noxion-background: #0c0c0c;
40
- --noxion-foreground: #ededed;
41
- --noxion-muted: #1a1a1a;
42
- --noxion-mutedForeground: #888888;
43
- --noxion-border: #272727;
44
- --noxion-accent: #1e1e1e;
45
- --noxion-accentForeground: #ededed;
46
- --noxion-card: #141414;
47
- --noxion-cardForeground: #ededed;
48
-
49
- --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
50
- --noxion-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.4);
51
- --noxion-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
52
- }
53
-
54
- *,
55
- *::before,
56
- *::after {
57
- box-sizing: border-box;
58
- }
59
-
60
- body {
61
- margin: 0;
62
- font-family: var(--noxion-font-sans);
63
- font-size: 0.9375rem;
64
- color: var(--noxion-foreground);
65
- background-color: var(--noxion-background);
66
- line-height: 1.6;
67
- -webkit-font-smoothing: antialiased;
68
- -moz-osx-font-smoothing: grayscale;
69
- text-rendering: optimizeLegibility;
70
- font-feature-settings: "rlig" 1, "calt" 1, "ss01" 1;
71
- }
72
-
73
- ::selection {
74
- background-color: var(--noxion-foreground);
75
- color: var(--noxion-background);
76
- }
77
-
78
- a {
79
- color: inherit;
80
- text-decoration: none;
81
- }
82
-
83
- img {
84
- max-width: 100%;
85
- height: auto;
86
- display: block;
87
- }
88
-
89
- /* ============================================
90
- Header
91
- ============================================ */
92
-
93
- .noxion-header {
94
- position: sticky;
95
- top: 0;
96
- z-index: 100;
97
- display: flex;
98
- align-items: center;
99
- justify-content: space-between;
100
- height: 56px;
101
- padding: 0 1.25rem;
102
- border-bottom: 1px solid var(--noxion-border);
103
- background-color: color-mix(in srgb, var(--noxion-background) 82%, transparent);
104
- backdrop-filter: saturate(180%) blur(16px);
105
- -webkit-backdrop-filter: saturate(180%) blur(16px);
106
- }
107
-
108
- @media (max-width: 640px) {
109
- .noxion-header {
110
- height: 52px;
111
- padding: 0 1rem;
112
- }
113
- }
114
-
115
- .noxion-header__logo {
116
- font-size: 0.9375rem;
117
- font-weight: 600;
118
- color: var(--noxion-foreground);
119
- text-decoration: none;
120
- letter-spacing: -0.03em;
121
- transition: opacity var(--noxion-transition-fast);
122
- }
123
-
124
- .noxion-header__logo:hover {
125
- opacity: 0.6;
126
- }
127
-
128
- .noxion-header__nav {
129
- display: flex;
130
- align-items: center;
131
- gap: 0.125rem;
132
- }
133
-
134
- @media (max-width: 640px) {
135
- .noxion-header__nav {
136
- gap: 0;
137
- }
138
- }
139
-
140
- .noxion-header__nav-link {
141
- position: relative;
142
- font-size: 0.8125rem;
143
- font-weight: 450;
144
- color: var(--noxion-mutedForeground);
145
- text-decoration: none;
146
- padding: 0.3125rem 0.625rem;
147
- border-radius: 0.375rem;
148
- transition:
149
- color var(--noxion-transition-fast),
150
- background-color var(--noxion-transition-fast);
151
- }
152
-
153
- .noxion-header__nav-link:hover {
154
- color: var(--noxion-foreground);
155
- background-color: var(--noxion-muted);
156
- }
157
-
158
- .noxion-header__actions {
159
- display: flex;
160
- align-items: center;
161
- gap: 0.25rem;
162
- }
163
-
164
- /* ============================================
165
- Footer
166
- ============================================ */
167
-
168
- .noxion-footer {
169
- display: flex;
170
- align-items: center;
171
- justify-content: space-between;
172
- padding: 1.5rem 1.25rem;
173
- border-top: 1px solid var(--noxion-border);
174
- font-size: 0.8125rem;
175
- color: var(--noxion-mutedForeground);
176
- }
177
-
178
- @media (max-width: 640px) {
179
- .noxion-footer {
180
- flex-direction: column;
181
- gap: 0.375rem;
182
- text-align: center;
183
- padding: 1.25rem 1rem;
184
- }
185
- }
186
-
187
- .noxion-footer__copyright {
188
- color: inherit;
189
- letter-spacing: -0.01em;
190
- }
191
-
192
- .noxion-footer__powered-by {
193
- display: inline-flex;
194
- align-items: center;
195
- gap: 0.25rem;
196
- color: var(--noxion-mutedForeground);
197
- text-decoration: none;
198
- transition: color var(--noxion-transition-fast);
199
- letter-spacing: -0.01em;
200
- }
201
-
202
- .noxion-footer__powered-by:hover {
203
- color: var(--noxion-foreground);
204
- }
205
-
206
- /* ============================================
207
- PostCard
208
- ============================================ */
209
-
210
- .noxion-post-card {
211
- display: block;
212
- text-decoration: none;
213
- color: inherit;
214
- border-radius: var(--noxion-border-radius);
215
- overflow: hidden;
216
- background-color: var(--noxion-card);
217
- border: 1px solid var(--noxion-border);
218
- transition:
219
- border-color var(--noxion-transition-fast),
220
- box-shadow var(--noxion-transition-fast);
221
- }
222
-
223
- .noxion-post-card:hover {
224
- border-color: color-mix(in srgb, var(--noxion-foreground) 30%, transparent);
225
- box-shadow: var(--noxion-shadow-md);
226
- }
227
-
228
- .noxion-post-card--text-only {
229
- border: none;
230
- border-bottom: 1px solid var(--noxion-border);
231
- border-radius: 0;
232
- background-color: transparent;
233
- }
234
-
235
- .noxion-post-card--text-only:hover {
236
- border-bottom-color: color-mix(in srgb, var(--noxion-foreground) 25%, transparent);
237
- box-shadow: none;
238
- }
239
-
240
- .noxion-post-card__cover {
241
- position: relative;
242
- width: 100%;
243
- aspect-ratio: 16 / 9;
244
- overflow: hidden;
245
- background-color: var(--noxion-muted);
246
- }
247
-
248
- .noxion-post-card__cover-image {
249
- width: 100%;
250
- height: 100%;
251
- object-fit: cover;
252
- object-position: center;
253
- transition: transform var(--noxion-transition-slow);
254
- }
255
-
256
- .noxion-post-card:hover .noxion-post-card__cover-image {
257
- transform: scale(1.025);
258
- }
259
-
260
- .noxion-post-card__body {
261
- padding: 1.125rem;
262
- }
263
-
264
- .noxion-post-card--text-only .noxion-post-card__body {
265
- padding: 1.125rem 0;
266
- }
267
-
268
- .noxion-post-card__category {
269
- display: inline-block;
270
- font-size: 0.6875rem;
271
- font-weight: 500;
272
- color: var(--noxion-mutedForeground);
273
- letter-spacing: 0.04em;
274
- text-transform: uppercase;
275
- margin-bottom: 0.375rem;
276
- }
277
-
278
- .noxion-post-card__title {
279
- margin: 0;
280
- font-size: 1rem;
281
- font-weight: 600;
282
- color: var(--noxion-cardForeground);
283
- line-height: 1.4;
284
- letter-spacing: -0.02em;
285
- }
286
-
287
- .noxion-post-card--text-only .noxion-post-card__title {
288
- font-size: 1.0625rem;
289
- letter-spacing: -0.025em;
290
- }
291
-
292
- .noxion-post-card__description {
293
- margin: 0.375rem 0 0;
294
- font-size: 0.8125rem;
295
- color: var(--noxion-mutedForeground);
296
- line-height: 1.55;
297
- display: -webkit-box;
298
- -webkit-line-clamp: 2;
299
- -webkit-box-orient: vertical;
300
- overflow: hidden;
301
- }
302
-
303
- .noxion-post-card__meta {
304
- display: flex;
305
- align-items: center;
306
- gap: 0.625rem;
307
- margin-top: 0.875rem;
308
- }
309
-
310
- .noxion-post-card__author {
311
- font-size: 0.75rem;
312
- font-weight: 500;
313
- color: var(--noxion-mutedForeground);
314
- letter-spacing: -0.01em;
315
- }
316
-
317
- .noxion-post-card__author + .noxion-post-card__date::before {
318
- content: "·";
319
- margin-right: 0.5rem;
320
- opacity: 0.4;
321
- }
322
-
323
- .noxion-post-card__date {
324
- font-size: 0.75rem;
325
- font-weight: 400;
326
- color: var(--noxion-mutedForeground);
327
- letter-spacing: -0.01em;
328
- }
329
-
330
- .noxion-post-card__tags {
331
- display: flex;
332
- flex-wrap: wrap;
333
- gap: 0.3125rem;
334
- }
335
-
336
- .noxion-post-card__tag {
337
- font-size: 0.6875rem;
338
- font-weight: 500;
339
- padding: 0.1875rem 0.5rem;
340
- border-radius: 9999px;
341
- background-color: var(--noxion-muted);
342
- color: var(--noxion-mutedForeground);
343
- letter-spacing: 0;
344
- transition: color var(--noxion-transition-fast);
345
- }
346
-
347
- .noxion-post-card:hover .noxion-post-card__tag {
348
- color: var(--noxion-foreground);
349
- }
350
-
351
- /* ============================================
352
- PostList
353
- ============================================ */
354
-
355
- .noxion-post-list {
356
- display: grid;
357
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
358
- gap: 1.25rem;
359
- width: 100%;
360
- }
361
-
362
- @media (max-width: 640px) {
363
- .noxion-post-list {
364
- grid-template-columns: 1fr;
365
- gap: 0;
366
- }
367
- }
368
-
369
- .noxion-post-list--list {
370
- grid-template-columns: 1fr;
371
- gap: 0;
372
- }
373
-
374
- .noxion-post-list--list .noxion-post-card {
375
- border: none;
376
- border-bottom: 1px solid var(--noxion-border);
377
- border-radius: 0;
378
- background-color: transparent;
379
- }
380
-
381
- .noxion-post-list--list .noxion-post-card:hover {
382
- box-shadow: none;
383
- border-bottom-color: color-mix(in srgb, var(--noxion-foreground) 25%, transparent);
384
- }
385
-
386
- .noxion-post-list--list .noxion-post-card__body {
387
- padding: 1.125rem 0;
388
- }
389
-
390
- /* ============================================
391
- Search
392
- ============================================ */
393
-
394
- .noxion-search {
395
- position: relative;
396
- width: 100%;
397
- max-width: 280px;
398
- display: flex;
399
- align-items: center;
400
- }
401
-
402
- .noxion-search__icon {
403
- position: absolute;
404
- left: 0.625rem;
405
- top: 50%;
406
- transform: translateY(-50%);
407
- color: var(--noxion-mutedForeground);
408
- pointer-events: none;
409
- display: flex;
410
- align-items: center;
411
- transition: color var(--noxion-transition-fast);
412
- }
413
-
414
- .noxion-search:focus-within .noxion-search__icon {
415
- color: var(--noxion-foreground);
416
- }
417
-
418
- .noxion-search__input {
419
- width: 100%;
420
- padding: 0.4375rem 3rem 0.4375rem 2.125rem;
421
- border-radius: 0.375rem;
422
- border: 1px solid var(--noxion-border);
423
- background-color: var(--noxion-accent);
424
- color: var(--noxion-foreground);
425
- font-size: 0.8125rem;
426
- font-family: inherit;
427
- outline: none;
428
- transition:
429
- border-color var(--noxion-transition-fast),
430
- background-color var(--noxion-transition-fast),
431
- box-shadow var(--noxion-transition-fast);
432
- }
433
-
434
- .noxion-search__input::placeholder {
435
- color: var(--noxion-mutedForeground);
436
- }
437
-
438
- .noxion-search__input:hover {
439
- border-color: color-mix(in srgb, var(--noxion-foreground) 30%, transparent);
440
- }
441
-
442
- .noxion-search__input:focus {
443
- border-color: var(--noxion-primary);
444
- background-color: var(--noxion-background);
445
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--noxion-primary) 10%, transparent);
446
- }
447
-
448
- .noxion-search__kbd {
449
- position: absolute;
450
- right: 0.5rem;
451
- top: 50%;
452
- transform: translateY(-50%);
453
- font-family: var(--noxion-font-sans);
454
- font-size: 0.625rem;
455
- font-weight: 500;
456
- padding: 0.125rem 0.3125rem;
457
- border-radius: 0.25rem;
458
- border: 1px solid var(--noxion-border);
459
- background-color: var(--noxion-background);
460
- color: var(--noxion-mutedForeground);
461
- pointer-events: none;
462
- line-height: 1.4;
463
- letter-spacing: 0.02em;
464
- }
465
-
466
- /* ============================================
467
- TagFilter
468
- ============================================ */
469
-
470
- .noxion-tag-filter {
471
- display: flex;
472
- flex-wrap: wrap;
473
- gap: 0.375rem;
474
- }
475
-
476
- .noxion-tag-filter__tag {
477
- padding: 0.3125rem 0.75rem;
478
- border-radius: 9999px;
479
- border: 1px solid var(--noxion-border);
480
- background-color: transparent;
481
- color: var(--noxion-mutedForeground);
482
- font-size: 0.8125rem;
483
- font-weight: 450;
484
- font-family: inherit;
485
- cursor: pointer;
486
- letter-spacing: -0.01em;
487
- transition:
488
- color var(--noxion-transition-fast),
489
- border-color var(--noxion-transition-fast),
490
- background-color var(--noxion-transition-fast);
491
- outline: none;
492
- }
493
-
494
- .noxion-tag-filter__tag:hover {
495
- color: var(--noxion-foreground);
496
- border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
497
- background-color: var(--noxion-accent);
498
- }
499
-
500
- .noxion-tag-filter__tag:focus-visible {
501
- box-shadow: 0 0 0 2px var(--noxion-primary);
502
- }
503
-
504
- .noxion-tag-filter__tag--selected {
505
- background-color: var(--noxion-foreground);
506
- color: var(--noxion-background);
507
- border-color: var(--noxion-foreground);
508
- }
509
-
510
- .noxion-tag-filter__tag--selected:hover {
511
- opacity: 0.82;
512
- color: var(--noxion-background);
513
- border-color: var(--noxion-foreground);
514
- background-color: var(--noxion-foreground);
515
- }
516
-
517
- .noxion-tag-filter__tag--more {
518
- color: var(--noxion-mutedForeground);
519
- border-style: dashed;
520
- letter-spacing: 0;
521
- }
522
-
523
- .noxion-tag-filter__tag--more:hover {
524
- background-color: var(--noxion-accent);
525
- border-style: dashed;
526
- border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
527
- color: var(--noxion-foreground);
528
- }
529
-
530
- /* ============================================
531
- TOC
532
- ============================================ */
533
-
534
- .noxion-toc {
535
- padding: 1rem 0;
536
- font-size: 0.8125rem;
537
- }
538
-
539
- .noxion-toc__heading {
540
- font-size: 0.625rem;
541
- font-weight: 600;
542
- text-transform: uppercase;
543
- letter-spacing: 0.1em;
544
- color: var(--noxion-mutedForeground);
545
- margin-bottom: 0.75rem;
546
- }
547
-
548
- .noxion-toc__list {
549
- list-style: none;
550
- padding: 0;
551
- margin: 0;
552
- border-left: 1px solid var(--noxion-border);
553
- }
554
-
555
- .noxion-toc__item {
556
- margin-bottom: 0;
557
- }
558
-
559
- .noxion-toc__link {
560
- display: block;
561
- padding: 0.25rem 0 0.25rem 0.875rem;
562
- margin-left: -1px;
563
- border-left: 2px solid transparent;
564
- color: var(--noxion-mutedForeground);
565
- text-decoration: none;
566
- line-height: 1.45;
567
- font-size: 0.8125rem;
568
- letter-spacing: -0.01em;
569
- transition:
570
- color var(--noxion-transition-fast),
571
- border-color var(--noxion-transition-fast);
572
- }
573
-
574
- .noxion-toc__link:hover {
575
- color: var(--noxion-foreground);
576
- }
577
-
578
- .noxion-toc__item--active > .noxion-toc__link {
579
- color: var(--noxion-foreground);
580
- border-left-color: var(--noxion-foreground);
581
- font-weight: 500;
582
- }
583
-
584
- /* ============================================
585
- ThemeToggle
586
- ============================================ */
587
-
588
- .noxion-theme-toggle {
589
- display: inline-flex;
590
- align-items: center;
591
- justify-content: center;
592
- width: 1.875rem;
593
- height: 1.875rem;
594
- border-radius: 0.375rem;
595
- border: none;
596
- background-color: transparent;
597
- cursor: pointer;
598
- color: var(--noxion-mutedForeground);
599
- transition:
600
- color var(--noxion-transition-fast),
601
- background-color var(--noxion-transition-fast);
602
- outline: none;
603
- padding: 0;
604
- }
605
-
606
- .noxion-theme-toggle:hover {
607
- color: var(--noxion-foreground);
608
- background-color: var(--noxion-muted);
609
- }
610
-
611
- .noxion-theme-toggle:focus-visible {
612
- box-shadow: 0 0 0 2px var(--noxion-primary);
613
- }
614
-
615
- /* ============================================
616
- EmptyState
617
- ============================================ */
618
-
619
- .noxion-empty-state {
620
- display: flex;
621
- flex-direction: column;
622
- align-items: center;
623
- justify-content: center;
624
- padding: 5rem 1rem;
625
- text-align: center;
626
- gap: 0.5rem;
627
- }
628
-
629
- .noxion-empty-state__icon {
630
- color: var(--noxion-mutedForeground);
631
- margin-bottom: 0.75rem;
632
- opacity: 0.5;
633
- }
634
-
635
- .noxion-empty-state__title {
636
- font-size: 1.0625rem;
637
- font-weight: 600;
638
- color: var(--noxion-foreground);
639
- margin: 0;
640
- letter-spacing: -0.02em;
641
- }
642
-
643
- .noxion-empty-state__message {
644
- font-size: 0.875rem;
645
- color: var(--noxion-mutedForeground);
646
- margin: 0;
647
- max-width: 340px;
648
- line-height: 1.55;
649
- }
650
-
651
- /* ============================================
652
- Layout
653
- ============================================ */
654
-
655
- .noxion-layout {
656
- display: flex;
657
- flex-direction: column;
658
- min-height: 100vh;
659
- background-color: var(--noxion-background);
660
- }
661
-
662
- .noxion-layout__header {
663
- flex-shrink: 0;
664
- }
665
-
666
- .noxion-layout__content {
667
- flex: 1;
668
- width: 100%;
669
- max-width: var(--noxion-spacing-content);
670
- margin: 0 auto;
671
- padding: 2.5rem 1.25rem;
672
- }
673
-
674
- @media (max-width: 640px) {
675
- .noxion-layout__content {
676
- padding: 1.5rem 1rem;
677
- }
678
- }
679
-
680
- .noxion-layout__footer {
681
- flex-shrink: 0;
682
- margin-top: auto;
683
- }
684
-
685
- .noxion-layout__sidebar {
686
- width: var(--noxion-spacing-sidebar);
687
- flex-shrink: 0;
688
- padding: 2.5rem 1.5rem;
689
- border-right: 1px solid var(--noxion-border);
690
- }
691
-
692
- .noxion-layout__hero {
693
- width: 100%;
694
- }
695
-
696
- .noxion-layout--single-column {
697
- flex-direction: column;
698
- }
699
-
700
- .noxion-layout--sidebar-left > .noxion-layout__main {
701
- display: flex;
702
- flex: 1;
703
- }
704
-
705
- .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar {
706
- order: -1;
707
- border-right: 1px solid var(--noxion-border);
708
- border-left: none;
709
- }
710
-
711
- .noxion-layout--sidebar-right > .noxion-layout__main {
712
- display: flex;
713
- flex: 1;
714
- }
715
-
716
- .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
717
- border-left: 1px solid var(--noxion-border);
718
- border-right: none;
719
- }
720
-
721
- @media (max-width: 768px) {
722
- .noxion-layout__sidebar {
723
- width: 100%;
724
- border-right: none;
725
- border-bottom: 1px solid var(--noxion-border);
726
- padding: 1.5rem 1rem;
727
- }
728
-
729
- .noxion-layout--sidebar-left > .noxion-layout__main,
730
- .noxion-layout--sidebar-right > .noxion-layout__main {
731
- flex-direction: column;
732
- }
733
-
734
- .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar,
735
- .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
736
- border-left: none;
737
- border-right: none;
738
- }
739
- }