boltdocs 1.6.0 → 1.7.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 (57) hide show
  1. package/dist/{SearchDialog-J3KNRGNO.mjs → SearchDialog-6Z7CUAYJ.mjs} +8 -1
  2. package/dist/{SearchDialog-3QICRMWF.css → SearchDialog-GOZ6X53X.css} +385 -113
  3. package/dist/{chunk-HSPDIRTW.mjs → chunk-SFVOGJ2W.mjs} +955 -737
  4. package/dist/client/index.css +385 -113
  5. package/dist/client/index.d.mts +19 -7
  6. package/dist/client/index.d.ts +19 -7
  7. package/dist/client/index.js +964 -577
  8. package/dist/client/index.mjs +118 -1
  9. package/dist/client/ssr.css +385 -113
  10. package/dist/client/ssr.d.mts +3 -1
  11. package/dist/client/ssr.d.ts +3 -1
  12. package/dist/client/ssr.js +743 -474
  13. package/dist/client/ssr.mjs +3 -2
  14. package/dist/{config-DkZg5aCf.d.ts → config-D68h41CA.d.mts} +21 -2
  15. package/dist/{config-DkZg5aCf.d.mts → config-D68h41CA.d.ts} +21 -2
  16. package/dist/node/index.d.mts +12 -2
  17. package/dist/node/index.d.ts +12 -2
  18. package/dist/node/index.js +48 -21
  19. package/dist/node/index.mjs +48 -21
  20. package/dist/{types-DGIo1VKD.d.mts → types-BbceAHA0.d.mts} +15 -0
  21. package/dist/{types-DGIo1VKD.d.ts → types-BbceAHA0.d.ts} +15 -0
  22. package/package.json +1 -1
  23. package/src/client/app/index.tsx +16 -11
  24. package/src/client/index.ts +2 -0
  25. package/src/client/ssr.tsx +4 -1
  26. package/src/client/theme/components/mdx/Table.tsx +151 -0
  27. package/src/client/theme/components/mdx/index.ts +3 -0
  28. package/src/client/theme/components/mdx/mdx-components.css +128 -0
  29. package/src/client/theme/styles/markdown.css +8 -3
  30. package/src/client/theme/styles/variables.css +34 -9
  31. package/src/client/theme/ui/ErrorBoundary/ErrorBoundary.tsx +46 -0
  32. package/src/client/theme/ui/ErrorBoundary/index.ts +1 -0
  33. package/src/client/theme/ui/Layout/Layout.tsx +10 -11
  34. package/src/client/theme/ui/Layout/base.css +15 -3
  35. package/src/client/theme/ui/Link/Link.tsx +2 -2
  36. package/src/client/theme/ui/Link/LinkPreview.tsx +9 -14
  37. package/src/client/theme/ui/Link/link-preview.css +30 -27
  38. package/src/client/theme/ui/Navbar/Navbar.tsx +65 -17
  39. package/src/client/theme/ui/Navbar/Tabs.tsx +99 -0
  40. package/src/client/theme/ui/Navbar/navbar.css +119 -5
  41. package/src/client/theme/ui/OnThisPage/OnThisPage.tsx +66 -57
  42. package/src/client/theme/ui/OnThisPage/toc.css +30 -10
  43. package/src/client/theme/ui/ProgressBar/ProgressBar.css +17 -0
  44. package/src/client/theme/ui/ProgressBar/ProgressBar.tsx +51 -0
  45. package/src/client/theme/ui/ProgressBar/index.ts +1 -0
  46. package/src/client/theme/ui/SearchDialog/SearchDialog.tsx +11 -1
  47. package/src/client/theme/ui/Sidebar/Sidebar.tsx +97 -57
  48. package/src/client/theme/ui/Sidebar/sidebar.css +61 -67
  49. package/src/client/types.ts +12 -0
  50. package/src/node/config.ts +19 -1
  51. package/src/node/plugin/entry.ts +5 -1
  52. package/src/node/plugin/index.ts +2 -1
  53. package/src/node/routes/index.ts +13 -1
  54. package/src/node/routes/parser.ts +32 -7
  55. package/src/node/routes/types.ts +11 -1
  56. package/src/node/ssg/index.ts +2 -1
  57. package/src/node/ssg/options.ts +2 -0
