boltdocs 1.3.0 → 1.3.2

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 (103) hide show
  1. package/dist/{cache-EHR7SXRU.mjs → cache-GQHF6BXI.mjs} +1 -1
  2. package/dist/{chunk-GSYECEZY.mjs → chunk-CYBWLFOG.mjs} +5 -1
  3. package/dist/node/index.js +36 -20
  4. package/dist/node/index.mjs +34 -22
  5. package/package.json +1 -1
  6. package/src/client/app/index.tsx +344 -344
  7. package/src/client/app/preload.tsx +56 -56
  8. package/src/client/index.ts +40 -40
  9. package/src/client/ssr.tsx +51 -51
  10. package/src/client/theme/components/CodeBlock/CodeBlock.tsx +76 -76
  11. package/src/client/theme/components/CodeBlock/index.ts +1 -1
  12. package/src/client/theme/components/PackageManagerTabs/PackageManagerTabs.tsx +154 -154
  13. package/src/client/theme/components/PackageManagerTabs/index.ts +1 -1
  14. package/src/client/theme/components/PackageManagerTabs/pkg-tabs.css +64 -64
  15. package/src/client/theme/components/Playground/Playground.tsx +124 -124
  16. package/src/client/theme/components/Playground/index.ts +1 -1
  17. package/src/client/theme/components/Playground/playground.css +168 -168
  18. package/src/client/theme/components/Video/Video.tsx +84 -84
  19. package/src/client/theme/components/Video/index.ts +1 -1
  20. package/src/client/theme/components/Video/video.css +41 -41
  21. package/src/client/theme/components/mdx/Admonition.tsx +80 -80
  22. package/src/client/theme/components/mdx/Badge.tsx +31 -31
  23. package/src/client/theme/components/mdx/Button.tsx +50 -50
  24. package/src/client/theme/components/mdx/Card.tsx +80 -80
  25. package/src/client/theme/components/mdx/List.tsx +57 -57
  26. package/src/client/theme/components/mdx/Tabs.tsx +94 -94
  27. package/src/client/theme/components/mdx/index.ts +18 -18
  28. package/src/client/theme/components/mdx/mdx-components.css +424 -424
  29. package/src/client/theme/icons/bun.tsx +62 -62
  30. package/src/client/theme/icons/deno.tsx +20 -20
  31. package/src/client/theme/icons/discord.tsx +12 -12
  32. package/src/client/theme/icons/github.tsx +15 -15
  33. package/src/client/theme/icons/npm.tsx +13 -13
  34. package/src/client/theme/icons/pnpm.tsx +72 -72
  35. package/src/client/theme/icons/twitter.tsx +12 -12
  36. package/src/client/theme/styles/markdown.css +343 -343
  37. package/src/client/theme/styles/variables.css +162 -162
  38. package/src/client/theme/styles.css +37 -37
  39. package/src/client/theme/ui/BackgroundGradient/BackgroundGradient.tsx +10 -10
  40. package/src/client/theme/ui/BackgroundGradient/index.ts +1 -1
  41. package/src/client/theme/ui/Breadcrumbs/Breadcrumbs.tsx +68 -68
  42. package/src/client/theme/ui/Breadcrumbs/index.ts +1 -1
  43. package/src/client/theme/ui/Footer/footer.css +32 -32
  44. package/src/client/theme/ui/Head/Head.tsx +69 -69
  45. package/src/client/theme/ui/Head/index.ts +1 -1
  46. package/src/client/theme/ui/LanguageSwitcher/LanguageSwitcher.tsx +125 -125
  47. package/src/client/theme/ui/LanguageSwitcher/index.ts +1 -1
  48. package/src/client/theme/ui/LanguageSwitcher/language-switcher.css +98 -98
  49. package/src/client/theme/ui/Layout/Layout.tsx +202 -202
  50. package/src/client/theme/ui/Layout/base.css +76 -76
  51. package/src/client/theme/ui/Layout/index.ts +2 -2
  52. package/src/client/theme/ui/Layout/pagination.css +72 -72
  53. package/src/client/theme/ui/Layout/responsive.css +36 -36
  54. package/src/client/theme/ui/Link/Link.tsx +254 -254
  55. package/src/client/theme/ui/Link/index.ts +2 -2
  56. package/src/client/theme/ui/Loading/Loading.tsx +10 -10
  57. package/src/client/theme/ui/Loading/index.ts +1 -1
  58. package/src/client/theme/ui/Loading/loading.css +30 -30
  59. package/src/client/theme/ui/Navbar/GithubStars.tsx +27 -27
  60. package/src/client/theme/ui/Navbar/Navbar.tsx +145 -145
  61. package/src/client/theme/ui/Navbar/index.ts +2 -2
  62. package/src/client/theme/ui/Navbar/navbar.css +233 -233
  63. package/src/client/theme/ui/NotFound/NotFound.tsx +19 -19
  64. package/src/client/theme/ui/NotFound/index.ts +1 -1
  65. package/src/client/theme/ui/NotFound/not-found.css +64 -64
  66. package/src/client/theme/ui/OnThisPage/OnThisPage.tsx +235 -235
  67. package/src/client/theme/ui/OnThisPage/index.ts +1 -1
  68. package/src/client/theme/ui/OnThisPage/toc.css +132 -132
  69. package/src/client/theme/ui/PoweredBy/PoweredBy.tsx +18 -18
  70. package/src/client/theme/ui/PoweredBy/index.ts +1 -1
  71. package/src/client/theme/ui/PoweredBy/powered-by.css +76 -76
  72. package/src/client/theme/ui/SearchDialog/SearchDialog.tsx +199 -199
  73. package/src/client/theme/ui/SearchDialog/index.ts +1 -1
  74. package/src/client/theme/ui/SearchDialog/search.css +152 -152
  75. package/src/client/theme/ui/Sidebar/Sidebar.tsx +204 -204
  76. package/src/client/theme/ui/Sidebar/index.ts +1 -1
  77. package/src/client/theme/ui/Sidebar/sidebar.css +236 -236
  78. package/src/client/theme/ui/ThemeToggle/ThemeToggle.tsx +69 -69
  79. package/src/client/theme/ui/ThemeToggle/index.ts +1 -1
  80. package/src/client/theme/ui/VersionSwitcher/VersionSwitcher.tsx +136 -136
  81. package/src/client/theme/ui/VersionSwitcher/index.ts +1 -1
  82. package/src/client/types.ts +50 -50
  83. package/src/client/utils.ts +26 -26
  84. package/src/node/cache.ts +408 -408
  85. package/src/node/config.ts +192 -192
  86. package/src/node/index.ts +21 -21
  87. package/src/node/mdx.ts +120 -120
  88. package/src/node/plugin/entry.ts +58 -58
  89. package/src/node/plugin/html.ts +55 -55
  90. package/src/node/plugin/index.ts +193 -193
  91. package/src/node/plugin/types.ts +11 -11
  92. package/src/node/routes/cache.ts +28 -28
  93. package/src/node/routes/index.ts +167 -167
  94. package/src/node/routes/parser.ts +153 -127
  95. package/src/node/routes/sorter.ts +42 -42
  96. package/src/node/routes/types.ts +49 -49
  97. package/src/node/ssg/index.ts +114 -114
  98. package/src/node/ssg/meta.ts +33 -34
  99. package/src/node/ssg/options.ts +13 -13
  100. package/src/node/ssg/sitemap.ts +55 -54
  101. package/src/node/utils.ts +145 -134
  102. package/tsconfig.json +20 -20
  103. package/tsup.config.ts +22 -22
