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,213 +1,79 @@
1
- <script lang="ts" setup>
2
- import type { ButtonTranslations } from '../../../../types/local-search'
3
- import { createSearchTranslate } from '../support/translation'
4
-
5
- // Button-Translations
6
- const defaultTranslations: { button: ButtonTranslations } = {
7
- button: {
8
- buttonText: 'Search',
9
- buttonAriaLabel: 'Search'
10
- }
11
- }
12
-
13
- const translate = createSearchTranslate(defaultTranslations)
1
+ <script setup>
2
+ defineProps({ text: {
3
+ type: String,
4
+ required: true
5
+ } });
14
6
  </script>
15
7
 
16
8
  <template>
17
- <button type="button" class="DocSearch DocSearch-Button" :aria-label="translate('button.buttonAriaLabel')">
18
- <span class="DocSearch-Button-Container">
19
- <span class="vp-icon DocSearch-Search-Icon"></span>
20
- <span class="DocSearch-Button-Placeholder">{{ translate('button.buttonText') }}</span>
21
- </span>
22
- <span class="DocSearch-Button-Keys">
23
- <kbd class="DocSearch-Button-Key"></kbd>
24
- <kbd class="DocSearch-Button-Key">K</kbd>
9
+ <button type="button" class="VPNavBarSearchButton">
10
+ <span class="vpi-search" aria-hidden="true"></span>
11
+ <span class="text">{{ text }}</span>
12
+ <span class="keys" aria-hidden="true">
13
+ <kbd class="key-mod"></kbd>
14
+ <kbd class="key-k"></kbd>
25
15
  </span>
26
16
  </button>
27
17
  </template>
28
18
 