@@ -4,60 +4,84 @@
4
4
  .boltdocs-link-preview {
5
5
  position: fixed;
6
6
  z-index: 1000;
7
- width: 320px;
8
- padding: 1rem;
9
- background-color: var(--ld-navbar-bg);
10
- backdrop-filter: blur(var(--ld-navbar-blur));
11
- -webkit-backdrop-filter: blur(var(--ld-navbar-blur));
12
- border: 1px solid var(--ld-border-subtle);
13
- border-radius: var(--ld-radius-md);
14
- box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
7
+ width: 260px;
15
8
  pointer-events: none;
16
9
  opacity: 0;
17
- transform: translateY(10px) scale(0.95);
18
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
10
+ transform: translateY(8px) scale(0.98);
11
+ transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
19
12
  font-family: var(--ld-font-sans);
20
13
  }
21
14
  .boltdocs-link-preview.is-visible {
22
15
  opacity: 1;
23
16
  transform: translateY(0) scale(1);
24
17
  }
18
+ .boltdocs-link-preview-content {
19
+ padding: 0.85rem 1rem;
20
+ background-color: var(--ld-navbar-bg);
21
+ backdrop-filter: blur(20px);
22
+ -webkit-backdrop-filter: blur(20px);
23
+ border: 1px solid var(--ld-border-subtle);
24
+ border-radius: var(--ld-radius-lg);
25
+ box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.2), 0 4px 10px -5px rgba(0, 0, 0, 0.1);
26
+ }
25
27
  .boltdocs-link-preview-title {
26
28
  display: block;
27
29
  font-weight: 600;
28
- font-size: 0.95rem;
30
+ font-size: 0.875rem;
29
31
  color: var(--ld-text-main);
30
- margin-bottom: 0.5rem;
31
- line-height: 1.4;
32
+ margin-bottom: 0.35rem;
33
+ line-height: 1.3;
32
34
  }
33
35
  .boltdocs-link-preview-summary {
34
36
  display: block;
35
- font-size: 0.85rem;
37
+ font-size: 0.775rem;
36
38
  color: var(--ld-text-muted);
37
39
  line-height: 1.5;
38
40
  display: -webkit-box;
39
- -webkit-line-clamp: 4;
40
- line-clamp: 4;
41
+ -webkit-line-clamp: 3;
42
+ line-clamp: 3;
41
43
  -webkit-box-orient: vertical;
42
44
  overflow: hidden;
43
45
  }
44
- [data-theme=dark] .boltdocs-link-preview {
45
- background-color: var(--ld-navbar-bg);
46
- border-color: var(--ld-border-subtle);
47
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
46
+ [data-theme=dark] .boltdocs-link-preview-content {
47
+ background-color: rgba(15, 15, 20, 0.8);
48
+ border-color: rgba(255, 255, 255, 0.08);
49
+ box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.5), 0 8px 16px -8px rgba(0, 0, 0, 0.3);
48
50
  }
49
51
  [data-theme=dark] .boltdocs-link-preview-title {
50
- color: #f8fafc;
52
+ color: #fff;
51
53
  }
52
54
  [data-theme=dark] .boltdocs-link-preview-summary {
53
55
  color: #94a3b8;
54
56
  }
55
57
 
58
+ /* src/client/theme/ui/ProgressBar/ProgressBar.css */
59
+ .boltdocs-progress-container {
60
+ position: fixed;
61
+ top: 0;
62
+ left: 0;
63
+ width: 100%;
64
+ height: 2px;
65
+ z-index: 1000;
66
+ pointer-events: none;
67
+ background: transparent;
68
+ }
69
+ .boltdocs-progress-bar {
70
+ height: 100%;
71
+ background:
72
+ linear-gradient(
73
+ 90deg,
74
+ var(--ld-color-primary),
75
+ var(--ld-gradient-to, var(--ld-color-primary)));
76
+ box-shadow: 0 0 8px var(--ld-color-primary-glow);
77
+ transition: width 0.1s ease-out;
78
+ }
79
+
56
80
  /* src/client/theme/styles/variables.css */
57
81
  :root[data-theme=light],
