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