vitepress 2.0.0-alpha.2 → 2.0.0-alpha.21

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 (286) hide show
  1. package/README.md +34 -2
  2. package/THIRD-PARTY-NOTICES.md +1736 -0
  3. package/bin/vitepress.js +14 -0
  4. package/client.d.ts +9 -0
  5. package/dist/client/app/components/ClientOnly.d.ts +5 -0
  6. package/dist/client/app/components/ClientOnly.js +11 -10
  7. package/dist/client/app/components/Content.d.ts +17 -0
  8. package/dist/client/app/components/Content.js +25 -22
  9. package/dist/client/app/composables/codeGroups.d.ts +3 -0
  10. package/dist/client/app/composables/codeGroups.js +36 -39
  11. package/dist/client/app/composables/copyCode.d.ts +3 -0
  12. package/dist/client/app/composables/copyCode.js +59 -70
  13. package/dist/client/app/composables/head.d.ts +5 -0
  14. package/dist/client/app/composables/head.js +56 -74
  15. package/dist/client/app/composables/icon.d.ts +12 -0
  16. package/dist/client/app/composables/icon.js +56 -0
  17. package/dist/client/app/composables/preFetch.d.ts +3 -0
  18. package/dist/client/app/composables/preFetch.js +64 -96
  19. package/dist/client/app/data.d.ts +9 -0
  20. package/dist/client/app/data.js +34 -59
  21. package/dist/client/app/devtools.d.ts +7 -0
  22. package/dist/client/app/devtools.js +29 -28
  23. package/dist/client/app/index.d.ts +11 -0
  24. package/dist/client/app/index.js +106 -131
  25. package/dist/client/app/router.d.ts +49 -0
  26. package/dist/client/app/router.js +198 -239
  27. package/dist/client/app/ssr.d.ts +4 -0
  28. package/dist/client/app/ssr.js +14 -9
  29. package/dist/client/app/theme.d.ts +24 -0
  30. package/dist/client/app/theme.js +0 -1
  31. package/dist/client/app/utils.d.ts +35 -0
  32. package/dist/client/app/utils.js +77 -110
  33. package/dist/client/index.d.ts +21 -137
  34. package/dist/client/index.js +8 -9
  35. package/dist/client/shared.d.ts +88 -0
  36. package/dist/client/shared.js +265 -141
  37. package/dist/client/theme-default/Layout.d.vue.ts +79 -0
  38. package/dist/client/theme-default/Layout.vue +33 -36
  39. package/dist/client/theme-default/NotFound.d.vue.ts +3 -0
  40. package/dist/client/theme-default/NotFound.vue +33 -35
  41. package/dist/client/theme-default/components/VPAlgoliaSearchBox.d.vue.ts +11 -0
  42. package/dist/client/theme-default/components/VPAlgoliaSearchBox.vue +202 -70
  43. package/dist/client/theme-default/components/VPBackdrop.d.vue.ts +6 -0
  44. package/dist/client/theme-default/components/VPBackdrop.vue +8 -12
  45. package/dist/client/theme-default/components/VPBadge.d.vue.ts +19 -0
  46. package/dist/client/theme-default/components/VPBadge.vue +49 -26
  47. package/dist/client/theme-default/components/VPButton.d.vue.ts +25 -0
  48. package/dist/client/theme-default/components/VPButton.vue +53 -36
  49. package/dist/client/theme-default/components/VPCarbonAds.d.vue.ts +7 -0
  50. package/dist/client/theme-default/components/VPCarbonAds.vue +51 -52
  51. package/dist/client/theme-default/components/VPContent.d.vue.ts +59 -0
  52. package/dist/client/theme-default/components/VPContent.vue +27 -26
  53. package/dist/client/theme-default/components/VPDoc.d.vue.ts +33 -0
  54. package/dist/client/theme-default/components/VPDoc.vue +52 -48
  55. package/dist/client/theme-default/components/VPDocAside.d.vue.ts +23 -0
  56. package/dist/client/theme-default/components/VPDocAside.vue +7 -8
  57. package/dist/client/theme-default/components/VPDocAsideCarbonAds.d.vue.ts +7 -0
  58. package/dist/client/theme-default/components/VPDocAsideCarbonAds.vue +7 -11
  59. package/dist/client/theme-default/components/VPDocAsideOutline.d.vue.ts +3 -0
  60. package/dist/client/theme-default/components/VPDocAsideOutline.vue +22 -38
  61. package/dist/client/theme-default/components/VPDocAsideSponsors.d.vue.ts +10 -0
  62. package/dist/client/theme-default/components/VPDocAsideSponsors.vue +17 -11
  63. package/dist/client/theme-default/components/VPDocFooter.d.vue.ts +13 -0
  64. package/dist/client/theme-default/components/VPDocFooter.vue +38 -45
  65. package/dist/client/theme-default/components/VPDocFooterLastUpdated.d.vue.ts +3 -0
  66. package/dist/client/theme-default/components/VPDocFooterLastUpdated.vue +30 -29
  67. package/dist/client/theme-default/components/VPDocOutlineItem.d.vue.ts +8 -0
  68. package/dist/client/theme-default/components/VPDocOutlineItem.vue +20 -19
  69. package/dist/client/theme-default/components/VPFeature.d.vue.ts +13 -0
  70. package/dist/client/theme-default/components/VPFeature.vue +62 -36
  71. package/dist/client/theme-default/components/VPFeatures.d.vue.ts +16 -0
  72. package/dist/client/theme-default/components/VPFeatures.vue +35 -48
  73. package/dist/client/theme-default/components/VPFlyout.d.vue.ts +26 -0
  74. package/dist/client/theme-default/components/VPFlyout.vue +111 -47
  75. package/dist/client/theme-default/components/VPFooter.d.vue.ts +3 -0
  76. package/dist/client/theme-default/components/VPFooter.vue +22 -15
  77. package/dist/client/theme-default/components/VPHero.d.vue.ts +38 -0
  78. package/dist/client/theme-default/components/VPHero.vue +109 -99
  79. package/dist/client/theme-default/components/VPHome.d.vue.ts +31 -0
  80. package/dist/client/theme-default/components/VPHome.vue +15 -15
  81. package/dist/client/theme-default/components/VPHomeContent.d.vue.ts +13 -0
  82. package/dist/client/theme-default/components/VPHomeContent.vue +9 -27
  83. package/dist/client/theme-default/components/VPHomeFeatures.d.vue.ts +3 -0
  84. package/dist/client/theme-default/components/VPHomeFeatures.vue +4 -5
  85. package/dist/client/theme-default/components/VPHomeHero.d.vue.ts +23 -0
  86. package/dist/client/theme-default/components/VPHomeHero.vue +5 -5
  87. package/dist/client/theme-default/components/VPHomeSponsors.d.vue.ts +21 -0
  88. package/dist/client/theme-default/components/VPHomeSponsors.vue +42 -43
  89. package/dist/client/theme-default/components/VPIcon.d.vue.ts +8 -0
  90. package/dist/client/theme-default/components/VPIcon.vue +29 -0
  91. package/dist/client/theme-default/components/VPImage.d.vue.ts +8 -0
  92. package/dist/client/theme-default/components/VPImage.vue +20 -14
  93. package/dist/client/theme-default/components/VPLink.d.vue.ts +23 -0
  94. package/dist/client/theme-default/components/VPLink.vue +42 -23
  95. package/dist/client/theme-default/components/VPLocalNav.d.vue.ts +10 -0
  96. package/dist/client/theme-default/components/VPLocalNav.vue +69 -86
  97. package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.d.vue.ts +8 -0
  98. package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.vue +98 -96
  99. package/dist/client/theme-default/components/VPLocalSearchBox.d.vue.ts +7 -0
  100. package/dist/client/theme-default/components/VPLocalSearchBox.vue +391 -454
  101. package/dist/client/theme-default/components/VPMenu.d.vue.ts +23 -0
  102. package/dist/client/theme-default/components/VPMenu.vue +19 -31
  103. package/dist/client/theme-default/components/VPMenuGroup.d.vue.ts +22 -0
  104. package/dist/client/theme-default/components/VPMenuGroup.vue +72 -18
  105. package/dist/client/theme-default/components/VPMenuLink.d.vue.ts +22 -0
  106. package/dist/client/theme-default/components/VPMenuLink.vue +65 -31
  107. package/dist/client/theme-default/components/VPNav.d.vue.ts +23 -0
  108. package/dist/client/theme-default/components/VPNav.vue +18 -24
  109. package/dist/client/theme-default/components/VPNavAppearance.d.vue.ts +9 -0
  110. package/dist/client/theme-default/components/VPNavAppearance.vue +88 -0
  111. package/dist/client/theme-default/components/VPNavBar.d.vue.ts +26 -0
  112. package/dist/client/theme-default/components/VPNavBar.vue +170 -142
  113. package/dist/client/theme-default/components/VPNavBarAskAiButton.d.vue.ts +3 -0
  114. package/dist/client/theme-default/components/VPNavBarAskAiButton.vue +31 -0
  115. package/dist/client/theme-default/components/VPNavBarExtra.d.vue.ts +3 -0
  116. package/dist/client/theme-default/components/VPNavBarExtra.vue +51 -73
  117. package/dist/client/theme-default/components/VPNavBarHamburger.d.vue.ts +10 -0
  118. package/dist/client/theme-default/components/VPNavBarHamburger.vue +38 -28
  119. package/dist/client/theme-default/components/VPNavBarSearch.d.vue.ts +3 -0
  120. package/dist/client/theme-default/components/VPNavBarSearch.vue +129 -160
  121. package/dist/client/theme-default/components/VPNavBarSearchButton.d.vue.ts +6 -0
  122. package/dist/client/theme-default/components/VPNavBarSearchButton.vue +48 -182
  123. package/dist/client/theme-default/components/VPNavBarTitle.d.vue.ts +15 -0
  124. package/dist/client/theme-default/components/VPNavBarTitle.vue +39 -38
  125. package/dist/client/theme-default/components/VPNavMenu.d.vue.ts +6 -0
  126. package/dist/client/theme-default/components/VPNavMenu.vue +76 -0
  127. package/dist/client/theme-default/components/VPNavMenuGroup.d.vue.ts +11 -0
  128. package/dist/client/theme-default/components/VPNavMenuGroup.vue +140 -0
  129. package/dist/client/theme-default/components/VPNavMenuLink.d.vue.ts +8 -0
  130. package/dist/client/theme-default/components/VPNavMenuLink.vue +69 -0
  131. package/dist/client/theme-default/components/VPNavScreen.d.vue.ts +18 -0
  132. package/dist/client/theme-default/components/VPNavScreen.vue +36 -34
  133. package/dist/client/theme-default/components/VPNavSocialLinks.d.vue.ts +6 -0
  134. package/dist/client/theme-default/components/VPNavSocialLinks.vue +36 -0
  135. package/dist/client/theme-default/components/VPNavTranslations.d.vue.ts +9 -0
  136. package/dist/client/theme-default/components/VPNavTranslations.vue +170 -0
  137. package/dist/client/theme-default/components/VPPage.d.vue.ts +15 -0
  138. package/dist/client/theme-default/components/VPSidebar.d.vue.ts +18 -0
  139. package/dist/client/theme-default/components/VPSidebar.vue +40 -53
  140. package/dist/client/theme-default/components/VPSidebarGroup.d.vue.ts +7 -0
  141. package/dist/client/theme-default/components/VPSidebarGroup.vue +24 -29
  142. package/dist/client/theme-default/components/VPSidebarItem.d.vue.ts +8 -0
  143. package/dist/client/theme-default/components/VPSidebarItem.vue +60 -93
  144. package/dist/client/theme-default/components/VPSkipLink.d.vue.ts +6 -0
  145. package/dist/client/theme-default/components/VPSkipLink.vue +23 -42
  146. package/dist/client/theme-default/components/VPSocialLink.d.vue.ts +11 -0
  147. package/dist/client/theme-default/components/VPSocialLink.vue +42 -49
  148. package/dist/client/theme-default/components/VPSocialLinks.d.vue.ts +10 -0
  149. package/dist/client/theme-default/components/VPSocialLinks.vue +26 -16
  150. package/dist/client/theme-default/components/VPSponsors.d.vue.ts +18 -0
  151. package/dist/client/theme-default/components/VPSponsors.vue +34 -33
  152. package/dist/client/theme-default/components/VPSponsorsGrid.d.vue.ts +15 -0
  153. package/dist/client/theme-default/components/VPSponsorsGrid.vue +23 -26
  154. package/dist/client/theme-default/components/VPSwitch.d.vue.ts +13 -0
  155. package/dist/client/theme-default/components/VPSwitch.vue +12 -13
  156. package/dist/client/theme-default/components/VPSwitchAppearance.d.vue.ts +3 -0
  157. package/dist/client/theme-default/components/VPSwitchAppearance.vue +16 -21
  158. package/dist/client/theme-default/components/VPTeamMembers.d.vue.ts +10 -0
  159. package/dist/client/theme-default/components/VPTeamMembers.vue +59 -32
  160. package/dist/client/theme-default/components/VPTeamMembersItem.d.vue.ts +10 -0
  161. package/dist/client/theme-default/components/VPTeamMembersItem.vue +62 -58
  162. package/dist/client/theme-default/components/VPTeamPage.d.vue.ts +13 -0
  163. package/dist/client/theme-default/components/VPTeamPage.vue +14 -14
  164. package/dist/client/theme-default/components/VPTeamPageSection.d.vue.ts +17 -0
  165. package/dist/client/theme-default/components/VPTeamPageSection.vue +20 -19
  166. package/dist/client/theme-default/components/VPTeamPageTitle.d.vue.ts +15 -0
  167. package/dist/client/theme-default/components/VPTeamPageTitle.vue +22 -22
  168. package/dist/client/theme-default/composables/data.d.ts +5 -0
  169. package/dist/client/theme-default/composables/data.js +5 -2
  170. package/dist/client/theme-default/composables/edit-link.d.ts +6 -0
  171. package/dist/client/theme-default/composables/edit-link.js +17 -15
  172. package/dist/client/theme-default/composables/flyout.d.ts +10 -0
  173. package/dist/client/theme-default/composables/flyout.js +33 -32
  174. package/dist/client/theme-default/composables/langs.d.ts +44 -0
  175. package/dist/client/theme-default/composables/langs.js +48 -24
  176. package/dist/client/theme-default/composables/layout.d.ts +13 -0
  177. package/dist/client/theme-default/composables/layout.js +68 -0
  178. package/dist/client/theme-default/composables/nav-overflow.d.ts +54 -0
  179. package/dist/client/theme-default/composables/nav-overflow.js +179 -0
  180. package/dist/client/theme-default/composables/nav.d.ts +25 -0
  181. package/dist/client/theme-default/composables/nav.js +58 -29
  182. package/dist/client/theme-default/composables/outline.d.ts +8 -0
  183. package/dist/client/theme-default/composables/outline.js +144 -166
  184. package/dist/client/theme-default/composables/prev-next.d.ts +16 -0
  185. package/dist/client/theme-default/composables/prev-next.js +34 -56
  186. package/dist/client/theme-default/composables/scroll-lock.d.ts +4 -0
  187. package/dist/client/theme-default/composables/scroll-lock.js +95 -0
  188. package/dist/client/theme-default/composables/sidebar.d.ts +25 -0
  189. package/dist/client/theme-default/composables/sidebar.js +96 -133
  190. package/dist/client/theme-default/composables/sponsor-grid.d.ts +10 -0
  191. package/dist/client/theme-default/composables/sponsor-grid.js +69 -76
  192. package/dist/client/theme-default/fonts/inter-italic-cyrillic-ext.woff2 +0 -0
  193. package/dist/client/theme-default/fonts/inter-italic-cyrillic.woff2 +0 -0
  194. package/dist/client/theme-default/fonts/inter-italic-greek-ext.woff2 +0 -0
  195. package/dist/client/theme-default/fonts/inter-italic-greek.woff2 +0 -0
  196. package/dist/client/theme-default/fonts/inter-italic-latin-ext.woff2 +0 -0
  197. package/dist/client/theme-default/fonts/inter-italic-latin.woff2 +0 -0
  198. package/dist/client/theme-default/fonts/inter-italic-symbols.woff2 +0 -0
  199. package/dist/client/theme-default/fonts/inter-italic-vietnamese.woff2 +0 -0
  200. package/dist/client/theme-default/fonts/inter-roman-cyrillic-ext.woff2 +0 -0
  201. package/dist/client/theme-default/fonts/inter-roman-cyrillic.woff2 +0 -0
  202. package/dist/client/theme-default/fonts/inter-roman-greek-ext.woff2 +0 -0
  203. package/dist/client/theme-default/fonts/inter-roman-greek.woff2 +0 -0
  204. package/dist/client/theme-default/fonts/inter-roman-latin-ext.woff2 +0 -0
  205. package/dist/client/theme-default/fonts/inter-roman-latin.woff2 +0 -0
  206. package/dist/client/theme-default/fonts/inter-roman-symbols.woff2 +0 -0
  207. package/dist/client/theme-default/fonts/inter-roman-vietnamese.woff2 +0 -0
  208. package/dist/client/theme-default/index.d.ts +3 -0
  209. package/dist/client/theme-default/index.js +4 -3
  210. package/dist/client/theme-default/styles/base.css +279 -211
  211. package/dist/client/theme-default/styles/components/custom-block.css +12 -7
  212. package/dist/client/theme-default/styles/components/vp-code-group.css +13 -16
  213. package/dist/client/theme-default/styles/components/vp-code.css +10 -2
  214. package/dist/client/theme-default/styles/components/vp-doc.css +188 -142
  215. package/dist/client/theme-default/styles/components/vp-sponsor.css +48 -37
  216. package/dist/client/theme-default/styles/docsearch.css +138 -0
  217. package/dist/client/theme-default/styles/fonts.css +216 -55
  218. package/dist/client/theme-default/styles/icons.css +42 -22
  219. package/dist/client/theme-default/styles/vars.css +111 -46
  220. package/dist/client/theme-default/support/docsearch.d.ts +57 -0
  221. package/dist/client/theme-default/support/docsearch.js +145 -0
  222. package/dist/client/theme-default/support/local-search.d.ts +9 -0
  223. package/dist/client/theme-default/support/local-search.js +31 -0
  224. package/dist/client/theme-default/support/lru.d.ts +11 -0
  225. package/dist/client/theme-default/support/lru.js +30 -33
  226. package/dist/client/theme-default/support/reactivity.d.ts +4 -0
  227. package/dist/client/theme-default/support/reactivity.js +10 -0
  228. package/dist/client/theme-default/support/sidebar.d.ts +27 -0
  229. package/dist/client/theme-default/support/sidebar.js +69 -80
  230. package/dist/client/theme-default/support/translation.d.ts +6 -0
  231. package/dist/client/theme-default/support/translation.js +33 -47
  232. package/dist/client/theme-default/support/utils.d.ts +7 -0
  233. package/dist/client/theme-default/support/utils.js +39 -30
  234. package/dist/client/theme-default/without-fonts.d.ts +25 -0
  235. package/dist/client/theme-default/without-fonts.js +37 -36
  236. package/dist/node/chunk-BjrVv9r8.js +28627 -0
  237. package/dist/node/cli.d.ts +1 -0
  238. package/dist/node/cli.js +160 -423
  239. package/dist/node/index.d.ts +1761 -2476
  240. package/dist/node/index.js +1 -121
  241. package/dist/web-types.json +75 -0
  242. package/package.json +89 -98
  243. package/template/.vitepress/config.js +3 -1
  244. package/template/.vitepress/theme/style.css +3 -11
  245. package/theme.d.ts +30 -23
  246. package/types/default-theme.d.ts +109 -113
  247. package/types/docsearch.d.ts +61 -142
  248. package/types/shared.d.ts +469 -50
  249. package/dist/client/theme-default/components/VPNavBarAppearance.vue +0 -32
  250. package/dist/client/theme-default/components/VPNavBarMenu.vue +0 -40
  251. package/dist/client/theme-default/components/VPNavBarMenuGroup.vue +0 -42
  252. package/dist/client/theme-default/components/VPNavBarMenuLink.vue +0 -53
  253. package/dist/client/theme-default/components/VPNavBarSocialLinks.vue +0 -27
  254. package/dist/client/theme-default/components/VPNavBarTranslations.vue +0 -47
  255. package/dist/client/theme-default/components/VPNavScreenAppearance.vue +0 -40
  256. package/dist/client/theme-default/components/VPNavScreenMenu.vue +0 -26
  257. package/dist/client/theme-default/components/VPNavScreenMenuGroup.vue +0 -112
  258. package/dist/client/theme-default/components/VPNavScreenMenuGroupLink.vue +0 -40
  259. package/dist/client/theme-default/components/VPNavScreenMenuGroupSection.vue +0 -34
  260. package/dist/client/theme-default/components/VPNavScreenMenuLink.vue +0 -43
  261. package/dist/client/theme-default/components/VPNavScreenSocialLinks.vue +0 -14
  262. package/dist/client/theme-default/components/VPNavScreenTranslations.vue +0 -73
  263. package/dist/client/theme-default/components/icons/VPIconAlignJustify.vue +0 -8
  264. package/dist/client/theme-default/components/icons/VPIconAlignLeft.vue +0 -8
  265. package/dist/client/theme-default/components/icons/VPIconAlignRight.vue +0 -8
  266. package/dist/client/theme-default/components/icons/VPIconArrowLeft.vue +0 -7
  267. package/dist/client/theme-default/components/icons/VPIconArrowRight.vue +0 -7
  268. package/dist/client/theme-default/components/icons/VPIconChevronDown.vue +0 -5
  269. package/dist/client/theme-default/components/icons/VPIconChevronLeft.vue +0 -5
  270. package/dist/client/theme-default/components/icons/VPIconChevronRight.vue +0 -5
  271. package/dist/client/theme-default/components/icons/VPIconChevronUp.vue +0 -5
  272. package/dist/client/theme-default/components/icons/VPIconEdit.vue +0 -6
  273. package/dist/client/theme-default/components/icons/VPIconHeart.vue +0 -5
  274. package/dist/client/theme-default/components/icons/VPIconLanguages.vue +0 -9
  275. package/dist/client/theme-default/components/icons/VPIconMinus.vue +0 -5
  276. package/dist/client/theme-default/components/icons/VPIconMinusSquare.vue +0 -6
  277. package/dist/client/theme-default/components/icons/VPIconMoon.vue +0 -5
  278. package/dist/client/theme-default/components/icons/VPIconMoreHorizontal.vue +0 -7
  279. package/dist/client/theme-default/components/icons/VPIconPlus.vue +0 -5
  280. package/dist/client/theme-default/components/icons/VPIconPlusSquare.vue +0 -6
  281. package/dist/client/theme-default/components/icons/VPIconSun.vue +0 -13
  282. package/dist/client/theme-default/composables/aside.js +0 -17
  283. package/dist/client/theme-default/composables/local-nav.js +0 -18
  284. package/dist/node/chunk-C-d2RJOW.js +0 -470
  285. package/dist/node/chunk-CxQfvv8o.js +0 -49065
  286. package/dist/node/worker_shikiResolveLang.js +0 -13
