boltdocs 1.10.1 → 1.10.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.
@@ -85,8 +85,6 @@
85
85
  --ld-btn-primary-text: #ffffff;
86
86
  --ld-btn-secondary-bg: #ffffff;
87
87
  --ld-btn-secondary-text: #111827;
88
- --ld-gradient-from: var(--ld-color-primary);
89
- --ld-gradient-to: #a855f7;
90
88
  --ld-code-bg: #f3f4f6;
91
89
  --ld-code-header: #e5e7eb;
92
90
  --ld-code-text: #1f2937;
@@ -94,8 +92,6 @@
94
92
  --ld-navbar-blur: 12px;
95
93
  --ld-sidebar-bg: transparent;
96
94
  --ld-sidebar-blur: 0px;
97
- --ld-glow-1-bg: var(--ld-color-primary-glow);
98
- --ld-glow-2-bg: rgba(215, 59, 246, 0.15);
99
95
  --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
100
96
  --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
101
97
  --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
@@ -139,8 +135,6 @@
139
135
  --ld-btn-primary-text: #0a0a0f;
140
136
  --ld-btn-secondary-bg: #1a1a2e;
141
137
  --ld-btn-secondary-text: #e4e4ed;
142
- --ld-gradient-from: #ffffff;
143
- --ld-gradient-to: rgba(255, 255, 255, 0.7);
144
138
  --ld-code-bg: #050505;
145
139
  --ld-code-header: #111119;
146
140
  --ld-code-text: #d4d4d4;
@@ -148,8 +142,6 @@
148
142
  --ld-navbar-blur: 12px;
149
143
  --ld-sidebar-bg: transparent;
150
144
  --ld-sidebar-blur: 0px;
151
- --ld-glow-1-bg: var(--ld-color-primary-glow);
152
- --ld-glow-2-bg: rgba(246, 59, 187, 0.15);
153
145
  --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
154
146
  --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
155
147
  --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
@@ -292,12 +284,13 @@ a {
292
284
  }
293
285
  .boltdocs-page-header {
294
286
  position: absolute;
295
- top: 0;
287
+ top: -0.5rem;
296
288
  right: 0;
297
289
  display: flex;
298
290
  justify-content: flex-end;
299
291
  padding: 1rem 0;
300
292
  pointer-events: none;
293
+ z-index: 101;
301
294
  }