58
82
  :root.theme-light {
59
83
  --ld-bg-main: #ffffff;
60
- --ld-bg-soft: #f9fafb;
84
+ --ld-bg-soft: #eeeeee;
61
85
  --ld-bg-mute: #f3f4f6;
62
86
  --ld-surface: #ffffff;
63
87
  --ld-border-subtle: #e5e7eb;
@@ -84,7 +108,7 @@
84
108
  --ld-sidebar-bg: transparent;
85
109
  --ld-sidebar-blur: 0px;
86
110
  --ld-glow-1-bg: var(--ld-color-primary-glow);
87
- --ld-glow-2-bg: rgba(59, 130, 246, 0.15);
111
+ --ld-glow-2-bg: rgba(215, 59, 246, 0.15);
88
112
  --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
89
113
  --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
90
114
  --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
@@ -109,10 +133,10 @@
109
133
  --ld-ui-tip-border: rgba(34, 197, 94, 0.3);
110
134
  }
111
135
  :root {
112
- --ld-bg-main: #0a0a0f;
113
- --ld-bg-soft: rgba(10, 10, 15, 0.2);
114
- --ld-bg-mute: #141420;
115
- --ld-surface: #1a1a2e;
136
+ --ld-bg-main: #000;
137
+ --ld-bg-soft: #12121272;
138
+ --ld-bg-mute: #090909;
139
+ --ld-surface: #1a1a1a;
116
140
  --ld-border-subtle: rgba(255, 255, 255, 0.06);
117
141
  --ld-border-strong: rgba(255, 255, 255, 0.12);
118
142
  --ld-text-main: #e4e4ed;
@@ -130,15 +154,15 @@
130
154
  --ld-btn-secondary-text: #e4e4ed;
131
155
  --ld-gradient-from: #ffffff;
132
156
  --ld-gradient-to: rgba(255, 255, 255, 0.7);
133
- --ld-code-bg: #0d0d14;
157
+ --ld-code-bg: #050505;
134
158
  --ld-code-header: #111119;
135
159
  --ld-code-text: #d4d4d4;
136
- --ld-navbar-bg: rgba(10, 10, 15, 0.2);
160
+ --ld-navbar-bg: #000;
137
161
  --ld-navbar-blur: 12px;
138
162
  --ld-sidebar-bg: transparent;
139
163
  --ld-sidebar-blur: 0px;
140
164
  --ld-glow-1-bg: var(--ld-color-primary-glow);
141
- --ld-glow-2-bg: rgba(59, 130, 246, 0.15);
165
+ --ld-glow-2-bg: rgba(246, 59, 187, 0.15);
142
166
  --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
143
167
  --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
144
168
  --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
@@ -175,6 +199,7 @@
175
199
  Consolas,
176
200
  monospace;
177
201
  --ld-navbar-height: 3.5rem;
202
+ --ld-header-height: var(--ld-navbar-height);
178
203
  --ld-sidebar-width: 14.5rem;
179
204
  --ld-toc-width: 13rem;
180
205
  --ld-content-max-width: 820px;
@@ -182,6 +207,23 @@
182
207
  --ld-radius-md: 8px;
183
208
  --ld-radius-lg: 12px;
184
209
  --ld-radius-full: 9999px;
210
+ scrollbar-width: thin;
211
+ scrollbar-color: var(--ld-border-strong) transparent;
212
+ }
213
+ *::-webkit-scrollbar {
214
+ width: 6px;
215
+ height: 6px;
216
+ }
217
+ *::-webkit-scrollbar-track {
218
+ background: transparent;
219
+ }
220
+ *::-webkit-scrollbar-thumb {
221
+ background-color: var(--ld-border-strong);
222
+ border-radius: 20px;
223
+ border: transparent;
224
+ }
225
+ *::-webkit-scrollbar-thumb:hover {
226
+ background-color: var(--ld-text-dim);
185
227
  }
186
228
 
187
229
  /* src/client/theme/ui/Layout/base.css */
@@ -190,8 +232,14 @@
190
232
  *::after {
191
233
  box-sizing: border-box;
192
234
  }