@@ -1,31 +1,31 @@
1
- <script setup lang="ts">
2
- import { withBase } from 'vitepress'
3
- import { useData } from './composables/data'
4
- import { useLangs } from './composables/langs'
5
-
6
- const { theme } = useData()
7
- const { currentLang } = useLangs()
1
+ <script setup>
2
+ import { withBase } from "vitepress";
3
+ import { useData } from "./composables/data";
4
+ import { useLangs } from "./composables/langs";
5
+ const { theme } = useData();
6
+ const { currentLang } = useLangs();
8
7
  </script>
9
8
 
10
9
  <template>
11
10
  <div class="NotFound">
12
- <p class="code">{{ theme.notFound?.code ?? '404' }}</p>
13
- <h1 class="title">{{ theme.notFound?.title ?? 'PAGE NOT FOUND' }}</h1>
11
+ <p class="code">{{ theme.notFound?.code ?? "404" }}</p>
12
+ <h1 class="title">
13
+ <bdi>{{ theme.notFound?.title ?? "PAGE NOT FOUND" }}</bdi>
14
+ </h1>
14
15
  <div class="divider" />
15
16
  <blockquote class="quote">
16
- {{
17
- theme.notFound?.quote ??
18
- "But if you don't change your direction, and if you keep looking, you may end up where you are heading."
19
- }}
17
+ <bdi>{{
18
+ theme.notFound?.quote ?? "But if you don't change your direction, and if you keep looking, you may end up where you are heading."
19
+ }}</bdi>
20
20
  </blockquote>
