boltdocs 1.10.2 → 1.11.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 (225) hide show
  1. package/package.json +29 -7
  2. package/src/client/app/config-context.tsx +18 -0
  3. package/src/client/app/docs-layout.tsx +14 -0
  4. package/src/client/app/index.tsx +132 -260
  5. package/src/client/app/mdx-component.tsx +52 -0
  6. package/src/client/app/mdx-components-context.tsx +23 -0
  7. package/src/client/app/mdx-page.tsx +20 -0
  8. package/src/client/app/preload.tsx +38 -30
  9. package/src/client/app/router.tsx +30 -0
  10. package/src/client/app/scroll-handler.tsx +40 -0
  11. package/src/client/app/theme-context.tsx +75 -0
  12. package/src/client/components/default-layout.tsx +80 -0
  13. package/src/client/components/docs-layout.tsx +105 -0
  14. package/src/client/components/icons-dev.tsx +74 -0
  15. package/src/client/components/mdx/admonition.tsx +107 -0
  16. package/src/client/components/mdx/badge.tsx +41 -0
  17. package/src/client/components/mdx/button.tsx +35 -0
  18. package/src/client/components/mdx/card.tsx +124 -0
  19. package/src/client/components/mdx/code-block.tsx +119 -0
  20. package/src/client/components/mdx/component-preview.tsx +47 -0
  21. package/src/client/components/mdx/component-props.tsx +83 -0
  22. package/src/client/components/mdx/field.tsx +66 -0
  23. package/src/client/components/mdx/file-tree.tsx +287 -0
  24. package/src/client/components/mdx/hooks/use-code-block.ts +56 -0
  25. package/src/client/components/mdx/hooks/use-component-preview.ts +16 -0
  26. package/src/client/components/mdx/hooks/useTable.ts +74 -0
  27. package/src/client/components/mdx/hooks/useTabs.ts +68 -0
  28. package/src/client/components/mdx/image.tsx +23 -0
  29. package/src/client/components/mdx/index.ts +53 -0
  30. package/src/client/components/mdx/link.tsx +38 -0
  31. package/src/client/components/mdx/list.tsx +192 -0
  32. package/src/client/components/mdx/table.tsx +156 -0
  33. package/src/client/components/mdx/tabs.tsx +135 -0
  34. package/src/client/components/mdx/video.tsx +68 -0
  35. package/src/client/components/primitives/breadcrumbs.tsx +79 -0
  36. package/src/client/components/primitives/button-group.tsx +54 -0
  37. package/src/client/components/primitives/button.tsx +145 -0
  38. package/src/client/components/primitives/helpers/observer.ts +120 -0
  39. package/src/client/components/primitives/index.ts +17 -0
  40. package/src/client/components/primitives/link.tsx +122 -0
  41. package/src/client/components/primitives/menu.tsx +159 -0
  42. package/src/client/components/primitives/navbar.tsx +359 -0
  43. package/src/client/components/primitives/navigation-menu.tsx +116 -0
  44. package/src/client/components/primitives/on-this-page.tsx +461 -0
  45. package/src/client/components/primitives/page-nav.tsx +87 -0
  46. package/src/client/components/primitives/popover.tsx +47 -0
  47. package/src/client/components/primitives/search-dialog.tsx +183 -0
  48. package/src/client/components/primitives/sidebar.tsx +154 -0
  49. package/src/client/components/primitives/tabs.tsx +90 -0
  50. package/src/client/components/primitives/tooltip.tsx +83 -0
  51. package/src/client/components/primitives/types.ts +11 -0
  52. package/src/client/components/ui-base/breadcrumbs.tsx +42 -0
  53. package/src/client/components/ui-base/copy-markdown.tsx +112 -0
  54. package/src/client/components/ui-base/error-boundary.tsx +52 -0
  55. package/src/client/components/ui-base/github-stars.tsx +27 -0
  56. package/src/client/components/ui-base/head.tsx +69 -0
  57. package/src/client/components/ui-base/loading.tsx +87 -0
  58. package/src/client/components/ui-base/navbar.tsx +138 -0
  59. package/src/client/components/ui-base/not-found.tsx +24 -0
  60. package/src/client/components/ui-base/on-this-page.tsx +152 -0
  61. package/src/client/components/ui-base/page-nav.tsx +39 -0
  62. package/src/client/components/ui-base/powered-by.tsx +19 -0
  63. package/src/client/components/ui-base/progress-bar.tsx +67 -0
  64. package/src/client/components/ui-base/search-dialog.tsx +82 -0
  65. package/src/client/components/ui-base/sidebar.tsx +104 -0
  66. package/src/client/components/ui-base/tabs.tsx +65 -0
  67. package/src/client/components/ui-base/theme-toggle.tsx +32 -0
  68. package/src/client/hooks/index.ts +12 -0
  69. package/src/client/hooks/use-breadcrumbs.ts +22 -0
  70. package/src/client/hooks/use-i18n.ts +84 -0
  71. package/src/client/hooks/use-localized-to.ts +95 -0
  72. package/src/client/hooks/use-location.ts +5 -0
  73. package/src/client/hooks/use-navbar.ts +60 -0
  74. package/src/client/hooks/use-onthispage.ts +23 -0
  75. package/src/client/hooks/use-page-nav.ts +22 -0
  76. package/src/client/hooks/use-routes.ts +72 -0
  77. package/src/client/hooks/use-search.ts +71 -0
  78. package/src/client/hooks/use-sidebar.ts +49 -0
  79. package/src/client/hooks/use-tabs.ts +43 -0
  80. package/src/client/hooks/use-version.ts +78 -0
  81. package/src/client/index.ts +55 -17
  82. package/src/client/integrations/codesandbox.ts +179 -0
  83. package/src/client/ssr.tsx +27 -16
  84. package/src/client/theme/neutral.css +360 -0
  85. package/src/client/types.ts +131 -27
  86. package/src/client/utils/cn.ts +6 -0
  87. package/src/client/utils/copy-clipboard.ts +22 -0
  88. package/src/client/utils/get-base-file-path.ts +21 -0
  89. package/src/client/utils/github.ts +121 -0
  90. package/src/client/utils/use-on-change.ts +15 -0
  91. package/src/client/virtual.d.ts +24 -0
  92. package/src/node/cache.ts +156 -156
  93. package/src/node/config.ts +159 -103
  94. package/src/node/index.ts +13 -13
  95. package/src/node/mdx.ts +213 -61
  96. package/src/node/plugin/entry.ts +29 -18
  97. package/src/node/plugin/html.ts +11 -11
  98. package/src/node/plugin/index.ts +161 -83
  99. package/src/node/plugin/types.ts +2 -4
  100. package/src/node/routes/cache.ts +6 -6
  101. package/src/node/routes/index.ts +206 -113
  102. package/src/node/routes/parser.ts +106 -81
  103. package/src/node/routes/sorter.ts +15 -15
  104. package/src/node/routes/types.ts +24 -24
  105. package/src/node/ssg/index.ts +46 -46
  106. package/src/node/ssg/meta.ts +4 -4
  107. package/src/node/ssg/options.ts +5 -5
  108. package/src/node/ssg/sitemap.ts +14 -14
  109. package/src/node/utils.ts +31 -31
  110. package/tsconfig.json +25 -20
  111. package/tsup.config.ts +23 -14
  112. package/dist/PackageManagerTabs-NVT7G625.mjs +0 -99
  113. package/dist/SearchDialog-AGVF6JBO.mjs +0 -194
  114. package/dist/SearchDialog-YPDOM7Q6.css +0 -2847
  115. package/dist/Video-KNTY5BNO.mjs +0 -6
  116. package/dist/cache-KNL5B4EE.mjs +0 -12
  117. package/dist/chunk-7SFUJWTB.mjs +0 -211
  118. package/dist/chunk-FFBNU6IJ.mjs +0 -386
  119. package/dist/chunk-FMTOYQLO.mjs +0 -37
  120. package/dist/chunk-TKLQWU7H.mjs +0 -1920
  121. package/dist/chunk-Z7JHYNAS.mjs +0 -57
  122. package/dist/client/index.css +0 -2847
  123. package/dist/client/index.d.mts +0 -372
  124. package/dist/client/index.d.ts +0 -372
  125. package/dist/client/index.js +0 -3630
  126. package/dist/client/index.mjs +0 -697
  127. package/dist/client/ssr.css +0 -2847
  128. package/dist/client/ssr.d.mts +0 -27
  129. package/dist/client/ssr.d.ts +0 -27
  130. package/dist/client/ssr.js +0 -2928
  131. package/dist/client/ssr.mjs +0 -33
  132. package/dist/config-BsFQ-ErD.d.mts +0 -159
  133. package/dist/config-BsFQ-ErD.d.ts +0 -159
  134. package/dist/node/index.d.mts +0 -91
  135. package/dist/node/index.d.ts +0 -91
  136. package/dist/node/index.js +0 -1187
  137. package/dist/node/index.mjs +0 -762
  138. package/dist/types-Dj-bfnC3.d.mts +0 -74
  139. package/dist/types-Dj-bfnC3.d.ts +0 -74
  140. package/src/client/theme/components/CodeBlock/CodeBlock.tsx +0 -61
  141. package/src/client/theme/components/CodeBlock/index.ts +0 -1
  142. package/src/client/theme/components/PackageManagerTabs/PackageManagerTabs.tsx +0 -131
  143. package/src/client/theme/components/PackageManagerTabs/index.ts +0 -1
  144. package/src/client/theme/components/PackageManagerTabs/pkg-tabs.css +0 -64
  145. package/src/client/theme/components/Playground/Playground.tsx +0 -180
  146. package/src/client/theme/components/Playground/index.ts +0 -1
  147. package/src/client/theme/components/Playground/playground.css +0 -238
  148. package/src/client/theme/components/Video/Video.tsx +0 -84
  149. package/src/client/theme/components/Video/index.ts +0 -1
  150. package/src/client/theme/components/Video/video.css +0 -41
  151. package/src/client/theme/components/mdx/Admonition.tsx +0 -80
  152. package/src/client/theme/components/mdx/Badge.tsx +0 -31
  153. package/src/client/theme/components/mdx/Button.tsx +0 -50
  154. package/src/client/theme/components/mdx/Card.tsx +0 -80
  155. package/src/client/theme/components/mdx/Field.tsx +0 -60
  156. package/src/client/theme/components/mdx/FileTree.tsx +0 -229
  157. package/src/client/theme/components/mdx/List.tsx +0 -57
  158. package/src/client/theme/components/mdx/Table.tsx +0 -151
  159. package/src/client/theme/components/mdx/Tabs.tsx +0 -123
  160. package/src/client/theme/components/mdx/index.ts +0 -27
  161. package/src/client/theme/components/mdx/mdx-components.css +0 -764
  162. package/src/client/theme/icons/bun.tsx +0 -62
  163. package/src/client/theme/icons/deno.tsx +0 -20
  164. package/src/client/theme/icons/discord.tsx +0 -12
  165. package/src/client/theme/icons/github.tsx +0 -15
  166. package/src/client/theme/icons/npm.tsx +0 -13
  167. package/src/client/theme/icons/pnpm.tsx +0 -72
  168. package/src/client/theme/icons/twitter.tsx +0 -12
  169. package/src/client/theme/styles/markdown.css +0 -394
  170. package/src/client/theme/styles/variables.css +0 -175
  171. package/src/client/theme/styles.css +0 -39
  172. package/src/client/theme/ui/Breadcrumbs/Breadcrumbs.tsx +0 -68
  173. package/src/client/theme/ui/Breadcrumbs/index.ts +0 -1
  174. package/src/client/theme/ui/CopyMarkdown/CopyMarkdown.tsx +0 -82
  175. package/src/client/theme/ui/CopyMarkdown/copy-markdown.css +0 -112
  176. package/src/client/theme/ui/CopyMarkdown/index.ts +0 -1
  177. package/src/client/theme/ui/ErrorBoundary/ErrorBoundary.tsx +0 -50
  178. package/src/client/theme/ui/ErrorBoundary/error-boundary.css +0 -55
  179. package/src/client/theme/ui/ErrorBoundary/index.ts +0 -1
  180. package/src/client/theme/ui/Footer/footer.css +0 -32
  181. package/src/client/theme/ui/Head/Head.tsx +0 -69
  182. package/src/client/theme/ui/Head/index.ts +0 -1
  183. package/src/client/theme/ui/LanguageSwitcher/LanguageSwitcher.tsx +0 -125
  184. package/src/client/theme/ui/LanguageSwitcher/index.ts +0 -1
  185. package/src/client/theme/ui/LanguageSwitcher/language-switcher.css +0 -98
  186. package/src/client/theme/ui/Layout/Layout.tsx +0 -203
  187. package/src/client/theme/ui/Layout/base.css +0 -106
  188. package/src/client/theme/ui/Layout/index.ts +0 -2
  189. package/src/client/theme/ui/Layout/pagination.css +0 -72
  190. package/src/client/theme/ui/Layout/responsive.css +0 -47
  191. package/src/client/theme/ui/Link/Link.tsx +0 -392
  192. package/src/client/theme/ui/Link/LinkPreview.tsx +0 -59
  193. package/src/client/theme/ui/Link/index.ts +0 -2
  194. package/src/client/theme/ui/Link/link-preview.css +0 -48
  195. package/src/client/theme/ui/Loading/Loading.tsx +0 -10
  196. package/src/client/theme/ui/Loading/index.ts +0 -1
  197. package/src/client/theme/ui/Loading/loading.css +0 -30
  198. package/src/client/theme/ui/Navbar/GithubStars.tsx +0 -27
  199. package/src/client/theme/ui/Navbar/Navbar.tsx +0 -193
  200. package/src/client/theme/ui/Navbar/Tabs.tsx +0 -99
  201. package/src/client/theme/ui/Navbar/index.ts +0 -2
  202. package/src/client/theme/ui/Navbar/navbar.css +0 -347
  203. package/src/client/theme/ui/NotFound/NotFound.tsx +0 -19
  204. package/src/client/theme/ui/NotFound/index.ts +0 -1
  205. package/src/client/theme/ui/NotFound/not-found.css +0 -64
  206. package/src/client/theme/ui/OnThisPage/OnThisPage.tsx +0 -244
  207. package/src/client/theme/ui/OnThisPage/index.ts +0 -1
  208. package/src/client/theme/ui/OnThisPage/toc.css +0 -152
  209. package/src/client/theme/ui/PoweredBy/PoweredBy.tsx +0 -18
  210. package/src/client/theme/ui/PoweredBy/index.ts +0 -1
  211. package/src/client/theme/ui/PoweredBy/powered-by.css +0 -76
  212. package/src/client/theme/ui/ProgressBar/ProgressBar.css +0 -17
  213. package/src/client/theme/ui/ProgressBar/ProgressBar.tsx +0 -51
  214. package/src/client/theme/ui/ProgressBar/index.ts +0 -1
  215. package/src/client/theme/ui/SearchDialog/SearchDialog.tsx +0 -209
  216. package/src/client/theme/ui/SearchDialog/index.ts +0 -1
  217. package/src/client/theme/ui/SearchDialog/search.css +0 -152
  218. package/src/client/theme/ui/Sidebar/Sidebar.tsx +0 -244
  219. package/src/client/theme/ui/Sidebar/index.ts +0 -1
  220. package/src/client/theme/ui/Sidebar/sidebar.css +0 -230
  221. package/src/client/theme/ui/ThemeToggle/ThemeToggle.tsx +0 -69
  222. package/src/client/theme/ui/ThemeToggle/index.ts +0 -1
  223. package/src/client/theme/ui/VersionSwitcher/VersionSwitcher.tsx +0 -136
  224. package/src/client/theme/ui/VersionSwitcher/index.ts +0 -1
  225. package/src/client/utils.ts +0 -49
