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,25 +1,44 @@
1
- <script setup lang="ts">
2
- import type { DefaultTheme } from 'vitepress/theme'
3
- import VPImage from './VPImage.vue'
4
- import VPLink from './VPLink.vue'
5
-
6
- defineProps<{
7
- icon?: DefaultTheme.FeatureIcon
8
- title: string
9
- details?: string
10
- link?: string
11
- linkText?: string
12
- rel?: string
13
- target?: string
14
- }>()
1
+ <script setup>
2
+ import VPImage from "./VPImage.vue";
3
+ import VPLink from "./VPLink.vue";
4
+ defineProps({
5
+ icon: {
6
+ type: [String, Object],
7
+ required: false
8
+ },
9
+ title: {
10
+ type: String,
11
+ required: true
12
+ },
13
+ details: {
14
+ type: String,
15
+ required: false
16
+ },
17
+ link: {
18
+ type: String,
19
+ required: false
20
+ },
21
+ linkText: {
22
+ type: String,
23
+ required: false
24
+ },
25
+ rel: {
26
+ type: String,
27
+ required: false
28
+ },
29
+ target: {
30
+ type: String,
31
+ required: false
32
+ }
33
+ });
15
34
  </script>
16
35
 
17
36
  <template>
18
37
  <VPLink
19
38
  class="VPFeature"
20
39
  :href="link"
21
- :rel="rel"
22
- :target="target"
40
+ :rel
41
+ :target
23
42
  :no-icon="true"
24
43
  :tag="link ? 'a' : 'div'"
25
44
  >