@@ -1,424 +1,424 @@
1
- /* ═══════════════════════════════════════════════════════════
2
- MDX UI COMPONENTS
3
- All variables use --ld-ui-* to avoid conflicts with
4
- layout elements (sidebar, TOC, navbar).
5
- ═══════════════════════════════════════════════════════════ */
6
-
7
- /* ─── Button ──────────────────────────────────────────────── */
8
- .ld-btn {
9
- /* Total Reset */
10
- all: unset;
11
- box-sizing: border-box !important;
12
- display: inline-flex;
13
- align-items: center;
14
- justify-content: center;
15
- gap: 0.5rem;
16
-
17
- /* Typography */
18
- font-family: var(--ld-font-sans);
19
- font-weight: 600;
20
- font-size: 0.9375rem;
21
- line-height: normal; /* Essential for flex centering */
22
- letter-spacing: -0.01em;
23
- text-align: center;
24
- text-decoration: none !important;
25
- white-space: nowrap;
26
-
27
- /* Appearance */
28
- border-radius: var(--ld-radius-md);
29
- cursor: pointer;
30
- transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
31
- border: 1px solid transparent;
32
- user-select: none;
33
- position: relative;
34
- }
35
-
36
- .ld-btn:hover {
37
- transform: translateY(-1px);
38
- }
39
-
40
- .ld-btn:active {
41
- transform: translateY(0) scale(0.98);
42
- }
43
-
44
- /* sizes */
45
- .ld-btn--sm {
46
- min-height: 2rem;
47
- padding: 0 1rem;
48
- font-size: 0.8125rem;
49
- border-radius: var(--ld-radius-md);
50
- }
51
- .ld-btn--md {
52
- min-height: 2.625rem;
53
- padding: 0 1.6rem;
54
- font-size: 0.9375rem;
55
- }
56
- .ld-btn--lg {
57
- min-height: 3.25rem;
58
- padding: 0 2.2rem;
59
- font-size: 1.05rem;
60
- }
61
-
62
- /* variants */
63
- .ld-btn--primary {
64
- background-color: var(
65
- --ld-ui-btn-primary-bg,
66
- var(--ld-btn-primary-bg)
67
- ) !important;
68
- color: var(--ld-ui-btn-primary-text, var(--ld-btn-primary-text)) !important;
69
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
70
- }
71
- .ld-btn--primary:hover {
72
- filter: brightness(1.1);
73
- }
74
-
75
- .ld-btn--secondary {
76
- background-color: var(
77
- --ld-ui-btn-secondary-bg,
78
- var(--ld-btn-secondary-bg)
79
- ) !important;
80
- color: var(
81
- --ld-ui-btn-secondary-text,
82
- var(--ld-btn-secondary-text)
83
- ) !important;
84
- border-color: var(--ld-border-subtle);
85
- }
86
- .ld-btn--secondary:hover {
87
- background-color: var(--ld-bg-mute);
88
- border-color: var(--ld-border-strong);
89
- }
90
-
91
- .ld-btn--outline {
92
- background: transparent !important;
93
- color: var(--ld-text-main) !important;
94
- border-color: var(--ld-border-strong);
95
- }
96
- .ld-btn--outline:hover {
97
- background-color: var(--ld-bg-soft);
98
- border-color: var(--ld-color-primary);
99
- }
100
-
101
- .ld-btn--ghost {
102
- background: transparent !important;
103
- color: var(--ld-text-muted) !important;
104
- }
105
- .ld-btn--ghost:hover {
106
- background-color: var(--ld-bg-soft);
107
- color: var(--ld-text-main) !important;
108
- }
109
-
110
- /* ─── Badge ───────────────────────────────────────────────── */
111
- .ld-badge {
112
- display: inline-flex;
113
- align-items: center;
114
- padding: 0.3rem 0.85rem;
115
- font-size: 0.75rem;
116
- font-weight: 600;
117
- border-radius: var(--ld-radius-full);
118
- line-height: 1.4;
119
- white-space: nowrap;
120
- letter-spacing: 0.01em;
121
- }
122
-
123
- .ld-badge--default {
124
- background: var(--ld-bg-mute);
125
- color: var(--ld-text-main);
126
- border: 1px solid var(--ld-border-subtle);
127
- }
128
- .ld-badge--primary {
129
- background: var(--ld-color-primary-muted);
130
- color: var(--ld-color-primary);
131
- border: 1px solid rgba(127, 19, 236, 0.2);
132
- }
133
- .ld-badge--success {
134
- background: var(--ld-ui-success-bg);
135
- color: var(--ld-ui-success-text);
136
- border: 1px solid var(--ld-ui-success-border);
137
- }
138
- .ld-badge--warning {
139
- background: var(--ld-ui-warning-bg);
140
- color: var(--ld-ui-warning-text);
141
- border: 1px solid var(--ld-ui-warning-border);
142
- }
143
- .ld-badge--danger {
144
- background: var(--ld-ui-danger-bg);
145
- color: var(--ld-ui-danger-text);
146
- border: 1px solid var(--ld-ui-danger-border);
147
- }
148
- .ld-badge--info {
149
- background: var(--ld-ui-info-bg);
150
- color: var(--ld-ui-info-text);
151
- border: 1px solid var(--ld-ui-info-border);
152
- }
153
-
154
- /* ─── Cards ───────────────────────────────────────────────── */
155
- .ld-cards {
156
- display: grid;
157
- gap: 1rem;
158
- margin: 1.5rem 0;
159
- }
160
- .ld-cards--1 {
161
- grid-template-columns: 1fr;
162
- }
163
- .ld-cards--2 {
164
- grid-template-columns: repeat(2, 1fr);
165
- }
166
- .ld-cards--3 {
167
- grid-template-columns: repeat(3, 1fr);
168
- }
169
- .ld-cards--4 {
170
- grid-template-columns: repeat(4, 1fr);
171
- }
172
-
173
- @media (max-width: 768px) {
174
- .ld-cards--2,
175
- .ld-cards--3,
176
- .ld-cards--4 {
177
- grid-template-columns: 1fr;
178
- }
179
- }
180
-
181
- .ld-card {
182
- position: relative;
183
- padding: 1.35rem 1.5rem;
184
- border-radius: var(--ld-radius-lg);
185
- border: 1px solid var(--ld-border-subtle);
186
- background: var(--ld-bg-soft);
187
- transition: all 300ms cubic-bezier(0.16, 1, 0.3, 1);
188
- text-decoration: none !important;
189
- backdrop-filter: blur(var(--ld-navbar-blur));
190
- -webkit-backdrop-filter: blur(var(--ld-navbar-blur));
191
- color: inherit;
192
- overflow: hidden;
193
- }
194
-
195
- /* Subtle inner glow on top edge */
196
- .ld-card::before {
197
- content: "";
198
- position: absolute;
199
- top: 0;
200
- left: 0;
201
- right: 0;
202
- height: 1px;
203
- background: linear-gradient(
204
- 90deg,
205
- transparent,
206
- var(--ld-border-strong),
207
- transparent
208
- );
209
- opacity: 0;
210
- transition: opacity 0.3s ease;
211
- }
212
-
213
- .ld-card:hover {
214
- border-color: var(--ld-color-primary);
215
- transform: translateY(-3px);
216
- }
217
- .ld-card:hover::before {
218
- opacity: 1;
219
- background: linear-gradient(
220
- 90deg,
221
- transparent,
222
- var(--ld-color-primary),
223
- transparent
224
- );
225
- }
226
-
227
- .ld-card--link {
228
- cursor: pointer;
229
- }
230
- .ld-card--link:hover {
231
- text-decoration: none !important;
232
- }
233
-
234
- .ld-card__icon {
235
- font-size: 1.6rem;
236
- display: flex;
237
- align-items: center;
238
- justify-content: center;
239
- width: 2.5rem;
240
- height: 2.5rem;
241
- margin-bottom: 0.85rem;
242
- }
243
- .ld-card__title {
244
- font-size: 0.95rem;
245
- font-weight: 700;
246
- margin: 0 0 0.4rem;
247
- color: var(--ld-text-main);
248
- letter-spacing: -0.01em;
249
- }
250
- .ld-card__body {
251
- font-size: 0.85rem;
252
- color: var(--ld-text-muted);
253
- line-height: 1.55;
254
- margin: 0;
255
- }
256
- .ld-card__body p {
257
- margin: 0;
258
- }
259
-
260
- /* ─── Tabs ────────────────────────────────────────────────── */
261
- .ld-tabs {
262
- margin: 1.5rem 0;
263
- border: 1px solid var(--ld-border-subtle);
264
- border-radius: var(--ld-radius-lg);
265
- overflow: hidden;
266
- background: var(--ld-bg-soft);
267
- }
268
-
269
- .ld-tabs__bar {
270
- display: flex;
271
- gap: 0;
272
- background-color: var(--ld-bg-mute);
273
- border-bottom: 1px solid var(--ld-border-subtle);
274
- overflow-x: auto;
275
- }
276
-
277
- .ld-tabs__trigger {
278
- position: relative;
279
- padding: 0.65rem 1.25rem;
280
- background: none;
281
- border: none;
282
- border-bottom: 2px solid transparent;
283
- color: var(--ld-text-dim);
284
- font-family: var(--ld-font-sans);
285
- font-size: 0.8125rem;
286
- font-weight: 500;
287
- cursor: pointer;
288
- transition: all 0.2s ease;
289
- white-space: nowrap;
290
- }
291
- .ld-tabs__trigger:hover {
292
- color: var(--ld-text-main);
293
- background-color: rgba(255, 255, 255, 0.03);
294
- }
295
- .ld-tabs__trigger--active {
296
- color: var(--ld-color-primary);
297
- border-bottom-color: var(--ld-color-primary);
298
- background-color: transparent;
299
- }
300
-
301
- .ld-tabs__content {
302
- padding: 1.25rem;
303
- }
304
-
305
- .ld-tab-panel {
306
- font-size: 0.9rem;
307
- line-height: 1.7;
308
- color: var(--ld-text-muted);
309
- }
310
-
311
- /* ─── Admonition ──────────────────────────────────────────── */
312
- .ld-admonition {
313
- margin: 1.5rem 0;
314
- border-radius: var(--ld-radius-lg);
315
- border: 1px solid;
316
- overflow: hidden;
317
- }
318
-
319
- .ld-admonition__header {
320
- display: flex;
321
- align-items: center;
322
- gap: 0.5rem;
323
- padding: 0.6rem 1.1rem;
324
- font-weight: 600;
325
- font-size: 0.8rem;
326
- text-transform: uppercase;
327
- letter-spacing: 0.04em;
328
- }
329
-
330
- .ld-admonition__icon {
331
- display: inline-flex;
332
- align-items: center;
333
- }
334
-
335
- .ld-admonition__body {
336
- padding: 0.6rem 1.1rem 1rem;
337
- font-size: 0.875rem;
338
- line-height: 1.7;
339
- color: var(--ld-text-muted);
340
- }
341
- .ld-admonition__body p {
342
- margin: 0 0 0.5rem;
343
- }
344
- .ld-admonition__body p:last-child {
345
- margin-bottom: 0;
346
- }
347
-
348
- /* Admonition — Note (blue) */
349
- .ld-admonition--note {
350
- border-color: var(--ld-ui-note-border);
351
- background-color: var(--ld-ui-note-bg);
352
- }
353
- .ld-admonition--note .ld-admonition__header {
354
- color: var(--ld-ui-note-text);
355
- }
356
-
357
- /* Admonition — Tip (green) */
358
- .ld-admonition--tip {
359
- border-color: var(--ld-ui-tip-border);
360
- background-color: var(--ld-ui-tip-bg);
361
- }
362
- .ld-admonition--tip .ld-admonition__header {
363
- color: var(--ld-ui-tip-text);
364
- }
365
-
366
- /* Admonition — Info (blue) */
367
- .ld-admonition--info {
368
- border-color: var(--ld-ui-info-border);
369
- background-color: var(--ld-ui-info-bg);
370
- }
371
- .ld-admonition--info .ld-admonition__header {
372
- color: var(--ld-ui-info-text);
373
- }
374
-
375
- /* Admonition — Warning (amber) */
376
- .ld-admonition--warning {
377
- border-color: var(--ld-ui-warning-border);
378
- background-color: var(--ld-ui-warning-bg);
379
- }
380
- .ld-admonition--warning .ld-admonition__header {
381
- color: var(--ld-ui-warning-text);
382
- }
383
-
384
- /* Admonition — Danger (red) */
385
- .ld-admonition--danger {
386
- border-color: var(--ld-ui-danger-border);
387
- background-color: var(--ld-ui-danger-bg);
388
- }
389
- .ld-admonition--danger .ld-admonition__header {
390
- color: var(--ld-ui-danger-text);
391
- }
392
-
393
- /* ─── List ────────────────────────────────────────────────── */
394
- .ld-list {
395
- margin: 1rem 0;
396
- padding-left: 0;
397
- list-style: none;
398
- }
399
- .ld-list--checked,
400
- .ld-list--arrow {
401
- padding-left: 0;
402
- }
403
-
404
- .ld-list__item {
405
- display: flex;
406
- align-items: flex-start;
407
- gap: 0.6rem;
408
- padding: 0.35rem 0;
409
- color: var(--ld-text-muted);
410
- font-size: 0.9rem;
411
- line-height: 1.6;
412
- }
413
-
414
- .ld-list__icon {
415
- flex-shrink: 0;
416
- margin-top: 0.25rem;
417
- }
418
-
419
- .ld-list--checked .ld-list__icon {
420
- color: var(--ld-ui-success-text);
421
- }
422
- .ld-list--arrow .ld-list__icon {
423
- color: var(--ld-color-primary);
424
- }
1
+ /* ═══════════════════════════════════════════════════════════
2
+ MDX UI COMPONENTS
3
+ All variables use --ld-ui-* to avoid conflicts with
4
+ layout elements (sidebar, TOC, navbar).
5
+ ═══════════════════════════════════════════════════════════ */
6
+
7
+ /* ─── Button ──────────────────────────────────────────────── */
8
+ .ld-btn {
9
+ /* Total Reset */
10
+ all: unset;
11
+ box-sizing: border-box !important;
12
+ display: inline-flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ gap: 0.5rem;
16
+
17
+ /* Typography */
18
+ font-family: var(--ld-font-sans);
19
+ font-weight: 600;
20
+ font-size: 0.9375rem;
21
+ line-height: normal; /* Essential for flex centering */
22
+ letter-spacing: -0.01em;
23
+ text-align: center;
24
+ text-decoration: none !important;
25
+ white-space: nowrap;
26
+
27
+ /* Appearance */
28
+ border-radius: var(--ld-radius-md);
29
+ cursor: pointer;
30
+ transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
31
+ border: 1px solid transparent;
32
+ user-select: none;
33
+ position: relative;
34
+ }
35
+
36
+ .ld-btn:hover {
37
+ transform: translateY(-1px);
38
+ }
39
+
40
+ .ld-btn:active {
41
+ transform: translateY(0) scale(0.98);
42
+ }
43
+
44
+ /* sizes */
45
+ .ld-btn--sm {
46
+ min-height: 2rem;
47
+ padding: 0 1rem;
48
+ font-size: 0.8125rem;
49
+ border-radius: var(--ld-radius-md);
50
+ }
51
+ .ld-btn--md {
52
+ min-height: 2.625rem;
53
+ padding: 0 1.6rem;
54
+ font-size: 0.9375rem;
55
+ }
56
+ .ld-btn--lg {
57
+ min-height: 3.25rem;
58
+ padding: 0 2.2rem;
59
+ font-size: 1.05rem;
60
+ }
61
+
62
+ /* variants */
63
+ .ld-btn--primary {
64
+ background-color: var(
65
+ --ld-ui-btn-primary-bg,
66
+ var(--ld-btn-primary-bg)
67
+ ) !important;
68
+ color: var(--ld-ui-btn-primary-text, var(--ld-btn-primary-text)) !important;
69
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
70
+ }
71
+ .ld-btn--primary:hover {
72
+ filter: brightness(1.1);
73
+ }
74
+
75
+ .ld-btn--secondary {
76
+ background-color: var(
77
+ --ld-ui-btn-secondary-bg,
78
+ var(--ld-btn-secondary-bg)
79
+ ) !important;
80
+ color: var(
81
+ --ld-ui-btn-secondary-text,
82
+ var(--ld-btn-secondary-text)
83
+ ) !important;
84
+ border-color: var(--ld-border-subtle);
85
+ }
86
+ .ld-btn--secondary:hover {
87
+ background-color: var(--ld-bg-mute);
88
+ border-color: var(--ld-border-strong);
89
+ }
90
+
91
+ .ld-btn--outline {
92
+ background: transparent !important;
93
+ color: var(--ld-text-main) !important;
94
+ border-color: var(--ld-border-strong);
95
+ }
96
+ .ld-btn--outline:hover {
97
+ background-color: var(--ld-bg-soft);
98
+ border-color: var(--ld-color-primary);
99
+ }
100
+
101
+ .ld-btn--ghost {
102
+ background: transparent !important;
103
+ color: var(--ld-text-muted) !important;
104
+ }
105
+ .ld-btn--ghost:hover {
106
+ background-color: var(--ld-bg-soft);
107
+ color: var(--ld-text-main) !important;
108
+ }
109
+
110
+ /* ─── Badge ───────────────────────────────────────────────── */
111
+ .ld-badge {
112
+ display: inline-flex;
113
+ align-items: center;
114
+ padding: 0.3rem 0.85rem;
115
+ font-size: 0.75rem;
116
+ font-weight: 600;
117
+ border-radius: var(--ld-radius-full);
118
+ line-height: 1.4;
119
+ white-space: nowrap;
120
+ letter-spacing: 0.01em;
121
+ }
122
+
123
+ .ld-badge--default {
124
+ background: var(--ld-bg-mute);
125
+ color: var(--ld-text-main);
126
+ border: 1px solid var(--ld-border-subtle);
127
+ }
128
+ .ld-badge--primary {
129
+ background: var(--ld-color-primary-muted);
130
+ color: var(--ld-color-primary);
131
+ border: 1px solid rgba(127, 19, 236, 0.2);
132
+ }
133
+ .ld-badge--success {
134
+ background: var(--ld-ui-success-bg);
135
+ color: var(--ld-ui-success-text);
136
+ border: 1px solid var(--ld-ui-success-border);
137
+ }
138
+ .ld-badge--warning {
139
+ background: var(--ld-ui-warning-bg);
140
+ color: var(--ld-ui-warning-text);
141
+ border: 1px solid var(--ld-ui-warning-border);
142
+ }
143
+ .ld-badge--danger {
144
+ background: var(--ld-ui-danger-bg);
145
+ color: var(--ld-ui-danger-text);
146
+ border: 1px solid var(--ld-ui-danger-border);
147
+ }
148
+ .ld-badge--info {
149
+ background: var(--ld-ui-info-bg);
150
+ color: var(--ld-ui-info-text);
151
+ border: 1px solid var(--ld-ui-info-border);
152
+ }
153
+
154
+ /* ─── Cards ───────────────────────────────────────────────── */
155
+ .ld-cards {
156
+ display: grid;
157
+ gap: 1rem;
158
+ margin: 1.5rem 0;
159
+ }
160
+ .ld-cards--1 {
161
+ grid-template-columns: 1fr;
162
+ }
163
+ .ld-cards--2 {
164
+ grid-template-columns: repeat(2, 1fr);
165
+ }
166
+ .ld-cards--3 {
167
+ grid-template-columns: repeat(3, 1fr);
168
+ }
169
+ .ld-cards--4 {
170
+ grid-template-columns: repeat(4, 1fr);
171
+ }
172
+
173
+ @media (max-width: 768px) {
174
+ .ld-cards--2,
175
+ .ld-cards--3,
176
+ .ld-cards--4 {
177
+ grid-template-columns: 1fr;
178
+ }
179
+ }
180
+
181
+ .ld-card {
182
+ position: relative;
183
+ padding: 1.35rem 1.5rem;
184
+ border-radius: var(--ld-radius-lg);
185
+ border: 1px solid var(--ld-border-subtle);
186
+ background: var(--ld-bg-soft);
187
+ transition: all 300ms cubic-bezier(0.16, 1, 0.3, 1);
188
+ text-decoration: none !important;
189
+ backdrop-filter: blur(var(--ld-navbar-blur));
190
+ -webkit-backdrop-filter: blur(var(--ld-navbar-blur));
191
+ color: inherit;
192
+ overflow: hidden;
193
+ }
194
+
195
+ /* Subtle inner glow on top edge */
196
+ .ld-card::before {
197
+ content: "";
198
+ position: absolute;
199
+ top: 0;
200
+ left: 0;
201
+ right: 0;
202
+ height: 1px;
203
+ background: linear-gradient(
204
+ 90deg,
205
+ transparent,
206
+ var(--ld-border-strong),
207
+ transparent
208
+ );
209
+ opacity: 0;
210
+ transition: opacity 0.3s ease;
211
+ }
212
+
213
+ .ld-card:hover {
214
+ border-color: var(--ld-color-primary);
215
+ transform: translateY(-3px);
216
+ }
217
+ .ld-card:hover::before {
218
+ opacity: 1;
219
+ background: linear-gradient(
220
+ 90deg,
221
+ transparent,
222
+ var(--ld-color-primary),
223
+ transparent
224
+ );
225
+ }
226
+
227
+ .ld-card--link {
228
+ cursor: pointer;
229
+ }
230
+ .ld-card--link:hover {
231
+ text-decoration: none !important;
232
+ }
233
+
234
+ .ld-card__icon {
235
+ font-size: 1.6rem;
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: center;
239
+ width: 2.5rem;
240
+ height: 2.5rem;
241
+ margin-bottom: 0.85rem;
242
+ }
243
+ .ld-card__title {
244
+ font-size: 0.95rem;
245
+ font-weight: 700;
246
+ margin: 0 0 0.4rem;
247
+ color: var(--ld-text-main);
248
+ letter-spacing: -0.01em;
249
+ }
250
+ .ld-card__body {
251
+ font-size: 0.85rem;
252
+ color: var(--ld-text-muted);
253
+ line-height: 1.55;
254
+ margin: 0;
255
+ }
256
+ .ld-card__body p {
257
+ margin: 0;
258
+ }
259
+
260
+ /* ─── Tabs ────────────────────────────────────────────────── */
261
+ .ld-tabs {
262
+ margin: 1.5rem 0;
263
+ border: 1px solid var(--ld-border-subtle);
264
+ border-radius: var(--ld-radius-lg);
265
+ overflow: hidden;
266
+ background: var(--ld-bg-soft);
267
+ }
268
+
269
+ .ld-tabs__bar {
270
+ display: flex;
271
+ gap: 0;
272
+ background-color: var(--ld-bg-mute);
273
+ border-bottom: 1px solid var(--ld-border-subtle);
274
+ overflow-x: auto;
275
+ }
276
+
277
+ .ld-tabs__trigger {
278
+ position: relative;
279
+ padding: 0.65rem 1.25rem;
280
+ background: none;
281
+ border: none;
282
+ border-bottom: 2px solid transparent;
283
+ color: var(--ld-text-dim);
284
+ font-family: var(--ld-font-sans);
285
+ font-size: 0.8125rem;
286
+ font-weight: 500;
287
+ cursor: pointer;
288
+ transition: all 0.2s ease;
289
+ white-space: nowrap;
290
+ }
291
+ .ld-tabs__trigger:hover {
292
+ color: var(--ld-text-main);
293
+ background-color: rgba(255, 255, 255, 0.03);
294
+ }
295
+ .ld-tabs__trigger--active {
296
+ color: var(--ld-color-primary);
297
+ border-bottom-color: var(--ld-color-primary);
298
+ background-color: transparent;
299
+ }
300
+
301
+ .ld-tabs__content {
302
+ padding: 1.25rem;
303
+ }
304
+
305
+ .ld-tab-panel {
306
+ font-size: 0.9rem;
307
+ line-height: 1.7;
308
+ color: var(--ld-text-muted);
309
+ }
310
+
311
+ /* ─── Admonition ──────────────────────────────────────────── */
312
+ .ld-admonition {
313
+ margin: 1.5rem 0;
314
+ border-radius: var(--ld-radius-lg);
315
+ border: 1px solid;
316
+ overflow: hidden;
317
+ }
318
+
319
+ .ld-admonition__header {
320
+ display: flex;
321
+ align-items: center;
322
+ gap: 0.5rem;
323
+ padding: 0.6rem 1.1rem;
324
+ font-weight: 600;
325
+ font-size: 0.8rem;
326
+ text-transform: uppercase;
327
+ letter-spacing: 0.04em;
328
+ }
329
+
330
+ .ld-admonition__icon {
331
+ display: inline-flex;
332
+ align-items: center;
333
+ }
334
+
335
+ .ld-admonition__body {
336
+ padding: 0.6rem 1.1rem 1rem;
337
+ font-size: 0.875rem;
338
+ line-height: 1.7;
339
+ color: var(--ld-text-muted);
340
+ }
341
+ .ld-admonition__body p {
342
+ margin: 0 0 0.5rem;
343
+ }
344
+ .ld-admonition__body p:last-child {
345
+ margin-bottom: 0;
346
+ }
347
+
348
+ /* Admonition — Note (blue) */
349
+ .ld-admonition--note {
350
+ border-color: var(--ld-ui-note-border);
351
+ background-color: var(--ld-ui-note-bg);
352
+ }
353
+ .ld-admonition--note .ld-admonition__header {
354
+ color: var(--ld-ui-note-text);
355
+ }
356
+
357
+ /* Admonition — Tip (green) */
358
+ .ld-admonition--tip {
359
+ border-color: var(--ld-ui-tip-border);
360
+ background-color: var(--ld-ui-tip-bg);
361
+ }
362
+ .ld-admonition--tip .ld-admonition__header {
363
+ color: var(--ld-ui-tip-text);
364
+ }
365
+
366
+ /* Admonition — Info (blue) */
367
+ .ld-admonition--info {
368
+ border-color: var(--ld-ui-info-border);
369
+ background-color: var(--ld-ui-info-bg);
370
+ }
371
+ .ld-admonition--info .ld-admonition__header {
372
+ color: var(--ld-ui-info-text);
373
+ }
374
+
375
+ /* Admonition — Warning (amber) */
376
+ .ld-admonition--warning {
377
+ border-color: var(--ld-ui-warning-border);
378
+ background-color: var(--ld-ui-warning-bg);
379
+ }
380
+ .ld-admonition--warning .ld-admonition__header {
381
+ color: var(--ld-ui-warning-text);
382
+ }
383
+
384
+ /* Admonition — Danger (red) */
385
+ .ld-admonition--danger {
386
+ border-color: var(--ld-ui-danger-border);
387
+ background-color: var(--ld-ui-danger-bg);
388
+ }
389
+ .ld-admonition--danger .ld-admonition__header {
390
+ color: var(--ld-ui-danger-text);
391
+ }
392
+
393
+ /* ─── List ────────────────────────────────────────────────── */
394
+ .ld-list {
395
+ margin: 1rem 0;
396
+ padding-left: 0;
397
+ list-style: none;
398
+ }
399
+ .ld-list--checked,
400
+ .ld-list--arrow {
401
+ padding-left: 0;
402
+ }
403
+
404
+ .ld-list__item {
405
+ display: flex;
406
+ align-items: flex-start;
407
+ gap: 0.6rem;
408
+ padding: 0.35rem 0;
409
+ color: var(--ld-text-muted);
410
+ font-size: 0.9rem;
411
+ line-height: 1.6;
412
+ }
413
+
414
+ .ld-list__icon {
415
+ flex-shrink: 0;
416
+ margin-top: 0.25rem;
417
+ }
418
+
419
+ .ld-list--checked .ld-list__icon {
420
+ color: var(--ld-ui-success-text);
421
+ }
422
+ .ld-list--arrow .ld-list__icon {
423
+ color: var(--ld-color-primary);
424
+ }