@@ -1,2847 +0,0 @@
1
- @import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";
2
-
3
- /* src/client/theme/ui/ProgressBar/ProgressBar.css */
4
- .boltdocs-progress-container {
5
- position: fixed;
6
- top: 0;
7
- left: 0;
8
- width: 100%;
9
- height: 2px;
10
- z-index: 1000;
11
- pointer-events: none;
12
- background: transparent;
13
- }
14
- .boltdocs-progress-bar {
15
- height: 100%;
16
- background:
17
- linear-gradient(
18
- 90deg,
19
- var(--ld-color-primary),
20
- var(--ld-gradient-to, var(--ld-color-primary)));
21
- box-shadow: 0 0 8px var(--ld-color-primary-glow);
22
- transition: width 0.1s ease-out;
23
- }
24
-
25
- /* src/client/theme/styles/variables.css */
26
- :root[data-theme=light],
27
- :root.theme-light {
28
- --ld-bg-main: #ffffff;
29
- --ld-bg-soft: #eeeeee;
30
- --ld-bg-mute: #f3f4f6;
31
- --ld-surface: #ffffff;
32
- --ld-border-subtle: #e5e7eb;
33
- --ld-border-strong: #d1d5db;
34
- --ld-text-main: #111827;
35
- --ld-text-muted: #4b5563;
36
- --ld-text-dim: #6b7280;
37
- --ld-color-primary: #7f13ec;
38
- --ld-color-primary-hover: #6d0fd0;
39
- --ld-color-primary-muted: rgba(127, 19, 236, 0.1);
40
- --ld-color-primary-glow: rgba(127, 19, 236, 0.25);
41
- --ld-color-primary-text: #ffffff;
42
- --ld-btn-primary-bg: #7f13ec;
43
- --ld-btn-primary-text: #ffffff;
44
- --ld-btn-secondary-bg: #ffffff;
45
- --ld-btn-secondary-text: #111827;
46
- --ld-code-bg: #f3f4f6;
47
- --ld-code-header: #e5e7eb;
48
- --ld-code-text: #1f2937;
49
- --ld-navbar-bg: #ffffff;
50
- --ld-navbar-blur: 12px;
51
- --ld-sidebar-bg: transparent;
52
- --ld-sidebar-blur: 0px;
53
- --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
54
- --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
55
- --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
56
- --ld-ui-btn-secondary-text: var(--ld-btn-secondary-text);
57
- --ld-ui-success-bg: rgba(34, 197, 94, 0.1);
58
- --ld-ui-success-text: #16a34a;
59
- --ld-ui-success-border: rgba(34, 197, 94, 0.25);
60
- --ld-ui-warning-bg: rgba(245, 158, 11, 0.1);
61
- --ld-ui-warning-text: #d97706;
62
- --ld-ui-warning-border: rgba(245, 158, 11, 0.25);
63
- --ld-ui-danger-bg: rgba(239, 68, 68, 0.1);
64
- --ld-ui-danger-text: #dc2626;
65
- --ld-ui-danger-border: rgba(239, 68, 68, 0.25);
66
- --ld-ui-info-bg: rgba(59, 130, 246, 0.1);
67
- --ld-ui-info-text: #2563eb;
68
- --ld-ui-info-border: rgba(59, 130, 246, 0.25);
69
- --ld-ui-note-bg: rgba(59, 130, 246, 0.06);
70
- --ld-ui-note-text: #2563eb;
71
- --ld-ui-note-border: rgba(59, 130, 246, 0.3);
72
- --ld-ui-tip-bg: rgba(34, 197, 94, 0.06);
73
- --ld-ui-tip-text: #16a34a;
74
- --ld-ui-tip-border: rgba(34, 197, 94, 0.3);
75
- }
76
- :root {
77
- --ld-bg-main: #000;
78
- --ld-bg-soft: #12121272;
79
- --ld-bg-mute: #090909;
80
- --ld-surface: #1a1a1a;
81
- --ld-border-subtle: rgba(255, 255, 255, 0.06);
82
- --ld-border-strong: rgba(255, 255, 255, 0.12);
83
- --ld-text-main: #e4e4ed;
84
- --ld-text-muted: #9d9db5;
85
- --ld-text-dim: #6b6b85;
86
- --ld-color-primary: #ffffff;
87
- --ld-color-primary-hover: #f3f3f3;
88
- --ld-color-primary-muted: rgba(255, 255, 255, 0.1);
89
- --ld-color-primary-glow: rgba(255, 255, 255, 0.25);
90
- --ld-color-primary-text: #0a0a0f;
91
- --ld-color-accent: #ffffff;
92
- --ld-btn-primary-bg: #ffffff;
93
- --ld-btn-primary-text: #0a0a0f;
94
- --ld-btn-secondary-bg: #1a1a2e;
95
- --ld-btn-secondary-text: #e4e4ed;
96
- --ld-code-bg: #050505;
97
- --ld-code-header: #111119;
98
- --ld-code-text: #d4d4d4;
99
- --ld-navbar-bg: #000;
100
- --ld-navbar-blur: 12px;
101
- --ld-sidebar-bg: transparent;
102
- --ld-sidebar-blur: 0px;
103
- --ld-ui-btn-primary-bg: var(--ld-btn-primary-bg);
104
- --ld-ui-btn-primary-text: var(--ld-btn-primary-text);
105
- --ld-ui-btn-secondary-bg: var(--ld-btn-secondary-bg);
106
- --ld-ui-btn-secondary-text: var(--ld-btn-secondary-text);
107
- --ld-ui-success-bg: rgba(34, 197, 94, 0.1);
108
- --ld-ui-success-text: #22c55e;
109
- --ld-ui-success-border: rgba(34, 197, 94, 0.25);
110
- --ld-ui-warning-bg: rgba(245, 158, 11, 0.1);
111
- --ld-ui-warning-text: #f59e0b;
112
- --ld-ui-warning-border: rgba(245, 158, 11, 0.25);
113
- --ld-ui-danger-bg: rgba(239, 68, 68, 0.1);
114
- --ld-ui-danger-text: #ef4444;
115
- --ld-ui-danger-border: rgba(239, 68, 68, 0.25);
116
- --ld-ui-info-bg: rgba(59, 130, 246, 0.1);
117
- --ld-ui-info-text: #3b82f6;
118
- --ld-ui-info-border: rgba(59, 130, 246, 0.25);
119
- --ld-ui-note-bg: rgba(59, 130, 246, 0.06);
120
- --ld-ui-note-text: #3b82f6;
121
- --ld-ui-note-border: rgba(59, 130, 246, 0.3);
122
- --ld-ui-tip-bg: rgba(34, 197, 94, 0.06);
123
- --ld-ui-tip-text: #22c55e;
124
- --ld-ui-tip-border: rgba(34, 197, 94, 0.3);
125
- --ld-font-sans:
126
- "Inter",
127
- system-ui,
128
- -apple-system,
129
- sans-serif;
130
- --ld-font-mono:
131
- "JetBrains Mono",
132
- ui-monospace,
133
- SFMono-Regular,
134
- Menlo,
135
- Monaco,
136
- Consolas,
137
- monospace;
138
- --ld-navbar-height: 3.5rem;
139
- --ld-header-height: var(--ld-navbar-height);
140
- --ld-sidebar-width: 14.5rem;
141
- --ld-toc-width: 13rem;
142
- --ld-content-max-width: 820px;
143
- --ld-radius-sm: 4px;
144
- --ld-radius-md: 8px;
145
- --ld-radius-lg: 12px;
146
- --ld-radius-full: 9999px;
147
- scrollbar-width: thin;
148
- scrollbar-color: var(--ld-border-strong) transparent;
149
- }
150
- *::-webkit-scrollbar {
151
- width: 6px;
152
- height: 6px;
153
- }
154
- *::-webkit-scrollbar-track {
155
- background: transparent;
156
- }
157
- *::-webkit-scrollbar-thumb {
158
- background-color: var(--ld-border-strong);
159
- border-radius: 20px;
160
- border: transparent;
161
- }
162
- *::-webkit-scrollbar-thumb:hover {
163
- background-color: var(--ld-text-dim);
164
- }
165
-
166
- /* src/client/theme/ui/Layout/base.css */
167
- *,
168
- *::before,
169
- *::after {
170
- box-sizing: border-box;
171
- }
172
- html,
173
- body {
174
- margin: 0;
175
- padding: 0;
176
- height: 100%;
177
- overflow: hidden;
178
- }
179
- body {
180
- font-family: var(--ld-font-sans);
181
- background-color: var(--ld-bg-main);
182
- color: var(--ld-text-main);
183
- line-height: 1.7;
184
- -webkit-font-smoothing: antialiased;
185
- -moz-osx-font-smoothing: grayscale;
186
- }
187
- a {
188
- text-decoration: none;
189
- &:hover {
190
- text-decoration: none;
191
- }
192
- }
193
- .boltdocs-layout {
194
- display: flex;
195
- flex-direction: column;
196
- height: 100vh;
197
- width: 100vw;
198
- overflow: hidden;
199
- }
200
- .boltdocs-main-container {
201
- display: flex;
202
- flex: 1;
203
- width: 100%;
204
- max-width: 1440px;
205
- margin: 0 auto;
206
- padding: 0 0.5rem;
207
- height: calc(100vh - var(--ld-header-height));
208
- overflow: hidden;
209
- align-items: stretch;
210
- }
211
- .boltdocs-background-glow {
212
- position: fixed;
213
- top: 0;
214
- left: 0;
215
- right: 0;
216
- height: 100vh;
217
- overflow: hidden;
218
- z-index: -1;
219
- pointer-events: none;
220
- }
221
- .glow-shape {
222
- position: absolute;
223
- border-radius: 50%;
224
- filter: blur(100px);
225
- opacity: 0.15;
226
- top: -100px;
227
- }
228
- .glow-1 {
229
- width: 600px;
230
- height: 600px;
231
- background: var(--ld-glow-1-bg);
232
- left: -200px;
233
- }
234
- .glow-2 {
235
- width: 800px;
236
- height: 800px;
237
- background: var(--ld-glow-2-bg);
238
- top: -200px;
239
- }
240
- .boltdocs-page {
241
- position: relative;
242
- }
243
- .boltdocs-page-header {
244
- position: absolute;
245
- top: -0.5rem;
246
- right: 0;
247
- display: flex;
248
- justify-content: flex-end;
249
- padding: 1rem 0;
250
- pointer-events: none;
251
- z-index: 101;
252
- }
253
- .boltdocs-page-header > * {
254
- pointer-events: auto;
255
- }
256
-
257
- /* src/client/theme/ui/Navbar/navbar.css */
258
- .boltdocs-navbar {
259
- display: flex;
260
- flex-direction: column;
261
- justify-content: center;
262
- background-color: var(--ld-navbar-bg);
263
- border-bottom: 1px solid var(--ld-border-subtle);
264
- position: sticky;
265
- top: 0;
266
- z-index: 100;
267
- }
268
- .boltdocs-navbar.has-tabs {
269
- --ld-header-height: 102px !important;
270
- height: 102px;
271
- }
272
- .boltdocs-navbar:not(.has-tabs) {
273
- --ld-header-height: var(--ld-navbar-height);
274
- height: var(--ld-navbar-height);
275
- }
276
- .navbar-container {
277
- display: flex;
278
- align-items: center;
279
- justify-content: space-between;
280
- width: 100%;
281
- max-width: 1440px;
282
- margin: 0 auto;
283
- padding: 0 1.5rem;
284
- }
285
- .navbar-logo {
286
- flex: 1;
287
- }
288
- .navbar-logo a {
289
- display: flex;
290
- align-items: center;
291
- gap: 0.5rem;
292
- font-weight: 700;
293
- font-size: 1.15rem;
294
- color: var(--ld-text-main);
295
- text-decoration: none;
296
- letter-spacing: -0.01em;
297
- }
298
- .navbar-logo a:hover {
299
- color: var(--ld-text-main);
300
- }
301
- .navbar-logo-img {
302
- height: 20px;
303
- width: auto;
304
- object-fit: contain;
305
- display: block;
306
- }
307
- .navbar-logo-svg {
308
- display: flex;
309
- align-items: center;
310
- }
311
- .navbar-logo-svg svg {
312
- height: 36px;
313
- width: auto;
314
- fill: currentColor;
315
- display: block;
316
- }
317
- .navbar-left {
318
- display: flex;
319
- align-items: center;
320
- gap: 1.25rem;
321
- }
322
- .navbar-version {
323
- display: flex;
324
- align-items: center;
325
- gap: 0.2rem;
326
- font-size: 0.75rem;
327
- font-weight: 500;
328
- color: var(--ld-text-muted);
329
- background-color: var(--ld-bg-soft);
330
- padding: 0.25rem 0.5rem;
331
- border-radius: var(--ld-radius-md);
332
- border: 1px solid var(--ld-border-subtle);
333
- cursor: pointer;
334
- transition: all 0.2s;
335
- }
336
- .navbar-version:hover {
337
- background-color: var(--ld-bg-mute);
338
- color: var(--ld-text-main);
339
- border-color: var(--ld-border-strong);
340
- }
341
- .navbar-right {
342
- display: flex;
343
- align-items: center;
344
- gap: 0.75rem;
345
- }
346
- .navbar-links {
347
- display: flex;
348
- align-items: center;
349
- gap: 0.25rem;
350
- }
351
- .navbar-links a {
352
- position: relative;
353
- padding: 0.4rem 0.75rem;
354
- color: var(--ld-text-muted);
355
- text-decoration: none;
356
- font-weight: 500;
357
- font-size: 0.875rem;
358
- border-radius: var(--ld-radius-md);
359
- transition: color 0.2s, background-color 0.2s;
360
- display: flex;
361
- align-items: center;
362
- gap: 0.35rem;
363
- }
364
- .navbar-external-icon {
365
- display: inline-flex;
366
- align-items: center;
367
- opacity: 0.6;
368
- margin-top: 1px;
369
- }
370
- .navbar-links a:hover {
371
- color: var(--ld-text-main);
372
- background-color: var(--ld-color-primary-muted);
373
- }
374
- .navbar-links a.active {
375
- color: var(--ld-color-primary);
376
- }
377
- .navbar-search {
378
- display: flex;
379
- align-items: center;
380
- gap: 0.5rem;
381
- padding: 0.35rem 0.75rem;
382
- background-color: transparent;
383
- border: 1px solid transparent;
384
- border-radius: var(--ld-radius-full);
385
- backdrop-filter: blur(12px);
386
- -webkit-backdrop-filter: blur(12px);
387
- color: var(--ld-text-dim);
388
- font-size: 0.8125rem;
389
- min-width: 220px;
390
- cursor: pointer;
391
- transition: all 0.2s;
392
- }
393
- .navbar-search:hover {
394
- background-color: var(--ld-bg-mute);
395
- color: var(--ld-text-muted);
396
- }
397
- .navbar-search svg {
398
- width: 15px;
399
- height: 15px;
400
- opacity: 0.7;
401
- }
402
- .navbar-search kbd {
403
- margin-left: auto;
404
- padding: 0.15rem 0.4rem;
405
- font-family: var(--ld-font-sans);
406
- font-weight: 500;
407
- font-size: 0.65rem;
408
- background-color: var(--ld-bg-mute);
409
- border: 1px solid var(--ld-border-strong);
410
- border-radius: var(--ld-radius-md);
411
- color: var(--ld-text-dim);
412
- }
413
- .navbar-github-stars {
414
- display: flex;
415
- align-items: center;
416
- gap: 0.35rem;
417
- padding: 0.3rem 0.65rem;
418
- border-radius: var(--ld-radius-full);
419
- border: 1px solid var(--ld-border-subtle);
420
- background: var(--ld-bg-soft);
421
- color: var(--ld-text-muted);
422
- text-decoration: none;
423
- font-size: 0.8rem;
424
- font-weight: 500;
425
- transition: all 0.2s;
426
- }
427
- .navbar-github-stars:hover {
428
- color: var(--ld-text-main);
429
- background: var(--ld-bg-mute);
430
- border-color: var(--ld-border-strong);
431
- }
432
- .navbar-github-stars svg {
433
- width: 15px;
434
- height: 15px;
435
- }
436
- .navbar-divider {
437
- width: 1px;
438
- height: 18px;
439
- background-color: var(--ld-border-subtle);
440
- margin: 0 0.25rem;
441
- }
442
- .navbar-icons {
443
- display: flex;
444
- align-items: center;
445
- gap: 0.25rem;
446
- }
447
- .navbar-icon-btn {
448
- display: flex;
449
- align-items: center;
450
- justify-content: center;
451
- width: 2.15rem;
452
- height: 2.15rem;
453
- background: transparent;
454
- border: none;
455
- cursor: pointer;
456
- border-radius: var(--ld-radius-full);
457
- color: var(--ld-text-muted);
458
- text-decoration: none;
459
- transition: color 0.2s, background-color 0.2s;
460
- }
461
- .navbar-icon-btn:hover {
462
- color: var(--ld-text-main);
463
- background-color: var(--ld-bg-mute);
464
- }
465
- .navbar-icon-btn svg {
466
- width: 18px;
467
- height: 18px;
468
- }
469
- .boltdocs-tabs-container {
470
- position: relative;
471
- background: var(--ld-navbar-bg);
472
- padding: 0;
473
- height: 46px;
474
- }
475
- .boltdocs-tabs-container::after {
476
- content: "";
477
- position: absolute;
478
- bottom: 0px;
479
- left: 0;
480
- right: 0;
481
- height: 1px;
482
- background: var(--ld-border-subtle);
483
- z-index: 10;
484
- }
485
- .boltdocs-tabs {
486
- max-width: 1440px;
487
- margin: 0 auto;
488
- display: flex;
489
- gap: 2rem;
490
- overflow-x: auto;
491
- scrollbar-width: none;
492
- padding: 0 1.5rem;
493
- position: relative;
494
- height: 100%;
495
- }
496
- .boltdocs-tabs::-webkit-scrollbar {
497
- display: none;
498
- }
499
- .boltdocs-tab-item {
500
- padding: 0.85rem 0;
501
- padding-bottom: calc(0.85rem + 1px);
502
- font-size: 0.875rem;
503
- font-weight: 500;
504
- color: var(--ld-text-muted);
505
- text-decoration: none;
506
- position: relative;
507
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
508
- white-space: nowrap;
509
- display: flex;
510
- align-items: center;
511
- gap: 0.6rem;
512
- opacity: 0.7;
513
- z-index: 20;
514
- }
515
- .boltdocs-tab-item:hover {
516
- color: var(--ld-text-main);
517
- opacity: 1;
518
- }
519
- .tab-icon {
520
- flex-shrink: 0;
521
- display: flex;
522
- align-items: center;
523
- justify-content: center;
524
- transition: transform 0.2s ease;
525
- }
526
- .boltdocs-tab-item:hover .tab-icon {
527
- transform: translateY(-1px);
528
- }
529
- .tab-icon.lucide-icon,
530
- .tab-icon.svg-icon svg {
531
- width: 18px;
532
- height: 18px;
533
- stroke-width: 2.25px;
534
- }
535
- .boltdocs-tab-item.active {
536
- color: var(--ld-text-main);
537
- font-weight: 600;
538
- opacity: 1;
539
- text-shadow: 0 0 10px rgba(255, 255, 255, 0.2);
540
- }
541
- .boltdocs-tab-indicator {
542
- position: absolute;
543
- bottom: 0px;
544
- left: 0;
545
- height: 3px;
546
- background: var(--ld-color-primary);
547
- border-radius: 2px 2px 0 0;
548
- box-shadow: 0 -2px 15px var(--ld-color-primary-glow);
549
- transition:
550
- transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
551
- width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
552
- opacity 0.3s ease;
553
- z-index: 100;
554
- pointer-events: none;
555
- transform-origin: left;
556
- }
557
-
558
- /* src/client/theme/ui/Sidebar/sidebar.css */
559
- .boltdocs-sidebar {
560
- width: var(--ld-sidebar-width);
561
- flex-shrink: 0;
562
- background-color: var(--ld-sidebar-bg);
563
- backdrop-filter: blur(var(--ld-sidebar-blur));
564
- -webkit-backdrop-filter: blur(var(--ld-sidebar-blur));
565
- border-right: 1px solid var(--ld-border-subtle);
566
- padding: 1.5rem 0.6rem;
567
- overflow-y: auto;
568
- height: 100%;
569
- scrollbar-width: none;
570
- display: flex;
571
- flex-direction: column;
572
- transform: translate3d(0, 0, 0);
573
- backface-visibility: hidden;
574
- }
575
- .sidebar-icon {
576
- flex-shrink: 0;
577
- display: flex;
578
- align-items: center;
579
- justify-content: center;
580
- }
581
- .sidebar-icon.lucide-icon,
582
- .sidebar-icon.svg-icon svg {
583
- color: var(--ld-text-muted);
584
- width: 18px;
585
- height: 18px;
586
- stroke-width: 2px;
587
- transition: color 0.2s ease;
588
- }
589
- .sidebar-link:hover .sidebar-icon.lucide-icon,
590
- .sidebar-link.active .sidebar-icon.lucide-icon {
591
- color: var(--ld-color-primary);
592
- }
593
- .boltdocs-sidebar > nav {
594
- flex: 1;
595
- }
596
- .boltdocs-sidebar::-webkit-scrollbar {
597
- display: none;
598
- }
599
- .boltdocs-sidebar::-webkit-scrollbar-track {
600
- background: transparent;
601
- }
602
- .boltdocs-sidebar::-webkit-scrollbar-thumb {
603
- background: var(--ld-bg-mute);
604
- border-radius: 4px;
605
- }
606
- .sidebar-list {
607
- list-style: none;
608
- padding: 0;
609
- margin: 0 0 0.5rem;
610
- }
611
- .sidebar-list li {
612
- margin-bottom: 2px;
613
- }
614
- .sidebar-link {
615
- display: flex;
616
- align-items: center;
617
- justify-content: space-between;
618
- padding: 0.5rem 0.75rem;
619
- color: var(--ld-text-muted);
620
- text-decoration: none;
621
- border-radius: 0.75rem;
622
- font-size: 0.875rem;
623
- font-weight: 500;
624
- transition: all 0.2s ease;
625
- margin: 0.15rem 0;
626
- }
627
- .sidebar-link-title-container {
628
- display: flex;
629
- align-items: center;
630
- gap: 0.75rem;
631
- }
632
- .sidebar-link-content {
633
- display: flex;
634
- align-items: center;
635
- justify-content: space-between;
636
- width: 100%;
637
- gap: 0.5rem;
638
- }
639
- .sidebar-link-content > span:last-child {
640
- flex: 1;
641
- word-wrap: break-word;
642
- }
643
- .sidebar-badge {
644
- font-size: 0.45rem;
645
- font-weight: 500;
646
- padding: 0.1rem 0.3rem;
647
- border-radius: 9999px;
648
- text-transform: uppercase;
649
- letter-spacing: 0.05em;
650
- white-space: nowrap;
651
- line-height: 1;
652
- display: inline-flex;
653
- align-items: center;
654
- flex-shrink: 0;
655
- }
656
- .sidebar-badge.badge-new {
657
- color: #38bdf8;
658
- background-color: rgba(56, 189, 248, 0.15);
659
- border: 1px solid rgba(56, 189, 248, 0.25);
660
- }
661
- .sidebar-badge.badge-experimental {
662
- color: #eab308;
663
- background-color: rgba(234, 179, 8, 0.15);
664
- border: 1px solid rgba(234, 179, 8, 0.25);
665
- }
666
- .sidebar-badge.badge-updated {
667
- color: #a1a1aa;
668
- background-color: rgba(161, 161, 170, 0.15);
669
- border: 1px solid rgba(161, 161, 170, 0.25);
670
- }
671
- .sidebar-badge.badge-default {
672
- color: var(--ld-text-muted);
673
- background-color: var(--ld-bg-mute);
674
- border: 1px solid var(--ld-border-subtle);
675
- }
676
- .sidebar-link:hover {
677
- color: var(--ld-color-primary-hover);
678
- background-color: var(--ld-bg-soft);
679
- }
680
- .sidebar-link.active {
681
- color: var(--ld-color-primary);
682
- font-weight: 600;
683
- background-color: var(--ld-bg-soft);
684
- }
685
- .sidebar-group {
686
- margin-top: 1.25rem;
687
- }
688
- .sidebar-group:first-child {
689
- margin-top: 0;
690
- }
691
- .sidebar-group-header {
692
- display: flex;
693
- align-items: center;
694
- justify-content: space-between;
695
- width: 100%;
696
- padding: 0.5rem 0.75rem;
697
- background: none;
698
- border: none;
699
- border-radius: var(--ld-radius-md);
700
- color: var(--ld-text-muted);
701
- font-family: var(--ld-font-sans);
702
- font-size: 0.8125rem;
703
- font-weight: 600;
704
- cursor: pointer;
705
- transition: color 0.2s, background-color 0.2s;
706
- }
707
- .sidebar-group-header-content {
708
- display: flex;
709
- align-items: center;
710
- gap: 0.75rem;
711
- }
712
- .sidebar-group-header:hover {
713
- color: var(--ld-text-main);
714
- }
715
- .sidebar-group-header.active {
716
- color: var(--ld-text-main);
717
- }
718
- .sidebar-group-chevron {
719
- display: inline-flex;
720
- align-items: center;
721
- transition: transform 0.25s ease;
722
- font-size: 0.75rem;
723
- line-height: 1;
724
- }
725
- .sidebar-group-chevron.open {
726
- transform: rotate(90deg);
727
- }
728
- .sidebar-group-list {
729
- list-style: none;
730
- padding: 0;
731
- margin: 0.35rem 0 0.5rem 0;
732
- position: relative;
733
- }
734
- .sidebar-group-list li {
735
- margin-bottom: 2px;
736
- }
737
- .sidebar-link-nested {
738
- padding-left: 0.75rem;
739
- }
740
- .sidebar-group-list {
741
- list-style: none;
742
- padding: 0;
743
- margin: 0.35rem 0 0.5rem 0;
744
- position: relative;
745
- }
746
- .sidebar-group-list li {
747
- margin-bottom: 2px;
748
- }
749
-
750
- /* src/client/theme/ui/OnThisPage/toc.css */
751
- .boltdocs-on-this-page {
752
- width: var(--ld-toc-width);
753
- flex-shrink: 0;
754
- padding: 1.5rem 1rem;
755
- height: 100%;
756
- display: flex;
757
- flex-direction: column;
758
- transform: translate3d(0, 0, 0);
759
- backface-visibility: hidden;
760
- }
761
- .on-this-page-title {
762
- font-size: 0.6875rem;
763
- font-weight: 700;
764
- text-transform: uppercase;
765
- letter-spacing: 0.08em;
766
- color: var(--ld-text-dim);
767
- margin: 0 0 0.75rem;
768
- padding-left: 0.75rem;
769
- flex-shrink: 0;
770
- }
771
- .on-this-page-container {
772
- position: relative;
773
- padding-left: 2px;
774
- flex: 0 1 auto;
775
- min-height: 0;
776
- display: flex;
777
- flex-direction: column;
778
- }
779
- .on-this-page-list-container {
780
- overflow-y: auto;
781
- max-height: 50vh;
782
- flex: 0 1 auto;
783
- position: relative;
784
- scrollbar-width: none;
785
- }
786
- .on-this-page-list-container::-webkit-scrollbar {
787
- display: none;
788
- }
789
- .on-this-page-list {
790
- list-style: none;
791
- padding: 0;
792
- margin: 0;
793
- border-left: 1px solid var(--ld-border-subtle);
794
- }
795
- .toc-indicator {
796
- position: absolute;
797
- left: 0;
798
- width: 2px;
799
- background-color: var(--ld-color-accent);
800
- transition:
801
- transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
802
- height 0.25s cubic-bezier(0.4, 0, 0.2, 1),
803
- opacity 0.2s ease;
804
- z-index: 1;
805
- border-radius: 2px;
806
- pointer-events: none;
807
- opacity: 0;
808
- }
809
- .on-this-page-list li {
810
- margin: 0;
811
- }
812
- .on-this-page-list li.toc-indent {
813
- padding-left: 0.75rem;
814
- }
815
- .toc-link {
816
- display: block;
817
- padding: 0.35rem 0.75rem;
818
- font-size: 0.8125rem;
819
- color: var(--ld-text-dim);
820
- text-decoration: none;
821
- border-left: 2px solid transparent;
822
- margin-left: -2px;
823
- line-height: 1.4;
824
- transition: color 0.2s, font-weight 0.2s;
825
- }
826
- .toc-link:hover {
827
- color: var(--ld-text-main);
828
- }
829
- .toc-link.active {
830
- color: var(--ld-color-primary);
831
- font-weight: 500;
832
- }
833
- .toc-help {
834
- margin-top: 1.5rem;
835
- padding-top: 1rem;
836
- border-top: 1px solid var(--ld-border-subtle);
837
- flex-shrink: 0;
838
- }
839
- .toc-help-title {
840
- font-size: 0.6875rem;
841
- font-weight: 700;
842
- text-transform: uppercase;
843
- letter-spacing: 0.08em;
844
- color: var(--ld-text-dim);
845
- margin: 0 0 0.5rem;
846
- padding-left: 0.75rem;
847
- }
848
- .toc-help-links {
849
- list-style: none;
850
- padding: 0;
851
- margin: 0;
852
- }
853
- .toc-help-links li {
854
- margin-bottom: 2px;
855
- }
856
- .toc-help-link {
857
- display: flex;
858
- align-items: center;
859
- gap: 0.4rem;
860
- padding: 0.3rem 0.75rem;
861
- font-size: 0.8rem;
862
- color: var(--ld-text-dim);
863
- text-decoration: none;
864
- border-radius: var(--ld-radius-md);
865
- transition: color 0.2s, background-color 0.2s;
866
- }
867
- .toc-help-link:hover {
868
- color: var(--ld-text-main);
869
- background-color: var(--ld-bg-mute);
870
- }
871
- .toc-help-link svg {
872
- width: 14px;
873
- height: 14px;
874
- opacity: 0.6;
875
- }
876
-
877
- /* src/client/theme/ui/Footer/footer.css */
878
- .boltdocs-footer {
879
- display: flex;
880
- align-items: center;
881
- justify-content: space-between;
882
- padding: 1.5rem 2rem;
883
- border-top: 1px solid var(--ld-border-subtle);
884
- background-color: var(--ld-bg-soft);
885
- font-size: 0.8rem;
886
- color: var(--ld-text-dim);
887
- }
888
- .footer-copy {
889
- margin: 0;
890
- }
891
- .footer-links {
892
- display: flex;
893
- gap: 1.25rem;
894
- }
895
- .footer-links a {
896
- color: var(--ld-text-dim);
897
- text-decoration: none;
898
- transition: color 0.2s;
899
- }
900
- .footer-links a:hover {
901
- color: var(--ld-text-muted);
902
- }
903
-
904
- /* src/client/theme/ui/LanguageSwitcher/language-switcher.css */
905
- .boltdocs-language-switcher {
906
- position: relative;
907
- display: flex;
908
- align-items: center;
909
- }
910
- .language-btn {
911
- display: flex;
912
- align-items: center;
913
- gap: 0.35rem;
914
- padding: 0.4rem 0.6rem;
915
- background: transparent;
916
- color: var(--ld-text-muted);
917
- border: none;
918
- border-radius: var(--ld-radius-md);
919
- font-size: 0.8125rem;
920
- font-weight: 500;
921
- cursor: pointer;
922
- transition: background-color 0.2s, color 0.2s;
923
- }
924
- .language-btn svg {
925
- width: 15px;
926
- height: 15px;
927
- opacity: 0.8;
928
- }
929
- .language-btn:hover {
930
- background-color: var(--ld-bg-mute);
931
- color: var(--ld-text-main);
932
- }
933
- .language-dropdown {
934
- position: absolute;
935
- top: 100%;
936
- right: 0;
937
- margin-top: 0.35rem;
938
- min-width: 130px;
939
- background-color: rgba(15, 15, 24, 0.85);
940
- backdrop-filter: blur(12px);
941
- -webkit-backdrop-filter: blur(12px);
942
- border: 1px solid var(--ld-border-strong);
943
- border-radius: var(--ld-radius-md);
944
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
945
- padding: 0.35rem;
946
- z-index: 200;
947
- display: flex;
948
- flex-direction: column;
949
- gap: 0.15rem;
950
- animation: languageDropdownIn 0.15s ease-out;
951
- }
952
- @keyframes languageDropdownIn {
953
- from {
954
- opacity: 0;
955
- transform: translateY(-4px);
956
- }
957
- to {
958
- opacity: 1;
959
- transform: translateY(0);
960
- }
961
- }
962
- [data-theme=light] .language-dropdown,
963
- .theme-light .language-dropdown {
964
- background-color: rgba(255, 255, 255, 0.9);
965
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
966
- }
967
- .language-option {
968
- display: block;
969
- width: 100%;
970
- text-align: left;
971
- padding: 0.4rem 0.6rem;
972
- background: transparent;
973
- border: none;
974
- border-radius: var(--ld-radius-sm);
975
- color: var(--ld-text-muted);
976
- font-size: 0.8125rem;
977
- font-weight: 500;
978
- cursor: pointer;
979
- transition: background-color 0.2s, color 0.2s;
980
- }
981
- .language-option:hover {
982
- background-color: var(--ld-bg-mute);
983
- color: var(--ld-text-main);
984
- }
985
- .language-option.active {
986
- background-color: var(--ld-color-primary-muted);
987
- color: var(--ld-color-primary);
988
- }
989
-
990
- /* src/client/theme/ui/PoweredBy/powered-by.css */
991
- .powered-by-container {
992
- display: flex;
993
- justify-content: center;
994
- padding: 1rem 0.6rem;
995
- }
996
- .powered-by-link {
997
- position: relative;
998
- display: inline-flex;
999
- align-items: center;
1000
- gap: 0.45rem;
1001
- padding: 0.45rem 1rem;
1002
- border-radius: var(--ld-radius-full);
1003
- background: rgba(255, 255, 255, 0.03);
1004
- backdrop-filter: blur(8px);
1005
- -webkit-backdrop-filter: blur(8px);
1006
- border: 1px solid rgba(255, 255, 255, 0.08);
1007
- color: var(--ld-text-dim);
1008
- font-size: 0.725rem;
1009
- font-weight: 500;
1010
- text-decoration: none;
1011
- transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
1012
- letter-spacing: 0.01em;
1013
- overflow: hidden;
1014
- }
1015
- .powered-by-link::before {
1016
- content: "";
1017
- position: absolute;
1018
- top: 0;
1019
- left: -100%;
1020
- width: 100%;
1021
- height: 100%;
1022
- background:
1023
- linear-gradient(
1024
- 90deg,
1025
- transparent,
1026
- rgba(255, 255, 255, 0.05),
1027
- transparent);
1028
- transition: 0.5s;
1029
- }
1030
- .powered-by-link:hover::before {
1031
- left: 100%;
1032
- }
1033
- .powered-by-link:hover {
1034
- background: rgba(255, 255, 255, 0.06);
1035
- border-color: rgba(255, 255, 255, 0.2);
1036
- color: var(--ld-text-main);
1037
- transform: translateY(-2px);
1038
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
1039
- }
1040
- .powered-by-icon {
1041
- color: var(--ld-color-primary);
1042
- filter: drop-shadow(0 0 4px var(--ld-color-primary));
1043
- transition: transform 0.3s ease;
1044
- }
1045
- .powered-by-link:hover .powered-by-icon {
1046
- transform: scale(1.2) rotate(-10deg);
1047
- filter: drop-shadow(0 0 8px var(--ld-color-primary));
1048
- }
1049
- .powered-by-brand {
1050
- color: var(--ld-color-primary);
1051
- font-weight: 700;
1052
- text-shadow: 0 0 10px rgba(var(--ld-color-primary-rgb, 56, 189, 248), 0.3);
1053
- }
1054
- @media (max-width: 768px) {
1055
- .powered-by-container {
1056
- padding: 0.75rem 0.5rem;
1057
- }
1058
- }
1059
-
1060
- /* src/client/theme/ui/CopyMarkdown/copy-markdown.css */
1061
- .boltdocs-copy-markdown {
1062
- position: relative;
1063
- display: inline-block;
1064
- z-index: 100;
1065
- }
1066
- .copy-btn-group {
1067
- display: flex;
1068
- align-items: stretch;
1069
- background-color: var(--ld-bg-mute);
1070
- border: 1px solid var(--ld-border-subtle);
1071
- border-radius: var(--ld-radius-full);
1072
- overflow: hidden;
1073
- transition: all 0.2s ease;
1074
- }
1075
- .copy-btn-group:hover {
1076
- border-color: var(--ld-color-primary-hover);
1077
- }
1078
- .copy-btn {
1079
- display: flex;
1080
- align-items: center;
1081
- gap: 8px;
1082
- padding: 8px 16px;
1083
- background: transparent;
1084
- border: none;
1085
- color: var(--ld-text-main);
1086
- font-size: 14px;
1087
- font-weight: 500;
1088
- cursor: pointer;
1089
- transition: background 0.2s ease;
1090
- }
1091
- .copy-btn:hover {
1092
- background-color: var(--ld-bg-soft);
1093
- }
1094
- .copy-label {
1095
- white-space: nowrap;
1096
- }
1097
- .copy-dropdown-toggle {
1098
- display: flex;
1099
- align-items: center;
1100
- justify-content: center;
1101
- padding: 0 10px;
1102
- background: rgba(255, 255, 255, 0.03);
1103
- border: none;
1104
- border-left: 1px solid var(--ld-border-subtle);
1105
- color: var(--ld-text-muted);
1106
- cursor: pointer;
1107
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1108
- }
1109
- .copy-dropdown-toggle:hover {
1110
- background: rgba(255, 255, 255, 0.1);
1111
- color: var(--ld-text-main);
1112
- }
1113
- .copy-dropdown-toggle .arrow-icon {
1114
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1115
- }
1116
- .copy-dropdown-toggle.is-active .arrow-icon {
1117
- transform: rotate(180deg);
1118
- }
1119
- .copy-dropdown {
1120
- position: absolute;
1121
- top: calc(100% + 8px);
1122
- right: 0;
1123
- width: 200px;
1124
- background: var(--ld-bg-main);
1125
- border: 1px solid var(--ld-border-subtle);
1126
- border-radius: var(--ld-radius-lg);
1127
- padding: 4px;
1128
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
1129
- overflow: hidden;
1130
- animation: boltdocs-fade-in 0.2s ease;
1131
- }
1132
- .copy-option {
1133
- display: flex;
1134
- align-items: center;
1135
- gap: 10px;
1136
- width: 100%;
1137
- padding: 10px 12px;
1138
- background: transparent;
1139
- border: none;
1140
- border-radius: 8px;
1141
- color: var(--ld-text-main);
1142
- font-size: 14px;
1143
- text-align: left;
1144
- cursor: pointer;
1145
- transition: background 0.2s ease;
1146
- }
1147
- .copy-option:hover {
1148
- background-color: var(--ld-bg-soft);
1149
- }
1150
- @keyframes boltdocs-fade-in {
1151
- from {
1152
- opacity: 0;
1153
- transform: translateY(-4px);
1154
- }
1155
- to {
1156
- opacity: 1;
1157
- transform: translateY(0);
1158
- }
1159
- }
1160
-
1161
- /* src/client/theme/styles/markdown.css */
1162
- .boltdocs-content {
1163
- flex: 1;
1164
- padding: 2rem 2.5rem 6rem;
1165
- max-width: var(--ld-content-max-width);
1166
- margin: 0 auto;
1167
- min-width: 0;
1168
- height: 100%;
1169
- overflow-y: auto;
1170
- scrollbar-width: none;
1171
- scroll-behavior: smooth;
1172
- transition: max-width 0.3s cubic-bezier(0.16, 1, 0.3, 1), padding 0.3s ease;
1173
- }
1174
- .boltdocs-content::-webkit-scrollbar {
1175
- display: none;
1176
- }
1177
- .boltdocs-breadcrumbs {
1178
- margin-bottom: 1.5rem;
1179
- }
1180
- .boltdocs-breadcrumbs-list {
1181
- display: flex;
1182
- align-items: center;
1183
- flex-wrap: wrap;
1184
- list-style: none;
1185
- padding: 0;
1186
- margin: 0;
1187
- font-size: 0.8125rem;
1188
- }
1189
- .boltdocs-breadcrumbs-item {
1190
- display: flex;
1191
- align-items: center;
1192
- }
1193
- .boltdocs-breadcrumbs-link {
1194
- display: flex;
1195
- align-items: center;
1196
- color: var(--ld-text-muted);
1197
- text-decoration: none;
1198
- transition: color 0.2s;
1199
- }
1200
- .boltdocs-breadcrumbs-link:hover {
1201
- color: var(--ld-color-primary);
1202
- }
1203
- .boltdocs-breadcrumbs-separator {
1204
- display: flex;
1205
- align-items: center;
1206
- color: var(--ld-text-dim);
1207
- margin: 0 0.5rem;
1208
- opacity: 0.5;
1209
- }
1210
- .boltdocs-breadcrumbs-text {
1211
- color: var(--ld-text-muted);
1212
- }
1213
- .boltdocs-breadcrumbs-active {
1214
- color: var(--ld-text-main);
1215
- font-weight: 500;
1216
- }
1217
- .boltdocs-page h1 {
1218
- font-size: 2.25rem;
1219
- margin: 0 0 0.75rem;
1220
- font-weight: 700;
1221
- letter-spacing: -0.025em;
1222
- color: var(--ld-text-main);
1223
- padding-right: 160px;
1224
- }
1225
- .boltdocs-page h1 + p {
1226
- color: var(--ld-text-muted);
1227
- font-size: 1.05rem;
1228
- margin-bottom: 2rem;
1229
- }
1230
- .boltdocs-page h2 {
1231
- font-size: 1.4rem;
1232
- margin-top: 2.5rem;
1233
- margin-bottom: 0.75rem;
1234
- font-weight: 700;
1235
- color: var(--ld-text-main);
1236
- padding-bottom: 0.5rem;
1237
- border-bottom: 1px solid var(--ld-border-subtle);
1238
- scroll-margin-top: 5rem;
1239
- letter-spacing: -0.015em;
1240
- }
1241
- .boltdocs-page h3 {
1242
- font-size: 1.125rem;
1243
- margin-top: 2rem;
1244
- margin-bottom: 0.5rem;
1245
- font-weight: 600;
1246
- color: var(--ld-text-main);
1247
- scroll-margin-top: 5rem;
1248
- }
1249
- .boltdocs-page p {
1250
- margin-top: 0;
1251
- margin-bottom: 1rem;
1252
- color: var(--ld-text-muted);
1253
- }
1254
- .boltdocs-page a {
1255
- color: var(--ld-color-primary);
1256
- text-decoration: none;
1257
- transition: color 0.2s;
1258
- }
1259
- .boltdocs-page a:hover {
1260
- color: var(--ld-color-primary-hover);
1261
- text-decoration: underline;
1262
- }
1263
- .boltdocs-page ul,
1264
- .boltdocs-page ol {
1265
- margin-top: 0;
1266
- margin-bottom: 1rem;
1267
- padding-left: 1.5rem;
1268
- color: var(--ld-text-muted);
1269
- }
1270
- .boltdocs-page li {
1271
- margin-bottom: 0.35rem;
1272
- }
1273
- .boltdocs-page strong {
1274
- color: var(--ld-text-main);
1275
- font-weight: 600;
1276
- }
1277
- .boltdocs-page blockquote {
1278
- margin: 1.5rem 0;
1279
- padding: 0.75rem 1.25rem;
1280
- border-left: 3px solid var(--ld-color-primary);
1281
- background-color: var(--ld-color-primary-muted);
1282
- border-radius: 0 var(--ld-radius-md) var(--ld-radius-md) 0;
1283
- color: var(--ld-text-muted);
1284
- }
1285
- .boltdocs-page blockquote p {
1286
- margin: 0;
1287
- }
1288
- .boltdocs-page hr {
1289
- border: none;
1290
- border-top: 1px solid var(--ld-border-subtle);
1291
- margin: 2rem 0;
1292
- }
1293
- .boltdocs-page img {
1294
- max-width: 100%;
1295
- height: auto;
1296
- border-radius: var(--ld-radius-md);
1297
- margin: 1rem 0;
1298
- display: block;
1299
- }
1300
- .boltdocs-page table {
1301
- width: 100%;
1302
- border-collapse: collapse;
1303
- margin: 1.5rem 0;
1304
- font-size: 0.875rem;
1305
- }
1306
- .boltdocs-page th {
1307
- text-align: left;
1308
- padding: 0.6rem 0.75rem;
1309
- border-bottom: 2px solid var(--ld-border-subtle);
1310
- color: var(--ld-text-main);
1311
- font-weight: 600;
1312
- }
1313
- .boltdocs-page td {
1314
- padding: 0.5rem 0.75rem;
1315
- border-bottom: 1px solid var(--ld-border-subtle);
1316
- color: var(--ld-text-muted);
1317
- }
1318
- .boltdocs-page tr:hover td {
1319
- background-color: rgba(255, 255, 255, 0.02);
1320
- }
1321
- .boltdocs-page :not(pre) > code {
1322
- background-color: var(--ld-surface);
1323
- padding: 0.15rem 0.45rem;
1324
- border-radius: 5px;
1325
- font-family: var(--ld-font-mono);
1326
- font-size: 0.85em;
1327
- color: var(--ld-color-primary-hover);
1328
- border: 1px solid var(--ld-border-subtle);
1329
- }
1330
- .code-block-wrapper {
1331
- margin: 1.5rem 0;
1332
- border-radius: var(--ld-radius-md);
1333
- overflow: hidden;
1334
- border: 1px solid var(--ld-border-subtle);
1335
- background-color: var(--ld-code-bg);
1336
- position: relative;
1337
- }
1338
- .code-block-copy {
1339
- display: flex;
1340
- align-items: center;
1341
- justify-content: center;
1342
- position: absolute;
1343
- top: 0.75rem;
1344
- right: 0.75rem;
1345
- z-index: 50;
1346
- padding: 0.4rem;
1347
- background-color: var(--ld-surface);
1348
- backdrop-filter: blur(8px);
1349
- -webkit-backdrop-filter: blur(8px);
1350
- border: 1px solid var(--ld-border-subtle);
1351
- border-radius: 6px;
1352
- color: var(--ld-text-dim);
1353
- cursor: pointer;
1354
- transition: all 0.2s ease;
1355
- opacity: 0;
1356
- }
1357
- .code-block-wrapper:hover .code-block-copy {
1358
- opacity: 1;
1359
- }
1360
- .code-block-copy:hover {
1361
- color: var(--ld-text-main);
1362
- border-color: var(--ld-border-strong);
1363
- background-color: rgba(255, 255, 255, 0.08);
1364
- }
1365
- .code-block-copy.copied {
1366
- color: #22c55e;
1367
- border-color: rgba(34, 197, 94, 0.4);
1368
- opacity: 1;
1369
- }
1370
- .code-block-copy svg {
1371
- width: 16px;
1372
- height: 16px;
1373
- }
1374
- .code-block-wrapper pre {
1375
- margin: 0 !important;
1376
- border-radius: 0 !important;
1377
- border: none !important;
1378
- background-color: transparent !important;
1379
- }
1380
- .code-block-wrapper pre > code {
1381
- display: grid !important;
1382
- padding: 1.25rem 1rem !important;
1383
- }
1384
- .code-block-wrapper.is-truncated pre {
1385
- max-height: 250px;
1386
- overflow: hidden;
1387
- }
1388
- .code-block-expand-wrapper {
1389
- position: absolute;
1390
- bottom: 0;
1391
- left: 0;
1392
- right: 0;
1393
- height: 80px;
1394
- background:
1395
- linear-gradient(
1396
- to top,
1397
- var(--ld-code-bg) 20%,
1398
- transparent);
1399
- display: none;
1400
- align-items: flex-end;
1401
- justify-content: center;
1402
- padding-bottom: 1rem;
1403
- z-index: 10;
1404
- }
1405
- .code-block-wrapper.is-truncated .code-block-expand-wrapper {
1406
- display: flex;
1407
- }
1408
- .code-block-expand-btn {
1409
- background-color: var(--ld-surface);
1410
- border: 1px solid var(--ld-border-subtle);
1411
- border-radius: 20px;
1412
- color: var(--ld-text-main);
1413
- padding: 0.5rem 1.25rem;
1414
- font-size: 0.8125rem;
1415
- font-weight: 500;
1416
- cursor: pointer;
1417
- transition: all 0.2s ease;
1418
- backdrop-filter: blur(8px);
1419
- -webkit-backdrop-filter: blur(8px);
1420
- }
1421
- .code-block-expand-btn:hover {
1422
- background-color: var(--ld-border-subtle);
1423
- transform: translateY(-1px);
1424
- }
1425
- .code-block-wrapper:not(.is-truncated) .code-block-expand-wrapper {
1426
- position: relative;
1427
- height: auto;
1428
- background: none;
1429
- display: flex;
1430
- justify-content: center;
1431
- padding: 1rem 0;
1432
- border-top: 1px solid var(--ld-border-subtle);
1433
- }
1434
- .code-block-wrapper pre > code .line {
1435
- padding: 0 1.25rem;
1436
- }
1437
- .boltdocs-page pre {
1438
- margin: 1.5rem 0;
1439
- border-radius: var(--ld-radius-md);
1440
- overflow-x: auto;
1441
- font-family: var(--ld-font-mono);
1442
- font-size: 0.8125rem;
1443
- line-height: 1.7;
1444
- background-color: var(--ld-code-bg);
1445
- color: var(--ld-code-text);
1446
- border: 1px solid var(--ld-border-subtle);
1447
- }
1448
- .boltdocs-page pre > code {
1449
- display: grid;
1450
- padding: 1rem 1rem;
1451
- background-color: transparent;
1452
- border: none;
1453
- color: inherit;
1454
- font-size: inherit;
1455
- }
1456
- .boltdocs-page pre > code .line {
1457
- padding: 0 1.25rem;
1458
- }
1459
- .boltdocs-page pre > code .line.highlighted {
1460
- background-color: var(--ld-color-primary-muted);
1461
- border-left: 2px solid var(--ld-color-primary);
1462
- }
1463
- .header-anchor {
1464
- margin-left: 0.5rem;
1465
- color: var(--ld-text-dim);
1466
- opacity: 0;
1467
- transition: opacity 0.2s;
1468
- text-decoration: none;
1469
- font-weight: 400;
1470
- }
1471
- .boltdocs-page h2:hover .header-anchor,
1472
- .boltdocs-page h3:hover .header-anchor {
1473
- opacity: 1;
1474
- }
1475
- .header-anchor:hover {
1476
- color: var(--ld-color-primary);
1477
- }
1478
- .boltdocs-heading {
1479
- display: flex;
1480
- align-items: center;
1481
- }
1482
- .boltdocs-heading .header-anchor {
1483
- display: inline-flex;
1484
- align-items: center;
1485
- margin-left: 0.5rem;
1486
- color: var(--ld-text-dim);
1487
- opacity: 0;
1488
- transition: opacity 0.2s;
1489
- text-decoration: none;
1490
- }
1491
- .boltdocs-heading:hover .header-anchor {
1492
- opacity: 1;
1493
- }
1494
-
1495
- /* src/client/theme/components/Video/video.css */
1496
- .boltdocs-video-wrapper {
1497
- margin: 1.5rem 0;
1498
- max-width: 100%;
1499
- width: 100%;
1500
- box-sizing: border-box;
1501
- border-radius: var(--ld-radius-md);
1502
- overflow: hidden;
1503
- border: 1px solid var(--ld-border-subtle);
1504
- background-color: var(--ld-surface);
1505
- }
1506
- .boltdocs-video {
1507
- display: block;
1508
- width: 100%;
1509
- max-width: 100%;
1510
- height: auto;
1511
- border-radius: 0;
1512
- animation: ld-video-fade-in 0.4s ease-out;
1513
- }
1514
- .boltdocs-video-placeholder {
1515
- width: 100%;
1516
- aspect-ratio: 16 / 9;
1517
- background-color: var(--ld-surface);
1518
- }
1519
- .boltdocs-page video {
1520
- max-width: 100%;
1521
- height: auto;
1522
- }
1523
- @keyframes ld-video-fade-in {
1524
- from {
1525
- opacity: 0;
1526
- }
1527
- to {
1528
- opacity: 1;
1529
- }
1530
- }
1531
-
1532
- /* src/client/theme/components/mdx/mdx-components.css */
1533
- .ld-btn {
1534
- all: unset;
1535
- box-sizing: border-box !important;
1536
- display: inline-flex;
1537
- align-items: center;
1538
- justify-content: center;
1539
- gap: 0.5rem;
1540
- font-family: var(--ld-font-sans);
1541
- font-weight: 600;
1542
- font-size: 0.9375rem;
1543
- line-height: normal;
1544
- letter-spacing: -0.01em;
1545
- text-align: center;
1546
- text-decoration: none !important;
1547
- white-space: nowrap;
1548
- border-radius: var(--ld-radius-md);
1549
- cursor: pointer;
1550
- transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
1551
- border: 1px solid transparent;
1552
- user-select: none;
1553
- position: relative;
1554
- }
1555
- .ld-btn:hover {
1556
- transform: translateY(-1px);
1557
- }
1558
- .ld-btn:active {
1559
- transform: translateY(0) scale(0.98);
1560
- }
1561
- .ld-btn--sm {
1562
- min-height: 2rem;
1563
- padding: 0 1rem;
1564
- font-size: 0.8125rem;
1565
- border-radius: var(--ld-radius-md);
1566
- }
1567
- .ld-btn--md {
1568
- min-height: 2.625rem;
1569
- padding: 0 1.6rem;
1570
- font-size: 0.9375rem;
1571
- }
1572
- .ld-btn--lg {
1573
- min-height: 3.25rem;
1574
- padding: 0 2.2rem;
1575
- font-size: 1.05rem;
1576
- }
1577
- .ld-btn--primary {
1578
- background-color: var( --ld-ui-btn-primary-bg, var(--ld-btn-primary-bg) ) !important;
1579
- color: var(--ld-ui-btn-primary-text, var(--ld-btn-primary-text)) !important;
1580
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1581
- }
1582
- .ld-btn--primary:hover {
1583
- filter: brightness(1.1);
1584
- }
1585
- .ld-btn--secondary {
1586
- background-color: var( --ld-ui-btn-secondary-bg, var(--ld-btn-secondary-bg) ) !important;
1587
- color: var( --ld-ui-btn-secondary-text, var(--ld-btn-secondary-text) ) !important;
1588
- border-color: var(--ld-border-subtle);
1589
- }
1590
- .ld-btn--secondary:hover {
1591
- background-color: var(--ld-bg-mute);
1592
- border-color: var(--ld-border-strong);
1593
- }
1594
- .ld-btn--outline {
1595
- background: transparent !important;
1596
- color: var(--ld-text-main) !important;
1597
- border-color: var(--ld-border-strong);
1598
- }
1599
- .ld-btn--outline:hover {
1600
- background-color: var(--ld-bg-soft);
1601
- border-color: var(--ld-color-primary);
1602
- }
1603
- .ld-btn--ghost {
1604
- background: transparent !important;
1605
- color: var(--ld-text-muted) !important;
1606
- }
1607
- .ld-btn--ghost:hover {
1608
- background-color: var(--ld-bg-soft);
1609
- color: var(--ld-text-main) !important;
1610
- }
1611
- .ld-badge {
1612
- display: inline-flex;
1613
- align-items: center;
1614
- padding: 0.3rem 0.85rem;
1615
- font-size: 0.75rem;
1616
- font-weight: 600;
1617
- border-radius: var(--ld-radius-full);
1618
- line-height: 1.4;
1619
- white-space: nowrap;
1620
- letter-spacing: 0.01em;
1621
- }
1622
- .ld-badge--default {
1623
- background: var(--ld-bg-mute);
1624
- color: var(--ld-text-main);
1625
- border: 1px solid var(--ld-border-subtle);
1626
- }
1627
- .ld-badge--primary {
1628
- background: var(--ld-color-primary-muted);
1629
- color: var(--ld-color-primary);
1630
- border: 1px solid rgba(127, 19, 236, 0.2);
1631
- }
1632
- .ld-badge--success {
1633
- background: var(--ld-ui-success-bg);
1634
- color: var(--ld-ui-success-text);
1635
- border: 1px solid var(--ld-ui-success-border);
1636
- }
1637
- .ld-badge--warning {
1638
- background: var(--ld-ui-warning-bg);
1639
- color: var(--ld-ui-warning-text);
1640
- border: 1px solid var(--ld-ui-warning-border);
1641
- }
1642
- .ld-badge--danger {
1643
- background: var(--ld-ui-danger-bg);
1644
- color: var(--ld-ui-danger-text);
1645
- border: 1px solid var(--ld-ui-danger-border);
1646
- }
1647
- .ld-badge--info {
1648
- background: var(--ld-ui-info-bg);
1649
- color: var(--ld-ui-info-text);
1650
- border: 1px solid var(--ld-ui-info-border);
1651
- }
1652
- .ld-cards {
1653
- display: grid;
1654
- gap: 1rem;
1655
- margin: 1.5rem 0;
1656
- }
1657
- .ld-cards--1 {
1658
- grid-template-columns: 1fr;
1659
- }
1660
- .ld-cards--2 {
1661
- grid-template-columns: repeat(2, 1fr);
1662
- }
1663
- .ld-cards--3 {
1664
- grid-template-columns: repeat(3, 1fr);
1665
- }
1666
- .ld-cards--4 {
1667
- grid-template-columns: repeat(4, 1fr);
1668
- }
1669
- @media (max-width: 768px) {
1670
- .ld-cards--2,
1671
- .ld-cards--3,
1672
- .ld-cards--4 {
1673
- grid-template-columns: 1fr;
1674
- }
1675
- }
1676
- .ld-card {
1677
- position: relative;
1678
- padding: 1.35rem 1.5rem;
1679
- border-radius: var(--ld-radius-lg);
1680
- border: 1px solid var(--ld-border-subtle);
1681
- background: var(--ld-bg-soft);
1682
- transition: all 300ms cubic-bezier(0.16, 1, 0.3, 1);
1683
- text-decoration: none !important;
1684
- backdrop-filter: blur(var(--ld-navbar-blur));
1685
- -webkit-backdrop-filter: blur(var(--ld-navbar-blur));
1686
- color: inherit;
1687
- overflow: hidden;
1688
- }
1689
- .ld-card::before {
1690
- content: "";
1691
- position: absolute;
1692
- top: 0;
1693
- left: 0;
1694
- right: 0;
1695
- height: 1px;
1696
- background:
1697
- linear-gradient(
1698
- 90deg,
1699
- transparent,
1700
- var(--ld-border-strong),
1701
- transparent);
1702
- opacity: 0;
1703
- transition: opacity 0.3s ease;
1704
- }
1705
- .ld-card:hover {
1706
- border-color: var(--ld-color-primary);
1707
- transform: translateY(-3px);
1708
- }
1709
- .ld-card:hover::before {
1710
- opacity: 1;
1711
- background:
1712
- linear-gradient(
1713
- 90deg,
1714
- transparent,
1715
- var(--ld-color-primary),
1716
- transparent);
1717
- }
1718
- .ld-card--link {
1719
- cursor: pointer;
1720
- }
1721
- .ld-card--link:hover {
1722
- text-decoration: none !important;
1723
- }
1724
- .ld-card__icon {
1725
- font-size: 1.6rem;
1726
- display: flex;
1727
- align-items: center;
1728
- justify-content: center;
1729
- width: 2.5rem;
1730
- height: 2.5rem;
1731
- margin-bottom: 0.85rem;
1732
- }
1733
- .ld-card__title {
1734
- font-size: 0.95rem;
1735
- font-weight: 700;
1736
- margin: 0 0 0.4rem;
1737
- color: var(--ld-text-main);
1738
- letter-spacing: -0.01em;
1739
- }
1740
- .ld-card__body {
1741
- font-size: 0.85rem;
1742
- color: var(--ld-text-muted);
1743
- line-height: 1.55;
1744
- margin: 0;
1745
- }
1746
- .ld-card__body p {
1747
- margin: 0;
1748
- }
1749
- .ld-tabs {
1750
- margin: 1.5rem 0;
1751
- border: 1px solid var(--ld-border-subtle);
1752
- border-radius: var(--ld-radius-lg);
1753
- overflow: hidden;
1754
- background: var(--ld-bg-soft);
1755
- }
1756
- .ld-tabs__bar {
1757
- display: flex;
1758
- gap: 0;
1759
- background-color: var(--ld-bg-mute);
1760
- border-bottom: 1px solid var(--ld-border-subtle);
1761
- overflow-x: auto;
1762
- }
1763
- .ld-tabs__trigger {
1764
- position: relative;
1765
- display: flex;
1766
- align-items: center;
1767
- gap: 0.5rem;
1768
- padding: 0.65rem 1.25rem;
1769
- background: none;
1770
- border: none;
1771
- border-bottom: 2px solid transparent;
1772
- color: var(--ld-text-dim);
1773
- font-family: var(--ld-font-sans);
1774
- font-size: 0.8125rem;
1775
- font-weight: 500;
1776
- cursor: pointer;
1777
- transition: all 0.2s ease;
1778
- white-space: nowrap;
1779
- }
1780
- .ld-tabs__trigger svg {
1781
- width: 1rem;
1782
- height: 1rem;
1783
- }
1784
- .ld-tabs__trigger:hover {
1785
- color: var(--ld-text-main);
1786
- background-color: rgba(255, 255, 255, 0.03);
1787
- }
1788
- .ld-tabs__trigger--active {
1789
- color: var(--ld-color-primary);
1790
- border-bottom-color: var(--ld-color-primary);
1791
- background-color: transparent;
1792
- }
1793
- .ld-tabs__content {
1794
- padding: 1.25rem;
1795
- }
1796
- .ld-tab-panel {
1797
- font-size: 0.9rem;
1798
- line-height: 1.7;
1799
- color: var(--ld-text-muted);
1800
- }
1801
- .ld-admonition {
1802
- margin: 1.5rem 0;
1803
- border-radius: var(--ld-radius-lg);
1804
- border: 1px solid;
1805
- overflow: hidden;
1806
- }
1807
- .ld-admonition__header {
1808
- display: flex;
1809
- align-items: center;
1810
- gap: 0.5rem;
1811
- padding: 0.6rem 1.1rem;
1812
- font-weight: 600;
1813
- font-size: 0.8rem;
1814
- text-transform: uppercase;
1815
- letter-spacing: 0.04em;
1816
- }
1817
- .ld-admonition__icon {
1818
- display: inline-flex;
1819
- align-items: center;
1820
- }
1821
- .ld-admonition__body {
1822
- padding: 0.6rem 1.1rem 1rem;
1823
- font-size: 0.875rem;
1824
- line-height: 1.7;
1825
- color: var(--ld-text-muted);
1826
- }
1827
- .ld-admonition__body p {
1828
- margin: 0 0 0.5rem;
1829
- }
1830
- .ld-admonition__body p:last-child {
1831
- margin-bottom: 0;
1832
- }
1833
- .ld-admonition--note {
1834
- border-color: var(--ld-ui-note-border);
1835
- background-color: var(--ld-ui-note-bg);
1836
- }
1837
- .ld-admonition--note .ld-admonition__header {
1838
- color: var(--ld-ui-note-text);
1839
- }
1840
- .ld-admonition--tip {
1841
- border-color: var(--ld-ui-tip-border);
1842
- background-color: var(--ld-ui-tip-bg);
1843
- }
1844
- .ld-admonition--tip .ld-admonition__header {
1845
- color: var(--ld-ui-tip-text);
1846
- }
1847
- .ld-admonition--info {
1848
- border-color: var(--ld-ui-info-border);
1849
- background-color: var(--ld-ui-info-bg);
1850
- }
1851
- .ld-admonition--info .ld-admonition__header {
1852
- color: var(--ld-ui-info-text);
1853
- }
1854
- .ld-admonition--warning {
1855
- border-color: var(--ld-ui-warning-border);
1856
- background-color: var(--ld-ui-warning-bg);
1857
- }
1858
- .ld-admonition--warning .ld-admonition__header {
1859
- color: var(--ld-ui-warning-text);
1860
- }
1861
- .ld-admonition--danger {
1862
- border-color: var(--ld-ui-danger-border);
1863
- background-color: var(--ld-ui-danger-bg);
1864
- }
1865
- .ld-admonition--danger .ld-admonition__header {
1866
- color: var(--ld-ui-danger-text);
1867
- }
1868
- .ld-list {
1869
- margin: 1rem 0;
1870
- padding-left: 0;
1871
- list-style: none;
1872
- }
1873
- .ld-list--checked,
1874
- .ld-list--arrow {
1875
- padding-left: 0;
1876
- }
1877
- .ld-list__item {
1878
- display: flex;
1879
- align-items: flex-start;
1880
- gap: 0.6rem;
1881
- padding: 0.35rem 0;
1882
- color: var(--ld-text-muted);
1883
- font-size: 0.9rem;
1884
- line-height: 1.6;
1885
- }
1886
- .ld-list__icon {
1887
- flex-shrink: 0;
1888
- margin-top: 0.25rem;
1889
- }
1890
- .ld-list--checked .ld-list__icon {
1891
- color: var(--ld-ui-success-text);
1892
- }
1893
- .ld-list--arrow .ld-list__icon {
1894
- color: var(--ld-color-primary);
1895
- }
1896
- .ld-file-tree {
1897
- margin: 1.5rem 0;
1898
- padding: 1rem;
1899
- border-radius: var(--ld-radius-lg);
1900
- border: 1px solid var(--ld-border-subtle);
1901
- background: var(--ld-bg-soft);
1902
- font-family: var(--ld-font-mono);
1903
- font-size: 0.875rem;
1904
- overflow-x: auto;
1905
- }
1906
- .ld-file-tree__list {
1907
- list-style: none !important;
1908
- margin: 0 !important;
1909
- padding: 0;
1910
- position: relative;
1911
- }
1912
- .ld-file-tree__list:not(.ld-file-tree__list--root) {
1913
- padding-left: 1.25rem;
1914
- margin-top: 0.25rem !important;
1915
- position: relative;
1916
- }
1917
- .ld-file-tree__list:not(.ld-file-tree__list--root)::before {
1918
- content: "";
1919
- position: absolute;
1920
- top: 0;
1921
- bottom: 0;
1922
- left: 0.45rem;
1923
- width: 1px;
1924
- background-color: var(--ld-border-subtle);
1925
- z-index: 0;
1926
- }
1927
- .ld-file-tree__item {
1928
- position: relative;
1929
- margin: 0.2rem 0 !important;
1930
- padding: 0 !important;
1931
- display: block !important;
1932
- }
1933
- .ld-file-tree__label {
1934
- display: inline-flex;
1935
- align-items: center;
1936
- gap: 0.5rem;
1937
- color: var(--ld-text-muted);
1938
- user-select: none;
1939
- border-radius: var(--ld-radius-sm);
1940
- padding: 0.25rem 0.6rem 0.25rem 0.4rem;
1941
- transition: all 0.2s ease;
1942
- position: relative;
1943
- z-index: 1;
1944
- }
1945
- .ld-file-tree__label:hover {
1946
- background: var(--ld-bg-mute);
1947
- color: var(--ld-text-main);
1948
- }
1949
- .ld-file-tree__label--folder {
1950
- color: var(--ld-text-main);
1951
- font-weight: 500;
1952
- }
1953
- .ld-file-tree__icon {
1954
- display: inline-flex;
1955
- align-items: center;
1956
- justify-content: center;
1957
- opacity: 0.8;
1958
- flex-shrink: 0;
1959
- }
1960
- .ld-file-tree__icon-folder {
1961
- color: var(--ld-color-primary);
1962
- }
1963
- .ld-file-tree__name {
1964
- white-space: nowrap;
1965
- }
1966
- .ld-file-tree__icon--chevron {
1967
- width: 14px;
1968
- height: 14px;
1969
- opacity: 0.5;
1970
- transition: opacity 0.2s ease;
1971
- display: flex !important;
1972
- align-items: center;
1973
- justify-content: center;
1974
- }
1975
- .ld-file-tree__label:hover .ld-file-tree__icon--chevron {
1976
- opacity: 1;
1977
- }
1978
- .ld-file-tree__chevron {
1979
- transition: transform 0.2s ease;
1980
- }
1981
- .ld-file-tree__chevron--open {
1982
- transform: rotate(90deg);
1983
- }
1984
- .ld-file-tree__icon--spacer {
1985
- width: 14px;
1986
- }
1987
- .ld-table-container {
1988
- margin: 1.5rem 0;
1989
- border: 1px solid var(--ld-border-subtle);
1990
- border-radius: var(--ld-radius-lg);
1991
- overflow: hidden;
1992
- background: var(--ld-bg-soft);
1993
- display: flex;
1994
- flex-direction: column;
1995
- }
1996
- .ld-table-wrapper {
1997
- overflow-x: auto;
1998
- scrollbar-width: thin;
1999
- }
2000
- .ld-table {
2001
- width: 100%;
2002
- border-collapse: collapse;
2003
- text-align: left;
2004
- font-size: 0.875rem;
2005
- line-height: 1.5;
2006
- }
2007
- .ld-table thead {
2008
- background: var(--ld-bg-mute);
2009
- border-bottom: 1px solid var(--ld-border-subtle);
2010
- }
2011
- .ld-table th {
2012
- padding: 0.75rem 1rem;
2013
- font-weight: 600;
2014
- color: var(--ld-text-main);
2015
- font-size: 0.8125rem;
2016
- text-transform: uppercase;
2017
- letter-spacing: 0.04em;
2018
- white-space: nowrap;
2019
- }
2020
- .ld-table-header--sortable {
2021
- cursor: pointer;
2022
- transition: background-color 0.2s;
2023
- }
2024
- .ld-table-header--sortable:hover {
2025
- background-color: var(--ld-bg-soft);
2026
- }
2027
- .ld-table-header-content {
2028
- display: flex;
2029
- align-items: center;
2030
- gap: 0.5rem;
2031
- }
2032
- .ld-table-sort-icon {
2033
- opacity: 0.8;
2034
- color: var(--ld-color-primary);
2035
- transition: opacity 0.2s;
2036
- }
2037
- .ld-table-sort-icon--hidden {
2038
- opacity: 0;
2039
- }
2040
- .ld-table-header--sortable:hover .ld-table-sort-icon--hidden {
2041
- opacity: 0.3;
2042
- }
2043
- .ld-table td {
2044
- padding: 0.875rem 1rem;
2045
- color: var(--ld-text-muted);
2046
- border-bottom: 1px solid var(--ld-border-subtle);
2047
- }
2048
- .ld-table tr:last-child td {
2049
- border-bottom: none;
2050
- }
2051
- .ld-table code {
2052
- font-size: 0.8rem;
2053
- padding: 0.2rem 0.4rem;
2054
- background: rgba(255, 255, 255, 0.05);
2055
- border-radius: 4px;
2056
- }
2057
- .ld-table-pagination {
2058
- display: flex;
2059
- align-items: center;
2060
- justify-content: space-between;
2061
- padding: 0.75rem 1rem;
2062
- background: var(--ld-bg-mute);
2063
- border-top: 1px solid var(--ld-border-subtle);
2064
- font-size: 0.75rem;
2065
- color: var(--ld-text-dim);
2066
- }
2067
- .ld-table-pagination-controls {
2068
- display: flex;
2069
- align-items: center;
2070
- gap: 0.25rem;
2071
- }
2072
- .ld-table-pagination-btn {
2073
- display: flex;
2074
- align-items: center;
2075
- justify-content: center;
2076
- width: 1.75rem;
2077
- height: 1.75rem;
2078
- border-radius: var(--ld-radius-md);
2079
- border: 1px solid var(--ld-border-subtle);
2080
- background: var(--ld-bg-soft);
2081
- color: var(--ld-text-muted);
2082
- cursor: pointer;
2083
- transition: all 0.2s;
2084
- }
2085
- .ld-table-pagination-btn:hover:not(:disabled) {
2086
- background: var(--ld-bg-mute);
2087
- color: var(--ld-text-main);
2088
- border-color: var(--ld-border-strong);
2089
- }
2090
- .ld-table-pagination-btn:disabled {
2091
- opacity: 0.4;
2092
- cursor: not-allowed;
2093
- }
2094
- .ld-field {
2095
- margin: 1.5rem 0;
2096
- padding: 1.25rem;
2097
- border-radius: var(--ld-radius-lg);
2098
- border: 1px solid var(--ld-border-subtle);
2099
- background: var(--ld-bg-soft);
2100
- position: relative;
2101
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
2102
- }
2103
- .ld-field:hover {
2104
- border-color: var(--ld-color-primary);
2105
- box-shadow: 0 4px 20px -8px rgba(127, 19, 236, 0.15);
2106
- }
2107
- .ld-field__header {
2108
- display: flex;
2109
- flex-wrap: wrap;
2110
- align-items: center;
2111
- justify-content: space-between;
2112
- gap: 1rem;
2113
- margin-bottom: 0.85rem;
2114
- padding-bottom: 0.85rem;
2115
- border-bottom: 1px solid var(--ld-border-subtle);
2116
- }
2117
- .ld-field__signature {
2118
- display: flex;
2119
- align-items: center;
2120
- gap: 0.75rem;
2121
- }
2122
- .ld-field__name {
2123
- font-family: var(--ld-font-mono);
2124
- font-size: 0.95rem;
2125
- font-weight: 700;
2126
- color: var(--ld-text-main);
2127
- background: rgba(127, 19, 236, 0.08);
2128
- padding: 0.2rem 0.6rem;
2129
- border-radius: var(--ld-radius-sm);
2130
- letter-spacing: -0.01em;
2131
- }
2132
- .ld-field__type-badge {
2133
- font-family: var(--ld-font-mono);
2134
- font-size: 0.75rem;
2135
- font-weight: 500;
2136
- color: var(--ld-color-primary);
2137
- background: var(--ld-color-primary-muted);
2138
- padding: 0.15rem 0.5rem;
2139
- border-radius: var(--ld-radius-full);
2140
- border: 1px solid rgba(127, 19, 236, 0.2);
2141
- }
2142
- .ld-field__required-badge {
2143
- font-size: 0.7rem;
2144
- font-weight: 700;
2145
- text-transform: uppercase;
2146
- color: var(--ld-ui-danger-text);
2147
- background: var(--ld-ui-danger-bg);
2148
- padding: 0.1rem 0.4rem;
2149
- border-radius: var(--ld-radius-sm);
2150
- letter-spacing: 0.05em;
2151
- }
2152
- .ld-field__default {
2153
- display: flex;
2154
- align-items: center;
2155
- gap: 0.5rem;
2156
- font-size: 0.8rem;
2157
- }
2158
- .ld-field__default-label {
2159
- color: var(--ld-text-dim);
2160
- font-weight: 500;
2161
- }
2162
- .ld-field__default-value {
2163
- font-family: var(--ld-font-mono);
2164
- color: var(--ld-text-main);
2165
- background: var(--ld-bg-mute);
2166
- padding: 0.15rem 0.4rem;
2167
- border-radius: var(--ld-radius-sm);
2168
- }
2169
- .ld-field__content {
2170
- font-size: 0.875rem;
2171
- line-height: 1.6;
2172
- color: var(--ld-text-muted);
2173
- }
2174
- .ld-field__content p {
2175
- margin: 0;
2176
- }
2177
-
2178
- /* src/client/theme/components/PackageManagerTabs/pkg-tabs.css */
2179
- .pkg-tabs-wrapper {
2180
- margin: 1.5rem 0;
2181
- }
2182
- .pkg-tabs-header {
2183
- display: flex;
2184
- gap: 0.25rem;
2185
- overflow-x: auto;
2186
- padding-bottom: 0.5rem;
2187
- margin-bottom: -0.5rem;
2188
- scrollbar-width: none;
2189
- }
2190
- .pkg-tabs-header::-webkit-scrollbar {
2191
- display: none;
2192
- }
2193
- .pkg-tab-btn {
2194
- display: inline-flex;
2195
- align-items: center;
2196
- gap: 0.4rem;
2197
- padding: 0.5rem 1rem;
2198
- background-color: var(--ld-bg-soft);
2199
- border: 1px solid var(--ld-border-subtle);
2200
- border-bottom: none;
2201
- border-radius: var(--ld-radius-md) var(--ld-radius-md) 0 0;
2202
- color: var(--ld-text-muted);
2203
- font-family: var(--ld-font-sans);
2204
- font-size: 0.8125rem;
2205
- font-weight: 500;
2206
- cursor: pointer;
2207
- transition: all 0.2s;
2208
- opacity: 0.7;
2209
- }
2210
- .pkg-tab-btn:hover {
2211
- color: var(--ld-text-main);
2212
- background-color: var(--ld-bg-mute);
2213
- opacity: 1;
2214
- }
2215
- .pkg-tab-btn.active {
2216
- background-color: var(--ld-code-bg);
2217
- color: var(--ld-text-main);
2218
- border-color: var(--ld-border-subtle);
2219
- opacity: 1;
2220
- position: relative;
2221
- z-index: 2;
2222
- margin-bottom: -1px;
2223
- }
2224
- .pkg-tab-icon {
2225
- display: inline-block;
2226
- }
2227
- .pkg-tabs-content {
2228
- margin-top: 0 !important;
2229
- border-top-left-radius: 0 !important;
2230
- }
2231
-
2232
- /* src/client/theme/ui/SearchDialog/search.css */
2233
- .boltdocs-search-overlay {
2234
- position: fixed;
2235
- top: 0;
2236
- left: 0;
2237
- right: 0;
2238
- bottom: 0;
2239
- background-color: rgba(0, 0, 0, 0.6);
2240
- backdrop-filter: blur(4px);
2241
- -webkit-backdrop-filter: blur(4px);
2242
- z-index: 999;
2243
- display: flex;
2244
- justify-content: center;
2245
- align-items: flex-start;
2246
- padding-top: 10vh;
2247
- }
2248
- .boltdocs-search-modal {
2249
- width: 100%;
2250
- max-width: 560px;
2251
- background-color: var(--ld-bg-main);
2252
- border: 1px solid var(--ld-border-subtle);
2253
- border-radius: var(--ld-radius-lg);
2254
- box-shadow: 0 16px 64px rgba(0, 0, 0, 0.4);
2255
- overflow: hidden;
2256
- display: flex;
2257
- flex-direction: column;
2258
- animation: boltdocs-search-appear 0.15s ease-out forwards;
2259
- }
2260
- @keyframes boltdocs-search-appear {
2261
- from {
2262
- opacity: 0;
2263
- transform: scale(0.96) translateY(-10px);
2264
- }
2265
- to {
2266
- opacity: 1;
2267
- transform: scale(1) translateY(0);
2268
- }
2269
- }
2270
- .boltdocs-search-header {
2271
- display: flex;
2272
- align-items: center;
2273
- padding: 1rem 1.25rem;
2274
- border-bottom: 1px solid transparent;
2275
- background-color: transparent;
2276
- gap: 0.75rem;
2277
- }
2278
- .boltdocs-search-header svg {
2279
- width: 18px;
2280
- height: 18px;
2281
- color: var(--ld-color-primary);
2282
- opacity: 0.8;
2283
- }
2284
- .boltdocs-search-header input {
2285
- flex: 1;
2286
- background: transparent;
2287
- border: none;
2288
- color: var(--ld-text-main);
2289
- font-size: 1.05rem;
2290
- font-weight: 500;
2291
- font-family: var(--ld-font-sans);
2292
- outline: none;
2293
- box-shadow: none;
2294
- }
2295
- .boltdocs-search-header input::placeholder {
2296
- color: var(--ld-text-dim);
2297
- }
2298
- .boltdocs-search-close {
2299
- background: var(--ld-bg-mute);
2300
- border: 1px solid var(--ld-border-subtle);
2301
- color: var(--ld-text-dim);
2302
- font-size: 0.6875rem;
2303
- padding: 0.2rem 0.4rem;
2304
- border-radius: 4px;
2305
- cursor: pointer;
2306
- font-family: var(--ld-font-sans);
2307
- transition: all 0.2s;
2308
- }
2309
- .boltdocs-search-close:hover {
2310
- background: var(--ld-border-strong);
2311
- color: var(--ld-text-main);
2312
- }
2313
- .boltdocs-search-results {
2314
- max-height: 50vh;
2315
- overflow-y: auto;
2316
- padding: 0.5rem;
2317
- }
2318
- .boltdocs-search-results::-webkit-scrollbar {
2319
- width: 6px;
2320
- }
2321
- .boltdocs-search-results::-webkit-scrollbar-thumb {
2322
- background: var(--ld-bg-mute);
2323
- border-radius: 4px;
2324
- }
2325
- .boltdocs-search-result-item {
2326
- display: flex;
2327
- flex-direction: column;
2328
- padding: 0.75rem 1rem;
2329
- border-radius: var(--ld-radius-md);
2330
- text-decoration: none;
2331
- transition: background-color 0.15s;
2332
- margin-bottom: 2px;
2333
- }
2334
- .boltdocs-search-result-item.is-heading {
2335
- padding-left: 2rem;
2336
- border-left: 2px solid transparent;
2337
- }
2338
- .heading-indicator {
2339
- color: var(--ld-text-muted);
2340
- font-weight: 500;
2341
- margin-right: 0.35rem;
2342
- font-family: var(--ld-font-mono);
2343
- }
2344
- .boltdocs-search-result-item:hover,
2345
- .boltdocs-search-result-item:focus {
2346
- background-color: var(--ld-bg-mute);
2347
- outline: none;
2348
- }
2349
- .boltdocs-search-result-title {
2350
- color: var(--ld-text-main);
2351
- font-weight: 500;
2352
- font-size: 0.95rem;
2353
- }
2354
- .boltdocs-search-result-group {
2355
- color: var(--ld-text-muted);
2356
- font-size: 0.75rem;
2357
- margin-top: 0.15rem;
2358
- }
2359
- .boltdocs-search-empty {
2360
- padding: 2rem;
2361
- text-align: center;
2362
- color: var(--ld-text-dim);
2363
- font-size: 0.9rem;
2364
- }
2365
-
2366
- /* src/client/theme/ui/Layout/pagination.css */
2367
- .page-nav {
2368
- display: grid;
2369
- grid-template-columns: 1fr 1fr;
2370
- gap: 0.75rem;
2371
- margin-top: 2.5rem;
2372
- padding-top: 1.5rem;
2373
- border-top: 1px solid var(--ld-border-subtle);
2374
- }
2375
- .page-nav-link {
2376
- display: flex;
2377
- align-items: center;
2378
- justify-content: space-between;
2379
- gap: 0.75rem;
2380
- padding: 0.875rem 1rem;
2381
- border-radius: var(--ld-radius-md);
2382
- border: 1px solid var(--ld-border-subtle);
2383
- text-decoration: none;
2384
- transition: all 0.2s;
2385
- }
2386
- .page-nav-link:hover {
2387
- border-color: var(--ld-color-primary);
2388
- background-color: var(--ld-color-primary-muted);
2389
- }
2390
- .page-nav-link--prev {
2391
- flex-direction: row-reverse;
2392
- }
2393
- .page-nav-link--next {
2394
- text-align: left;
2395
- }
2396
- .page-nav-info {
2397
- display: flex;
2398
- flex-direction: column;
2399
- gap: 0.15rem;
2400
- min-width: 0;
2401
- }
2402
- .page-nav-label {
2403
- font-size: 0.6875rem;
2404
- font-weight: 600;
2405
- text-transform: uppercase;
2406
- letter-spacing: 0.05em;
2407
- color: var(--ld-text-dim);
2408
- display: block;
2409
- }
2410
- .page-nav-title {
2411
- font-size: 0.8125rem;
2412
- font-weight: 600;
2413
- color: var(--ld-text-main);
2414
- display: block;
2415
- white-space: nowrap;
2416
- overflow: hidden;
2417
- text-overflow: ellipsis;
2418
- }
2419
- .page-nav-arrow {
2420
- color: var(--ld-text-dim);
2421
- flex-shrink: 0;
2422
- transition: color 0.2s;
2423
- }
2424
- .page-nav-link:hover .page-nav-arrow {
2425
- color: var(--ld-color-primary);
2426
- }
2427
-
2428
- /* src/client/theme/ui/NotFound/not-found.css */
2429
- .boltdocs-not-found {
2430
- display: flex;
2431
- align-items: center;
2432
- justify-content: center;
2433
- min-height: 60vh;
2434
- text-align: center;
2435
- padding: 2rem;
2436
- }
2437
- .not-found-content {
2438
- max-width: 420px;
2439
- }
2440
- .not-found-code {
2441
- display: block;
2442
- font-size: 6rem;
2443
- font-weight: 900;
2444
- line-height: 1;
2445
- background:
2446
- linear-gradient(
2447
- 135deg,
2448
- var(--ld-gradient-from),
2449
- var(--ld-gradient-to));
2450
- -webkit-background-clip: text;
2451
- -webkit-text-fill-color: transparent;
2452
- background-clip: text;
2453
- margin-bottom: 0.5rem;
2454
- }
2455
- .not-found-title {
2456
- font-size: 1.5rem;
2457
- font-weight: 700;
2458
- margin: 0 0 0.75rem;
2459
- color: var(--ld-text-main);
2460
- }
2461
- .not-found-text {
2462
- color: var(--ld-text-muted);
2463
- margin-bottom: 1.5rem;
2464
- }
2465
- a.not-found-link {
2466
- display: inline-flex;
2467
- align-items: center;
2468
- gap: 0.5rem;
2469
- padding: 0.6rem 1.5rem;
2470
- background-color: var(--ld-btn-primary-bg);
2471
- color: var(--ld-btn-primary-text) !important;
2472
- border-radius: var(--ld-radius-md);
2473
- text-decoration: none;
2474
- font-weight: 600;
2475
- transition: all 0.2s;
2476
- }
2477
- a.not-found-link:hover {
2478
- background-color: var(--ld-btn-primary-bg);
2479
- opacity: 0.9;
2480
- transform: translateY(-1px);
2481
- box-shadow: 0 4px 16px var(--ld-color-primary-glow);
2482
- color: var(--ld-btn-primary-text) !important;
2483
- }
2484
-
2485
- /* src/client/theme/ui/Loading/loading.css */
2486
- .boltdocs-loading {
2487
- display: flex;
2488
- flex-direction: column;
2489
- align-items: center;
2490
- justify-content: center;
2491
- min-height: 40vh;
2492
- gap: 1rem;
2493
- }
2494
- .loading-spinner {
2495
- width: 2.5rem;
2496
- height: 2.5rem;
2497
- border: 3px solid var(--ld-border-subtle);
2498
- border-top-color: var(--ld-color-primary);
2499
- border-radius: 50%;
2500
- animation: boltdocs-spin 0.7s linear infinite;
2501
- }
2502
- @keyframes boltdocs-spin {
2503
- to {
2504
- transform: rotate(360deg);
2505
- }
2506
- }
2507
- .loading-text {
2508
- font-size: 0.875rem;
2509
- color: var(--ld-text-dim);
2510
- margin: 0;
2511
- }
2512
-
2513
- /* src/client/theme/ui/ErrorBoundary/error-boundary.css */
2514
- .boltdocs-error-boundary {
2515
- display: flex;
2516
- flex-direction: column;
2517
- align-items: center;
2518
- justify-content: center;
2519
- padding: 3rem 2rem;
2520
- margin: 2rem 0;
2521
- background-color: var(--ld-bg-soft);
2522
- border: 1px solid var(--ld-ui-danger-border);
2523
- border-radius: var(--ld-radius-lg);
2524
- text-align: center;
2525
- backdrop-filter: blur(8px);
2526
- -webkit-backdrop-filter: blur(8px);
2527
- }
2528
- .boltdocs-error-title {
2529
- font-size: 1.5rem;
2530
- font-weight: 700;
2531
- color: var(--ld-ui-danger-text);
2532
- margin-bottom: 0.75rem;
2533
- font-family: var(--ld-font-sans);
2534
- }
2535
- .boltdocs-error-message {
2536
- font-size: 1rem;
2537
- color: var(--ld-text-muted);
2538
- max-width: 100%;
2539
- margin-bottom: 1.5rem;
2540
- line-height: 1.6;
2541
- overflow-wrap: break-word;
2542
- word-break: break-word;
2543
- }
2544
- .boltdocs-error-retry {
2545
- padding: 0.6rem 1.25rem;
2546
- background-color: var(--ld-ui-btn-primary-bg);
2547
- color: var(--ld-ui-btn-primary-text);
2548
- border: none;
2549
- border-radius: var(--ld-radius-full);
2550
- font-size: 0.875rem;
2551
- font-weight: 600;
2552
- cursor: pointer;
2553
- transition: all 0.2s ease;
2554
- box-shadow: 0 4px 12px var(--ld-color-primary-glow);
2555
- }
2556
- .boltdocs-error-retry:hover {
2557
- background-color: var(--ld-color-primary-hover);
2558
- transform: translateY(-1px);
2559
- box-shadow: 0 6px 16px var(--ld-color-primary-glow);
2560
- }
2561
- .boltdocs-error-retry:active {
2562
- transform: translateY(0);
2563
- }
2564
-
2565
- /* src/client/theme/components/Playground/playground.css */
2566
- .boltdocs-playground {
2567
- display: flex;
2568
- flex-direction: column;
2569
- margin: 2rem 0;
2570
- border-radius: var(--ld-radius-lg);
2571
- border: 1px solid var(--ld-border-subtle);
2572
- background: var(--ld-code-bg);
2573
- overflow: hidden;
2574
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
2575
- backdrop-filter: blur(10px);
2576
- }
2577
- .playground-split-container {
2578
- display: flex;
2579
- flex-direction: column;
2580
- width: 100%;
2581
- }
2582
- .playground-panel {
2583
- display: flex;
2584
- flex-direction: column;
2585
- flex: 1;
2586
- min-width: 0;
2587
- }
2588
- .playground-editor-panel {
2589
- border-top: 1px solid var(--ld-border-subtle);
2590
- background: var(--ld-code-bg);
2591
- position: relative;
2592
- }
2593
- .boltdocs-playground.is-truncated .playground-editor {
2594
- max-height: 250px;
2595
- overflow: hidden;
2596
- }
2597
- .boltdocs-playground[data-readonly=true]:not(.is-truncated) .playground-editor {
2598
- max-height: 600px;
2599
- }
2600
- .playground-expand-wrapper {
2601
- position: absolute;
2602
- bottom: 0;
2603
- left: 0;
2604
- right: 0;
2605
- height: 80px;
2606
- background:
2607
- linear-gradient(
2608
- to top,
2609
- var(--ld-code-bg) 20%,
2610
- transparent);
2611
- display: flex;
2612
- align-items: flex-end;
2613
- justify-content: center;
2614
- padding-bottom: 1rem;
2615
- z-index: 10;
2616
- }
2617
- .playground-expand-btn {
2618
- background-color: var(--ld-surface);
2619
- border: 1px solid var(--ld-border-subtle);
2620
- border-radius: 20px;
2621
- color: var(--ld-text-main);
2622
- padding: 0.5rem 1.25rem;
2623
- font-size: 0.8125rem;
2624
- font-weight: 500;
2625
- cursor: pointer;
2626
- transition: all 0.2s ease;
2627
- backdrop-filter: blur(8px);
2628
- -webkit-backdrop-filter: blur(8px);
2629
- }
2630
- .playground-expand-btn:hover {
2631
- background-color: var(--ld-border-subtle);
2632
- transform: translateY(-1px);
2633
- }
2634
- .boltdocs-playground:not(.is-truncated) .playground-expand-wrapper {
2635
- position: relative;
2636
- height: auto;
2637
- background: none;
2638
- display: flex;
2639
- justify-content: center;
2640
- padding: 1rem 0;
2641
- border-top: 1px solid var(--ld-border-subtle);
2642
- }
2643
- .playground-preview-panel {
2644
- background: var(--ld-bg-mute);
2645
- position: relative;
2646
- }
2647
- .playground-panel-header {
2648
- display: flex;
2649
- align-items: center;
2650
- justify-content: space-between;
2651
- padding: 0.5rem 1rem;
2652
- border-bottom: 1px solid var(--ld-border-subtle);
2653
- background: rgba(0, 0, 0, 0.1);
2654
- }
2655
- .playground-panel-title {
2656
- display: flex;
2657
- align-items: center;
2658
- gap: 0.5rem;
2659
- font-size: 0.75rem;
2660
- font-weight: 600;
2661
- color: var(--ld-text-muted);
2662
- text-transform: uppercase;
2663
- letter-spacing: 0.05em;
2664
- }
2665
- .playground-copy-btn {
2666
- background: transparent;
2667
- border: none;
2668
- color: var(--ld-text-muted);
2669
- cursor: pointer;
2670
- padding: 0.25rem;
2671
- border-radius: var(--ld-radius-sm);
2672
- display: flex;
2673
- align-items: center;
2674
- justify-content: center;
2675
- transition: all 0.2s;
2676
- }
2677
- .playground-copy-btn:hover {
2678
- background: rgba(255, 255, 255, 0.1);
2679
- color: var(--ld-text-main);
2680
- }
2681
- .playground-panel-content {
2682
- flex: 1;
2683
- overflow: auto;
2684
- position: relative;
2685
- display: flex;
2686
- flex-direction: column;
2687
- }
2688
- .playground-editor {
2689
- background: transparent;
2690
- }
2691
- .playground-editor > div {
2692
- font-family: var(--ld-font-mono) !important;
2693
- font-size: 0.85rem !important;
2694
- line-height: 1.5 !important;
2695
- min-height: 100%;
2696
- }
2697
- .playground-editor pre {
2698
- padding: 1.5rem !important;
2699
- margin: 0 !important;
2700
- background: transparent !important;
2701
- }
2702
- .playground-editor textarea {
2703
- outline: none !important;
2704
- padding: 1.5rem !important;
2705
- }
2706
- .boltdocs-playground[data-readonly=true] .playground-editor textarea {
2707
- cursor: default !important;
2708
- }
2709
- .playground-preview {
2710
- padding: 2.5rem;
2711
- display: flex;
2712
- align-items: center;
2713
- justify-content: center;
2714
- background-color: #000;
2715
- background-image: radial-gradient(rgba(255, 255, 255, 0.05) 1.5px, transparent 1.5px);
2716
- background-size: 24px 24px;
2717
- color: var(--ld-text-main);
2718
- min-height: 300px;
2719
- }
2720
- .playground-error {
2721
- margin: 0;
2722
- padding: 1rem;
2723
- background: #7f1d1d;
2724
- color: #fca5a5;
2725
- font-size: 0.8rem;
2726
- font-family: var(--ld-font-mono);
2727
- white-space: pre-wrap;
2728
- border-top: 1px solid #991b1b;
2729
- z-index: 10;
2730
- }
2731
- .playground-skeleton {
2732
- height: 350px;
2733
- background: var(--ld-bg-mute);
2734
- border-radius: var(--ld-radius-lg);
2735
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2736
- margin: 2rem 0;
2737
- border: 1px solid var(--ld-border-subtle);
2738
- }
2739
- .playground-copy-btn-inner {
2740
- position: absolute;
2741
- top: 1rem;
2742
- right: 1.5rem;
2743
- z-index: 20;
2744
- display: flex;
2745
- align-items: center;
2746
- justify-content: center;
2747
- width: 32px;
2748
- height: 32px;
2749
- border-radius: 6px;
2750
- border: 1px solid var(--ld-border-subtle);
2751
- background: var(--ld-surface);
2752
- color: var(--ld-text-dim);
2753
- cursor: pointer;
2754
- transition: all 0.2s ease;
2755
- backdrop-filter: blur(8px);
2756
- -webkit-backdrop-filter: blur(8px);
2757
- }
2758
- .playground-copy-btn-inner:hover {
2759
- background: var(--ld-border-subtle);
2760
- color: var(--ld-text-main);
2761
- transform: translateY(-1px);
2762
- }
2763
- .playground-static-code {
2764
- display: none;
2765
- }
2766
-
2767
- /* src/client/theme/ui/Layout/responsive.css */
2768
- @media (max-width: 1100px) {
2769
- .boltdocs-on-this-page {
2770
- display: none;
2771
- }
2772
- }
2773
- @media (max-width: 768px) {
2774
- .boltdocs-sidebar {
2775
- display: none;
2776
- }
2777
- .boltdocs-content {
2778
- padding: 1.5rem 1rem 3rem;
2779
- }
2780
- .hero-title {
2781
- font-size: 2.25rem;
2782
- }
2783
- .boltdocs-page h1 {
2784
- padding-right: 0;
2785
- }
2786
- .boltdocs-page-header {
2787
- position: static;
2788
- justify-content: flex-start;
2789
- margin-bottom: 1rem;
2790
- padding: 0;
2791
- }
2792
- .ld-cards--2,
2793
- .ld-cards--3,
2794
- .ld-cards--4 {
2795
- grid-template-columns: 1fr;
2796
- }
2797
- .navbar-search {
2798
- display: none;
2799
- }
2800
- .page-nav {
2801
- flex-direction: column;
2802
- }
2803
- }
2804
-
2805
- /* src/client/theme/styles.css */
2806
-
2807
- /* src/client/theme/ui/Link/link-preview.css */
2808
- .boltdocs-link-preview {
2809
- position: fixed;
2810
- z-index: 1000;
2811
- width: 260px;
2812
- pointer-events: none;
2813
- opacity: 0;
2814
- transform: translateY(8px) scale(0.98);
2815
- transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1), transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
2816
- font-family: var(--ld-font-sans);
2817
- }
2818
- .boltdocs-link-preview.is-visible {
2819
- opacity: 1;
2820
- transform: translateY(0) scale(1);
2821
- }
2822
- .boltdocs-link-preview-content {
2823
- padding: 0.85rem 1rem;
2824
- background-color: var(--ld-navbar-bg);
2825
- border: 1px solid var(--ld-border-subtle);
2826
- border-radius: var(--ld-radius-lg);
2827
- box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.2), 0 4px 10px -5px rgba(0, 0, 0, 0.1);
2828
- }
2829
- .boltdocs-link-preview-title {
2830
- display: block;
2831
- font-weight: 600;
2832
- font-size: 0.875rem;
2833
- color: var(--ld-text-main);
2834
- margin-bottom: 0.35rem;
2835
- line-height: 1.3;
2836
- }
2837
- .boltdocs-link-preview-summary {
2838
- display: block;
2839
- font-size: 0.775rem;
2840
- color: var(--ld-text-muted);
2841
- line-height: 1.5;
2842
- display: -webkit-box;
2843
- -webkit-line-clamp: 3;
2844
- line-clamp: 3;
2845
- -webkit-box-orient: vertical;
2846
- overflow: hidden;
2847
- }