@@ -40,12 +59,14 @@ defineProps<{
40
59
  :width="icon.width || 48"
41
60
  />
42
61
  <div v-else-if="icon" class="icon" v-html="icon"></div>
43
- <h2 class="title" v-html="title"></h2>
44
- <p v-if="details" class="details" v-html="details"></p>
45
-
62
+ <h2 class="title"><bdi v-html="title" /></h2>
63
+ <ul v-if="Array.isArray(details)" class="details">
64
+ <li v-for="item in details" :key="item"><bdi v-html="item" /></li>
65
+ </ul>
66
+ <p v-else-if="details" class="details"><bdi v-html="details" /></p>
46
67
  <div v-if="linkText" class="link-text">
47
68
  <p class="link-text-value">
48
- {{ linkText }} <span class="vpi-arrow-right link-text-icon" />
69
+ <bdi>{{ linkText }}</bdi> <span class="vpi-arrow-right link-text-icon" />
49
70
  </p>
50
71
  </div>
51
72
  </article>
@@ -56,7 +77,7 @@ defineProps<{
56
77
  .VPFeature {
57
78
  display: block;
58
79
  border: 1px solid var(--vp-c-bg-soft);
59
- border-radius: 12px;
80
+ border-radius: 0.75rem;
60
81
  height: 100%;
61
82
  background-color: var(--vp-c-bg-soft);
62
83
  transition: border-color 0.25s, background-color 0.25s;
@@ -69,55 +90,60 @@ defineProps<{
69
90
  .box {
70
91
  display: flex;
71
92
  flex-direction: column;
72
- padding: 24px;
93
+ padding: 1.5rem;
73
94
  height: 100%;
74
95
  }
75
96
 
76
97
  .box > :deep(.VPImage) {
77
- margin-bottom: 20px;
98
+ margin-bottom: 1.25rem;
78
99
  }
79
100
 
80
101
  .icon {
81
102
  display: flex;
82
103
  justify-content: center;
83
104
  align-items: center;
84
- margin-bottom: 20px;
85
- border-radius: 6px;
105
+ margin-bottom: 1.25rem;
106
+ border-radius: 0.375rem;
86
107
  background-color: var(--vp-c-default-soft);
87
- width: 48px;
88
- height: 48px;
89
- font-size: 24px;
108
+ width: 3rem;
109
+ height: 3rem;
110
+ font-size: 1.5rem;
90
111
  transition: background-color 0.25s;
91
112
  }
92
113
 
93
114
  .title {
94
- line-height: 24px;
95
- font-size: 16px;
115
+ line-height: 1.5;
116
+ font-size: 1rem;
96
117
  font-weight: 600;
97
118
  }
98
119
 
99
120
  .details {
100
121
  flex-grow: 1;
101
- padding-top: 8px;
102
- line-height: 24px;
103
- font-size: 14px;
122
+ padding-top: 0.5rem;
123
+ line-height: 1.7142857;
124
+ font-size: 0.875rem;
104
125
  font-weight: 500;
105
126
  color: var(--vp-c-text-2);
106
127
  }
107
128
 
129
+ ul.details {
130
+ list-style-type: disc;
131
+ padding-inline-start: 0.875rem;
132
+ }
133
+
108
134
  .link-text {
109
- padding-top: 8px;
135
+ padding-top: 0.5rem;
110
136
  }
111
137
 
112
138
  .link-text-value {
113
139
  display: flex;
114
140
  align-items: center;
115
- font-size: 14px;
141
+ font-size: 0.875rem;
116
142
  font-weight: 500;
117
143
  color: var(--vp-c-brand-1);
118
144
  }
119
145
 
120
146
  .link-text-icon {
121
- margin-left: 6px;
147
+ margin-inline-start: 0.375rem;
122
148
  }
123
149
  </style>
@@ -0,0 +1,16 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ export interface Feature {
3
+ icon?: DefaultTheme.FeatureIcon;
4
+ title: string;
5
+ details: string;
6
+ link?: string;
7
+ linkText?: string;
8
+ rel?: string;
9
+ target?: string;
10
+ }
11
+ type __VLS_Props = {
12
+ features: Feature[];
13
+ };
14
+ 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>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
@@ -1,44 +1,31 @@
1
- <script setup lang="ts">
2
- import type { DefaultTheme } from 'vitepress/theme'
3
- import { computed } from 'vue'
4
- import VPFeature from './VPFeature.vue'
5
-
6
- export interface Feature {
7
- icon?: DefaultTheme.FeatureIcon
8
- title: string
9
- details: string
10
- link?: string
11
- linkText?: string
12
- rel?: string
13
- target?: string
14
- }
15
-
16
- const props = defineProps<{
17
- features: Feature[]
18
- }>()
19
-
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import VPFeature from "./VPFeature.vue";
4
+ const props = defineProps({ features: {
5
+ type: Array,
6
+ required: true
7
+ } });
20
8
  const grid = computed(() => {
21
- const length = props.features.length
22
-
23
- if (!length) {
24
- return
25
- } else if (length === 2) {
26
- return 'grid-2'
27
- } else if (length === 3) {
28
- return 'grid-3'
29
- } else if (length % 3 === 0) {
30
- return 'grid-6'
31
- } else if (length > 3) {
32
- return 'grid-4'
33
- }
34
- })
9
+ const length = props.features.length;
10
+ if (!length) {
11
+ return;
12
+ } else if (length === 2) {
13
+ return "grid-2";
14
+ } else if (length === 3) {
15
+ return "grid-3";
16
+ } else if (length % 3 === 0) {
17
+ return "grid-6";
18
+ } else if (length > 3) {
19
+ return "grid-4";
20
+ }
21
+ });
35
22
  </script>
36
23
 
37
24
  <template>
38
25
  <div v-if="features" class="VPFeatures">
39
26
  <div class="container">
40
- <div class="items">
41
- <div
27
+ <ul class="items">
28
+ <li
42
29
  v-for="feature in features"
43
30
  :key="feature.title"
44
31
  class="item"
@@ -53,8 +40,8 @@ const grid = computed(() => {
53
40
  :rel="feature.rel"
54
41
  :target="feature.target"
55
42
  />
56
- </div>
57
- </div>
43
+ </li>
44
+ </ul>
58
45
  </div>
59
46
  </div>
60
47
  </template>
@@ -62,38 +49,38 @@ const grid = computed(() => {
62
49
  <style scoped>
63
50
  .VPFeatures {
64
51
  position: relative;
65
- padding: 0 24px;
52
+ padding: 0 1.5rem;
66
53
  }
67
54
 
68
- @media (min-width: 640px) {
55
+ @media (min-width: 40rem) {
69
56
  .VPFeatures {
70
- padding: 0 48px;
57
+ padding: 0 3rem;
71
58
  }
72
59
  }
73
60
 
74
- @media (min-width: 960px) {
61
+ @media (min-width: 60rem) {
75
62
  .VPFeatures {
76
- padding: 0 64px;
63
+ padding: 0 4rem;
77
64
  }
78
65
  }
79
66
 
80
67
  .container {
81
68
  margin: 0 auto;
82
- max-width: 1152px;
69
+ max-width: 72rem;
83
70
  }
84
71
 
85
72
  .items {
86
73
  display: flex;
87
74
  flex-wrap: wrap;
88
- margin: -8px;
75
+ margin: -0.5rem;
89
76
  }
90
77
 
91
78
  .item {
92
- padding: 8px;
79
+ padding: 0.5rem;
93
80
  width: 100%;
94
81
  }
95
82
 
96
- @media (min-width: 640px) {
83
+ @media (min-width: 40rem) {
97
84
  .item.grid-2,
98
85
  .item.grid-4,
99
86
  .item.grid-6 {
@@ -101,7 +88,7 @@ const grid = computed(() => {
101
88
  }
102
89
  }
103
90
 
104
- @media (min-width: 768px) {
91
+ @media (min-width: 48rem) {
105
92
  .item.grid-2,
106
93
  .item.grid-4 {
107
94
  width: calc(100% / 2);
@@ -113,7 +100,7 @@ const grid = computed(() => {
113
100
  }
114
101
  }
115
102
 
116
- @media (min-width: 960px) {
103
+ @media (min-width: 60rem) {
117
104
  .item.grid-4 {
118
105
  width: calc(100% / 4);
119
106
  }
@@ -0,0 +1,26 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ declare const __VLS_export: <T extends DefaultTheme.NavItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ icon?: string;
5
+ button?: string;
6
+ label?: string;
7
+ items?: T[];
8
+ }> & (typeof globalThis extends {
9
+ __VLS_PROPS_FALLBACK: infer P;
10
+ } ? P : {});
11
+ expose: (exposed: {}) => void;
12
+ attrs: any;
13
+ slots: {
14
+ default?: (props: {}) => any;
15
+ };
16
+ emit: {};
17
+ }>) => import("vue").VNode & {
18
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
19
+ };
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
23
+ [K in keyof T]: T[K];
24
+ } : {
25
+ [K in keyof T as K]: T[K];
26
+ }) & {};
@@ -1,51 +1,116 @@
1
- <script lang="ts" setup>
2
- import { ref } from 'vue'
3
- import { useFlyout } from '../composables/flyout'
4
- import VPMenu from './VPMenu.vue'
5
-
6
- defineProps<{
7
- icon?: string
8
- button?: string
9
- label?: string
10
- items?: any[]
11
- }>()
12
-
13
- const open = ref(false)
14
- const el = ref<HTMLElement>()
15
-
16
- useFlyout({ el, onBlur })
17
-
18
- function onBlur() {
19
- open.value = false
1
+ <script setup>
2
+ import { onKeyStroke, useEventListener } from "@vueuse/core";
3
+ import { useRoute } from "vitepress";
4
+ import { ref, useId, useTemplateRef, watch } from "vue";
5
+ import { useFlyout } from "../composables/flyout";
6
+ import VPMenu from "./VPMenu.vue";
7
+ defineProps({
8
+ icon: {
9
+ type: String,
10
+ required: false
11
+ },
12
+ button: {
13
+ type: String,
14
+ required: false
15
+ },
16
+ label: {
17
+ type: String,
18
+ required: false
19
+ },
20
+ items: {
21
+ type: Array,
22
+ required: false
23
+ }
24
+ });
25
+ const open = ref(false);
26
+ const el = useTemplateRef("el");
27
+ const buttonEl = useTemplateRef("buttonEl");
28
+ const menuEl = useTemplateRef("menuEl");
29
+ const menuId = useId();
30
+ useFlyout({
31
+ el,
32
+ onBlur: close
33
+ });
34
+ const route = useRoute();
35
+ watch(() => route.path, close);
36
+ // for mouse users the disclosure opens and closes on hover, with the same
37
+ // boundary in both directions: the button plus the open panel. The root box
38
+ // isn't used — it also contains the ::before divider some contexts draw
39
+ // before the flyout, which should act as a neutral gap either way. Closing
40
+ // needs no delay: leaving for the panel (or back) is detected via
41
+ // relatedTarget, and any real exit closes instantly so a panel never
42
+ // lingers over a neighboring flyout while sweeping across the bar.
43
+ // a hover-open absorbs the click that usually follows it, otherwise mouse
44
+ // users would toggle the menu right back off
45
+ let openedByHover = false;
46
+ function onPointerEnter(e) {
47
+ if (e.pointerType !== "mouse") return;
48
+ if (!open.value) {
49
+ open.value = true;
50
+ openedByHover = true;
51
+ }
52
+ }
53
+ function onPointerLeave(e) {
54
+ if (e.pointerType !== "mouse") return;
55
+ const to = e.relatedTarget;
56
+ // still within the button ∪ panel region — not an exit
57
+ if (to && (buttonEl.value?.contains(to) || menuEl.value?.contains(to))) return;
58
+ close();
59
+ }
60
+ function toggle() {
61
+ if (open.value && openedByHover) {
62
+ openedByHover = false;
63
+ return;
64
+ }
65
+ openedByHover = false;
66
+ open.value = !open.value;
67
+ }
68
+ function close() {
69
+ open.value = false;
70
+ openedByHover = false;
20
71
  }
72
+ // content shown on hover must be dismissible without moving the pointer
73
+ // (WCAG 1.4.13) — Escape closes and, if focus was inside, returns it to the
74
+ // trigger
75
+ onKeyStroke("Escape", () => {
76
+ if (!open.value) return;
77
+ const restoreFocus = el.value?.contains(document.activeElement);
78
+ close();
79
+ if (restoreFocus) {
80
+ el.value?.querySelector("button")?.focus();
81
+ }
82
+ });
83
+ // a tap on a non-focusable area outside doesn't move focus, so the
84
+ // focus-tracking blur alone can't dismiss the menu on touch
85
+ useEventListener("pointerdown", (e) => {
86
+ if (open.value && el.value && !el.value.contains(e.target)) close();
87
+ });
21
88
  </script>
22
89
 
23
90
  <template>
24
- <div
25
- class="VPFlyout"
26
- ref="el"
27
- @mouseenter="open = true"
28
- @mouseleave="open = false"
29
- >
91
+ <div class="VPFlyout" ref="el">
30
92
  <button
93
+ ref="buttonEl"
31
94
  type="button"
32
95
  class="button"
33
- aria-haspopup="true"
34
96
  :aria-expanded="open"
97
+ :aria-controls="menuId"
35
98
  :aria-label="label"
36
- @click="open = !open"
99
+ @pointerenter="onPointerEnter"
100
+ @pointerleave="onPointerLeave"
101
+ @click="toggle"
37
102
  >
38
103
  <span v-if="button || icon" class="text">
39
- <span v-if="icon" :class="[icon, 'option-icon']" />
40
- <span v-if="button" v-html="button"></span>
41
- <span class="vpi-chevron-down text-icon" />
104
+ <span v-if="icon" :class="[icon, 'option-icon']" aria-hidden="true" />
105
+ <span v-if="button" dir="auto" v-html="button"></span>
106
+ <span class="vpi-chevron-down text-icon" aria-hidden="true" />
42
107
  </span>
43
108
 
44
- <span v-else class="vpi-more-horizontal icon" />
109
+ <span v-else class="vpi-ellipsis icon" aria-hidden="true" />
45
110
  </button>
46
111
 
47
- <div class="menu">
48
- <VPMenu :items="items">
112
+ <div ref="menuEl" class="menu" :id="menuId" @pointerleave="onPointerLeave">
113
+ <VPMenu :items>
49
114
  <slot />
50
115
  </VPMenu>
51
116
  </div>
@@ -78,23 +143,23 @@ function onBlur() {
78
143
  color: var(--vp-c-brand-2);
79
144
  }
80
145
 
146
+ /* closing is snappier than opening so a panel doesn't linger over the
147
+ neighboring flyout's panel while sweeping across the bar */
81
148
  .button[aria-expanded="false"] + .menu {
82
149
  opacity: 0;
83
150
  visibility: hidden;
84
- transform: translateY(0);
151
+ transition: opacity 0.1s, visibility 0.1s;
85
152
  }
86
153
 
87
- .VPFlyout:hover .menu,
88
154
  .button[aria-expanded="true"] + .menu {
89
155
  opacity: 1;
90
156
  visibility: visible;
91
- transform: translateY(0);
92
157
  }
93
158
 
94
159
  .button {
95
160
  display: flex;
96
161
  align-items: center;
97
- padding: 0 12px;
162
+ padding: 0 0.75rem;
98
163
  height: var(--vp-nav-height);
99
164
  color: var(--vp-c-text-1);
100
165
  transition: color 0.5s;
@@ -103,34 +168,33 @@ function onBlur() {
103
168
  .text {
104
169
  display: flex;
105
170
  align-items: center;
106
- line-height: var(--vp-nav-height);
107
- font-size: 14px;
171
+ line-height: 1.5;
172
+ font-size: 0.875rem;
108
173
  font-weight: 500;
109
174
  color: var(--vp-c-text-1);
110
175
  transition: color 0.25s;
111
176
  }
112
177
 
113
178
  .option-icon {
114
- margin-right: 0px;
115
- font-size: 16px;
179
+ font-size: 1rem;
116
180
  }
117
181
 
118
182
  .text-icon {
119
- margin-left: 4px;
120
- font-size: 14px;
183
+ margin-inline-start: 0.25rem;
184
+ font-size: 0.875rem;
121
185
  }
122
186
 
123
187
  .icon {
124
- font-size: 20px;
188
+ font-size: 1.25rem;
125
189
  transition: fill 0.25s;
126
190
  }
127
191
 
128
192
  .menu {
129
193
  position: absolute;
130
- top: calc(var(--vp-nav-height) / 2 + 20px);
131
- right: 0;
194
+ top: calc(var(--vp-nav-height) / 2 + 1.25rem);
195
+ inset-inline-end: 0;
132
196
  opacity: 0;
133
197
  visibility: hidden;
134
- transition: opacity 0.25s, visibility 0.25s, transform 0.25s;
198
+ transition: opacity 0.25s, visibility 0.25s;
135
199
  }
136
200
  </style>
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -1,16 +1,23 @@
1
- <script setup lang="ts">
2
- import { useData } from '../composables/data'
3
- import { useSidebar } from '../composables/sidebar'
4
-
5
- const { theme, frontmatter } = useData()
6
- const { hasSidebar } = useSidebar()
1
+ <script setup>
2
+ import { useData } from "../composables/data";
3
+ import { useLayout } from "../composables/layout";
4
+ const { theme, frontmatter } = useData();
5
+ const { hasSidebar } = useLayout();
7
6
  </script>
8
7
 
9
8
  <template>
10
- <footer v-if="theme.footer && frontmatter.footer !== false" class="VPFooter" :class="{ 'has-sidebar': hasSidebar }">
9
+ <footer
10
+ v-if="theme.footer && frontmatter.footer !== false"
11
+ class="VPFooter"
12
+ :class="{ 'has-sidebar': hasSidebar }"
13
+ >
11
14
  <div class="container">
12
- <p v-if="theme.footer.message" class="message" v-html="theme.footer.message"></p>
13
- <p v-if="theme.footer.copyright" class="copyright" v-html="theme.footer.copyright"></p>
15
+ <p v-if="theme.footer.message" class="message">
16
+ <bdi v-html="theme.footer.message" />
17
+ </p>
18
+ <p v-if="theme.footer.copyright" class="copyright">
19
+ <bdi v-html="theme.footer.copyright" />
20
+ </p>
14
21
  </div>
15
22
  </footer>
16
23
  </template>
@@ -20,7 +27,7 @@ const { hasSidebar } = useSidebar()
20
27
  position: relative;
21
28
  z-index: var(--vp-z-index-footer);
22
29
  border-top: 1px solid var(--vp-c-gutter);
23
- padding: 32px 24px;
30
+ padding: 2rem 1.5rem;
24
31
  background-color: var(--vp-c-bg);
25
32
  }
26
33
 
@@ -30,7 +37,7 @@ const { hasSidebar } = useSidebar()
30
37
 
31
38
  .VPFooter :deep(a) {
32
39
  text-decoration-line: underline;
33
- text-underline-offset: 2px;
40
+ text-underline-offset: 0.125rem;
34
41
  transition: color 0.25s;
35
42
  }
36
43
 
@@ -38,9 +45,9 @@ const { hasSidebar } = useSidebar()
38
45
  color: var(--vp-c-text-1);
39
46
  }
40
47
 
41
- @media (min-width: 768px) {
48
+ @media (min-width: 48rem) {
42
49
  .VPFooter {
43
- padding: 32px;
50
+ padding: 2rem;
44
51
  }
45
52
  }
46
53
 
@@ -52,8 +59,8 @@ const { hasSidebar } = useSidebar()
52
59
 
53
60
  .message,
54
61
  .copyright {
55
- line-height: 24px;
56
- font-size: 14px;
62
+ line-height: 1.7142857;
63
+ font-size: 0.875rem;
57
64
  font-weight: 500;
58
65
  color: var(--vp-c-text-2);
59
66
  }
@@ -0,0 +1,38 @@
1
+ import type { DefaultTheme } from 'vitepress/theme';
2
+ export interface HeroAction {
3
+ theme?: 'brand' | 'alt';
4
+ text: string;
5
+ link: string;
6
+ target?: string;
7
+ rel?: string;
8
+ }
9
+ type __VLS_Props = {
10
+ name?: string;
11
+ text?: string;
12
+ tagline?: string;
13
+ image?: DefaultTheme.ThemeableImage;
14
+ actions?: HeroAction[];
15
+ };
16
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_15: {}, __VLS_17: {};
17
+ type __VLS_Slots = {} & {
18
+ 'home-hero-info-before'?: (props: typeof __VLS_1) => any;
19
+ } & {
20
+ 'home-hero-info'?: (props: typeof __VLS_3) => any;
21
+ } & {
22
+ 'home-hero-info-after'?: (props: typeof __VLS_5) => any;
23
+ } & {
24
+ 'home-hero-actions-before-actions'?: (props: typeof __VLS_7) => any;
25
+ } & {
26
+ 'home-hero-actions-after'?: (props: typeof __VLS_15) => any;
27
+ } & {
28
+ 'home-hero-image'?: (props: typeof __VLS_17) => any;
29
+ };
30
+ declare const __VLS_base: 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>;
31
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
32
+ declare const _default: typeof __VLS_export;
33
+ export default _default;
34
+ type __VLS_WithSlots<T, S> = T & {
35
+ new (): {
36
+ $slots: S;
37
+ };
38
+ };