29
- <style>
30
- [class*='DocSearch'] {
31
- --docsearch-primary-color: var(--vp-c-brand-1);
32
- --docsearch-highlight-color: var(--docsearch-primary-color);
33
- --docsearch-text-color: var(--vp-c-text-1);
34
- --docsearch-muted-color: var(--vp-c-text-2);
35
- --docsearch-searchbox-shadow: none;
36
- --docsearch-searchbox-background: transparent;
37
- --docsearch-searchbox-focus-background: transparent;
38
- --docsearch-key-gradient: transparent;
39
- --docsearch-key-shadow: none;
40
- --docsearch-modal-background: var(--vp-c-bg-soft);
41
- --docsearch-footer-background: var(--vp-c-bg);
42
- }
43
-
44
- .dark [class*='DocSearch'] {
45
- --docsearch-modal-shadow: none;
46
- --docsearch-footer-shadow: none;
47
- --docsearch-logo-color: var(--vp-c-text-2);
48
- --docsearch-hit-background: var(--vp-c-default-soft);
49
- --docsearch-hit-color: var(--vp-c-text-2);
50
- --docsearch-hit-shadow: none;
51
- }
52
-
53
- .DocSearch-Button {
19
+ <style scoped>
20
+ .VPNavBarSearchButton {
54
21
  display: flex;
55
- justify-content: center;
56
22
  align-items: center;
57
- margin: 0;
58
- padding: 0;
59
- width: 48px;
60
- height: 55px;
61
- background: transparent;
62
- transition: border-color 0.25s;
63
- }
64
-
65
- .DocSearch-Button:hover {
66
- background: transparent;
67
- }
68
-
69
- .DocSearch-Button:focus {
70
- outline: 1px dotted;
71
- outline: 5px auto -webkit-focus-ring-color;
72
- }
73
-
74
- .DocSearch-Button-Key--pressed {
75
- transform: none;
76
- box-shadow: none;
23
+ gap: 0.5rem;
24
+ height: var(--vp-nav-height);
25
+ padding: 0.5rem 0.875rem;
26
+ font-size: 1.25rem;
77
27
  }
78
28
 
79
- .DocSearch-Button:focus:not(:focus-visible) {
80
- outline: none !important;
29
+ .text,
30
+ .keys {
31
+ display: none;
81
32
  }
82
33
 
83
- @media (min-width: 768px) {
84
- .DocSearch-Button {
85
- justify-content: flex-start;
86
- border: 1px solid transparent;
87
- border-radius: 8px;
88
- padding: 0 10px 0 12px;
89
- width: 100%;
90
- height: 40px;
91
- background-color: var(--vp-c-bg-alt);
92
- }
93
-
94
- .DocSearch-Button:hover {
95
- border-color: var(--vp-c-brand-1);
96
- background: var(--vp-c-bg-alt);
97
- }
34
+ kbd {
35
+ font-family: inherit;
36
+ font-weight: 500;
98
37
  }
99
38
 
100
- .DocSearch-Button .DocSearch-Button-Container {
101
- display: flex;
102
- align-items: center;
39
+ .key-mod::before {
40
+ content: 'Ctrl';
103
41
  }
104
42
 
105
- .DocSearch-Button .DocSearch-Search-Icon {
106
- position: relative;
107
- width: 16px;
108
- height: 16px;
109
- color: var(--vp-c-text-1);
110
- fill: currentColor;
111
- transition: color 0.5s;
43
+ :root.mac .key-mod::before {
44
+ content: '\2318';
112
45
  }
113
46
 
114
- .DocSearch-Button:hover .DocSearch-Search-Icon {
115
- color: var(--vp-c-text-1);
47
+ .key-k::before {
48
+ content: 'K';
116
49
  }
117
50
 
118
- @media (min-width: 768px) {
119
- .DocSearch-Button .DocSearch-Search-Icon {
120
- top: 1px;
121
- margin-right: 8px;
122
- width: 14px;
123
- height: 14px;
51
+ @media (min-width: 48rem) {
52
+ .VPNavBarSearchButton {
53
+ height: auto;
54
+ padding: 0.5rem 0.75rem;
55
+ background-color: var(--vp-c-bg-alt);
56
+ border-radius: 0.5rem;
57
+ font-size: 0.875rem;
58
+ line-height: 1;
124
59
  color: var(--vp-c-text-2);
125
60
  }
126
- }
127
61
 
128
- .DocSearch-Button .DocSearch-Button-Placeholder {
129
- display: none;
130
- margin-top: 2px;
131
- padding: 0 16px 0 0;
132
- font-size: 13px;
133
- font-weight: 500;
134
- color: var(--vp-c-text-2);
135
- transition: color 0.5s;
136
- }
137
-
138
- .DocSearch-Button:hover .DocSearch-Button-Placeholder {
139
- color: var(--vp-c-text-1);
140
- }
141
-
142
- @media (min-width: 768px) {
143
- .DocSearch-Button .DocSearch-Button-Placeholder {
144
- display: inline-block;
62
+ .text {
63
+ display: inline;
64
+ font-size: 0.8125rem;
145
65
  }
146
- }
147
-
148
- .DocSearch-Button .DocSearch-Button-Keys {
149
- /*rtl:ignore*/
150
- direction: ltr;
151
- display: none;
152
- min-width: auto;
153
- }
154
66
 
155
- @media (min-width: 768px) {
156
- .DocSearch-Button .DocSearch-Button-Keys {
67
+ .keys {
157
68
  display: flex;
158
69
  align-items: center;
70
+ gap: 0.25rem;
71
+ /* the shortcut reads the same way in every direction */
72
+ direction: ltr;
73
+ padding: 0.25rem 0.375rem;
74
+ border: 1px solid var(--vp-c-divider);
75
+ border-radius: 0.25rem;
76
+ font-size: 0.75rem;
159
77
  }
160
78
  }
161
-
162
- .DocSearch-Button .DocSearch-Button-Key {
163
- display: block;
164
- margin: 2px 0 0 0;
165
- border: 1px solid var(--vp-c-divider);
166
- /*rtl:begin:ignore*/
167
- border-right: none;
168
- border-radius: 4px 0 0 4px;
169
- padding-left: 6px;
170
- /*rtl:end:ignore*/
171
- min-width: 0;
172
- width: auto;
173
- height: 22px;
174
- line-height: 22px;
175
- font-family: var(--vp-font-family-base);
176
- font-size: 12px;
177
- font-weight: 500;
178
- transition: color 0.5s, border-color 0.5s;
179
- }
180
-
181
- .DocSearch-Button .DocSearch-Button-Key + .DocSearch-Button-Key {
182
- /*rtl:begin:ignore*/
183
- border-right: 1px solid var(--vp-c-divider);
184
- border-left: none;
185
- border-radius: 0 4px 4px 0;
186
- padding-left: 2px;
187
- padding-right: 6px;
188
- /*rtl:end:ignore*/
189
- }
190
-
191
- .DocSearch-Button .DocSearch-Button-Key:first-child {
192
- font-size: 0 !important;
193
- }
194
-
195
- .DocSearch-Button .DocSearch-Button-Key:first-child:after {
196
- content: 'Ctrl';
197
- font-size: 12px;
198
- letter-spacing: normal;
199
- color: var(--docsearch-muted-color);
200
- }
201
-
202
- .mac .DocSearch-Button .DocSearch-Button-Key:first-child:after {
203
- content: '\2318';
204
- }
205
-
206
- .DocSearch-Button .DocSearch-Button-Key:first-child > * {
207
- display: none;
208
- }
209
-
210
- .DocSearch-Search-Icon {
211
- --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E");
212
- }
213
79
  </style>
@@ -0,0 +1,15 @@
1
+ declare var __VLS_1: {}, __VLS_8: {};
2
+ type __VLS_Slots = {} & {
3
+ 'nav-bar-title-before'?: (props: typeof __VLS_1) => any;
4
+ } & {
5
+ 'nav-bar-title-after'?: (props: typeof __VLS_8) => any;
6
+ };
7
+ declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
8
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
11
+ type __VLS_WithSlots<T, S> = T & {
12
+ new (): {
13
+ $slots: S;
14
+ };
15
+ };
@@ -1,32 +1,23 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
- import { useData } from '../composables/data'
4
- import { useLangs } from '../composables/langs'
5
- import { useSidebar } from '../composables/sidebar'
6
- import { normalizeLink } from '../support/utils'
7
- import VPImage from './VPImage.vue'
8
-
9
- const { site, theme } = useData()
10
- const { hasSidebar } = useSidebar()
11
- const { currentLang } = useLangs()
12
-
13
- const link = computed(() =>
14
- typeof theme.value.logoLink === 'string'
15
- ? theme.value.logoLink
16
- : theme.value.logoLink?.link
17
- )
18
-
19
- const rel = computed(() =>
20
- typeof theme.value.logoLink === 'string'
21
- ? undefined
22
- : theme.value.logoLink?.rel
23
- )
24
-
25
- const target = computed(() =>
26
- typeof theme.value.logoLink === 'string'
27
- ? undefined
28
- : theme.value.logoLink?.target
29
- )
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { useData } from "../composables/data";
4
+ import { useLangs } from "../composables/langs";
5
+ import { useLayout } from "../composables/layout";
6
+ import { normalizeLink } from "../support/utils";
7
+ import VPImage from "./VPImage.vue";
8
+ const { site, theme } = useData();
9
+ const { hasSidebar } = useLayout();
10
+ const { currentLang } = useLangs();
11
+ const link = computed(() => typeof theme.value.logoLink === "string" ? theme.value.logoLink : theme.value.logoLink?.link);
12
+ const rel = computed(() => typeof theme.value.logoLink === "string" ? undefined : theme.value.logoLink?.rel);
13
+ const target = computed(() => typeof theme.value.logoLink === "string" ? undefined : theme.value.logoLink?.target);
14
+ // plain-text form of the rendered title (`siteTitle` may contain HTML),
15
+ // surfaced as a native tooltip since the sidebar column truncates it
16
+ const textTitle = computed(() => {
17
+ if (theme.value.siteTitle === false) return undefined;
18
+ const raw = theme.value.siteTitle ?? site.value.title;
19
+ return raw.replace(/<[^>]+>/g, "").trim() || undefined;
20
+ });
30
21
  </script>
31
22
 
32
23
  <template>
@@ -34,12 +25,13 @@ const target = computed(() =>
34
25
  <a
35
26
  class="title"
36
27
  :href="link ?? normalizeLink(currentLang.link)"
37
- :rel="rel"
38
- :target="target"
28
+ :rel
29
+ :target
30
+ :title="textTitle"
39
31
  >
40
32
  <slot name="nav-bar-title-before" />
41
33
  <VPImage v-if="theme.logo" class="logo" :image="theme.logo" />
42
- <span v-if="theme.siteTitle" v-html="theme.siteTitle"></span>
34
+ <span v-if="theme.siteTitle" dir="auto" v-html="theme.siteTitle"></span>
43
35
  <span v-else-if="theme.siteTitle === undefined">{{ site.title }}</span>
44
36
  <slot name="nav-bar-title-after" />
45
37
  </a>
@@ -50,27 +42,36 @@ const target = computed(() =>
50
42
  .title {
51
43
  display: flex;
52
44
  align-items: center;
53
- border-bottom: 1px solid transparent;
54
45
  width: 100%;
55
46
  height: var(--vp-nav-height);
56
- font-size: 16px;
47
+ font-size: 1rem;
57
48
  font-weight: 600;
58
49
  color: var(--vp-c-text-1);
59
50
  transition: opacity 0.25s;
60
51
  }
61
52
 
62
- @media (min-width: 960px) {
53
+ /* wherever the bar runs out of room, the title text gives way first */
54
+ .title > span {
55
+ overflow: hidden;
56
+ text-overflow: ellipsis;
57
+ }
58
+
59
+ @media (min-width: 60rem) {
63
60
  .title {
64
61
  flex-shrink: 0;
65
62
  }
66
63
 
67
- .VPNavBarTitle.has-sidebar .title {
68
- border-bottom-color: var(--vp-c-divider);
64
+ /* the sidebar column has a fixed width — truncate at the divider
65
+ segment's edge (2rem inset from the column); the outer column box
66
+ keeps its full reserved width */
67
+ .VPNavBarTitle.has-sidebar {
68
+ max-width: calc(var(--vp-sidebar-width) - 4rem);
69
69
  }
70
70
  }
71
71
 
72
72
  :deep(.logo) {
73
- margin-right: 8px;
73
+ flex: none;
74
+ margin-inline-end: 0.5rem;
74
75
  height: var(--vp-nav-logo-height);
75
76
  }
76
77
  </style>
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ screen?: 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;
@@ -0,0 +1,76 @@
1
+ <script setup>
2
+ import { useData } from "../composables/data";
3
+ import { useNavOverflow } from "../composables/nav-overflow";
4
+ import VPNavMenuGroup from "./VPNavMenuGroup.vue";
5
+ import VPNavMenuLink from "./VPNavMenuLink.vue";
6
+ const props = defineProps({ screen: {
7
+ type: Boolean,
8
+ required: false
9
+ } });
10
+ const { theme } = useData();
11
+ // bar only — inside the screen every item is always shown
12
+ const overflow = props.screen ? null : useNavOverflow();
13
+ function isVisible(index) {
14
+ return !overflow || index < overflow.state.visibleItemCount;
15
+ }
16
+ </script>
17
+
18
+ <template>
19
+ <nav
20
+ v-if="theme.nav"
21
+ :aria-label="theme.navMenuLabel || 'Main Navigation'"
22
+ class="VPNavMenu"
23
+ :class="screen ? 'VPNavScreenMenu' : 'VPNavBarMenu'"
24
+ :ref="(el) => overflow?.setMenuEl(el)"
25
+ >
26
+ <ul class="list">
27
+ <li
28
+ v-for="(item, index) in theme.nav"
29
+ :key="JSON.stringify(item)"
30
+ :class="{ collapsed: !isVisible(index) }"
31
+ :ref="(el) => overflow?.setItemEl(index, el)"
32
+ >
33
+ <VPNavMenuLink v-if="'link' in item" :item :screen />
34
+ <component
35
+ v-else-if="'component' in item"
36
+ :is="item.component"
37
+ v-bind="item.props"
38
+ :screen-menu="screen || undefined"
39
+ />
40
+ <VPNavMenuGroup v-else :item :screen />
41
+ </li>
42
+ </ul>
43
+ </nav>
44
+ </template>
45
+
46
+ <style scoped>
47
+ .VPNavBarMenu {
48
+ position: relative;
49
+ display: none;
50
+ min-width: 0;
51
+ }
52
+
53
+ .VPNavBarMenu .list {
54
+ display: flex;
55
+ justify-content: flex-end;
56
+ }
57
+
58
+ /* collapsed into the `⋯` menu — kept mounted (hidden, out of the a11y tree
59
+ and tab order) so its natural width stays measurable */
60
+ .VPNavBarMenu .list > li.collapsed {
61
+ visibility: hidden;
62
+ position: absolute;
63
+ top: 0;
64
+ inset-inline-start: 0;
65
+ max-width: 100%;
66
+ overflow: hidden;
67
+ }
68
+
69
+ @media (min-width: 48rem) {
70
+ .VPNavBarMenu {
71
+ display: flex;
72
+ flex-grow: 1;
73
+ justify-content: flex-end;
74
+ }
75
+ }
76
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ type __VLS_Props = {
3
+ item: DefaultTheme.NavItemWithChildren;
4
+ /** accordion inside the nav screen */
5
+ screen?: boolean;
6
+ /** flat titled group inside a menu panel (e.g. the `⋯` menu) */
7
+ menu?: boolean;
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;
@@ -0,0 +1,140 @@
1
+ <script setup>
2
+ import { useRoute } from "vitepress";
3
+ import { computed, ref, useId } from "vue";
4
+ import { isActive } from "../../shared";
5
+ import VPFlyout from "./VPFlyout.vue";
6
+ import VPMenuGroup from "./VPMenuGroup.vue";
7
+ import VPMenuLink from "./VPMenuLink.vue";
8
+ const props = defineProps({
9
+ item: {
10
+ type: Object,
11
+ required: true
12
+ },
13
+ screen: {
14
+ type: Boolean,
15
+ required: false
16
+ },
17
+ menu: {
18
+ type: Boolean,
19
+ required: false
20
+ }
21
+ });
22
+ const route = useRoute();
23
+ const isActiveGroup = computed(() => {
24
+ if (props.item.activeMatch) {
25
+ return isActive(route.data.relativePath, route.hash, props.item.activeMatch, true);
26
+ }
27
+ return isChildActive(props.item);
28
+ });
29
+ function isChildActive(navItem) {
30
+ if ("component" in navItem) return false;
31
+ if ("link" in navItem) {
32
+ const href = typeof navItem.link === "function" ? navItem.link(route.data) : navItem.link;
33
+ return isActive(route.data.relativePath, route.hash, navItem.activeMatch || href, !!navItem.activeMatch);
34
+ }
35
+ return navItem.items.some(isChildActive);
36
+ }
37
+ // screen accordion state — resets when the screen unmounts
38
+ const isOpen = ref(false);
39
+ const groupId = useId();
40
+ function toggle() {
41
+ isOpen.value = !isOpen.value;
42
+ }
43
+ </script>
44
+
45
+ <template>
46
+ <VPMenuGroup
47
+ v-if="menu"
48
+ class="VPNavMenuGroup"
49
+ :text="item.text"
50
+ :items="item.items"
51
+ />
52
+
53
+ <VPFlyout
54
+ v-else-if="!screen"
55
+ :class="{
56
+ VPNavMenuGroup: true,
57
+ VPNavBarMenuGroup: true,
58
+ active: isActiveGroup
59
+ }"
60
+ :button="item.text"
61
+ :items="item.items"
62
+ />
63
+
64
+ <div
65
+ v-else
66
+ class="VPNavMenuGroup VPNavScreenMenuGroup"
67
+ :class="{
68
+ open: isOpen,
69
+ active: isActiveGroup
70
+ }"
71
+ >
72
+ <button
73
+ type="button"
74
+ class="button"
75
+ :aria-expanded="isOpen"
76
+ :aria-controls="groupId"
77
+ @click="toggle"
78
+ >
79
+ <span class="button-text" dir="auto" v-html="item.text"></span>
80
+ <span class="vpi-plus button-icon" aria-hidden="true" />
81
+ </button>
82
+
83
+ <ul v-show="isOpen" :id="groupId" class="items">
84
+ <template v-for="child in item.items" :key="JSON.stringify(child)">
85
+ <VPMenuLink v-if="'link' in child" :item="child" />
86
+ <li v-else-if="'component' in child">
87
+ <component :is="child.component" v-bind="child.props" screen-menu />
88
+ </li>
89
+ <VPMenuGroup v-else :text="child.text" :items="child.items" />
90
+ </template>
91
+ </ul>
92
+ </div>
93
+ </template>
94
+
95
+ <style scoped>
96
+ .VPNavScreenMenuGroup {
97
+ border-bottom: 1px solid var(--vp-c-divider);
98
+ transition: border-color 0.5s;
99
+ }
100
+
101
+ .VPNavScreenMenuGroup.open {
102
+ padding-bottom: 0.625rem;
103
+ }
104
+
105
+ .VPNavScreenMenuGroup.open .button {
106
+ padding-bottom: 0.375rem;
107
+ color: var(--vp-c-brand-1);
108
+ }
109
+
110
+ .VPNavScreenMenuGroup.open .button-icon {
111
+ transform: rotate(45deg);
112
+ }
113
+
114
+ .button {
115
+ display: flex;
116
+ justify-content: space-between;
117
+ align-items: center;
118
+ padding-block: 0.75rem 0.6875rem;
119
+ padding-inline: 0 0.25rem;
120
+ width: 100%;
121
+ line-height: 1.7142857;
122
+ font-size: 0.875rem;
123
+ font-weight: 500;
124
+ color: var(--vp-c-text-1);
125
+ transition: color 0.25s;
126
+ }
127
+
128
+ .button:hover,
129
+ .VPNavScreenMenuGroup.active .button {
130
+ color: var(--vp-c-brand-1);
131
+ }
132
+
133
+ .button-icon {
134
+ transition: transform 0.25s;
135
+ }
136
+
137
+ .items :deep(.VPMenuGroup) {
138
+ padding-top: 0.25rem;
139
+ }
140
+ </style>
@@ -0,0 +1,8 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ type __VLS_Props = {
3
+ item: DefaultTheme.NavItemWithLink;
4
+ screen?: boolean;
5
+ };
6
+ 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>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;