302
295
  .boltdocs-page-header > * {
303
296
  pointer-events: auto;
@@ -1120,11 +1113,9 @@ a {
1120
1113
  border-radius: var(--ld-radius-full);
1121
1114
  overflow: hidden;
1122
1115
  transition: all 0.2s ease;
1123
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
1124
1116
  }
1125
1117
  .copy-btn-group:hover {
1126
1118
  border-color: var(--ld-color-primary-hover);
1127
- box-shadow: 0 4px 20px rgba(59, 130, 246, 0.15);
1128
1119
  }
1129
1120
  .copy-btn {
1130
1121
  display: flex;
@@ -1271,6 +1262,7 @@ a {
1271
1262
  font-weight: 700;
1272
1263
  letter-spacing: -0.025em;
1273
1264
  color: var(--ld-text-main);
1265
+ padding-right: 160px;
1274
1266
  }
1275
1267
  .boltdocs-page h1 + p {
1276
1268
  color: var(--ld-text-muted);
@@ -1431,6 +1423,56 @@ a {
1431
1423
  display: grid !important;
1432
1424
  padding: 1.25rem 1rem !important;
1433
1425
  }
1426
+ .code-block-wrapper.is-truncated pre {
1427
+ max-height: 250px;
1428
+ overflow: hidden;
1429
+ }
1430
+ .code-block-expand-wrapper {
1431
+ position: absolute;
1432
+ bottom: 0;
1433
+ left: 0;
1434
+ right: 0;
1435
+ height: 80px;
1436
+ background:
1437
+ linear-gradient(
1438
+ to top,
1439
+ var(--ld-code-bg) 20%,
1440
+ transparent);
1441
+ display: none;
1442
+ align-items: flex-end;
1443
+ justify-content: center;
1444
+ padding-bottom: 1rem;
1445
+ z-index: 10;
1446
+ }
1447
+ .code-block-wrapper.is-truncated .code-block-expand-wrapper {
1448
+ display: flex;
1449
+ }
1450
+ .code-block-expand-btn {
1451
+ background-color: var(--ld-surface);
1452
+ border: 1px solid var(--ld-border-subtle);
1453
+ border-radius: 20px;
1454
+ color: var(--ld-text-main);
1455
+ padding: 0.5rem 1.25rem;
1456
+ font-size: 0.8125rem;
1457
+ font-weight: 500;
1458
+ cursor: pointer;
1459
+ transition: all 0.2s ease;
1460
+ backdrop-filter: blur(8px);
1461
+ -webkit-backdrop-filter: blur(8px);
1462
+ }
1463
+ .code-block-expand-btn:hover {
1464
+ background-color: var(--ld-border-subtle);
1465
+ transform: translateY(-1px);
1466
+ }
1467
+ .code-block-wrapper:not(.is-truncated) .code-block-expand-wrapper {
1468
+ position: relative;
1469
+ height: auto;
1470
+ background: none;
1471
+ display: flex;
1472
+ justify-content: center;
1473
+ padding: 1rem 0;
1474
+ border-top: 1px solid var(--ld-border-subtle);
1475
+ }
1434
1476
  .code-block-wrapper pre > code .line {
1435
1477
  padding: 0 1.25rem;
1436
1478
  }
@@ -2510,6 +2552,58 @@ a.not-found-link:hover {
2510
2552
  margin: 0;
2511
2553
  }
2512
2554
 
2555
+ /* src/client/theme/ui/ErrorBoundary/error-boundary.css */
2556
+ .boltdocs-error-boundary {
2557
+ display: flex;
2558
+ flex-direction: column;
2559
+ align-items: center;
2560
+ justify-content: center;
2561
+ padding: 3rem 2rem;
2562
+ margin: 2rem 0;
2563
+ background-color: var(--ld-bg-soft);
2564
+ border: 1px solid var(--ld-ui-danger-border);
2565
+ border-radius: var(--ld-radius-lg);
2566
+ text-align: center;
2567
+ backdrop-filter: blur(8px);
2568
+ -webkit-backdrop-filter: blur(8px);
2569
+ }
2570
+ .boltdocs-error-title {
2571
+ font-size: 1.5rem;
2572
+ font-weight: 700;
2573
+ color: var(--ld-ui-danger-text);
2574
+ margin-bottom: 0.75rem;
2575
+ font-family: var(--ld-font-sans);
2576
+ }
2577
+ .boltdocs-error-message {
2578
+ font-size: 1rem;
2579
+ color: var(--ld-text-muted);
2580
+ max-width: 100%;
2581
+ margin-bottom: 1.5rem;
2582
+ line-height: 1.6;
2583
+ overflow-wrap: break-word;
2584
+ word-break: break-word;
2585
+ }
2586
+ .boltdocs-error-retry {
2587
+ padding: 0.6rem 1.25rem;
2588
+ background-color: var(--ld-ui-btn-primary-bg);
2589
+ color: var(--ld-ui-btn-primary-text);
2590
+ border: none;
2591
+ border-radius: var(--ld-radius-full);
2592
+ font-size: 0.875rem;
2593
+ font-weight: 600;
2594
+ cursor: pointer;
2595
+ transition: all 0.2s ease;
2596
+ box-shadow: 0 4px 12px var(--ld-color-primary-glow);
2597
+ }
2598
+ .boltdocs-error-retry:hover {
2599
+ background-color: var(--ld-color-primary-hover);
2600
+ transform: translateY(-1px);
2601
+ box-shadow: 0 6px 16px var(--ld-color-primary-glow);
2602
+ }
2603
+ .boltdocs-error-retry:active {
2604
+ transform: translateY(0);
2605
+ }
2606
+
2513
2607
  /* src/client/theme/components/Playground/playground.css */
2514
2608
  .boltdocs-playground {
2515
2609
  display: flex;
@@ -2527,13 +2621,6 @@ a.not-found-link:hover {
2527
2621
  flex-direction: column;
2528
2622
  width: 100%;
2529
2623
  }
2530
- @media (min-width: 1024px) {
2531
- .playground-split-container {
2532
- flex-direction: row;
2533
- min-height: 350px;
2534
- align-items: stretch;
2535
- }
2536
- }
2537
2624
  .playground-panel {
2538
2625
  display: flex;
2539
2626
  flex-direction: column;
@@ -2541,14 +2628,59 @@ a.not-found-link:hover {
2541
2628
  min-width: 0;
2542
2629
  }
2543
2630
  .playground-editor-panel {
2544
- border-bottom: 1px solid var(--ld-border-subtle);
2631
+ border-top: 1px solid var(--ld-border-subtle);
2545
2632
  background: var(--ld-code-bg);
2633
+ position: relative;
2546
2634
  }
2547
- @media (min-width: 1024px) {
2548
- .playground-editor-panel {
2549
- border-bottom: none;
2550
- border-right: 1px solid var(--ld-border-subtle);
2551
- }
2635
+ .boltdocs-playground.is-truncated .playground-editor {
2636
+ max-height: 250px;
2637
+ overflow: hidden;
2638
+ }
2639
+ .boltdocs-playground[data-readonly=true]:not(.is-truncated) .playground-editor {
2640
+ max-height: 600px;
2641
+ }
2642
+ .playground-expand-wrapper {
2643
+ position: absolute;
2644
+ bottom: 0;
2645
+ left: 0;
2646
+ right: 0;
2647
+ height: 80px;
2648
+ background:
2649
+ linear-gradient(
2650
+ to top,
2651
+ var(--ld-code-bg) 20%,
2652
+ transparent);
2653
+ display: flex;
2654
+ align-items: flex-end;
2655
+ justify-content: center;
2656
+ padding-bottom: 1rem;
2657
+ z-index: 10;
2658
+ }
2659
+ .playground-expand-btn {
2660
+ background-color: var(--ld-surface);
2661
+ border: 1px solid var(--ld-border-subtle);
2662
+ border-radius: 20px;
2663
+ color: var(--ld-text-main);
2664
+ padding: 0.5rem 1.25rem;
2665
+ font-size: 0.8125rem;
2666
+ font-weight: 500;
2667
+ cursor: pointer;
2668
+ transition: all 0.2s ease;
2669
+ backdrop-filter: blur(8px);
2670
+ -webkit-backdrop-filter: blur(8px);
2671
+ }
2672
+ .playground-expand-btn:hover {
2673
+ background-color: var(--ld-border-subtle);
2674
+ transform: translateY(-1px);
2675
+ }
2676
+ .boltdocs-playground:not(.is-truncated) .playground-expand-wrapper {
2677
+ position: relative;
2678
+ height: auto;
2679
+ background: none;
2680
+ display: flex;
2681
+ justify-content: center;
2682
+ padding: 1rem 0;
2683
+ border-top: 1px solid var(--ld-border-subtle);
2552
2684
  }
2553
2685
  .playground-preview-panel {
2554
2686
  background: var(--ld-bg-mute);
@@ -2617,15 +2749,15 @@ a.not-found-link:hover {
2617
2749
  cursor: default !important;
2618
2750
  }
2619
2751
  .playground-preview {
2620
- padding: 2rem;
2752
+ padding: 2.5rem;
2621
2753
  display: flex;
2622
2754
  align-items: center;
2623
2755
  justify-content: center;
2624
- background-color: var(--ld-bg-mute);
2625
- background-image: radial-gradient(var(--ld-border-subtle) 1.5px, transparent 1.5px);
2756
+ background-color: #000;
2757
+ background-image: radial-gradient(rgba(255, 255, 255, 0.05) 1.5px, transparent 1.5px);
2626
2758
  background-size: 24px 24px;
2627
2759
  color: var(--ld-text-main);
2628
- min-height: 200px;
2760
+ min-height: 300px;
2629
2761
  }
2630
2762
  .playground-error {
2631
2763
  margin: 0;
@@ -2646,6 +2778,33 @@ a.not-found-link:hover {
2646
2778
  margin: 2rem 0;
2647
2779
  border: 1px solid var(--ld-border-subtle);
2648
2780
  }
2781
+ .playground-copy-btn-inner {
2782
+ position: absolute;
2783
+ top: 1rem;
2784
+ right: 1.5rem;
2785
+ z-index: 20;
2786
+ display: flex;
2787
+ align-items: center;
2788
+ justify-content: center;
2789
+ width: 32px;
2790
+ height: 32px;
2791
+ border-radius: 6px;
2792
+ border: 1px solid var(--ld-border-subtle);
2793
+ background: var(--ld-surface);
2794
+ color: var(--ld-text-dim);
2795
+ cursor: pointer;
2796
+ transition: all 0.2s ease;
2797
+ backdrop-filter: blur(8px);
2798
+ -webkit-backdrop-filter: blur(8px);
2799
+ }
2800
+ .playground-copy-btn-inner:hover {
2801
+ background: var(--ld-border-subtle);
2802
+ color: var(--ld-text-main);
2803
+ transform: translateY(-1px);
2804
+ }
2805
+ .playground-static-code {
2806
+ display: none;
2807
+ }
2649
2808
 
2650
2809
  /* src/client/theme/ui/Layout/responsive.css */
2651
2810
  @media (max-width: 1100px) {
@@ -2663,6 +2822,15 @@ a.not-found-link:hover {
2663
2822
  .hero-title {
2664
2823
  font-size: 2.25rem;
2665
2824
  }
2825
+ .boltdocs-page h1 {
2826
+ padding-right: 0;
2827
+ }
2828
+ .boltdocs-page-header {
2829
+ position: static;
2830
+ justify-content: flex-start;
2831
+ margin-bottom: 1rem;
2832
+ padding: 0;
2833
+ }
2666
2834
  .ld-cards--2,
2667
2835
  .ld-cards--3,
2668
2836
  .ld-cards--4 {
@@ -100,8 +100,6 @@ interface BreadcrumbsProps {
100
100
  }
101
101
  declare function Breadcrumbs({ routes, config }: BreadcrumbsProps): react_jsx_runtime.JSX.Element | null;
102
102
 
103
- declare function BackgroundGradient(): react_jsx_runtime.JSX.Element;
104
-
105
103
  interface ThemeLayoutProps {
106
104
  config: BoltdocsConfig;
107
105
  routes: ComponentRoute[];
@@ -136,17 +134,12 @@ declare function ThemeLayout({ config, routes, children, navbar, sidebar, toc, b
136
134
  interface PlaygroundProps {
137
135
  code?: string;
138
136
  children?: string | React.ReactNode;
137
+ preview?: React.ReactNode;
139
138
  scope?: Record<string, any>;
140
139
  readonly?: boolean;
141
140
  noInline?: boolean;
142
141
  }
143
- /**
144
- * A live React playground component.
145
- * Features a split layout with a live editor and a preview section.
146
- *
147
- * Supports `export default function App()` style code out of the box.
148
- */
149
- declare function Playground({ code, children, scope, readonly, noInline: forceNoInline, }: PlaygroundProps): react_jsx_runtime.JSX.Element;
142
+ declare function Playground({ code: propsCode, children, preview, scope, readonly, noInline: forceNoInline, }: PlaygroundProps): react_jsx_runtime.JSX.Element;
150
143
 
151
144
  declare function NotFound(): react_jsx_runtime.JSX.Element;
152
145
 
@@ -376,4 +369,4 @@ interface FieldProps {
376
369
  */
377
370
  declare function Field({ name, type, defaultValue, required, children, id, className, }: FieldProps): react_jsx_runtime.JSX.Element;
378
371
 
379
- export { Admonition, type AdmonitionProps, BackgroundGradient, Badge, type BadgeProps, BoltdocsConfig, Breadcrumbs, Button, type ButtonProps, Card, type CardProps, Cards, type CardsProps, CodeBlock, ComponentRoute, CreateBoltdocsAppOptions, Danger, Field, type FieldProps, FileTree, type FileTreeProps, Head, InfoBox, List, type ListProps, Loading, Navbar, NotFound, Note, OnThisPage, Playground, Sidebar, Tab, type TabProps, Table, type TableProps, Tabs, type TabsProps, ThemeLayout, Tip, Video, Warning, createBoltdocsApp };
372
+ export { Admonition, type AdmonitionProps, Badge, type BadgeProps, BoltdocsConfig, Breadcrumbs, Button, type ButtonProps, Card, type CardProps, Cards, type CardsProps, CodeBlock, ComponentRoute, CreateBoltdocsAppOptions, Danger, Field, type FieldProps, FileTree, type FileTreeProps, Head, InfoBox, List, type ListProps, Loading, Navbar, NotFound, Note, OnThisPage, Playground, Sidebar, Tab, type TabProps, Table, type TableProps, Tabs, type TabsProps, ThemeLayout, Tip, Video, Warning, createBoltdocsApp };
@@ -100,8 +100,6 @@ interface BreadcrumbsProps {
100
100
  }
101
101
  declare function Breadcrumbs({ routes, config }: BreadcrumbsProps): react_jsx_runtime.JSX.Element | null;
102
102
 
103
- declare function BackgroundGradient(): react_jsx_runtime.JSX.Element;
104
-
105
103
  interface ThemeLayoutProps {
106
104
  config: BoltdocsConfig;
107
105
  routes: ComponentRoute[];
@@ -136,17 +134,12 @@ declare function ThemeLayout({ config, routes, children, navbar, sidebar, toc, b
136
134
  interface PlaygroundProps {
137
135
  code?: string;
138
136
  children?: string | React.ReactNode;
137
+ preview?: React.ReactNode;
139
138
  scope?: Record<string, any>;
140
139
  readonly?: boolean;
141
140
  noInline?: boolean;
142
141
  }
143
- /**
144
- * A live React playground component.
145
- * Features a split layout with a live editor and a preview section.
146
- *
147
- * Supports `export default function App()` style code out of the box.
148
- */
149
- declare function Playground({ code, children, scope, readonly, noInline: forceNoInline, }: PlaygroundProps): react_jsx_runtime.JSX.Element;
142
+ declare function Playground({ code: propsCode, children, preview, scope, readonly, noInline: forceNoInline, }: PlaygroundProps): react_jsx_runtime.JSX.Element;
150
143
 
151
144
  declare function NotFound(): react_jsx_runtime.JSX.Element;
152
145
 
@@ -376,4 +369,4 @@ interface FieldProps {
376
369
  */
377
370
  declare function Field({ name, type, defaultValue, required, children, id, className, }: FieldProps): react_jsx_runtime.JSX.Element;
378
371
 
379
- export { Admonition, type AdmonitionProps, BackgroundGradient, Badge, type BadgeProps, BoltdocsConfig, Breadcrumbs, Button, type ButtonProps, Card, type CardProps, Cards, type CardsProps, CodeBlock, ComponentRoute, CreateBoltdocsAppOptions, Danger, Field, type FieldProps, FileTree, type FileTreeProps, Head, InfoBox, List, type ListProps, Loading, Navbar, NotFound, Note, OnThisPage, Playground, Sidebar, Tab, type TabProps, Table, type TableProps, Tabs, type TabsProps, ThemeLayout, Tip, Video, Warning, createBoltdocsApp };
372
+ export { Admonition, type AdmonitionProps, Badge, type BadgeProps, BoltdocsConfig, Breadcrumbs, Button, type ButtonProps, Card, type CardProps, Cards, type CardsProps, CodeBlock, ComponentRoute, CreateBoltdocsAppOptions, Danger, Field, type FieldProps, FileTree, type FileTreeProps, Head, InfoBox, List, type ListProps, Loading, Navbar, NotFound, Note, OnThisPage, Playground, Sidebar, Tab, type TabProps, Table, type TableProps, Tabs, type TabsProps, ThemeLayout, Tip, Video, Warning, createBoltdocsApp };