235
+ html,
193
236
  body {
194
237
  margin: 0;
238
+ padding: 0;
239
+ height: 100%;
240
+ overflow: hidden;
241
+ }
242
+ body {
195
243
  font-family: var(--ld-font-sans);
196
244
  background-color: var(--ld-bg-main);
197
245
  color: var(--ld-text-main);
@@ -208,7 +256,9 @@ a {
208
256
  .boltdocs-layout {
209
257
  display: flex;
210
258
  flex-direction: column;
211
- min-height: 100vh;
259
+ height: 100vh;
260
+ width: 100vw;
261
+ overflow: hidden;
212
262
  }
213
263
  .boltdocs-main-container {
214
264
  display: flex;
@@ -216,7 +266,10 @@ a {
216
266
  width: 100%;
217
267
  max-width: 1440px;
218
268
  margin: 0 auto;
219
- padding: 0 1.5rem;
269
+ padding: 0 0.5rem;
270
+ height: calc(100vh - var(--ld-header-height));
271
+ overflow: hidden;
272
+ align-items: stretch;
220
273
  }
221
274
  .boltdocs-background-glow {
222
275
  position: fixed;
@@ -252,18 +305,22 @@ a {
252
305
  /* src/client/theme/ui/Navbar/navbar.css */
253
306
  .boltdocs-navbar {
254
307
  display: flex;
255
- align-items: center;
308
+ flex-direction: column;
256
309
  justify-content: center;
257
- height: var(--ld-navbar-height);
258
- padding: 0;
259
310
  background-color: var(--ld-navbar-bg);
260
- backdrop-filter: blur(var(--ld-navbar-blur));
261
- -webkit-backdrop-filter: blur(var(--ld-navbar-blur));
262
311
  border-bottom: 1px solid var(--ld-border-subtle);
263
312
  position: sticky;
264
313
  top: 0;
265
314
  z-index: 100;
266
315
  }
316
+ .boltdocs-navbar.has-tabs {
317
+ --ld-header-height: 102px !important;
318
+ height: 102px;
319
+ }
320
+ .boltdocs-navbar:not(.has-tabs) {
321
+ --ld-header-height: var(--ld-navbar-height);
322
+ height: var(--ld-navbar-height);
323
+ }
267
324
  .navbar-container {
268
325
  display: flex;
269
326
  align-items: center;
@@ -348,6 +405,15 @@ a {
348
405
  font-size: 0.875rem;
349
406
  border-radius: var(--ld-radius-md);
350
407
  transition: color 0.2s, background-color 0.2s;
408
+ display: flex;
409
+ align-items: center;
410
+ gap: 0.35rem;
411
+ }
412
+ .navbar-external-icon {
413
+ display: inline-flex;
414
+ align-items: center;
415
+ opacity: 0.6;
416
+ margin-top: 1px;
351
417
  }
352
418
  .navbar-links a:hover {
353
419
  color: var(--ld-text-main);
@@ -448,6 +514,94 @@ a {
448
514
  width: 18px;
449
515
  height: 18px;
450
516
  }
517
+ .boltdocs-tabs-container {
518
+ position: relative;
519
+ background: var(--ld-navbar-bg);
520
+ padding: 0;
521
+ height: 46px;
522
+ }
523
+ .boltdocs-tabs-container::after {
524
+ content: "";
525
+ position: absolute;
526
+ bottom: 0px;
527
+ left: 0;
528
+ right: 0;
529
+ height: 1px;
530
+ background: var(--ld-border-subtle);
531
+ z-index: 10;
532
+ }
533
+ .boltdocs-tabs {
534
+ max-width: 1440px;
535
+ margin: 0 auto;
536
+ display: flex;
537
+ gap: 2rem;
538
+ overflow-x: auto;
539
+ scrollbar-width: none;
540
+ padding: 0 1.5rem;
541
+ position: relative;
542
+ height: 100%;
543
+ }
544
+ .boltdocs-tabs::-webkit-scrollbar {
545
+ display: none;
546
+ }
547
+ .boltdocs-tab-item {
548
+ padding: 0.85rem 0;
549
+ padding-bottom: calc(0.85rem + 1px);
550
+ font-size: 0.875rem;
551
+ font-weight: 500;
552
+ color: var(--ld-text-muted);
553
+ text-decoration: none;
554
+ position: relative;
555
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
556
+ white-space: nowrap;
557
+ display: flex;
558
+ align-items: center;
559
+ gap: 0.6rem;
560
+ opacity: 0.7;
561
+ z-index: 20;
562
+ }
563
+ .boltdocs-tab-item:hover {
564
+ color: var(--ld-text-main);
565
+ opacity: 1;
566
+ }
567
+ .tab-icon {
568
+ flex-shrink: 0;
569
+ display: flex;
570
+ align-items: center;
571
+ justify-content: center;
572
+ transition: transform 0.2s ease;
573
+ }
574
+ .boltdocs-tab-item:hover .tab-icon {
575
+ transform: translateY(-1px);
576
+ }
577
+ .tab-icon.lucide-icon,
578
+ .tab-icon.svg-icon svg {
579
+ width: 18px;
580
+ height: 18px;
581
+ stroke-width: 2.25px;
582
+ }
583
+ .boltdocs-tab-item.active {
584
+ color: var(--ld-text-main);
585
+ font-weight: 600;
586
+ opacity: 1;
587
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.2);
588
+ }
589
+ .boltdocs-tab-indicator {
590
+ position: absolute;
591
+ bottom: 0px;
592
+ left: 0;
593
+ height: 3px;
594
+ background: var(--ld-color-primary);
595
+ border-radius: 2px 2px 0 0;
596
+ box-shadow: 0 -2px 15px var(--ld-color-primary-glow);
597
+ transition:
598
+ transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
599
+ width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
600
+ opacity 0.3s ease;
601
+ z-index: 100;
602
+ pointer-events: none;
603
+ transform-origin: left;
604
+ }
451
605
 
452
606
  /* src/client/theme/ui/Sidebar/sidebar.css */
453
607
  .boltdocs-sidebar {
@@ -457,64 +611,38 @@ a {
457
611
  backdrop-filter: blur(var(--ld-sidebar-blur));
458
612
  -webkit-backdrop-filter: blur(var(--ld-sidebar-blur));
459
613
  border-right: 1px solid var(--ld-border-subtle);
460
- padding: 1rem 0.6rem;
614
+ padding: 1.5rem 0.6rem;
461
615
  overflow-y: auto;
462
- position: sticky;
463
- top: var(--ld-navbar-height);
464
- height: calc(100vh - var(--ld-navbar-height));
465
- scrollbar-width: thin;
466
- scrollbar-color: var(--ld-bg-mute) transparent;
616
+ height: 100%;
617
+ scrollbar-width: none;
467
618
  display: flex;
468
619
  flex-direction: column;
469
- transition:
470
- width 0.3s cubic-bezier(0.16, 1, 0.3, 1),
471
- padding 0.3s cubic-bezier(0.16, 1, 0.3, 1),
472
- opacity 0.2s ease;
473
- }
474
- .boltdocs-sidebar > nav {
475
- flex: 1;
476
- }
477
- .boltdocs-main-container.sidebar-collapsed .boltdocs-sidebar {
478
- width: 54px;
479
- padding: 1rem 0;
480
- border-right: 1px solid var(--ld-border-subtle);
481
- opacity: 1;
482
- pointer-events: auto;
483
- overflow: hidden;
620
+ transform: translate3d(0, 0, 0);
621
+ backface-visibility: hidden;
484
622
  }
485
- .sidebar-collapse {
486
- width: 100%;
623
+ .sidebar-icon {
624
+ flex-shrink: 0;
487
625
  display: flex;
488
626
  align-items: center;
489
- justify-content: flex-end;
490
- padding: 0 0.75rem 1rem;
491
- transition: justify-content 0.3s ease;
492
- }
493
- .boltdocs-main-container.sidebar-collapsed .sidebar-collapse {
494
627
  justify-content: center;
495
- padding: 0 0 1rem;
496
628
  }
497
- .sidebar-collapse-btn {
629
+ .sidebar-icon.lucide-icon,
630
+ .sidebar-icon.svg-icon svg {
498
631
  color: var(--ld-text-muted);
499
- border: none;
500
- box-shadow: none;
501
- background-color: transparent;
502
- cursor: pointer;
503
- display: flex;
504
- align-items: center;
505
- justify-content: center;
506
- width: 32px;
507
- height: 32px;
508
- border-radius: var(--ld-radius-md);
509
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
632
+ width: 18px;
633
+ height: 18px;
634
+ stroke-width: 2px;
635
+ transition: color 0.2s ease;
510
636
  }
511
- .sidebar-collapse-btn:hover {
512
- background-color: var(--ld-bg-mute);
513
- color: var(--ld-text-main);
514
- transform: scale(1.05);
637
+ .sidebar-link:hover .sidebar-icon.lucide-icon,
638
+ .sidebar-link.active .sidebar-icon.lucide-icon {
639
+ color: var(--ld-color-primary);
640
+ }
641
+ .boltdocs-sidebar > nav {
642
+ flex: 1;
515
643
  }
516
644
  .boltdocs-sidebar::-webkit-scrollbar {
517
- width: 4px;
645
+ display: none;
518
646
  }
519
647
  .boltdocs-sidebar::-webkit-scrollbar-track {
520
648
  background: transparent;
@@ -529,21 +657,26 @@ a {
529
657
  margin: 0 0 0.5rem;
530
658
  }
531
659
  .sidebar-list li {
532
- margin-bottom: 1px;
660
+ margin-bottom: 2px;
533
661
  }
534
662
  .sidebar-link {
535
663
  display: flex;
536
664
  align-items: center;
537
665
  justify-content: space-between;
538
- padding: 0.45rem 0.75rem;
666
+ padding: 0.5rem 0.75rem;
539
667
  color: var(--ld-text-muted);
540
668
  text-decoration: none;
541
- border-radius: var(--ld-radius-md);
669
+ border-radius: 0.75rem;
542
670
  font-size: 0.875rem;
543
671
  font-weight: 500;
544
672
  transition: all 0.2s ease;
545
673
  margin: 0.15rem 0;
546
674
  }
675
+ .sidebar-link-title-container {
676
+ display: flex;
677
+ align-items: center;
678
+ gap: 0.75rem;
679
+ }
547
680
  .sidebar-link-content {
548
681
  display: flex;
549
682
  align-items: center;
@@ -551,7 +684,7 @@ a {
551
684
  width: 100%;
552
685
  gap: 0.5rem;
553
686
  }
554
- .sidebar-link-content > span:first-child {
687
+ .sidebar-link-content > span:last-child {
555
688
  flex: 1;
556
689
  word-wrap: break-word;
557
690
  }
@@ -590,10 +723,12 @@ a {
590
723
  }
591
724
  .sidebar-link:hover {
592
725
  color: var(--ld-color-primary-hover);
726
+ background-color: var(--ld-bg-soft);
593
727
  }
594
728
  .sidebar-link.active {
595
729
  color: var(--ld-color-primary);
596
730
  font-weight: 600;
731
+ background-color: var(--ld-bg-soft);
597
732
  }
598
733
  .sidebar-group {
599
734
  margin-top: 1.25rem;
@@ -606,25 +741,27 @@ a {
606
741
  align-items: center;
607
742
  justify-content: space-between;
608
743
  width: 100%;
609
- padding: 0.35rem 0.75rem;
744
+ padding: 0.5rem 0.75rem;
610
745
  background: none;
611
746
  border: none;
612
747
  border-radius: var(--ld-radius-md);
613
- color: var(--ld-text-dim);
748
+ color: var(--ld-text-muted);
614
749
  font-family: var(--ld-font-sans);
615
- font-size: 0.6875rem;
616
- font-weight: 700;
617
- text-transform: uppercase;
618
- letter-spacing: 0.08em;
750
+ font-size: 0.8125rem;
751
+ font-weight: 600;
619
752
  cursor: pointer;
620
753
  transition: color 0.2s, background-color 0.2s;
621
754
  }
755
+ .sidebar-group-header-content {
756
+ display: flex;
757
+ align-items: center;
758
+ gap: 0.75rem;
759
+ }
622
760
  .sidebar-group-header:hover {
623
- color: var(--ld-text-muted);
624
- background-color: rgba(255, 255, 255, 0.03);
761
+ color: var(--ld-text-main);
625
762
  }
626
763
  .sidebar-group-header.active {
627
- color: var(--ld-color-primary);
764
+ color: var(--ld-text-main);
628
765
  }
629
766
  .sidebar-group-chevron {
630
767
  display: inline-flex;
@@ -639,14 +776,23 @@ a {
639
776
  .sidebar-group-list {
640
777
  list-style: none;
641
778
  padding: 0;
642
- margin: 0.35rem 0 0;
643
- overflow: hidden;
779
+ margin: 0.35rem 0 0.5rem 0;
780
+ position: relative;
644
781
  }
645
782
  .sidebar-group-list li {
646
- margin-bottom: 1px;
783
+ margin-bottom: 2px;
647
784
  }
648
785
  .sidebar-link-nested {
649
- padding-left: 1.25rem;
786
+ padding-left: 0.75rem;
787
+ }
788
+ .sidebar-group-list {
789
+ list-style: none;
790
+ padding: 0;
791
+ margin: 0.35rem 0 0.5rem 0;
792
+ position: relative;
793
+ }
794
+ .sidebar-group-list li {
795
+ margin-bottom: 2px;
650
796
  }
651
797
 
652
798
  /* src/client/theme/ui/OnThisPage/toc.css */
@@ -654,12 +800,11 @@ a {
654
800
  width: var(--ld-toc-width);
655
801
  flex-shrink: 0;
656
802
  padding: 1.5rem 1rem;
657
- position: sticky;
658
- top: var(--ld-navbar-height);
659
- height: calc(100vh - var(--ld-navbar-height));
660
- overflow-y: auto;
661
- scrollbar-width: thin;
662
- scrollbar-color: var(--ld-bg-mute) transparent;
803
+ height: 100%;
804
+ display: flex;
805
+ flex-direction: column;
806
+ transform: translate3d(0, 0, 0);
807
+ backface-visibility: hidden;
663
808
  }
664
809
  .on-this-page-title {
665
810
  font-size: 0.6875rem;
@@ -669,10 +814,25 @@ a {
669
814
  color: var(--ld-text-dim);
670
815
  margin: 0 0 0.75rem;
671
816
  padding-left: 0.75rem;
817
+ flex-shrink: 0;
672
818
  }
673
819
  .on-this-page-container {
674
820
  position: relative;
675
821
  padding-left: 2px;
822
+ flex: 0 1 auto;
823
+ min-height: 0;
824
+ display: flex;
825
+ flex-direction: column;
826
+ }
827
+ .on-this-page-list-container {
828
+ overflow-y: auto;
829
+ max-height: 50vh;
830
+ flex: 0 1 auto;
831
+ position: relative;
832
+ scrollbar-width: none;
833
+ }
834
+ .on-this-page-list-container::-webkit-scrollbar {
835
+ display: none;
676
836
  }
677
837
  .on-this-page-list {
678
838
  list-style: none;
@@ -709,7 +869,7 @@ a {
709
869
  border-left: 2px solid transparent;
710
870
  margin-left: -2px;
711
871
  line-height: 1.4;
712
- transition: color 0.2s;
872
+ transition: color 0.2s, font-weight 0.2s;
713
873
  }
714
874
  .toc-link:hover {
715
875
  color: var(--ld-text-main);
@@ -719,9 +879,10 @@ a {
719
879
  font-weight: 500;
720
880
  }
721
881
  .toc-help {
722
- margin-top: 2rem;
882
+ margin-top: 1.5rem;
723
883
  padding-top: 1rem;
724
884
  border-top: 1px solid var(--ld-border-subtle);
885
+ flex-shrink: 0;
725
886
  }
726
887
  .toc-help-title {
727
888
  font-size: 0.6875rem;
@@ -752,8 +913,8 @@ a {
752
913
  transition: color 0.2s, background-color 0.2s;
753
914
  }
754
915
  .toc-help-link:hover {
755
- color: var(--ld-text-muted);
756
- background-color: rgba(255, 255, 255, 0.03);
916
+ color: var(--ld-text-main);
917
+ background-color: var(--ld-bg-mute);
757
918
  }
758
919
  .toc-help-link svg {
759
920
  width: 14px;
@@ -947,14 +1108,18 @@ a {
947
1108
  /* src/client/theme/styles/markdown.css */
948
1109
  .boltdocs-content {
949
1110
  flex: 1;
950
- padding: 2rem 2.5rem 2.5rem;
1111
+ padding: 2rem 2.5rem 6rem;
951
1112
  max-width: var(--ld-content-max-width);
952
1113
  margin: 0 auto;
953
1114
  min-width: 0;
1115
+ height: 100%;
1116
+ overflow-y: auto;
1117
+ scrollbar-width: none;
1118
+ scroll-behavior: smooth;
954
1119
  transition: max-width 0.3s cubic-bezier(0.16, 1, 0.3, 1), padding 0.3s ease;
955
1120
  }
956
- .boltdocs-main-container.sidebar-collapsed .boltdocs-content {
957
- max-width: 100%;
1121
+ .boltdocs-content::-webkit-scrollbar {
1122
+ display: none;
958
1123
  }
959
1124
  .boltdocs-breadcrumbs {
960
1125
  margin-bottom: 1.5rem;
@@ -1715,6 +1880,113 @@ a {
1715
1880
  .ld-file-tree__icon--spacer {
1716
1881
  width: 14px;
1717
1882
  }
1883
+ .ld-table-container {
1884
+ margin: 1.5rem 0;
1885
+ border: 1px solid var(--ld-border-subtle);
1886
+ border-radius: var(--ld-radius-lg);
1887
+ overflow: hidden;
1888
+ background: var(--ld-bg-soft);
1889
+ display: flex;
1890
+ flex-direction: column;
1891
+ }
1892
+ .ld-table-wrapper {
1893
+ overflow-x: auto;
1894
+ scrollbar-width: thin;
1895
+ }
1896
+ .ld-table {
1897
+ width: 100%;
1898
+ border-collapse: collapse;
1899
+ text-align: left;
1900
+ font-size: 0.875rem;
1901
+ line-height: 1.5;
1902
+ }
1903
+ .ld-table thead {
1904
+ background: var(--ld-bg-mute);
1905
+ border-bottom: 1px solid var(--ld-border-subtle);
1906
+ }
1907
+ .ld-table th {
1908
+ padding: 0.75rem 1rem;
1909
+ font-weight: 600;
1910
+ color: var(--ld-text-main);
1911
+ font-size: 0.8125rem;
1912
+ text-transform: uppercase;
1913
+ letter-spacing: 0.04em;
1914
+ white-space: nowrap;
1915
+ }
1916
+ .ld-table-header--sortable {
1917
+ cursor: pointer;
1918
+ transition: background-color 0.2s;
1919
+ }
1920
+ .ld-table-header--sortable:hover {
1921
+ background-color: var(--ld-bg-soft);
1922
+ }
1923
+ .ld-table-header-content {
1924
+ display: flex;
1925
+ align-items: center;
1926
+ gap: 0.5rem;
1927
+ }
1928
+ .ld-table-sort-icon {
1929
+ opacity: 0.8;
1930
+ color: var(--ld-color-primary);
1931
+ transition: opacity 0.2s;
1932
+ }
1933
+ .ld-table-sort-icon--hidden {
1934
+ opacity: 0;
1935
+ }
1936
+ .ld-table-header--sortable:hover .ld-table-sort-icon--hidden {
1937
+ opacity: 0.3;
1938
+ }
1939
+ .ld-table td {
1940
+ padding: 0.875rem 1rem;
1941
+ color: var(--ld-text-muted);
1942
+ border-bottom: 1px solid var(--ld-border-subtle);
1943
+ }
1944
+ .ld-table tr:last-child td {
1945
+ border-bottom: none;
1946
+ }
1947
+ .ld-table code {
1948
+ font-size: 0.8rem;
1949
+ padding: 0.2rem 0.4rem;
1950
+ background: rgba(255, 255, 255, 0.05);
1951
+ border-radius: 4px;
1952
+ }
1953
+ .ld-table-pagination {
1954
+ display: flex;
1955
+ align-items: center;
1956
+ justify-content: space-between;
1957
+ padding: 0.75rem 1rem;
1958
+ background: var(--ld-bg-mute);
1959
+ border-top: 1px solid var(--ld-border-subtle);
1960
+ font-size: 0.75rem;
1961
+ color: var(--ld-text-dim);
1962
+ }
1963
+ .ld-table-pagination-controls {
1964
+ display: flex;
1965
+ align-items: center;
1966
+ gap: 0.25rem;
1967
+ }
1968
+ .ld-table-pagination-btn {
1969
+ display: flex;
1970
+ align-items: center;
1971
+ justify-content: center;
1972
+ width: 1.75rem;
1973
+ height: 1.75rem;
1974
+ border-radius: var(--ld-radius-md);
1975
+ border: 1px solid var(--ld-border-subtle);
1976
+ background: var(--ld-bg-soft);
1977
+ color: var(--ld-text-muted);
1978
+ cursor: pointer;
1979
+ transition: all 0.2s;
1980
+ }
1981
+ .ld-table-pagination-btn:hover:not(:disabled) {
1982
+ background: var(--ld-bg-mute);
1983
+ color: var(--ld-text-main);
1984
+ border-color: var(--ld-border-strong);
1985
+ }
1986
+ .ld-table-pagination-btn:disabled {
1987
+ opacity: 0.4;
1988
+ cursor: not-allowed;
1989
+ }
1718
1990
 
1719
1991
  /* src/client/theme/components/PackageManagerTabs/pkg-tabs.css */
1720
1992
  .pkg-tabs-wrapper {