21
21
 
22
22
  <div class="action">
23
23
  <a
24
24
  class="link"
25
- :href="withBase(currentLang.link)"
25
+ :href="withBase(theme.notFound?.link ?? currentLang.link)"
26
26
  :aria-label="theme.notFound?.linkLabel ?? 'go to home'"
27
27
  >
28
- {{ theme.notFound?.linkText ?? 'Take me home' }}
28
+ <bdi>{{ theme.notFound?.linkText ?? "Take me home" }}</bdi>
29
29
  </a>
30
30
  </div>
31
31
  </div>
@@ -33,60 +33,58 @@ const { currentLang } = useLangs()
33
33
 
34
34
  <style scoped>
35
35
  .NotFound {
36
- padding: 64px 24px 96px;
36
+ padding: 4rem 1.5rem 6rem;
37
37
  text-align: center;
38
38
  }
39
39
 
40
- @media (min-width: 768px) {
40
+ @media (min-width: 48rem) {
41
41
  .NotFound {
42
- padding: 96px 32px 168px;
42
+ padding: 6rem 2rem 10.5rem;
43
43
  }
44
44
  }
45
45
 
46
46
  .code {
47
- line-height: 64px;
48
- font-size: 64px;
47
+ line-height: 1;
48
+ font-size: 4rem;
49
49
  font-weight: 600;
50
50
  }
51
51
 
52
52
  .title {
53
- padding-top: 12px;
54
- letter-spacing: 2px;
55
- line-height: 20px;
56
- font-size: 20px;
53
+ padding-top: 0.75rem;
54
+ letter-spacing: 0.1em;
55
+ line-height: 1;
56
+ font-size: 1.25rem;
57
57
  font-weight: 700;
58
58
  }
59
59
 
60
60
  .divider {
61
- margin: 24px auto 18px;
62
- width: 64px;
61
+ margin: 1.5rem auto 1.125rem;
62
+ width: 4rem;
63
63
  height: 1px;
64
64
  background-color: var(--vp-c-divider);
65
65
  }
66
66
 
67
67
  .quote {
68
68
  margin: 0 auto;
69
- max-width: 256px;
70
- font-size: 14px;
69
+ max-width: 16rem;
70
+ font-size: 0.875rem;
71
71
  font-weight: 500;
72
72
  color: var(--vp-c-text-2);
73
73
  }
74
74
 
75
75
  .action {
76
- padding-top: 20px;
76
+ padding-top: 1.25rem;
77
77
  }
78
78
 
79
79
  .link {
80
80
  display: inline-block;
81
81
  border: 1px solid var(--vp-c-brand-1);
82
- border-radius: 16px;
83
- padding: 3px 16px;
84
- font-size: 14px;
82
+ border-radius: 1rem;
83
+ padding: 0.1875rem 1rem;
84
+ font-size: 0.875rem;
85
85
  font-weight: 500;
86
86
  color: var(--vp-c-brand-1);
87
- transition:
88
- border-color 0.25s,
89
- color 0.25s;
87
+ transition: border-color 0.25s, color 0.25s;
90
88
  }
91
89
 
92
90
  .link:hover {
@@ -0,0 +1,11 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ type __VLS_Props = {
3
+ algoliaOptions: DefaultTheme.AlgoliaSearchOptions;
4
+ openRequest?: {
5
+ target: 'search' | 'askAi' | 'toggleAskAi';
6
+ nonce: number;
7
+ } | null;
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
@@ -1,77 +1,209 @@
1
- <script setup lang="ts">
2
- import docsearch from '@docsearch/js'
3
- import { useRouter } from 'vitepress'
4
- import type { DefaultTheme } from 'vitepress/theme'
5
- import { nextTick, onMounted, watch } from 'vue'
6
- import { useData } from '../composables/data'
7
-
8
- const props = defineProps<{
9
- algolia: DefaultTheme.AlgoliaSearchOptions
10
- }>()
11
-
12
- const router = useRouter()
13
- const { site, localeIndex, lang } = useData()
14
-
15
- type DocSearchProps = Parameters<typeof docsearch>[0]
16
-
17
- onMounted(update)
18
- watch(localeIndex, update)
19
-
20
- async function update() {
21
- await nextTick()
22
- const options = {
23
- ...props.algolia,
24
- ...props.algolia.locales?.[localeIndex.value]
25
- }
26
- const rawFacetFilters = options.searchParameters?.facetFilters ?? []
27
- const facetFilters = [
28
- ...(Array.isArray(rawFacetFilters)
29
- ? rawFacetFilters
30
- : [rawFacetFilters]
31
- ).filter((f) => !f.startsWith('lang:')),
32
- `lang:${lang.value}`
33
- ]
34
- initialize({
35
- ...options,
36
- searchParameters: {
37
- ...options.searchParameters,
38
- facetFilters
39
- }
40
- })
1
+ <script setup>
2
+ import { inBrowser, useRouter } from "vitepress";
3
+ import { nextTick, onUnmounted, watch } from "vue";
4
+ import { useData } from "../composables/data";
5
+ import { buildSidePanelProps, resolveMode, validateCredentials } from "../support/docsearch";
6
+ import "../styles/docsearch.css";
7
+ const props = defineProps({
8
+ algoliaOptions: {
9
+ type: Object,
10
+ required: true
11
+ },
12
+ openRequest: {
13
+ type: [Object, null],
14
+ required: false
15
+ }
16
+ });
17
+ const router = useRouter();
18
+ const { site } = useData();
19
+ let cleanup = () => {};
20
+ let docsearchInstance;
21
+ let sidepanelInstance;
22
+ let openOnReady = null;
23
+ let initializeCount = 0;
24
+ let docsearchLoader;
25
+ let sidepanelLoader;
26
+ let lastFocusedElement = null;
27
+ let skipEventDocsearch = false;
28
+ let skipEventSidepanel = false;
29
+ watch(() => props.algoliaOptions, update, { immediate: true });
30
+ onUnmounted(cleanup);
31
+ watch(() => props.openRequest?.nonce, () => {
32
+ const req = props.openRequest;
33
+ if (!req) return;
34
+ if (req.target === "search") {
35
+ if (docsearchInstance?.isReady) {
36
+ onBeforeOpen("docsearch", () => docsearchInstance?.open());
37
+ } else {
38
+ openOnReady = "search";
39
+ }
40
+ } else if (req.target === "toggleAskAi") {
41
+ if (sidepanelInstance?.isOpen) {
42
+ sidepanelInstance.close();
43
+ } else {
44
+ onBeforeOpen("sidepanel", () => sidepanelInstance?.open());
45
+ }
46
+ } else {
47
+ // askAi - open sidepanel or fallback to docsearch modal
48
+ if (sidepanelInstance?.isReady) {
49
+ onBeforeOpen("sidepanel", () => sidepanelInstance?.open());
50
+ } else if (sidepanelInstance) {
51
+ openOnReady = "askAi";
52
+ } else if (docsearchInstance?.isReady) {
53
+ onBeforeOpen("docsearch", () => docsearchInstance?.openAskAi());
54
+ } else {
55
+ openOnReady = "askAi";
56
+ }
57
+ }
58
+ }, { immediate: true });
59
+ async function update(options) {
60
+ if (!inBrowser) return;
61
+ await nextTick();
62
+ const askAi = options.askAi;
63
+ const { valid, ...credentials } = validateCredentials({
64
+ appId: options.appId ?? askAi?.appId,
65
+ apiKey: options.apiKey ?? askAi?.apiKey,
66
+ indexName: options.indexName ?? askAi?.indexName
67
+ });
68
+ if (!valid) {
69
+ console.warn("[vitepress] Algolia search cannot be initialized: missing appId/apiKey/indexName.");
70
+ return;
71
+ }
72
+ await initialize({
73
+ ...options,
74
+ ...credentials
75
+ });
41
76
  }
42
-
43
- function initialize(userOptions: DefaultTheme.AlgoliaSearchOptions) {
44
- const options = Object.assign<
45
- {},
46
- DefaultTheme.AlgoliaSearchOptions,
47
- Partial<DocSearchProps>
48
- >({}, userOptions, {
49
- container: '#docsearch',
50
-
51
- navigator: {
52
- navigate({ itemUrl }) {
53
- router.go(itemUrl)
54
- }
55
- },
56
-
57
- transformItems(items) {
58
- return items.map((item) => {
59
- return Object.assign({}, item, {
60
- url: getRelativePath(item.url)
61
- })
62
- })
63
- }
64
- }) as DocSearchProps
65
-
66
- docsearch(options)
77
+ async function initialize(userOptions) {
78
+ const currentInitialize = ++initializeCount;
79
+ // Always tear down previous instances first (e.g. on locale changes)
80
+ cleanup();
81
+ const { useSidePanel } = resolveMode(userOptions);
82
+ const askAi = userOptions.askAi;
83
+ const { default: docsearch } = await loadDocsearch();
84
+ if (currentInitialize !== initializeCount) return;
85
+ if (useSidePanel && askAi?.sidePanel) {
86
+ const { default: sidepanel } = await loadSidepanel();
87
+ if (currentInitialize !== initializeCount) return;
88
+ sidepanelInstance = sidepanel({
89
+ ...buildSidePanelProps(askAi, userOptions),
90
+ onOpen: focusInput,
91
+ onClose: onClose.bind(null, "sidepanel"),
92
+ onReady: () => {
93
+ if (openOnReady === "askAi") {
94
+ openOnReady = null;
95
+ onBeforeOpen("sidepanel", () => sidepanelInstance?.open());
96
+ }
97
+ },
98
+ keyboardShortcuts: { "Ctrl/Cmd+I": false }
99
+ });
100
+ }
101
+ const options = {
102
+ ...userOptions,
103
+ container: "#vp-docsearch",
104
+ navigator: { navigate(item) {
105
+ router.go(item.itemUrl);
106
+ } },
107
+ transformItems: (items) => items.map((item) => ({
108
+ ...item,
109
+ url: getRelativePath(item.url)
110
+ })),
111
+ // When sidepanel is enabled, intercept Ask AI events to open it instead (hybrid mode)
112
+ ...useSidePanel && sidepanelInstance && { interceptAskAiEvent: (initialMessage) => {
113
+ onBeforeOpen("sidepanel", () => sidepanelInstance?.open(initialMessage));
114
+ return true;
115
+ } },
116
+ onOpen: focusInput,
117
+ onClose: onClose.bind(null, "docsearch"),
118
+ onReady: () => {
119
+ if (openOnReady === "search") {
120
+ openOnReady = null;
121
+ onBeforeOpen("docsearch", () => docsearchInstance?.open());
122
+ } else if (openOnReady === "askAi" && !sidepanelInstance) {
123
+ // No sidepanel configured, use docsearch modal for askAi
124
+ openOnReady = null;
125
+ onBeforeOpen("docsearch", () => docsearchInstance?.openAskAi());
126
+ }
127
+ },
128
+ keyboardShortcuts: {
129
+ "/": false,
130
+ "Ctrl/Cmd+K": false
131
+ }
132
+ };
133
+ docsearchInstance = docsearch(options);
134
+ cleanup = () => {
135
+ docsearchInstance?.destroy();
136
+ sidepanelInstance?.destroy();
137
+ docsearchInstance = undefined;
138
+ sidepanelInstance = undefined;
139
+ openOnReady = null;
140
+ lastFocusedElement = null;
141
+ };
67
142
  }
68
-
69
- function getRelativePath(url: string) {
70
- const { pathname, hash } = new URL(url, location.origin)
71
- return pathname.replace(/\.html$/, site.value.cleanUrls ? '' : '.html') + hash
143
+ function focusInput() {
144
+ requestAnimationFrame(() => {
145
+ const input = document.querySelector("#docsearch-input") || document.querySelector("#docsearch-sidepanel textarea");
146
+ input?.focus();
147
+ });
148
+ }
149
+ function onBeforeOpen(target, cb) {
150
+ if (target === "docsearch") {
151
+ if (sidepanelInstance?.isOpen) {
152
+ skipEventSidepanel = true;
153
+ sidepanelInstance.close();
154
+ } else if (!docsearchInstance?.isOpen) {
155
+ if (document.activeElement instanceof HTMLElement) {
156
+ lastFocusedElement = document.activeElement;
157
+ }
158
+ }
159
+ } else if (target === "sidepanel") {
160
+ if (docsearchInstance?.isOpen) {
161
+ skipEventDocsearch = true;
162
+ docsearchInstance.close();
163
+ } else if (!sidepanelInstance?.isOpen) {
164
+ if (document.activeElement instanceof HTMLElement) {
165
+ lastFocusedElement = document.activeElement;
166
+ }
167
+ }
168
+ }
169
+ setTimeout(cb, 0);
170
+ }
171
+ function onClose(target) {
172
+ if (target === "docsearch") {
173
+ if (skipEventDocsearch) {
174
+ skipEventDocsearch = false;
175
+ return;
176
+ }
177
+ } else if (target === "sidepanel") {
178
+ if (skipEventSidepanel) {
179
+ skipEventSidepanel = false;
180
+ return;
181
+ }
182
+ }
183
+ if (lastFocusedElement) {
184
+ lastFocusedElement.focus();
185
+ lastFocusedElement = null;
186
+ }
187
+ }
188
+ function loadDocsearch() {
189
+ if (!docsearchLoader) {
190
+ docsearchLoader = import("@docsearch/js");
191
+ }
192
+ return docsearchLoader;
193
+ }
194
+ function loadSidepanel() {
195
+ if (!sidepanelLoader) {
196
+ sidepanelLoader = import("@docsearch/sidepanel-js");
197
+ }
198
+ return sidepanelLoader;
199
+ }
200
+ function getRelativePath(url) {
201
+ const { pathname, hash } = new URL(url, location.origin);
202
+ return pathname.replace(/\.html$/, site.value.cleanUrls ? "" : ".html") + hash;
72
203
  }
73
204
  </script>
74
205
 
75
206
  <template>
76
- <div id="docsearch" />
207
+ <div id="vp-docsearch" />
208
+ <div id="vp-docsearch-sidepanel" />
77
209
  </template>
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ show: boolean;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
@@ -1,7 +1,8 @@
1
- <script lang="ts" setup>
2
- defineProps<{
3
- show: boolean
4
- }>()
1
+ <script setup>
2
+ defineProps({ show: {
3
+ type: Boolean,
4
+ required: true
5
+ } });
5
6
  </script>
6
7
 
7
8
  <template>
@@ -13,12 +14,7 @@ defineProps<{
13
14
  <style scoped>
14
15
  .VPBackdrop {
15
16
  position: fixed;
16
- top: 0;
17
- /*rtl:ignore*/
18
- right: 0;
19
- bottom: 0;
20
- /*rtl:ignore*/
21
- left: 0;
17
+ inset: 0;
22
18
  z-index: var(--vp-z-index-backdrop);
23
19
  background: var(--vp-backdrop-bg-color);
24
20
  transition: opacity 0.5s;
@@ -30,10 +26,10 @@ defineProps<{
30
26
  }
31
27
 
32
28
  .VPBackdrop.fade-leave-active {
33
- transition-duration: .25s;
29
+ transition-duration: 0.25s;
34
30
  }
35
31
 
36
- @media (min-width: 1280px) {
32
+ @media (min-width: 80rem) {
37
33
  .VPBackdrop {
38
34
  display: none;
39
35
  }
@@ -0,0 +1,19 @@
1
+ type __VLS_Props = {
2
+ text?: string;
3
+ type?: 'info' | 'note' | 'tip' | 'important' | 'caution' | 'warning' | 'danger';
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
+ type: "info" | "note" | "tip" | "important" | "caution" | "warning" | "danger";
11
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -1,15 +1,19 @@
1
- <script setup lang="ts">
2
- interface Props {
3
- text?: string
4
- type?: 'info' | 'tip' | 'warning' | 'danger'
5
- }
6
- withDefaults(defineProps<Props>(), {
7
- type: 'tip'
8
- })
1
+ <script setup>
2
+ defineProps({
3
+ text: {
4
+ type: String,
5
+ required: false
6
+ },
7
+ type: {
8
+ type: String,
9
+ required: false,
10
+ default: "tip"
11
+ }
12
+ });
9
13
  </script>
10
14
 
11
15
  <template>
12
- <span class="VPBadge" :class="type">
16
+ <span class="VPBadge" :class="type" dir="auto">
13
17
  <slot>{{ text }}</slot>
14
18
  </span>
15
19
  </template>
@@ -17,36 +21,37 @@ withDefaults(defineProps<Props>(), {
17
21
  <style>
18
22
  .VPBadge {
19
23
  display: inline-block;
20
- margin-left: 2px;
24
+ margin-inline-start: 0.125rem;
21
25
  border: 1px solid transparent;
22
- border-radius: 12px;
23
- padding: 0 10px;
24
- line-height: 22px;
25
- font-size: 12px;
26
+ border-radius: 0.75rem;
27
+ padding: 0 0.625rem;
28
+ line-height: 1.8333333;
29
+ font-size: 0.75rem;
26
30
  font-weight: 500;
27
- transform: translateY(-2px);
31
+ white-space: nowrap;
32
+ transform: translateY(-0.125rem);
28
33
  }
29
34
 
30
35
  .VPBadge.small {
31
- padding: 0 6px;
32
- line-height: 18px;
33
- font-size: 10px;
34
- transform: translateY(-8px);
36
+ padding: 0 0.375rem;
37
+ line-height: 1.8;
38
+ font-size: 0.625rem;
39
+ transform: translateY(-0.5rem);
35
40
  }
36
41
 
37
42
  .VPDocFooter .VPBadge {
38
43
  display: none;
39
44
  }
40
45
 
41
- .vp-doc h1 > .VPBadge {
42
- margin-top: 4px;
43
- vertical-align: top;
46
+ .vp-doc h1 > .VPBadge,
47
+ .vp-doc h2 > .VPBadge {
48
+ margin: 0;
49
+ margin-inline-start: 0.125rem;
50
+ vertical-align: middle;
44
51
  }
45
52
 
46
53
  .vp-doc h2 > .VPBadge {
47
- margin-top: 3px;
48
- padding: 0 8px;
49
- vertical-align: top;
54
+ padding: 0 0.5rem;
50
55
  }
51
56
 
52
57
  .vp-doc h3 > .VPBadge {
@@ -57,7 +62,7 @@ withDefaults(defineProps<Props>(), {
57
62
  .vp-doc h5 > .VPBadge,
58
63
  .vp-doc h6 > .VPBadge {
59
64
  vertical-align: middle;
60
- line-height: 18px;
65
+ line-height: 1.5;
61
66
  }
62
67
 
63
68
  .VPBadge.info {
@@ -66,12 +71,30 @@ withDefaults(defineProps<Props>(), {
66
71
  background-color: var(--vp-badge-info-bg);
67
72
  }
68
73
 
74
+ .VPBadge.note {
75
+ border-color: var(--vp-badge-note-border);
76
+ color: var(--vp-badge-note-text);
77
+ background-color: var(--vp-badge-note-bg);
78
+ }
79
+
69
80
  .VPBadge.tip {
70
81
  border-color: var(--vp-badge-tip-border);
71
82
  color: var(--vp-badge-tip-text);
72
83
  background-color: var(--vp-badge-tip-bg);
73
84
  }
74
85
 
86
+ .VPBadge.important {
87
+ border-color: var(--vp-badge-important-border);
88
+ color: var(--vp-badge-important-text);
89
+ background-color: var(--vp-badge-important-bg);
90
+ }
91
+
92
+ .VPBadge.caution {
93
+ border-color: var(--vp-badge-caution-border);
94
+ color: var(--vp-badge-caution-text);
95
+ background-color: var(--vp-badge-caution-bg);
96
+ }
97
+
75
98
  .VPBadge.warning {
76
99
  border-color: var(--vp-badge-warning-border);
77
100
  color: var(--vp-badge-warning-text);
@@ -0,0 +1,25 @@
1
+ interface Props {
2
+ tag?: string;
3
+ size?: 'medium' | 'big';
4
+ theme?: 'brand' | 'alt' | 'sponsor';
5
+ text?: string;
6
+ href?: string;
7
+ target?: string;
8
+ rel?: string;
9
+ }
10
+ declare var __VLS_7: {};
11
+ type __VLS_Slots = {} & {
12
+ default?: (props: typeof __VLS_7) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
15
+ size: "big" | "medium";
16
+ theme: "alt" | "brand" | "sponsor";
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };