Showing preview only (2,535K chars total). Download the full file or copy to clipboard to get everything.
Repository: vuejs/vitepress
Branch: main
Commit: 4fc1db83d7c7
Files: 596
Total size: 2.3 MB
Directory structure:
gitextract_9ysuzuto/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── feature_request.yml
│ ├── commit-convention.md
│ ├── contributing.md
│ ├── pull_request_template.md
│ └── workflows/
│ ├── cr-comment.yml
│ ├── cr.yml
│ ├── lock-threads.yml
│ ├── release-tag.yml
│ ├── stale.yml
│ └── test.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── __tests__/
│ ├── e2e/
│ │ ├── .vitepress/
│ │ │ ├── config.ts
│ │ │ └── theme/
│ │ │ ├── components/
│ │ │ │ ├── ApiPreference.vue
│ │ │ │ ├── CustomLayout.vue
│ │ │ │ ├── HomeHeroCopy.vue
│ │ │ │ └── NavVersion.vue
│ │ │ └── index.ts
│ │ ├── __snapshots__/
│ │ │ └── home.test.ts.snap
│ │ ├── data-loading/
│ │ │ ├── basic.data.mts
│ │ │ ├── content/
│ │ │ │ ├── bar.md
│ │ │ │ └── foo.md
│ │ │ ├── contentLoader.data.ts
│ │ │ ├── data/
│ │ │ │ ├── a.json
│ │ │ │ └── b.json
│ │ │ ├── data.md
│ │ │ └── data.test.ts
│ │ ├── dynamic-routes/
│ │ │ ├── [id].md
│ │ │ ├── [id].paths.ts
│ │ │ ├── dynamic-routes.test.ts
│ │ │ └── paths.ts
│ │ ├── frontmatter/
│ │ │ ├── multiple-levels-outline.md
│ │ │ └── multiple-levels-outline.test.ts
│ │ ├── home.md
│ │ ├── home.test.ts
│ │ ├── index.md
│ │ ├── local-search/
│ │ │ ├── excluded.md
│ │ │ ├── frontmatter-excluded.md
│ │ │ ├── index.md
│ │ │ └── local-search.test.ts
│ │ ├── markdown-extensions/
│ │ │ ├── bar.md
│ │ │ ├── foo.md
│ │ │ ├── header-include.md
│ │ │ ├── index.md
│ │ │ ├── markdown-extensions.test.ts
│ │ │ ├── nested-include.md
│ │ │ ├── region-include.md
│ │ │ └── subfolder/
│ │ │ ├── inside-subfolder.md
│ │ │ └── subsub/
│ │ │ ├── subsub.md
│ │ │ └── subsubsub/
│ │ │ └── subsubsub.md
│ │ ├── multi-sidebar/
│ │ │ ├── index.md
│ │ │ └── index.test.ts
│ │ ├── package.json
│ │ ├── shims.ts
│ │ ├── text-literals/
│ │ │ └── index.md
│ │ ├── vitest.config.ts
│ │ ├── vitestGlobalSetup.ts
│ │ └── vitestSetup.ts
│ ├── init/
│ │ ├── init.test.ts
│ │ ├── package.json
│ │ └── vitest.config.ts
│ ├── tsconfig.json
│ └── unit/
│ ├── client/
│ │ └── theme-default/
│ │ ├── composables/
│ │ │ └── outline.test.ts
│ │ └── support/
│ │ ├── docsearch.test.ts
│ │ ├── sidebar.test.ts
│ │ └── utils.test.ts
│ ├── node/
│ │ ├── markdown/
│ │ │ └── plugins/
│ │ │ ├── highlight.test.ts
│ │ │ ├── link.test.ts
│ │ │ └── snippet.test.ts
│ │ ├── postcss/
│ │ │ ├── __snapshots__/
│ │ │ │ └── isolateStyles.test.ts.snap
│ │ │ └── isolateStyles.test.ts
│ │ └── utils/
│ │ └── moduleGraph.test.ts
│ ├── shims.ts
│ └── vitest.config.ts
├── bin/
│ └── vitepress.js
├── client.d.ts
├── docs/
│ ├── .postcssrc.json
│ ├── .vitepress/
│ │ ├── config.ts
│ │ └── theme/
│ │ ├── index.ts
│ │ └── styles.css
│ ├── components/
│ │ ├── ComponentInHeader.vue
│ │ └── ModalDemo.vue
│ ├── config.ts
│ ├── en/
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── es/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── fa/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── ja/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── ko/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── lunaria.config.json
│ ├── package.json
│ ├── pt/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── public/
│ │ └── pure.html
│ ├── ru/
│ │ ├── components/
│ │ │ └── ModalDemo.vue
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── snippets/
│ │ ├── algolia-crawler.js
│ │ ├── algolia-i18n.ts
│ │ ├── init.ansi
│ │ ├── snippet-with-region.js
│ │ └── snippet.js
│ └── zh/
│ ├── config.ts
│ ├── guide/
│ │ ├── asset-handling.md
│ │ ├── cms.md
│ │ ├── custom-theme.md
│ │ ├── data-loading.md
│ │ ├── deploy.md
│ │ ├── extending-default-theme.md
│ │ ├── frontmatter.md
│ │ ├── getting-started.md
│ │ ├── i18n.md
│ │ ├── markdown.md
│ │ ├── migration-from-vitepress-0.md
│ │ ├── migration-from-vuepress.md
│ │ ├── mpa-mode.md
│ │ ├── routing.md
│ │ ├── sitemap-generation.md
│ │ ├── ssr-compat.md
│ │ ├── using-vue.md
│ │ └── what-is-vitepress.md
│ ├── index.md
│ └── reference/
│ ├── cli.md
│ ├── default-theme-badge.md
│ ├── default-theme-carbon-ads.md
│ ├── default-theme-config.md
│ ├── default-theme-edit-link.md
│ ├── default-theme-footer.md
│ ├── default-theme-home-page.md
│ ├── default-theme-last-updated.md
│ ├── default-theme-layout.md
│ ├── default-theme-nav.md
│ ├── default-theme-prev-next-links.md
│ ├── default-theme-search.md
│ ├── default-theme-sidebar.md
│ ├── default-theme-team-page.md
│ ├── frontmatter-config.md
│ ├── runtime-api.md
│ └── site-config.md
├── netlify.toml
├── package.json
├── patches/
│ ├── @types__markdown-it-attrs.patch
│ ├── @types__mdurl@2.0.0.patch
│ ├── markdown-it-anchor@9.2.0.patch
│ └── markdown-it-attrs@4.3.1.patch
├── pnpm-workspace.yaml
├── rollup.config.ts
├── scripts/
│ ├── copyClient.js
│ ├── copyShared.js
│ ├── release.js
│ └── watchAndCopy.js
├── src/
│ ├── client/
│ │ ├── app/
│ │ │ ├── components/
│ │ │ │ ├── ClientOnly.ts
│ │ │ │ └── Content.ts
│ │ │ ├── composables/
│ │ │ │ ├── codeGroups.ts
│ │ │ │ ├── copyCode.ts
│ │ │ │ ├── head.ts
│ │ │ │ └── preFetch.ts
│ │ │ ├── data.ts
│ │ │ ├── devtools.ts
│ │ │ ├── index.ts
│ │ │ ├── router.ts
│ │ │ ├── ssr.ts
│ │ │ ├── theme.ts
│ │ │ └── utils.ts
│ │ ├── index.ts
│ │ ├── shims.d.ts
│ │ ├── theme-default/
│ │ │ ├── Layout.vue
│ │ │ ├── NotFound.vue
│ │ │ ├── components/
│ │ │ │ ├── VPAlgoliaSearchBox.vue
│ │ │ │ ├── VPBackdrop.vue
│ │ │ │ ├── VPBadge.vue
│ │ │ │ ├── VPButton.vue
│ │ │ │ ├── VPCarbonAds.vue
│ │ │ │ ├── VPContent.vue
│ │ │ │ ├── VPDoc.vue
│ │ │ │ ├── VPDocAside.vue
│ │ │ │ ├── VPDocAsideCarbonAds.vue
│ │ │ │ ├── VPDocAsideOutline.vue
│ │ │ │ ├── VPDocAsideSponsors.vue
│ │ │ │ ├── VPDocFooter.vue
│ │ │ │ ├── VPDocFooterLastUpdated.vue
│ │ │ │ ├── VPDocOutlineItem.vue
│ │ │ │ ├── VPFeature.vue
│ │ │ │ ├── VPFeatures.vue
│ │ │ │ ├── VPFlyout.vue
│ │ │ │ ├── VPFooter.vue
│ │ │ │ ├── VPHero.vue
│ │ │ │ ├── VPHome.vue
│ │ │ │ ├── VPHomeContent.vue
│ │ │ │ ├── VPHomeFeatures.vue
│ │ │ │ ├── VPHomeHero.vue
│ │ │ │ ├── VPHomeSponsors.vue
│ │ │ │ ├── VPImage.vue
│ │ │ │ ├── VPLink.vue
│ │ │ │ ├── VPLocalNav.vue
│ │ │ │ ├── VPLocalNavOutlineDropdown.vue
│ │ │ │ ├── VPLocalSearchBox.vue
│ │ │ │ ├── VPMenu.vue
│ │ │ │ ├── VPMenuGroup.vue
│ │ │ │ ├── VPMenuLink.vue
│ │ │ │ ├── VPNav.vue
│ │ │ │ ├── VPNavBar.vue
│ │ │ │ ├── VPNavBarAppearance.vue
│ │ │ │ ├── VPNavBarAskAiButton.vue
│ │ │ │ ├── VPNavBarExtra.vue
│ │ │ │ ├── VPNavBarHamburger.vue
│ │ │ │ ├── VPNavBarMenu.vue
│ │ │ │ ├── VPNavBarMenuGroup.vue
│ │ │ │ ├── VPNavBarMenuLink.vue
│ │ │ │ ├── VPNavBarSearch.vue
│ │ │ │ ├── VPNavBarSearchButton.vue
│ │ │ │ ├── VPNavBarSocialLinks.vue
│ │ │ │ ├── VPNavBarTitle.vue
│ │ │ │ ├── VPNavBarTranslations.vue
│ │ │ │ ├── VPNavScreen.vue
│ │ │ │ ├── VPNavScreenAppearance.vue
│ │ │ │ ├── VPNavScreenMenu.vue
│ │ │ │ ├── VPNavScreenMenuGroup.vue
│ │ │ │ ├── VPNavScreenMenuGroupLink.vue
│ │ │ │ ├── VPNavScreenMenuGroupSection.vue
│ │ │ │ ├── VPNavScreenMenuLink.vue
│ │ │ │ ├── VPNavScreenSocialLinks.vue
│ │ │ │ ├── VPNavScreenTranslations.vue
│ │ │ │ ├── VPPage.vue
│ │ │ │ ├── VPSidebar.vue
│ │ │ │ ├── VPSidebarGroup.vue
│ │ │ │ ├── VPSidebarItem.vue
│ │ │ │ ├── VPSkipLink.vue
│ │ │ │ ├── VPSocialLink.vue
│ │ │ │ ├── VPSocialLinks.vue
│ │ │ │ ├── VPSponsors.vue
│ │ │ │ ├── VPSponsorsGrid.vue
│ │ │ │ ├── VPSwitch.vue
│ │ │ │ ├── VPSwitchAppearance.vue
│ │ │ │ ├── VPTeamMembers.vue
│ │ │ │ ├── VPTeamMembersItem.vue
│ │ │ │ ├── VPTeamPage.vue
│ │ │ │ ├── VPTeamPageSection.vue
│ │ │ │ ├── VPTeamPageTitle.vue
│ │ │ │ └── icons/
│ │ │ │ ├── VPIconAlignJustify.vue
│ │ │ │ ├── VPIconAlignLeft.vue
│ │ │ │ ├── VPIconAlignRight.vue
│ │ │ │ ├── VPIconArrowLeft.vue
│ │ │ │ ├── VPIconArrowRight.vue
│ │ │ │ ├── VPIconChevronDown.vue
│ │ │ │ ├── VPIconChevronLeft.vue
│ │ │ │ ├── VPIconChevronRight.vue
│ │ │ │ ├── VPIconChevronUp.vue
│ │ │ │ ├── VPIconEdit.vue
│ │ │ │ ├── VPIconHeart.vue
│ │ │ │ ├── VPIconLanguages.vue
│ │ │ │ ├── VPIconMinus.vue
│ │ │ │ ├── VPIconMinusSquare.vue
│ │ │ │ ├── VPIconMoon.vue
│ │ │ │ ├── VPIconMoreHorizontal.vue
│ │ │ │ ├── VPIconPlus.vue
│ │ │ │ ├── VPIconPlusSquare.vue
│ │ │ │ └── VPIconSun.vue
│ │ │ ├── composables/
│ │ │ │ ├── aside.ts
│ │ │ │ ├── data.ts
│ │ │ │ ├── edit-link.ts
│ │ │ │ ├── flyout.ts
│ │ │ │ ├── langs.ts
│ │ │ │ ├── layout.ts
│ │ │ │ ├── nav.ts
│ │ │ │ ├── outline.ts
│ │ │ │ ├── prev-next.ts
│ │ │ │ ├── sidebar.ts
│ │ │ │ └── sponsor-grid.ts
│ │ │ ├── index.ts
│ │ │ ├── styles/
│ │ │ │ ├── base.css
│ │ │ │ ├── components/
│ │ │ │ │ ├── custom-block.css
│ │ │ │ │ ├── vp-code-group.css
│ │ │ │ │ ├── vp-code.css
│ │ │ │ │ ├── vp-doc.css
│ │ │ │ │ └── vp-sponsor.css
│ │ │ │ ├── docsearch.css
│ │ │ │ ├── fonts.css
│ │ │ │ ├── icons.css
│ │ │ │ ├── utils.css
│ │ │ │ └── vars.css
│ │ │ ├── support/
│ │ │ │ ├── docsearch.ts
│ │ │ │ ├── lru.ts
│ │ │ │ ├── reactivity.ts
│ │ │ │ ├── sidebar.ts
│ │ │ │ ├── translation.ts
│ │ │ │ └── utils.ts
│ │ │ └── without-fonts.ts
│ │ └── tsconfig.json
│ ├── node/
│ │ ├── alias.ts
│ │ ├── build/
│ │ │ ├── build.ts
│ │ │ ├── buildMPAClient.ts
│ │ │ ├── bundle.ts
│ │ │ ├── generateSitemap.ts
│ │ │ └── render.ts
│ │ ├── cli.ts
│ │ ├── config.ts
│ │ ├── contentLoader.ts
│ │ ├── defaultTheme.ts
│ │ ├── index.ts
│ │ ├── init/
│ │ │ └── init.ts
│ │ ├── markdown/
│ │ │ ├── markdown.ts
│ │ │ └── plugins/
│ │ │ ├── containers.ts
│ │ │ ├── githubAlerts.ts
│ │ │ ├── highlight.ts
│ │ │ ├── image.ts
│ │ │ ├── lineNumbers.ts
│ │ │ ├── link.ts
│ │ │ ├── preWrapper.ts
│ │ │ ├── restoreEntities.ts
│ │ │ └── snippet.ts
│ │ ├── markdownToVue.ts
│ │ ├── plugin.ts
│ │ ├── plugins/
│ │ │ ├── dynamicRoutesPlugin.ts
│ │ │ ├── localSearchPlugin.ts
│ │ │ ├── rewritesPlugin.ts
│ │ │ ├── staticDataPlugin.ts
│ │ │ └── webFontsPlugin.ts
│ │ ├── postcss/
│ │ │ └── isolateStyles.ts
│ │ ├── serve/
│ │ │ └── serve.ts
│ │ ├── server.ts
│ │ ├── shortcuts.ts
│ │ ├── siteConfig.ts
│ │ ├── tsconfig.json
│ │ └── utils/
│ │ ├── fnSerialize.ts
│ │ ├── getGitTimestamp.ts
│ │ ├── glob.ts
│ │ ├── moduleGraph.ts
│ │ ├── processIncludes.ts
│ │ └── task.ts
│ └── shared/
│ ├── shared.ts
│ └── tsconfig.json
├── template/
│ ├── .vitepress/
│ │ ├── config.js
│ │ └── theme/
│ │ ├── Layout.vue
│ │ ├── index.js
│ │ └── style.css
│ ├── api-examples.md
│ ├── index.md
│ └── markdown-examples.md
├── theme-without-fonts.d.ts
├── theme.d.ts
├── tsconfig.json
└── types/
├── default-theme.d.ts
├── docsearch.d.ts
├── index.d.ts
├── local-search.d.ts
└── shared.d.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto eol=lf
================================================
FILE: .github/FUNDING.yml
================================================
github: [yyx990803, kiaking, brc-dd, posva]
open_collective: vuejs
patreon: evanyou
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "\U0001F41E Bug report"
description: Create a report to help us improve
labels: ['bug: pending triage']
body:
- type: markdown
attributes:
value: |
"Thanks for taking the time to fill out this bug report!
VitePress is still WIP, and it is not compatible with VuePress.
Please do not open issue about default theme missing features or something doesn't work like VuePress."
- type: textarea
id: bug-description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks!
placeholder: Bug description
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Steps to reproduce the behavior. [vitepress.new](https://vitepress.new/) can be used as a starter template.
placeholder: Reproduction
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
placeholder: Expected behavior
validations:
required: true
- type: textarea
id: system-info
attributes:
label: System Info
description: Output of `npx envinfo --system --npmPackages vitepress --binaries --browsers`
render: Text
placeholder: System, Binaries, Browsers
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context or screenshots about the bug report here.
- type: checkboxes
id: checkboxes
attributes:
label: Validations
description: Before submitting the issue, please make sure you do the following
options:
- label: Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).
required: true
- label: Follow our [Code of Conduct](https://vuejs.org/about/coc.html)
required: true
- label: Read the [docs](https://vitepress.dev).
required: true
- label: Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: "\U0001F680 New feature proposal"
description: Suggest an idea for this project
body:
- type: markdown
attributes:
value: |
Thanks for your interest in the project and taking the time to fill out this feature report!
- type: textarea
id: feature-description
attributes:
label: Is your feature request related to a problem? Please describe.
description: "A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]"
validations:
required: true
- type: textarea
id: suggested-solution
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: alternative
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
- type: checkboxes
id: checkboxes
attributes:
label: Validations
description: Before submitting the issue, please make sure you do the following
options:
- label: Follow our [Code of Conduct](https://vuejs.org/about/coc.html)
required: true
- label: Read the [docs](https://vitepress.dev).
required: true
- label: Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).
required: true
- label: Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.
required: true
================================================
FILE: .github/commit-convention.md
================================================
## Git Commit Message Convention
> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular).
#### TL;DR:
Messages must be matched by the following regex:
```js
/^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\(.+\))?: .{1,50}/
```
#### Examples
Appears under "Features" header, `theme` subheader:
```
feat(theme): add home page feature
```
Appears under "Bug Fixes" header, `theme` subheader, with a link to issue #28:
```
fix(theme): remove underline on sidebar hover style
close #28
```
Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:
```
perf: improve store getters performance by removing 'foo' option
BREAKING CHANGE: The 'foo' option has been removed.
```
The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header.
```
revert: feat(theme): add home page feature
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
```
### Full Message Format
A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:
```
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
```
The **header** is mandatory and the **scope** of the header is optional.
### Revert
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
### Type
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.
### Scope
The scope could be anything specifying the place of the commit change. For example `theme`, `compiler`, `ssr`, etc...
### Subject
The subject contains a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
### Footer
The footer should contain any information about **Breaking Changes** and is also the place to
reference GitHub issues that this commit **Closes**.
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
================================================
FILE: .github/contributing.md
================================================
# VitePress Contributing Guide
Hi! We're really excited that you are interested in contributing to VitePress. Before submitting your contribution, please make sure to take a moment and read through the following guidelines:
- [Code of Conduct](https://github.com/vuejs/vue/blob/dev/.github/CODE_OF_CONDUCT.md)
- [Pull Request Guidelines](#pull-request-guidelines)
## Pull Request Guidelines
- Checkout a topic branch from the relevant branch, e.g. `main`, and merge back against that branch.
- If adding a new feature:
- Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
- If fixing bug:
- Provide a detailed description of the bug in the PR. Live demo preferred.
- It's OK to have multiple small commits as you work on the PR - GitHub can automatically squash them before merging.
- Commit messages must follow the [commit message convention](./commit-convention.md) so that changelogs can be automatically generated.
## Development Setup
You will need [Node.js](https://nodejs.org) v20 or higher and [pnpm](https://pnpm.io).
After cloning the repo, run:
```sh
# install the dependencies of the project
$ pnpm install
# setup git hooks
$ pnpm simple-git-hooks
```
### Setup VitePress Dev Environment
The easiest way to start testing out VitePress is to tweak the VitePress docs. You may run `pnpm run docs` to boot up VitePress documentation site locally, with live reloading of the source code.
```sh
$ pnpm run docs
```
After executing the above command, visit http://localhost:5173 and try modifying the source code. You'll get live update.
If you don't need docs site up and running, you may start VitePress local dev environment with `pnpm run dev`.
```sh
$ pnpm run dev
```
================================================
FILE: .github/pull_request_template.md
================================================
### Description
<!-- Please insert your description here and provide info about the "what" this PR is solving. -->
### Linked Issues
<!-- e.g. fixes #123 -->
### Additional Context
<!-- Is there anything you would like the reviewers to focus on? -->
---
> [!TIP]
> The author of this PR can publish a _preview release_ by commenting `/publish` below.
================================================
FILE: .github/workflows/cr-comment.yml
================================================
name: Add continuous release label
on:
issue_comment:
types: [created]
permissions:
pull-requests: write
jobs:
label:
if: ${{ github.event.issue.pull_request && (github.event.comment.user.id == github.event.issue.user.id || github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'COLLABORATOR') && startsWith(github.event.comment.body, '/publish') }}
runs-on: ubuntu-latest
steps:
- run: gh issue edit ${{ github.event.issue.number }} --add-label cr-tracked --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.CR_PAT }}
================================================
FILE: .github/workflows/cr.yml
================================================
name: CR
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'
on:
pull_request:
branches: [main]
types: [opened, synchronize, labeled, ready_for_review]
paths-ignore:
- '.github/**'
- '!.github/workflows/cr.yml'
- '__tests__/**'
- 'art/**'
- 'docs/**'
- '*.md'
push:
branches: [main]
paths-ignore:
- '.github/**'
- '!.github/workflows/cr.yml'
- '__tests__/**'
- 'art/**'
- 'docs/**'
- '*.md'
tags-ignore:
- '*'
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.number }}
cancel-in-progress: true
jobs:
release:
if: ${{ ((github.event_name == 'pull_request' && !github.event.pull_request.draft && contains(github.event.pull_request.labels.*.name, 'cr-tracked') && !contains(github.event.pull_request.labels.*.name, 'spam') && !contains(github.event.pull_request.labels.*.name, 'invalid')) || (github.event_name == 'push' && !startsWith(github.event.head_commit.message, 'release:'))) && github.repository == 'vuejs/vitepress' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install
- run: pnpm build
- run: npx pkg-pr-new publish --compact --no-template --pnpm
================================================
FILE: .github/workflows/lock-threads.yml
================================================
name: Lock Threads
on:
schedule:
- cron: 38 4 * * *
workflow_dispatch:
permissions:
issues: write
pull-requests: write
discussions: write
concurrency:
group: lock
jobs:
action:
if: github.repository == 'vuejs/vitepress'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
with:
issue-inactive-days: 7
pr-inactive-days: 7
exclude-any-issue-labels: 'keep-open'
exclude-any-pr-labels: 'keep-open'
================================================
FILE: .github/workflows/release-tag.yml
================================================
name: Release
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
release:
if: github.repository == 'vuejs/vitepress'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Create Release for Tag
id: release_tag
uses: yyx990803/release-tag@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
body: |
Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details.
================================================
FILE: .github/workflows/stale.yml
================================================
name: Close stale issues and PRs
on:
schedule:
- cron: '0 12 1,15 * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
with:
days-before-stale: 30
days-before-close: -1
stale-issue-label: stale
stale-pr-label: stale
# action has a bug that keeps removing the stale label from stale PRs
# it's thinking that the PR is updated when the stale label is added
remove-pr-stale-when-updated: false
operations-per-run: 1000
================================================
FILE: .github/workflows/test.yml
================================================
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest]
node_version: [20, 22, 24, latest]
include:
- os: windows-latest
node_version: 24
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Set node version to ${{ matrix.node_version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node_version }}
cache: pnpm
- name: Install deps
run: pnpm install
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Install Playwright
run: pnpm playwright install chromium
- name: Check
run: pnpm check
================================================
FILE: .gitignore
================================================
/coverage
/src/client/shared.ts
/src/node/shared.ts
*.log
*.tgz
.DS_Store
.idea
.temp
.vite_opt_cache
.vscode
dist
cache
temp
examples-temp
node_modules
pnpm-global
TODOs.md
*.timestamp-*.mjs
================================================
FILE: .prettierignore
================================================
*.md
*.vue
dist
pnpm-lock.yaml
cache
template
temp
!CHANGELOG.md
.temp
================================================
FILE: .prettierrc.yml
================================================
semi: false
singleQuote: true
printWidth: 80
trailingComma: none
================================================
FILE: CHANGELOG.md
================================================
## [2.0.0-alpha.17](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.16...v2.0.0-alpha.17) (2026-03-19)
### Bug Fixes
- **build:** `processIncludes` no longer swallows errors ([fb21fdf](https://github.com/vuejs/vitepress/commit/fb21fdf6759b7c88ac98456820b75286936fbf87))
- **build:** deterministic local search indexing and non-blocking initial scan (closes [#4081](https://github.com/vuejs/vitepress/issues/4081)) ([fc0f203](https://github.com/vuejs/vitepress/commit/fc0f203f0ac451ec039850b920f0684c1695d161))
- **client:** await `clipboard.writeText` so that fallback works in non-secure contexts ([#5119](https://github.com/vuejs/vitepress/issues/5119)) ([b544df8](https://github.com/vuejs/vitepress/commit/b544df802d256aef10d4da94631967b0fcab68d2))
- disable brotli compression in preview server ([ca1e875](https://github.com/vuejs/vitepress/commit/ca1e87512924acdd8d39ca0f530a424ad933b701))
- **theme:** add `rel="alternate"` and `hreflang` to links in language menu ([#5108](https://github.com/vuejs/vitepress/issues/5108)) ([f09593b](https://github.com/vuejs/vitepress/commit/f09593b073e42fa9d8de1e744a9f2a0e5c8170fc))
- **theme:** add margin to images in vp-doc (closes [#5136](https://github.com/vuejs/vitepress/issues/5136)) ([896e49a](https://github.com/vuejs/vitepress/commit/896e49a777bb983de2cbef82c1c295db2dba3dbe))
- **theme:** close sidebar on resize (closes [#5145](https://github.com/vuejs/vitepress/issues/5145)) ([17696c3](https://github.com/vuejs/vitepress/commit/17696c358b88335c4f6bb516bbcdf774aaf7deee))
- **theme:** disable text autospace in `<pre>` (closes [#5115](https://github.com/vuejs/vitepress/issues/5115)) ([21a5fb6](https://github.com/vuejs/vitepress/commit/21a5fb6a96549564fcf698d0e7256181eac3919b))
- **theme:** enable `line-break: strict` for `<li>` too ([f811d58](https://github.com/vuejs/vitepress/commit/f811d581a164fa330b17cdb85270effa39bdb3fd))
- **theme:** keep pnum,tnum features in Inter ([f1bef95](https://github.com/vuejs/vitepress/commit/f1bef95eee453bb18cc160741a11513678015cd6)), closes [#5096](https://github.com/vuejs/vitepress/issues/5096)
- **theme:** navbar menu group is incorrectly highlighted ([#5113](https://github.com/vuejs/vitepress/issues/5113)) ([b28667b](https://github.com/vuejs/vitepress/commit/b28667b6b03d50c4be0d509ec5e7d780f29f8042))
- **theme:** strip system-ui from font-family-base ([#4988](https://github.com/vuejs/vitepress/issues/4988)) ([8096eac](https://github.com/vuejs/vitepress/commit/8096eaca4f1d9eef00101e42f7159da1e12ca3de))
### Features
- **theme:** add `home-hero-actions-before-actions` slot ([#5151](https://github.com/vuejs/vitepress/issues/5151)) ([74a73d8](https://github.com/vuejs/vitepress/commit/74a73d869ca61f2c64f9dcbd9912a0461e8d4bfe))
- support text-fragments ([#5140](https://github.com/vuejs/vitepress/issues/5140)) ([44e2675](https://github.com/vuejs/vitepress/commit/44e2675889588b54dea771a0c82e2db64739364c))
- **theme:** add Japanese translation for "copied" label ([#5106](https://github.com/vuejs/vitepress/issues/5106)) ([a01bba0](https://github.com/vuejs/vitepress/commit/a01bba0cad70bb089918adab105f0a5b5ff85918))
- **theme:** enable text-autospace and text-spacing-trim (closes [#4996](https://github.com/vuejs/vitepress/issues/4996)) ([d7effff](https://github.com/vuejs/vitepress/commit/d7effffdbb9ea6bdeda31e26dea0f1ed32ddd51e))
- **theme:** support specifying list of details in home page features (closes [#5101](https://github.com/vuejs/vitepress/issues/5101)) ([3146ce4](https://github.com/vuejs/vitepress/commit/3146ce48ed3ad684ddfbf1194de3a2200082eb92))
### BREAKING CHANGES
The previous `<!-- @include: ./path/to/file -->` syntax silently ignored errors when files did not exist. This behavior was originally intended as an escape hatch while documenting includes, but better solutions now exist using Shiki transformers.
For most users, no code changes are required. If you now see errors, it means your includes are broken and were previously not being reported.
Users who intentionally reference non-existent files or want to document includes without resolving them can configure `markdown.codeTransformers` with a `postprocess` hook. See `docs/.vitepress/config.ts` in this repo for an example.
## [2.0.0-alpha.16](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.15...v2.0.0-alpha.16) (2026-01-31)
### Bug Fixes
- always log error when failed to fetch page ([66cf64e](https://github.com/vuejs/vitepress/commit/66cf64e6d127dd8473e582d11e1133acda6c3bc8))
- **theme:** add fallback for `heroImageSlotExists` ([#5076](https://github.com/vuejs/vitepress/issues/5076)) ([f119b18](https://github.com/vuejs/vitepress/commit/f119b18e39b545f39e29358913fe9ed1fd69bc55))
- **theme:** align badges in h1 and h2 ([#5087](https://github.com/vuejs/vitepress/issues/5087)) (closes [#5063](https://github.com/vuejs/vitepress/issues/5063)) ([b200865](https://github.com/vuejs/vitepress/commit/b2008654ffaf0d8f8c425e88592e9ed2f8791506))
- **theme:** highlight active link in mobile nav menu ([#5086](https://github.com/vuejs/vitepress/issues/5086)) (closes [#5068](https://github.com/vuejs/vitepress/issues/5068), closes [#5074](https://github.com/vuejs/vitepress/issues/5074)) ([923aa90](https://github.com/vuejs/vitepress/commit/923aa902523739bfb9d77aed376ebc73c32eeb33))
- **theme:** overflow clip is buggy on safari ([8ed6ea0](https://github.com/vuejs/vitepress/commit/8ed6ea048cb49256e3302de2de0edfbe635afd32)), closes [#5050](https://github.com/vuejs/vitepress/issues/5050) [#5039](https://github.com/vuejs/vitepress/issues/5039) [#5027](https://github.com/vuejs/vitepress/issues/5027)
- **theme:** remove margin between code groups and blocks in markdown containers ([a28e171](https://github.com/vuejs/vitepress/commit/a28e171604605713a221d0eb2bbdce211930d94f)), closes [#5099](https://github.com/vuejs/vitepress/issues/5099)
### Features
- **theme:** upgrade DocSearch to 4.5 with sidepanel ([#5092](https://github.com/vuejs/vitepress/issues/5092)) ([0d646a6](https://github.com/vuejs/vitepress/commit/0d646a66cd44e97adef516a6a36e03365f179906))
- **theme:** use `@layer __vitepress_base` to wrap the styles in base.css ([#4905](https://github.com/vuejs/vitepress/issues/4905)) ([f8d8c0d](https://github.com/vuejs/vitepress/commit/f8d8c0d712fba4728c750e1f44c5ba9596979ba1))
## [2.0.0-alpha.15](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.14...v2.0.0-alpha.15) (2025-11-22)
### Bug Fixes
- **theme:** navbar overflowing on mobile devices ([06f0e1a](https://github.com/vuejs/vitepress/commit/06f0e1a5c92e36d86fd2e037c335af04d75384e7)), closes [#5039](https://github.com/vuejs/vitepress/issues/5039)
## [2.0.0-alpha.14](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.13...v2.0.0-alpha.14) (2025-11-21)
### Bug Fixes
- log dead links in dev mode too ([179ee62](https://github.com/vuejs/vitepress/commit/179ee621d99b3c14e2e098e3b786465cbeaeab9a)), closes [#4419](https://github.com/vuejs/vitepress/issues/4419)
- **theme:** sidebar alignment when scrollbar is there on page ([0ee7158](https://github.com/vuejs/vitepress/commit/0ee71588de2b1691b1a9287aa1daa729197fd3ca)), closes [#5027](https://github.com/vuejs/vitepress/issues/5027)
### Features
- **client:** emit `vitepress:codeGroupTabActivate` custom event when a code group tab is activated ([dfb02a4](https://github.com/vuejs/vitepress/commit/dfb02a479f19afbee9e292b15c3c2beef271e57f)), closes [#5023](https://github.com/vuejs/vitepress/issues/5023)
## [2.0.0-alpha.13](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.12...v2.0.0-alpha.13) (2025-11-13)
### Bug Fixes
- **client,a11y:** improve focus handling and scrolling behavior in router ([#4943](https://github.com/vuejs/vitepress/issues/4943)) ([d46107f](https://github.com/vuejs/vitepress/commit/d46107fa254d662d297b1362aa0d3b898ef96e2c))
- disable markdown-it-attrs for fenced code blocks ([0899618](https://github.com/vuejs/vitepress/commit/089961855653f862b71747e8179ef2647e06d626))
- git log parsing when there are empty commits in history ([#4965](https://github.com/vuejs/vitepress/issues/4965)) ([612c458](https://github.com/vuejs/vitepress/commit/612c45895df79a0c0e87ca040564bfe88ce04f62))
- print full path in dead links check ([2b77fb3](https://github.com/vuejs/vitepress/commit/2b77fb3a72058129edbaddd3c6f0f6ee24f983d5)), closes [#4919](https://github.com/vuejs/vitepress/issues/4919)
- rename `markdown.cjkFriendly` to `markdown.cjkFriendlyEmphasis` ([bce0b53](https://github.com/vuejs/vitepress/commit/bce0b53659fa3a57b2ed8431a0861939dadd118a)), closes [#4952](https://github.com/vuejs/vitepress/issues/4952)
- respect markdown.cache = false on build too ([6d7422f](https://github.com/vuejs/vitepress/commit/6d7422f8fa321c641b1d5be3fa0c382400a2b78f))
- simplify lang extraction logic; use markdown-it plugins in type-safe manner; bump deps ([4e548f5](https://github.com/vuejs/vitepress/commit/4e548f542469a366f327cdef1530bdb1a31542ad))
- **theme:** add lang and dir attributes to language picker ([f0b29d7](https://github.com/vuejs/vitepress/commit/f0b29d7ef32a33f61c355d19561176411ede4b48))
- **theme:** adjust margin of code blocks inside containers ([82fac5d](https://github.com/vuejs/vitepress/commit/82fac5d22c9e2b28d18dafcd458741a4b4d7a86b)), closes [#4921](https://github.com/vuejs/vitepress/issues/4921)
- **theme:** avoid use of `:where` in selector list for now ([c2eaccd](https://github.com/vuejs/vitepress/commit/c2eaccd0d2109a6c64cee9fe615e48daaf4eda0e)), closes [#4923](https://github.com/vuejs/vitepress/issues/4923)
- **theme:** disable whitespace wrapping for VPBadge ([#4968](https://github.com/vuejs/vitepress/issues/4968)) ([113d230](https://github.com/vuejs/vitepress/commit/113d2304784586028d9733036ccb585374731397))
- **theme:** use nav height css var for curtain top in sidebar ([#4993](https://github.com/vuejs/vitepress/issues/4993)) ([be260fd](https://github.com/vuejs/vitepress/commit/be260fda6efc1d6c4b56219d7a17a19ab7a4ba76))
### Features
- export cacheAllGitTimestamps and getGitTimestamp ([31d87e2](https://github.com/vuejs/vitepress/commit/31d87e27387ebdceb22c047cc5f821761276d5f7))
- **i18n,a11y:** change last update logic ([#4935](https://github.com/vuejs/vitepress/issues/4935)) ([187bf25](https://github.com/vuejs/vitepress/commit/187bf250e6496554fca0b070a5aba55484f7fc0b))
- **markdown:** support custom display-name for fenced code blocks ([#4960](https://github.com/vuejs/vitepress/issues/4960)) ([3d61619](https://github.com/vuejs/vitepress/commit/3d61619ec0f0458c7ae04e7954b72a8e2ff399c0))
- prevent `$` symbol selection in shell code ([#5025](https://github.com/vuejs/vitepress/issues/5025)) ([bf2715e](https://github.com/vuejs/vitepress/commit/bf2715ed67f290726fc6d4c85c203ca8f74cc907))
- **theme:** allow passing functions for nav links ([#4963](https://github.com/vuejs/vitepress/issues/4963)) ([34cfa91](https://github.com/vuejs/vitepress/commit/34cfa91b6f14d8adfaa2d3c9f3eb6ad8b889ef1c))
### Performance Improvements
- make a single git call for timestamps instead of calling it for each file ([#4958](https://github.com/vuejs/vitepress/issues/4958)) ([6dfcdd3](https://github.com/vuejs/vitepress/commit/6dfcdd3fe8dc73e7b4ad7783df9530dedac1f6bd))
### BREAKING CHANGES
- `markdown-it-attrs` is disabled for fenced code blocks. For most users no change is required. If you want to add classes to code blocks, do it using shiki transformers instead.
- Rename `cjkFriendly` to `cjkFriendlyEmphasis` in your vitepress config. Most people should be unaffected unless they want to disable the CJK emphasis behavior added v2.0.0-alpha.12.
## [2.0.0-alpha.12](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.11...v2.0.0-alpha.12) (2025-08-20)
### Bug Fixes
- **hmr:** don't load config twice on server restart ([d1a8061](https://github.com/vuejs/vitepress/commit/d1a8061eb438c730ccc62ce2d7158dbe89cc5292))
- **hmr:** no need for server restart on theme change ([d3a1567](https://github.com/vuejs/vitepress/commit/d3a15673bd0846c7837bcc4ff5a2e3239a02f1f9))
- **hmr:** hmr not working for snippet imports in dynamic routes ([914467e](https://github.com/vuejs/vitepress/commit/914467e17fb759a9722951a3fd7568eb3bc4d4e6))
- **theme:** fix local nav alignment and increase touch area ([43b36c0](https://github.com/vuejs/vitepress/commit/43b36c0c19c2b4696f8c38fdaf4318786ea7ae8e))
- **theme:** nav background doesn't extend fully and gap after sidebar with non-overlay scrollbars ([7df3052](https://github.com/vuejs/vitepress/commit/7df30525121a28a46cc6c802f3155ccff8effaca)), closes [#4653](https://github.com/vuejs/vitepress/issues/4653)
- **theme:** use clipboard-check instead of clipboard-copy for code copied icon ([1c8815d](https://github.com/vuejs/vitepress/commit/1c8815d53ed2d56b07938260df6566f1514f4bfc))
### Features
- add markdown-it-cjk-friendly ([9fc8462](https://github.com/vuejs/vitepress/commit/9fc8462726ccf1cdb78b6171c9f1f5964e79ca22)), closes [#3762](https://github.com/vuejs/vitepress/issues/3762) [#4752](https://github.com/vuejs/vitepress/issues/4752)
- make postcssIsolateStyles idempotent ([0944777](https://github.com/vuejs/vitepress/commit/094477789328b80cff45cd973efa16b6a4db0a27))
### BREAKING CHANGES
- [markdown-it-cjk-friendly](https://www.npmjs.com/package/markdown-it-cjk-friendly) is enabled by default. This intentionally deviates from the official commonmark spec for the benefit of CJK users. **For most users, no change is required.** If you were using hacks to patch `scanDelims`, you can remove those. To disable the plugin, set `markdown: { cjkFriendly: false }` in your vitepress config.
- `includeFiles` option in `postcssIsolateStyles` now defaults to `[/vp-doc\.css/, /base\.css/]`. You can remove explicit `includeFiles` if you were using it just to run it on `vp-doc.css`. To revert back to older behavior pass `includeFiles: [/base\.css/]`. The underlying implementation is changed and `transform` and `exclude` options are no longer supported. Use `postcss-prefix-selector` directly if you've advanced use cases.
## [2.0.0-alpha.11](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.10...v2.0.0-alpha.11) (2025-08-14)
### Bug Fixes
- hmr working only once for markdown files ([8d8a5ac](https://github.com/vuejs/vitepress/commit/8d8a5ac281f090cd097bece792d9dd3ef00e5545)), closes [#4909](https://github.com/vuejs/vitepress/issues/4909)
- html entities encoded twice in toc plugin ([8abbe29](https://github.com/vuejs/vitepress/commit/8abbe298d545de17d34a9bc1eb72af4c5a4b41b8)), closes [#4908](https://github.com/vuejs/vitepress/issues/4908)
## [2.0.0-alpha.10](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.9...v2.0.0-alpha.10) (2025-08-11)
### Bug Fixes
- **client:** base not stripped from relativePath in 404 pages ([b840877](https://github.com/vuejs/vitepress/commit/b840877aa83a5a24ffc1222e8a5a3dbf3e5105e8)), closes [#4850](https://github.com/vuejs/vitepress/issues/4850)
- hmr of style blocks in dynamic routes ([#4903](https://github.com/vuejs/vitepress/issues/4903)) ([3d0fafb](https://github.com/vuejs/vitepress/commit/3d0fafba545f4b5028cf43d86027dd44dab14421))
- make paths in `watchedFiles` absolute as mentioned in the docs ([318c14f](https://github.com/vuejs/vitepress/commit/318c14fa7c9fb949d74b7d9fae416e917766cf05))
- module graph causing unnecessary route regeneration on every update ([fc267ae](https://github.com/vuejs/vitepress/commit/fc267ae6b787e163d41666e090089821377ead43))
- preserve externally added dynamic routes and pages ([fc267ae](https://github.com/vuejs/vitepress/commit/fc267ae6b787e163d41666e090089821377ead43))
- **search:** input placeholder being cut off in smaller viewports ([162c6a6](https://github.com/vuejs/vitepress/commit/162c6a69bf56945daa20d126aa034c59ee0c8a2e))
- **search:** style tweaks for when searches are empty ([8b23217](https://github.com/vuejs/vitepress/commit/8b232171cc321bd3dc86b4357622815269f0b6f4))
- **types:** externalize markdown-it types ([5bf835b](https://github.com/vuejs/vitepress/commit/5bf835b5074e9567852d552bfb5115c6456026e8))
- **types:** pass generics deeply to user config ([777e2ca](https://github.com/vuejs/vitepress/commit/777e2caaacd93ce41b046f6c9d5ba80cc43ba37c))
### Features
- add source param to the deadlink check fn ([#4870](https://github.com/vuejs/vitepress/issues/4870)) ([8c027c2](https://github.com/vuejs/vitepress/commit/8c027c2a7c443074fd0d4890f7736b444f9254aa))
- **theme:** add `rel="me"` to social links by default ([#4873](https://github.com/vuejs/vitepress/issues/4873)) ([34886c6](https://github.com/vuejs/vitepress/commit/34886c667d1305a79d64c957f8c52931ea122f47))
## [2.0.0-alpha.9](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.8...v2.0.0-alpha.9) (2025-07-26)
### Bug Fixes
- **md:** pass container option to gitHubAlertsPlugin ([#4848](https://github.com/vuejs/vitepress/issues/4848)) ([52f0eaa](https://github.com/vuejs/vitepress/commit/52f0eaa0849344aa45efbf7258a6287597e55a9a))
- **theme:** remove duplicate text in sponsors grid ([3c51b22](https://github.com/vuejs/vitepress/commit/3c51b22ac98a12f193081d23799cb9f3f2ecf682)), closes [#4854](https://github.com/vuejs/vitepress/issues/4854)
### Features
- **search:** upgrade search to DocSearch v4-beta ([#4843](https://github.com/vuejs/vitepress/issues/4843)) ([ac61abe](https://github.com/vuejs/vitepress/commit/ac61abe7d7be5ef8b6939f18192896538eba1b8c))
### BREAKING CHANGES
- **search:** Uses DocSearch v4 beta. No change is required if you're not customizing the styles of navbar search button or modal. DocSearch AI features are in private beta, you can apply for them at https://forms.gle/iyfb5pC2CiiwszUKA
## [2.0.0-alpha.8](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.7...v2.0.0-alpha.8) (2025-07-08)
### Bug Fixes
- adjust glob logic to always resolve glob relative to base ([5d41785](https://github.com/vuejs/vitepress/commit/5d41785ff7b016b08f587f1ef3318fc18d58f6ab)), closes [#4822](https://github.com/vuejs/vitepress/issues/4822)
- **build:** ignore escaped `:` when splitting selector in `postcssIsolateStyles` ([#4830](https://github.com/vuejs/vitepress/issues/4830)) ([a629b03](https://github.com/vuejs/vitepress/commit/a629b03f0ee8a29d73a18481399d7de1c992faf2))
- font preload not being generated in rolldown-vite ([ed387e8](https://github.com/vuejs/vitepress/commit/ed387e89d42a08c15a9f45c9c5e11c6750245490))
- **theme:** remove extra slash when concatenating base with sidebar links ([c8fc80e](https://github.com/vuejs/vitepress/commit/c8fc80e438fffd98feaf7c72263bc3077792c4a2))
## [2.0.0-alpha.7](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2025-06-24)
### Bug Fixes
- **local-search:** parse headings with non-anchor `a` tags as titles properly ([#4809](https://github.com/vuejs/vitepress/issues/4809)) ([5359903](https://github.com/vuejs/vitepress/commit/53599039a01af6d8e17a6a6e9cea5c222cc5948c))
- resolve pages after setting global vitepress config ([56ba65e](https://github.com/vuejs/vitepress/commit/56ba65e1301454df88f9a3856fa1a70dc052d314)), closes [#4803](https://github.com/vuejs/vitepress/issues/4803)
### Features
- **router:** add `replace` option to `useRouter` for history management ([#4788](https://github.com/vuejs/vitepress/issues/4788)) ([23541b4](https://github.com/vuejs/vitepress/commit/23541b4f83726cdac09ffcaf9141bba871cda690)), closes [#4787](https://github.com/vuejs/vitepress/issues/4787)
- consistent glob options across content, data, and path loaders ([#4808](https://github.com/vuejs/vitepress/issues/4808)) ([7619521](https://github.com/vuejs/vitepress/commit/76195212596cd54095240246b7e78075ac3cbc27)), closes [#4807](https://github.com/vuejs/vitepress/issues/4807)
- bump to vite 7 ([2ecd607](https://github.com/vuejs/vitepress/commit/2ecd607af15222eeddf0b888a72d0f913f5a3cd2))
### Performance Improvements
- render pages in contentLoader asynchronously ([36148a0](https://github.com/vuejs/vitepress/commit/36148a0bcf3a73d1fe3f0c5f33337b679f700053))
### BREAKING CHANGES
- Only `cwd`, `ignore`, `dot` and `debug` are supported in `globOptions` of `createContentLoader`. If you want to pass other options, you still can but you might need to suppress type errors.
- Uses vite 7. See [vite migration guide](https://vite.dev/guide/migration.html) for more info. For most of the users no change is required. VitePress should work same as earlier, except for maybe some type mismatches if you're using third-party plugins. You can suppress them using `@ts-expect-error` or `as any` and report the issues at respective repositories.
## [2.0.0-alpha.6](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2025-06-12)
### Bug Fixes
- allow AdditionalConfigLoader to return void ([906a44a](https://github.com/vuejs/vitepress/commit/906a44a3ad488a46804757326af95cfb8cac6b75))
- **build:** avoiding creating separate chunks for vite public assets ([21f24b9](https://github.com/vuejs/vitepress/commit/21f24b9994ea4807ac7e0be38408e9aaa3abe8a9))
- **build:** emit lean chunks after vite has done processing ([26cb685](https://github.com/vuejs/vitepress/commit/26cb685adf54f07fe3e9fd7bfd49a0ff79956923)), closes [#4737](https://github.com/vuejs/vitepress/issues/4737)
- **client:** properly skip removed lines when copying code blocks ([c128baf](https://github.com/vuejs/vitepress/commit/c128baf0c41d5113c1b876f691e0185201b1f500))
- disable appearance scripts in zero-js mode ([e7f9d05](https://github.com/vuejs/vitepress/commit/e7f9d05c3e2ef4f4c1db3b2c17e586f0fc26a6f6)), closes [#4766](https://github.com/vuejs/vitepress/issues/4766)
- don't preload dynamic imports ([801648a](https://github.com/vuejs/vitepress/commit/801648a4c9d91e7f96302932ac9247d5bdd64ef7)), closes [#4770](https://github.com/vuejs/vitepress/issues/4770)
- gather additional config files even if root .vitepress/config is not present ([26f178c](https://github.com/vuejs/vitepress/commit/26f178cfaa330a017bb69b1ec6bd482d63a100a9))
- set `preserveEntrySignatures` for rolldown-vite ([#4784](https://github.com/vuejs/vitepress/issues/4784)) ([4351bc0](https://github.com/vuejs/vitepress/commit/4351bc0b831277401e08b350d7d7c0ab9ea0c9ed))
- skip fields not supported by rolldown for rolldown-vite ([#4747](https://github.com/vuejs/vitepress/issues/4747)) ([4e3fce4](https://github.com/vuejs/vitepress/commit/4e3fce40c9bab261f3c5e31833475c3e2c6ba0cf))
- **theme/regression:** code blocks not aligned properly in rtl layouts ([a643347](https://github.com/vuejs/vitepress/commit/a64334753079a5b874a482508d9ee255d2a0ea38))
- **theme:** hide native search input cancel button ([#4723](https://github.com/vuejs/vitepress/issues/4723)) ([2c4944f](https://github.com/vuejs/vitepress/commit/2c4944f06ccf46fcf58fb18a1819fd167c9533cc))
- **theme:** prevent error in handleSearchHotKey method ([#4782](https://github.com/vuejs/vitepress/issues/4782)) ([21fcecc](https://github.com/vuejs/vitepress/commit/21fcecce0581d0c461bc15e03429f61ff444a655))
- use v-pre for mathjax instead of isCustomElement ([c9b8928](https://github.com/vuejs/vitepress/commit/c9b89282f3573998cfc4103bbddbd73d2529cb66))
### Features
- use `oxc-minify` instead of `transformWithEsbuild` when rolldown-vite is used ([#4748](https://github.com/vuejs/vitepress/issues/4748)) ([7c1dc48](https://github.com/vuejs/vitepress/commit/7c1dc48b2fd08e128f7bbe26690fb6534dfb4b95))
## [2.0.0-alpha.5](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2025-04-21)
### Bug Fixes
- don't remove shiki styles from `pre` and remove unnecessary transformers (#4652) ([db58af5](https://github.com/vuejs/vitepress/commit/db58af5c66e563e7663084057a9853d8f2da984c)), closes [#4652](https://github.com/vuejs/vitepress/issues/4652)
- normalize url fragments in internal links to correctly resolve to anchors ([#4628](https://github.com/vuejs/vitepress/issues/4628)) ([e25d080](https://github.com/vuejs/vitepress/commit/e25d0805505db2f1116e99d38a488d5cb39ed426)), closes [#4605](https://github.com/vuejs/vitepress/issues/4605)
- **theme-default:** ensure proper sizing of SVG hero images ([#4639](https://github.com/vuejs/vitepress/issues/4639)) ([7d94481](https://github.com/vuejs/vitepress/commit/7d9448192079e59493aa5c1e86cdf6d6deae8e36))
### Features
- add `isHome` frontmatter option (#4673) ([544cd81](https://github.com/vuejs/vitepress/commit/544cd8125985b9e3af7fee68ea9592d159799e01)), closes [#4673](https://github.com/vuejs/vitepress/issues/4673)
- add `custom-block-title-default` class when default title is used for containers ([#4643](https://github.com/vuejs/vitepress/issues/4643)) ([63079bf](https://github.com/vuejs/vitepress/commit/63079bff03b15861d174199f7361a2aff84380e0))
- add `dir=ltr` by default on code block pre elements instead of relying on css ([19faa16](https://github.com/vuejs/vitepress/commit/19faa16169b44f52bedf1401b4a97b2a8ffdeacb))
- **default-theme:** make VPButton slottable ([#4689](https://github.com/vuejs/vitepress/issues/4689)) ([0b70397](https://github.com/vuejs/vitepress/commit/0b7039719782e85119ad22be5c89ef3d233ffaae))
- support distributed config files ([#4660](https://github.com/vuejs/vitepress/issues/4660)) ([c5e2e4d](https://github.com/vuejs/vitepress/commit/c5e2e4db818c06f3c1b458753f22fb6ec1609628))
- **theme:** make "Take me home" button's link customizable ([#4658](https://github.com/vuejs/vitepress/issues/4658)) ([0267dca](https://github.com/vuejs/vitepress/commit/0267dcafa20beea24ef359d24bb1fa99e1ffda49))
### Performance Improvements
- call `module.enableCompileCache()` ([70de34c](https://github.com/vuejs/vitepress/commit/70de34c0387d9668ada3ea9a795f9ebee3535f5b))
- hoist expensive operations in useLayout ([e5ab067](https://github.com/vuejs/vitepress/commit/e5ab0676a9a8dc607e213eb691439b2e4ee472b7))
### BREAKING CHANGES
- `useLocalNav` and `useSidebar` are removed in favor of `useLayout`. To migrate, just do find and replace. Sidebar controls are no longer exported, but we didn't find any usage on GitHub. If there is demand, we can export respective composables later. `DefaultTheme.DocSidebar` and `DefaultTheme.DocLocalNav` types are also removed.
- `vp-adaptive-theme` class is no longer added to code blocks when there is single theme. Theme authors supporting single code theme can use `.shiki:not(.shiki-themes)` as selector. Alternatively, it might be better to use the bg/fg variables set on the `.shiki` block to keep things generic.
- `vp-code` class is no longer added to code blocks. Use `.shiki` or `pre.shiki` or `[class*='language-'] pre` instead. People not customizing their themes are not affected.
## [2.0.0-alpha.4](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2025-03-09)
### Bug Fixes
- **build/regression:** langAlias not working ([06ae2bf](https://github.com/vuejs/vitepress/commit/06ae2bf3a4ee02351530b0bd055e577ca6509d62)), closes [#4581](https://github.com/vuejs/vitepress/issues/4581)
- don't hardcode `tabindex` attr in table renderer ([#4082](https://github.com/vuejs/vitepress/issues/4082)) ([aadc517](https://github.com/vuejs/vitepress/commit/aadc517c69fb239bdda99173bbc123ace567484b))
- hmr not working for watched files in path loaders ([e271695](https://github.com/vuejs/vitepress/commit/e271695d716247455ca620948f814e6c8ca0e3c4)), closes [#4525](https://github.com/vuejs/vitepress/issues/4525)
- ignore non-text content in permalink generation and fix types of markdown.config ([a8a1800](https://github.com/vuejs/vitepress/commit/a8a1800ae578be88027aa4ec7561ada4d055b888))
- prevent reload on first server start in fresh installations ([d8a884e](https://github.com/vuejs/vitepress/commit/d8a884ed0f754523765058a70149cdbaf6942341))
- properly merge classes in custom containers ([#4128](https://github.com/vuejs/vitepress/issues/4128)) ([8aad617](https://github.com/vuejs/vitepress/commit/8aad617446c03d39a65a0b21e9fce43bc484af1e))
- rebuild dynamic routes cache on server restart ([9f54714](https://github.com/vuejs/vitepress/commit/9f54714e7db69fd4902f1917f927456c71b5a292)), closes [#4525](https://github.com/vuejs/vitepress/issues/4525)
### Features
- allow matching region end in snippets without tag ([#4287](https://github.com/vuejs/vitepress/issues/4287)) ([1a2f81d](https://github.com/vuejs/vitepress/commit/1a2f81de4d6549dd1adf86ae131d1a861158bd2d))
- improve region regexes for snippet plugin ([1a6684c](https://github.com/vuejs/vitepress/commit/1a6684cf1054d326bc1dd6eeb9fb78b150ac2b2a))
- support using header anchors in markdown file inclusion ([#4608](https://github.com/vuejs/vitepress/issues/4608)) ([b99d512](https://github.com/vuejs/vitepress/commit/b99d5123c9b2afdc7461089e03476c34d7816faf)), closes [#4375](https://github.com/vuejs/vitepress/issues/4375) [#4382](https://github.com/vuejs/vitepress/issues/4382)
## [2.0.0-alpha.3](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2025-02-24)
### Bug Fixes
- **build:** `--minify` not working as documented ([9b5c037](https://github.com/vuejs/vitepress/commit/9b5c0377cd3474447c84b2901801287f3caf3d82)), closes [#4523](https://github.com/vuejs/vitepress/issues/4523)
- **build:** deterministic code group ids ([#4565](https://github.com/vuejs/vitepress/issues/4565)) ([b930b8d](https://github.com/vuejs/vitepress/commit/b930b8d5310f1691d8d9f009f45b70122e4ce800))
- **markdown:** include content of all tokens in heading ids ([68dff2a](https://github.com/vuejs/vitepress/commit/68dff2af8547ae70f6622ac826affd76f2f6378e)), closes [#4561](https://github.com/vuejs/vitepress/issues/4561)
- **client:** set correct oldURL and newURL for hashchange ([#4573](https://github.com/vuejs/vitepress/issues/4573)) ([d1f2afd](https://github.com/vuejs/vitepress/commit/d1f2afdf0fbb022f12cc12295723b3b7c7ef5cb1))
- **theme:** allow interactions behind scroll shadow ([#4537](https://github.com/vuejs/vitepress/issues/4537)) ([091d584](https://github.com/vuejs/vitepress/commit/091d5840ae15b64e04e8c07fbc0263a2749571bd))
- **theme:** code block contrast ratio ([#4487](https://github.com/vuejs/vitepress/issues/4487)) ([5dccaee](https://github.com/vuejs/vitepress/commit/5dccaeef055beb109919f8990032975a0d630384))
- **build:** fix flaky embedded languages highlighting ([#4566](https://github.com/vuejs/vitepress/issues/4566)) ([1969cf4](https://github.com/vuejs/vitepress/commit/1969cf4f3b93ad105595e4e2f8b030b04eb1c975))
### Features
- **cli:** support custom `srcDir` ([#4270](https://github.com/vuejs/vitepress/issues/4270)) ([518c094](https://github.com/vuejs/vitepress/commit/518c0945f159aae679ef710bb48ae3ab3891cc9f))
- **cli:** support custom npm scripts prefix ([#4271](https://github.com/vuejs/vitepress/issues/4271)) ([e5a0ee8](https://github.com/vuejs/vitepress/commit/e5a0ee8161752a77c5bb9546245a940cb5f28fb8))
- **build:** dynamic routes plugin overhaul ([#4525](https://github.com/vuejs/vitepress/issues/4525)) ([a62ea6a](https://github.com/vuejs/vitepress/commit/a62ea6a832a33b756642b24ad5d38c248e08b554))
- **build:** update to shiki v3 ([#4571](https://github.com/vuejs/vitepress/issues/4571)) ([52c2aa1](https://github.com/vuejs/vitepress/commit/52c2aa178d4b3fa98b863cf28f0ccf6d2aabcd93))
- **build:** use `markdown-it-async`, remove `synckit` ([#4507](https://github.com/vuejs/vitepress/issues/4507)) ([8062235](https://github.com/vuejs/vitepress/commit/80622356f1d648577ee47ee3a44b04bb015ee462))
### BREAKING CHANGES
- markdown-it-async is used instead of markdown-it. If you're using custom content renderer for local search, you'll need to do `await md.renderAsync` instead of `md.render`.
- Internals are modified a bit to better support vite 6 and handle HMR more correctly. For most users this won't need any change on their side.
- shiki is upgraded to v3. There shouldn't be any breaking change but if you see any issue, please report it.
## [2.0.0-alpha.2](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2025-01-23)
### Bug Fixes
- fix docsearch navigation and rendering ([e035027](https://github.com/vuejs/vitepress/commit/e0350275b39258a61ee867840ce1c6f5b2cecf2a))
- **types:** support preload built-in shiki languages as string ([#4513](https://github.com/vuejs/vitepress/issues/4513)) ([4f77b4f](https://github.com/vuejs/vitepress/commit/4f77b4fdfdbe945e482348a57731bff5fb4672fc))
### Features
- allow `markdown.config` and `markdown.preConfig` to accept async function ([#4512](https://github.com/vuejs/vitepress/issues/4512)) ([b88ae8d](https://github.com/vuejs/vitepress/commit/b88ae8d4a11a20104b2007c2631eb7aeb123d965))
- support same page navigation in `router.go` and expose decoded hash and query from the `route` object ([#4511](https://github.com/vuejs/vitepress/issues/4511)) ([23d3281](https://github.com/vuejs/vitepress/commit/23d3281ed6f1111ab15708ca1fd86202674f8ef7))
## [2.0.0-alpha.1](https://github.com/vuejs/vitepress/compare/v1.6.2...v2.0.0-alpha.1) (2025-01-22)
### Features
- upgrade vite to v6 ([#4504](https://github.com/vuejs/vitepress/issues/4504)) ([6a2efc3](https://github.com/vuejs/vitepress/commit/6a2efc385c90b088241db05f5263b2f3e1f757cf))
## [1.6.3](https://github.com/vuejs/vitepress/compare/v1.6.2...v1.6.3) (2025-01-22)
### Bug Fixes
- docsearch not rendering properly ([3e4120e](https://github.com/vuejs/vitepress/commit/3e4120e94805156bf63587fd633162433dbaf260))
## [1.6.2](https://github.com/vuejs/vitepress/compare/v1.6.1...v1.6.2) (2025-01-22)
### Bug Fixes
- fix static content removal for lean chunks due to Vue 3.5 changes ([#4508](https://github.com/vuejs/vitepress/issues/4508)) ([8214cae](https://github.com/vuejs/vitepress/commit/8214cae21bb16842d8870d5867e974146c51fd61))
## [1.6.1](https://github.com/vuejs/vitepress/compare/v1.6.0...v1.6.1) (2025-01-20)
### Bug Fixes
- **build:** escape `$` in replace pattern in dynamic routes plugin ([e812916](https://github.com/vuejs/vitepress/commit/e8129167c76104d59d31a77b16dff3458e6af5eb)), closes [#4499](https://github.com/vuejs/vitepress/issues/4499)
- **theme/regression:** broken hero heading at certain viewports ([37dbe89](https://github.com/vuejs/vitepress/commit/37dbe895d4cf813e6eb1289f24c637945eec0d1f))
# [1.6.0](https://github.com/vuejs/vitepress/compare/v1.5.0...v1.6.0) (2025-01-20)
### Bug Fixes
- **build:** out of order css in prod builds ([241d17d](https://github.com/vuejs/vitepress/commit/241d17d9839f06b17c3898b1a8ba0f9fa12da0d1)), closes [#4098](https://github.com/vuejs/vitepress/issues/4098)
- **build:** properly strip vpi-social css declaration in debug mode ([c61182a](https://github.com/vuejs/vitepress/commit/c61182ab278350699b5d50461788478a340790aa))
- **build:** respect `vite.clearScreen` in build ([8ea776a](https://github.com/vuejs/vitepress/commit/8ea776addc2c3bcabf3c707a9a81d6e0080a8fcb)), closes [#4468](https://github.com/vuejs/vitepress/issues/4468)
- **build:** specify mode for iconify ([8a5e8ea](https://github.com/vuejs/vitepress/commit/8a5e8ea4f5b7cba0a6c909d8949f0c20426104a6))
- **theme:** apply `externalLinkIcon` option on `VPHome` ([#4492](https://github.com/vuejs/vitepress/issues/4492)) ([fe48943](https://github.com/vuejs/vitepress/commit/fe48943640895d859811b81f86d78c3e510dbe54))
- **theme:** don't show external link icon for images ([096bba1](https://github.com/vuejs/vitepress/commit/096bba19fb61c4b2f8f527046b4b0fe2e91c6bd6))
- **theme:** ignore footnote-ref for outline ([1832617](https://github.com/vuejs/vitepress/commit/183261753b04c2c96ddb8c10e520c748c6d3e613)), closes [#4402](https://github.com/vuejs/vitepress/issues/4402)
- **theme:** includes text to h1 tag for hero page ([#4472](https://github.com/vuejs/vitepress/issues/4472)) ([bd896c6](https://github.com/vuejs/vitepress/commit/bd896c638f8046f6546b5b32e8f98f3707aa8d05)), closes [#4453](https://github.com/vuejs/vitepress/issues/4453)
### Features
- **build:** export normalize function from shared chunk ([616f63f](https://github.com/vuejs/vitepress/commit/616f63f5f08a57347f2800e2d147d5bcd1cd072d)), closes [#4401](https://github.com/vuejs/vitepress/issues/4401)
- **theme:** allow customizing skip to content label ([ff254dc](https://github.com/vuejs/vitepress/commit/ff254dcbe6f2bcc89c34d2d2f4050229dc094400)), closes [#4288](https://github.com/vuejs/vitepress/issues/4288)
- **theme:** export VPNavBarSearch ([23522ab](https://github.com/vuejs/vitepress/commit/23522ab83ff33802d382fa066578dd87eb06789d)), closes [#4476](https://github.com/vuejs/vitepress/issues/4476)
- **theme:** export VPFeatures ([#4356](https://github.com/vuejs/vitepress/issues/4356)) ([6442e17](https://github.com/vuejs/vitepress/commit/6442e174838aec9668325bb1199419908e7dd728))
### Miscellaneous
- **build:** shiki transformers now use v3 [matching algorithm](https://shiki.style/packages/transformers#matching-algorithm) ([373f9b9](https://github.com/vuejs/vitepress/commit/373f9b933ee44f33a15ebdcfcb6db6dfac52f739))
# [1.5.0](https://github.com/vuejs/vitepress/compare/v1.4.5...v1.5.0) (2024-11-04)
### Features
- on-demand social icons ([#4339](https://github.com/vuejs/vitepress/issues/4339)) ([05f2f0d](https://github.com/vuejs/vitepress/commit/05f2f0d26153ace74b6c023184224d4fada137c2)), closes [#4256](https://github.com/vuejs/vitepress/issues/4256) [#4135](https://github.com/vuejs/vitepress/issues/4135) [#4076](https://github.com/vuejs/vitepress/issues/4076) [#3809](https://github.com/vuejs/vitepress/issues/3809) [#3750](https://github.com/vuejs/vitepress/issues/3750) [#1214](https://github.com/vuejs/vitepress/issues/1214) [#2768](https://github.com/vuejs/vitepress/issues/2768) [#2861](https://github.com/vuejs/vitepress/issues/2861)
## [1.4.5](https://github.com/vuejs/vitepress/compare/v1.4.4...v1.4.5) (2024-11-03)
### Bug Fixes
- lang lazy load not working with twoslash ([fc92a77](https://github.com/vuejs/vitepress/commit/fc92a77a5d871b5252bcb82639f5c3551d5c70bb)), closes [#4334](https://github.com/vuejs/vitepress/issues/4334)
- typo in missing language check ([dcb8450](https://github.com/vuejs/vitepress/commit/dcb8450f1166d7731c26a0eb5ec6d931bc283172))
## [1.4.3](https://github.com/vuejs/vitepress/compare/v1.4.2...v1.4.3) (2024-10-31)
### Performance Improvements
- lazy load shiki languages ([#4326](https://github.com/vuejs/vitepress/issues/4326)) ([8299778](https://github.com/vuejs/vitepress/commit/829977876a21da4f0af5d27593a2d81eb9af0c33))
## [1.4.2](https://github.com/vuejs/vitepress/compare/v1.4.1...v1.4.2) (2024-10-29)
### Bug Fixes
- cache markdown-it instance and properly dispose shiki on config reload ([#4321](https://github.com/vuejs/vitepress/issues/4321)) ([45968cd](https://github.com/vuejs/vitepress/commit/45968cdc509e04f8e191d28ba7d8d97b08fc578e)) ([acfe97f](https://github.com/vuejs/vitepress/commit/acfe97f60872d251c75c5985ca9841f84392850d))
- **regression:** hmr not working with markdown includes due to wrong cache key ([615aed5](https://github.com/vuejs/vitepress/commit/615aed5df700ad98f82a74fbc785d290d1c5a018)), closes [#4289](https://github.com/vuejs/vitepress/issues/4289) [#4303](https://github.com/vuejs/vitepress/issues/4303)
- remove explicit chinese fonts ([#4286](https://github.com/vuejs/vitepress/issues/4286)) ([668e9f7](https://github.com/vuejs/vitepress/commit/668e9f7050f236d571fe2fc2f41e5548d974b503)) ([b893550](https://github.com/vuejs/vitepress/commit/b8935502fbb590449e7d094bdde9c9ae1ac67d0c)), closes [#4286](https://github.com/vuejs/vitepress/issues/4286)
- **theme/a11y:** don't select search result unless mouse is actually moved ([e638d85](https://github.com/vuejs/vitepress/commit/e638d855cfc8e4e0c9b95c284548ae31233139f5)), closes [#4297](https://github.com/vuejs/vitepress/issues/4297)
- **theme:** add types for `VPLink`, `VPSocialLink` and `VPSocialLinks` exports ([#4284](https://github.com/vuejs/vitepress/issues/4284)) ([fcae4d5](https://github.com/vuejs/vitepress/commit/fcae4d5554df2130b9a7e5ad8e0cc83eccf88bec))
- **theme:** don't escape html in `siteTitle` ([#4308](https://github.com/vuejs/vitepress/issues/4308)) ([bd690d6](https://github.com/vuejs/vitepress/commit/bd690d6a9b895f15d5906d245b404f02cfce7489))
## [1.4.1](https://github.com/vuejs/vitepress/compare/v1.4.0...v1.4.1) (2024-10-13)
### Bug Fixes
- broken rewrites on windows ([#4268](https://github.com/vuejs/vitepress/issues/4268)) ([b46d6d3](https://github.com/vuejs/vitepress/commit/b46d6d3a204f5ce347647bfd1ab8073bf313afd6))
- **client:** use `usePreferredDark` with `appearance: "force-auto"` ([#4263](https://github.com/vuejs/vitepress/issues/4263)) ([3e8fc40](https://github.com/vuejs/vitepress/commit/3e8fc40c3621da1ef35645d376dab7765b35bb40))
- **client:** wrong script async check ([461a5b0](https://github.com/vuejs/vitepress/commit/461a5b001d29f95169f60fe28bc610e3f6e8fd66))
- **theme:** bind missing no icon prop in the menu link component [#4260](https://github.com/vuejs/vitepress/issues/4260) ([b96712c](https://github.com/vuejs/vitepress/commit/b96712c0744f9ac7ebd65cf4087b2e9fd0d6762b))
- **theme:** improve local search input a11y ([#4066](https://github.com/vuejs/vitepress/issues/4066)) ([92b92ae](https://github.com/vuejs/vitepress/commit/92b92aefcab9fbb28b51da70ee8ab21724098277))
### Features
- **experimental:** support passing function for rewrites ([#4274](https://github.com/vuejs/vitepress/issues/4274)) ([8436472](https://github.com/vuejs/vitepress/commit/8436472c7874cb16caf9432660b395ca9ba68f9d))
# [1.4.0](https://github.com/vuejs/vitepress/compare/v1.3.4...v1.4.0) (2024-10-07)
### Bug Fixes
- `vueRE` conflicting with `lineNoRE` ([#4247](https://github.com/vuejs/vitepress/issues/4247)) ([2ac64b8](https://github.com/vuejs/vitepress/commit/2ac64b8d4180f2a7c54fda57df7f3a0a52488d62))
- hmr not updating page data in rewritten paths and file path is wrong in mdit for dynamic routes ([c46e4b7](https://github.com/vuejs/vitepress/commit/c46e4b784ddb9ce3bd1cfcc3de1d1d676535cb5b)), closes [#4172](https://github.com/vuejs/vitepress/issues/4172)
- remove font synthesis in webfont mode, google fonts now support italic axis in inter ([1628918](https://github.com/vuejs/vitepress/commit/1628918f30b5602b83c51a2a8f4ec5e773cf7445))
- **theme:** change the order of CSS rules of `VPFlyout` ([#4225](https://github.com/vuejs/vitepress/issues/4225)) ([68150a6](https://github.com/vuejs/vitepress/commit/68150a6f3349c1741ed5683e3010d9ecea02f3a8)), closes [#4224](https://github.com/vuejs/vitepress/issues/4224)
- **theme:** respect custom tag prop in VPButton component ([#4185](https://github.com/vuejs/vitepress/issues/4185)) ([9c5d348](https://github.com/vuejs/vitepress/commit/9c5d348c034eb6773562c93cad699d287051aa7b))
### Features
- add `data-title` attribute for code group label tag ([#4152](https://github.com/vuejs/vitepress/issues/4152)) ([bc7271d](https://github.com/vuejs/vitepress/commit/bc7271d258047feb8a39c97ebc5e2a16bf899bb5))
- allow ignoring certain headers and their subtrees completely in outline ([3e11b6a](https://github.com/vuejs/vitepress/commit/3e11b6abf5fbe80c2bc733f590ab57c7b2cc06f2)), closes [#4171](https://github.com/vuejs/vitepress/issues/4171)
- **client:** add `onAfterPageLoad` hook in router ([#4126](https://github.com/vuejs/vitepress/issues/4126)) ([315c220](https://github.com/vuejs/vitepress/commit/315c22004993f6f1cbdbb59178e46745d8e505a6))
- support adding extra attributes to snippet imports (useful for twoslash) ([#4100](https://github.com/vuejs/vitepress/issues/4100)) ([e8f7dd1](https://github.com/vuejs/vitepress/commit/e8f7dd16f6139fdfd129b86caff4b6613dd1e887))
- **theme:** expose theme default VPLink & VPSocialLink(s) component ([#4178](https://github.com/vuejs/vitepress/issues/4178)) ([615e33b](https://github.com/vuejs/vitepress/commit/615e33bb24d5005574af971ffcf1f41d751a855c))
- trigger `onContentUpdated` on frontmatter-only changes too ([0db269a](https://github.com/vuejs/vitepress/commit/0db269a4c5d90ecf69f0219982cdf8f335e787ce))
## [1.3.4](https://github.com/vuejs/vitepress/compare/v1.3.3...v1.3.4) (2024-08-24)
### Bug Fixes
- check if `_importGlobMap` (vite internal) exists before using it ([612d66f](https://github.com/vuejs/vitepress/commit/612d66fbb5162d9905cfb10919ca1761ce8c4680))
## [1.3.3](https://github.com/vuejs/vitepress/compare/v1.3.2...v1.3.3) (2024-08-17)
### Miscellaneous
- bump deps ([a20db24](https://github.com/vuejs/vitepress/commit/a20db247822438ac4e0e76bc4a2b4ee2f5d94940))
## [1.3.2](https://github.com/vuejs/vitepress/compare/v1.3.1...v1.3.2) (2024-08-05)
### Bug Fixes
- multiple cache busting imports causing useData to fail ([2b3e486](https://github.com/vuejs/vitepress/commit/2b3e486ab913ff77707410b9cee3ba6d256ccc95)), closes [#3820](https://github.com/vuejs/vitepress/issues/3820), reverts [#3398](https://github.com/vuejs/vitepress/issues/3398), reopens [#3363](https://github.com/vuejs/vitepress/issues/3363)
- **theme:** excerpt style in LocalSearchBox ([#4050](https://github.com/vuejs/vitepress/issues/4050)) ([2bc0d39](https://github.com/vuejs/vitepress/commit/2bc0d39d5089841986f0988fc9cfe15533d3a0c6))
## [1.3.1](https://github.com/vuejs/vitepress/compare/v1.3.0...v1.3.1) (2024-07-14)
### Bug Fixes
- don't reopen browser on restart when `vite.server.open` is specified ([6263db1](https://github.com/vuejs/vitepress/commit/6263db170a658ea887ef4b2bfe4b5239a820e0d9)), closes [#4040](https://github.com/vuejs/vitepress/issues/4040)
- **theme/regression:** typo in component props resulting in nested titles not showing in navbar ([01d0d45](https://github.com/vuejs/vitepress/commit/01d0d45292602cbb7de492f0c953ddb239842116)), closes [#4042](https://github.com/vuejs/vitepress/issues/4042)
# [1.3.0](https://github.com/vuejs/vitepress/compare/v1.2.3...v1.3.0) (2024-07-07)
### Bug Fixes
- **build:** don't normalize links containing target or download property ([e24899a](https://github.com/vuejs/vitepress/commit/e24899a073d066486e5f7ae0c47ba6d901d5ae51)), closes [#3947](https://github.com/vuejs/vitepress/issues/3947)
- **build:** respect frontmatter.lastUpdated for pageData.lastUpdated and sitemap generation ([7fcf462](https://github.com/vuejs/vitepress/commit/7fcf462eb8c2be6e72b4426a8211fcd6961e4967)), closes [#3931](https://github.com/vuejs/vitepress/issues/3931)
- **build:** sort pageToHashMap to ensure stable assets ([e302328](https://github.com/vuejs/vitepress/commit/e302328a4ce3242cbfb7112e856840b7346aa16a)), closes [#4016](https://github.com/vuejs/vitepress/issues/4016)
- **client:** do nothing on anchor elements with empty href ([6461f5d](https://github.com/vuejs/vitepress/commit/6461f5d42b3bfed1d7959e1167fc77f61d08f314)), closes [#3950](https://github.com/vuejs/vitepress/issues/3950)
- don't do git log on non-existent file ([387acf7](https://github.com/vuejs/vitepress/commit/387acf71aa351e23ca3402713020a3571ad17155)), closes [#4008](https://github.com/vuejs/vitepress/issues/4008)
- don't reopen browser on restart ([d837e82](https://github.com/vuejs/vitepress/commit/d837e82bc8bde63df737be2a1290a2e70c8a0bf3)), closes [#4001](https://github.com/vuejs/vitepress/issues/4001)
- properly handle svg anchor elements ([b785bd6](https://github.com/vuejs/vitepress/commit/b785bd6ab3b5dd909aa955dc9e03b08e66b76294))
- **theme:** add styles for h4 too ([b54d7b0](https://github.com/vuejs/vitepress/commit/b54d7b0d7cd1257bcadd25f9b69cba21d0a3dff6))
- **theme:** deep watch sidebar groups and force render on match change ([97f9469](https://github.com/vuejs/vitepress/commit/97f9469b6d4eb7ba9de9a1111986581d1f704ec3)), closes [#3613](https://github.com/vuejs/vitepress/issues/3613)
- **theme:** dim color for all text like elements inside blockquotes ([5d3ed87](https://github.com/vuejs/vitepress/commit/5d3ed87f8530134fa709681ebadb2f3cfc68680e)), closes [#3929](https://github.com/vuejs/vitepress/issues/3929)
- **theme:** force update title attribute on hydration ([d348da7](https://github.com/vuejs/vitepress/commit/d348da770c2a68993d1a40d1c0223e42a681057a)), closes [#4004](https://github.com/vuejs/vitepress/issues/4004)
- **theme:** show filled nav bar when nav screen is open ([0fc70e2](https://github.com/vuejs/vitepress/commit/0fc70e2d0c29c92a1dceba035295a3fac84ffc00))
### Features
- allow using components in navigation bar ([#4000](https://github.com/vuejs/vitepress/issues/4000)) ([fa87d81](https://github.com/vuejs/vitepress/commit/fa87d8150d8185fa8a22cd6b6e762632b83f8231))
- **cli/init:** allow passing target dir as command argument ([#3948](https://github.com/vuejs/vitepress/issues/3948)) ([99053ba](https://github.com/vuejs/vitepress/commit/99053baea7eb6aa62a11a2cfd4b1e6e60311dd63))
- **markdown:** support including specific regions from markdown files ([#3978](https://github.com/vuejs/vitepress/issues/3978)) ([143b1e9](https://github.com/vuejs/vitepress/commit/143b1e91f3696507d33666ec5847e7b64a771bcf))
- support `force-auto` as an option for appearance ([1e8bb48](https://github.com/vuejs/vitepress/commit/1e8bb48bc2891ea388bf0b9edd2f5b612bb1e85d)), closes [#3946](https://github.com/vuejs/vitepress/issues/3946)
- **theme:** export VPHomeContent ([#3960](https://github.com/vuejs/vitepress/issues/3960)) ([8aa6ccb](https://github.com/vuejs/vitepress/commit/8aa6ccbe32655f76c390d15568f69f83d079385d)), closes [#3954](https://github.com/vuejs/vitepress/issues/3954)
## [1.2.3](https://github.com/vuejs/vitepress/compare/v1.2.2...v1.2.3) (2024-06-04)
### Bug Fixes
- **theme,a11y:** handle overflow on long mathematical equation and make tables focusable ([#3932](https://github.com/vuejs/vitepress/issues/3932)) (closes [#3914](https://github.com/vuejs/vitepress/issues/3914)) ([afc611d](https://github.com/vuejs/vitepress/commit/afc611d399d2780550ae04caa0e73e1c0c69a680))
- **types:** wrong types generated for markdown-it > mdurl ([48ca76c](https://github.com/vuejs/vitepress/commit/48ca76c523d9b979a678d52447f5ce324799e47f)), closes [#3935](https://github.com/vuejs/vitepress/issues/3935)
## [1.2.2](https://github.com/vuejs/vitepress/compare/v1.2.1...v1.2.2) (2024-05-21)
### Bug Fixes
- dont escape ampersand twice in title ([7ea3572](https://github.com/vuejs/vitepress/commit/7ea357256c855ae0a9a142c14bbd5e7d344ef865))
## [1.2.1](https://github.com/vuejs/vitepress/compare/v1.2.0...v1.2.1) (2024-05-21)
### Bug Fixes
- **a11y:** make code blocks accessible with keyboard ([#3902](https://github.com/vuejs/vitepress/issues/3902)) ([cb308b9](https://github.com/vuejs/vitepress/commit/cb308b9295e1e661c2c72fa4229b5c7d83278d49))
- escape title properly in build ([49b1233](https://github.com/vuejs/vitepress/commit/49b1233378436054c07a6ef646d0029096124021))
- **theme:** remove unnecessary navigation role on nav element ([af4717d](https://github.com/vuejs/vitepress/commit/af4717d6820233a011200d44abba53d0f66bfad3))
# [1.2.0](https://github.com/vuejs/vitepress/compare/v1.1.4...v1.2.0) (2024-05-18)
### Bug Fixes
- **build:** show file info on error ([f0debd2](https://github.com/vuejs/vitepress/commit/f0debd20f48ab7eb58cfd142147531509d6c0209))
- **dev:** match dev and prod routing behavior ([#3837](https://github.com/vuejs/vitepress/issues/3837)) ([b360ac8](https://github.com/vuejs/vitepress/commit/b360ac88df3bfd60e3498cc19066c0c90261ee4f))
- **markdown:** entities and escapes not working properly ([#3882](https://github.com/vuejs/vitepress/issues/3882)) ([d5dbd70](https://github.com/vuejs/vitepress/commit/d5dbd704ceb215ebf3ce9b23deec6e6c90634f0a))
- render 404 page completely on client to infer locale from browser path ([#3858](https://github.com/vuejs/vitepress/issues/3858)) ([728cb15](https://github.com/vuejs/vitepress/commit/728cb15677f4f84b33bed6bb2f70f47600ea1057))
- **style:** prefer YaHei over DengXian ([f0a37b4](https://github.com/vuejs/vitepress/commit/f0a37b4b8445ec914700df054c0897721382e5b1))
- **theme/regression:** custom font not applying in Chinese docs because of specificity ([fa2f38a](https://github.com/vuejs/vitepress/commit/fa2f38a0c3bd121dcb7e07420566087c19b10f96)), closes [#3864](https://github.com/vuejs/vitepress/issues/3864)
- **theme:** external link icon not visible for target \_blank links ([d08eeed](https://github.com/vuejs/vitepress/commit/d08eeed89726572f7ea341df59864cc72716751c)), closes [#3327](https://github.com/vuejs/vitepress/issues/3327)
- **theme:** fix invalid vp-offset in ssr ([9794877](https://github.com/vuejs/vitepress/commit/9794877347140c7b4955d735cd8867c260a5089d))
### Features
- **build/i18n:** support customizing copy code button's tooltip text ([#3854](https://github.com/vuejs/vitepress/issues/3854)) ([ed6ada7](https://github.com/vuejs/vitepress/commit/ed6ada7a688c466920f3e0ef33b7176b8eb01eee))
- **build:** add localeIndex to md.env ([#3862](https://github.com/vuejs/vitepress/issues/3862)) ([0cbb469](https://github.com/vuejs/vitepress/commit/0cbb469842d74381ad56d44b7975f34c405b78f8))
## [1.1.4](https://github.com/vuejs/vitepress/compare/v1.1.3...v1.1.4) (2024-04-27)
### Bug Fixes
- **dev:** multiple server instances being created when editing config too quickly ([#3835](https://github.com/vuejs/vitepress/issues/3835)) ([729a890](https://github.com/vuejs/vitepress/commit/729a890669c363895cfac39ece046926cad36d01))
- **theme/a11y:** add unique name to footer prev / next navigation landmark ([e60c101](https://github.com/vuejs/vitepress/commit/e60c101e50fa56d4cd54d434c5628cc7e2231318))
- **theme/a11y:** remove duplicate assistive text from outline nav ([#3803](https://github.com/vuejs/vitepress/issues/3803)) ([733d986](https://github.com/vuejs/vitepress/commit/733d986a84f614484b04235546dc4cda0769e833))
- **theme/i18n:** 404 page not showing localized text ([#3833](https://github.com/vuejs/vitepress/issues/3833)) ([cc11b8e](https://github.com/vuejs/vitepress/commit/cc11b8e41ec481320b03902bdc307d479a8ba838))
- **theme:** disable keypress effect on search button ([ccc37bb](https://github.com/vuejs/vitepress/commit/ccc37bb80e4147b9ab91b0f5d7dfae9d51533460))
- **theme:** don't use Chinese quotes on non-Chinese documents ([#3834](https://github.com/vuejs/vitepress/issues/3834)) ([75115f4](https://github.com/vuejs/vitepress/commit/75115f4f8223d67dab2dc82fadaf2941aabf6330))
- **theme:** leaking event listener when going back/forward on Safari on iOS ([#3658](https://github.com/vuejs/vitepress/issues/3658)) ([#3671](https://github.com/vuejs/vitepress/issues/3671)) ([1a72181](https://github.com/vuejs/vitepress/commit/1a72181c06d78e5e6f293e3f6abdb15caa4d2f53))
## [1.1.3](https://github.com/vuejs/vitepress/compare/v1.1.1...v1.1.3) (2024-04-18)
### Bug Fixes
- **build/regression:** markdown backslash escapes not working ([d02d1e9](https://github.com/vuejs/vitepress/commit/d02d1e923aacdb1e8061a3f76af30e8a13518277)), closes [#3808](https://github.com/vuejs/vitepress/issues/3808)
## [1.1.1](https://github.com/vuejs/vitepress/compare/v1.1.0...v1.1.1) (2024-04-18)
### Bug Fixes
- **client:** don't reload page on hash change ([#3777](https://github.com/vuejs/vitepress/issues/3777)) ([74b725a](https://github.com/vuejs/vitepress/commit/74b725a224438ef776fed25ee82274429d94ac83))
- let vue compiler handle entity decoding ([f86ac56](https://github.com/vuejs/vitepress/commit/f86ac56b78da76f3061e6537b897bb13c1ed802d))
- hot updating config file suppresses error logs ([#3592](https://github.com/vuejs/vitepress/issues/3592)) ([cd5adf3](https://github.com/vuejs/vitepress/commit/cd5adf3011d677263c93ce6f8066aaa7870b1dfc))
# [1.1.0](https://github.com/vuejs/vitepress/compare/v1.0.2...v1.1.0) (2024-04-09)
### Bug Fixes
- **client:** hashchange should only be triggered for same page navigations ([#3768](https://github.com/vuejs/vitepress/issues/3768)) ([2a9fc2a](https://github.com/vuejs/vitepress/commit/2a9fc2a26b829bb3f28067ac6f4a41bc1e8b7a1e))
- **client:** emit correct `Event` instance in hashchange event
- **theme:** remove small layout shift on `On this page` button ([#3767](https://github.com/vuejs/vitepress/issues/3767)) ([5f28e74](https://github.com/vuejs/vitepress/commit/5f28e74abfc984cdc7e0d9d9f7b7e15cb2b46923))
### Features
- **client:** add `hash` property to `useData()`
- **theme:** update Inter to version 4 ([#3693](https://github.com/vuejs/vitepress/issues/3693)) ([#3694](https://github.com/vuejs/vitepress/issues/3694)) ([ffafa31](https://github.com/vuejs/vitepress/commit/ffafa31b9204f996f4b819684214fa631c224575))
## [1.0.2](https://github.com/vuejs/vitepress/compare/v1.0.1...v1.0.2) (2024-04-01)
### Bug Fixes
- **theme:** text containing html not showing properly in mobile nav menu ([3c8b4c7](https://github.com/vuejs/vitepress/commit/3c8b4c706051592dd2cca0ae57e293254cbb51ce))
## [1.0.1](https://github.com/vuejs/vitepress/compare/v1.0.0...v1.0.1) (2024-03-22)
### Bug Fixes
- **build:** vendor vue-demi to avoid resolution issues with yarn berry ([#3680](https://github.com/vuejs/vitepress/issues/3680)) ([5d3cb96](https://github.com/vuejs/vitepress/commit/5d3cb96ac364413aa9eb494bc91744bd8f4a2c79))
# [1.0.0](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.45...v1.0.0) (2024-03-21)
### Bug Fixes
- **build:** resolve pattern relative to srcDir instead of root in createContentLoader ([#3638](https://github.com/vuejs/vitepress/issues/3638)) ([59183e9](https://github.com/vuejs/vitepress/commit/59183e9cef112a004c8a8e2b365478af657858b0))
- **localSearch:** remove empty titles that may appear in search results ([#3665](https://github.com/vuejs/vitepress/issues/3665)) ([f7aef3c](https://github.com/vuejs/vitepress/commit/f7aef3ca23dae39e226c85d7bb2579dbf7c758f3))
- **theme:** fixed sidebar expand caret showing when no children are present ([#3657](https://github.com/vuejs/vitepress/issues/3657)) ([e13f932](https://github.com/vuejs/vitepress/commit/e13f93292ce1a2b1d5ba161fddfe947a1824a2b0))
- **theme:** ignore inner-page items in next/prev link ([#3663](https://github.com/vuejs/vitepress/issues/3663)) ([b50a8a1](https://github.com/vuejs/vitepress/commit/b50a8a132577693817a15ab43fc4cc22670a8a65))
- **theme:** local nav separator not visible on pages having no outline ([1909041](https://github.com/vuejs/vitepress/commit/190904171500ad22998c8666080fd58c867a59b5))
### Features
- **theme:** allow selectively disabling external link icon on navbar items ([#3607](https://github.com/vuejs/vitepress/issues/3607)) ([5f6297c](https://github.com/vuejs/vitepress/commit/5f6297cb3df98926154235f31570e75820d4ea16))
# [1.0.0-rc.45](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.44...v1.0.0-rc.45) (2024-03-06)
### Bug Fixes
- **router:** hashchange not emitted in certain cases ([#3637](https://github.com/vuejs/vitepress/issues/3637)) ([f6bd99e...6c0125b](https://github.com/vuejs/vitepress/compare/f6bd99eb1311238e1114301a767634b139327916...6c0125b65513531870f00ebef1ae11096027875a))
### Features
- set `__VITEPRESS__` for easy detection by plugins and other tools ([#3634](https://github.com/vuejs/vitepress/issues/3634)) ([f6bd99e](https://github.com/vuejs/vitepress/commit/f6bd99eb1311238e1114301a767634b139327916))
# [1.0.0-rc.44](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.43...v1.0.0-rc.44) (2024-2-19)
### Reverts
- types for internal components ([e703429](https://github.com/vuejs/vitepress/commit/e7034294731493a198cdd4789198f1c94f21b181))
# [1.0.0-rc.43](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.42...v1.0.0-rc.43) (2024-2-17)
### Bug Fixes
- handle process.env being undefined while process is not ([b63e0a0](https://github.com/vuejs/vitepress/commit/b63e0a0c57f886f49aa7e073ff623c918164bd0b)), closes [#3579](https://github.com/vuejs/vitepress/issues/3579)
- make local search work in combination with vue-i18n ([#3559](https://github.com/vuejs/vitepress/issues/3559)) ([6624bb7](https://github.com/vuejs/vitepress/commit/6624bb748610079b88e2dcef7ea1810833a54a85))
- **theme:** adjust mathjax svg styles ([#3567](https://github.com/vuejs/vitepress/issues/3567)) ([2051100](https://github.com/vuejs/vitepress/commit/20511006dba516ca8c06ed1dd3516547af668a0e))
### Features
- **theme:** auto style markdown content in home page ([#3561](https://github.com/vuejs/vitepress/issues/3561)) ([0903027](https://github.com/vuejs/vitepress/commit/09030272b4a5c8f723b7e11303265f24b7481575))
### Performance Improvements
- **theme:** move svg icons to css ([#3537](https://github.com/vuejs/vitepress/issues/3537)) ([636cca0](https://github.com/vuejs/vitepress/commit/636cca042dfbca006af2d702ddec0a2ff601cb46))
### BREAKING CHANGES
- The default theme now styles the markdown content in the home page. If you have custom styles that rely on the markdown content not being styled, you may need to adjust your styles, or add `markdownStyles: false` to the frontmatter of your home page.
# [1.0.0-rc.42](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.41...v1.0.0-rc.42) (2024-2-6)
### Bug Fixes
- **md:** dont break on nesting blockquotes inside gfm alerts ([8f8a6fe](https://github.com/vuejs/vitepress/commit/8f8a6feb053b3f521a2c90e343dffa7f98bb63b3)), closes [#3512](https://github.com/vuejs/vitepress/issues/3512)
- **theme:** correctly normalize paths ending with "index" ([#3544](https://github.com/vuejs/vitepress/issues/3544)) ([c582a8d](https://github.com/vuejs/vitepress/commit/c582a8d5fd82b84d412c7e6c84e74faeb23beac6))
# [1.0.0-rc.41](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.40...v1.0.0-rc.41) (2024-2-1)
### Bug Fixes
- handle CRLF in snippet plugin ([5811b62](https://github.com/vuejs/vitepress/commit/5811b626576ec4569fa0079d921b8e328d87ca91)), closes [#3499](https://github.com/vuejs/vitepress/issues/3499)
- lazy evaluate known extensions to allow env set in config ([04f794b](https://github.com/vuejs/vitepress/commit/04f794bf55f8191ea9eed62f545b812f346017d8))
### Features
- **home:** add target and rel attribute to home actions ([#3528](https://github.com/vuejs/vitepress/issues/3528)) ([ab39fd8](https://github.com/vuejs/vitepress/commit/ab39fd8592c994fbc6feba5ee369ca1205c50f04))
- rename shiki packages ([#3506](https://github.com/vuejs/vitepress/issues/3506)) ([b8487d3](https://github.com/vuejs/vitepress/commit/b8487d3a97679f5b2eb225ee1eb85754b66fee30))
- wrap site title in span ([#3522](https://github.com/vuejs/vitepress/issues/3522)) ([6b1f951](https://github.com/vuejs/vitepress/commit/6b1f951928a3b9e53dcc9697327b5aba4a5905e2))
- **theme:** add hero slots that are inside container ([#3524](https://github.com/vuejs/vitepres/issues/3524)) ([28870e6](https://github.com/vuejs/vitepress/commit/28870e68faf0ddaa418ffe0d4371316f6b0bcd02))
### BREAKING CHANGES
- vitepress now uses shiki instead of shikiji. If you’re on the latest version and using shikiji specific features, you just need to change imports. The shikijiSetup hook is renamed to shikiSetup.
# [1.0.0-rc.40](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.39...v1.0.0-rc.40) (2024-1-22)
### Bug Fixes
- **client:** handle head orphans added in initial load ([#3474](https://github.com/vuejs/vitepress/issues/3474)) ([5e2d853](https://github.com/vuejs/vitepress/commit/5e2d853e1a315216dce5fc98ee2efd15c724a25d))
- **theme:** avoid selecting summary on toggling details ([77a318c](https://github.com/vuejs/vitepress/commit/77a318c2a348d341dd3ea1e1650fcf8ad3abfcd7))
- **theme:** hover color for code links inside custom containers ([#3467](https://github.com/vuejs/vitepress/issues/3467)) ([d529ed4](https://github.com/vuejs/vitepress/commit/d529ed49756841f055024c559d09875501bc6d76))
- **type:** fix missed `VPBadge` type in `theme.d.ts` ([#3470](https://github.com/vuejs/vitepress/issues/3470)) ([fcf828c](https://github.com/vuejs/vitepress/commit/fcf828c2a71892dad5af8d21e405f4d1e2cc280c))
### Features
- support GitHub-flavored alerts ([#3482](https://github.com/vuejs/vitepress/issues/3482)) ([ac87d19](https://github.com/vuejs/vitepress/commit/ac87d19ca1bbc966e5fe1cca5f433f5ea4b11be3))
- support specifying custom extensions to escape routing ([#3466](https://github.com/vuejs/vitepress/issues/3466)) ([c22f5d9](https://github.com/vuejs/vitepress/commit/c22f5d983f3e5d5c4f0ed0683a93ece564487c13))
- **theme:** add npm icon ([#3483](https://github.com/vuejs/vitepress/issues/3483)) ([c882fa1](https://github.com/vuejs/vitepress/commit/c882fa1469a7bd0d6e28196e7a841adf48e803f1))
# [1.0.0-rc.39](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.38...v1.0.0-rc.39) (2024-01-16)
### Bug Fixes
- **theme:** misaligned outline indicator ([#3458](https://github.com/vuejs/vitepress/issues/3458)) ([0ce5ece](https://github.com/vuejs/vitepress/commit/0ce5ece35687bdad7a65d61432419cfe3961a329))
- **theme:** enter key behavior conflict with IME in search box ([#3454](https://github.com/vuejs/vitepress/issues/3454)) ([cd8ee6f](https://github.com/vuejs/vitepress/commit/cd8ee6fb32d8135e78c5827a36b79efad509042c))
- **theme:** use`--vp-c-tip-` CSS variable for badge/block colors with type`tip` ([#3434](https://github.com/vuejs/vitepress/issues/3434)) ([78abf47](https://github.com/vuejs/vitepress/commit/78abf47b8b563d66db9d481a98bbdefac95cc84c))
### Features
- **theme:** export VPBadge ([#3431](https://github.com/vuejs/vitepress/issues/3431)) ([18981c1](https://github.com/vuejs/vitepress/commit/18981c1d1c74a4f4ca379a88b00c02ba5eace6db))
# [1.0.0-rc.36](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.35...v1.0.0-rc.36) (2024-1-8)
### Bug Fixes
- avoid pushing to history when clicking on the current link ([#3405](https://github.com/vuejs/vitepress/issues/3405)) ([d279e63](https://github.com/vuejs/vitepress/commit/d279e63cb4d417420cdc3fb3e6e03c96b777289f))
- **theme/regression:** external link icon not working ([c236570](https://github.com/vuejs/vitepress/commit/c236570f2806fe76bbc6a69568cf64ed5a3fc2ce)), closes [#3424](https://github.com/vuejs/vitepress/issues/3424)
- **theme/regression:** inter getting bundled even importing without-fonts entry ([#3412](https://github.com/vuejs/vitepress/issues/3412)) ([b03fb83](https://github.com/vuejs/vitepress/commit/b03fb83a4e67d92a865d90908ccbde3dd0f97373))
# [1.0.0-rc.35](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.34...v1.0.0-rc.35) (2024-1-3)
### Bug Fixes
- **client:** add computed dir and lang to html root ([c2b4c66](https://github.com/vuejs/vitepress/commit/c2b4c66e79fde7479f5f43841e1921a5c220c9a5)), closes [#3353](https://github.com//github.com/vuejs/vitepress/pull/3353/issues/issuecomment-1874753809)
- fill all empty code lines ([563020b](https://github.com/vuejs/vitepress/commit/563020ba61abda254af9a124ddafd12de644cd4e)), closes [#3305](https://github.com/vuejs/vitepress/issues/3305)
- fix theme chunking logic causing out-of-order styles ([#3403](https://github.com/vuejs/vitepress/issues/3403)) ([a6cd891](https://github.com/vuejs/vitepress/commit/a6cd891d95454b3130aaf08f499659d2585acc63))
- invalidate module cache for subsequent builds ([#3398](https://github.com/vuejs/vitepress/issues/3398)) ([27f60e0](https://github.com/vuejs/vitepress/commit/27f60e0b7784603c6fb300bd8dce64515eb98962))
### Features
- allow passing options to emoji plugin ([09e48db](https://github.com/vuejs/vitepress/commit/09e48db355f530c7a138437004659b61239f4b75)), closes [#3174](https://github.com/vuejs/vitepress/issues/3174)
- **theme:** allow specifying rel and target in logoLink ([6c89943](https://github.com/vuejs/vitepress/commit/6c899437c15b126b488e73c99cdaad77fc7e5611)), closes [#3264](https://github.com/vuejs/vitepress/issues/3264) [#3271](https://github.com/vuejs/vitepress/issues/3271)
### Performance Improvements
- **localSearch:** add concurrency pooling, cleanup logic, improve performance ([#3374](https://github.com/vuejs/vitepress/issues/3374)) ([ac5881e](https://github.com/vuejs/vitepress/commit/ac5881eeac3f042a8fbf034edb99e5f2b45eaa2a))
# [1.0.0-rc.34](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.33...v1.0.0-rc.34) (2023-12-30)
### Bug Fixes
- **build:** clear cache after build ([9568fea](https://github.com/vuejs/vitepress/commit/9568fea8fc50e625c8ef27c588eca3dbe5a44e81)), closes [#3363](https://github.com/vuejs/vitepress/issues/3363)
- **default-theme:** remove use of reactify for search i18n ([8687b86](https://github.com/vuejs/vitepress/commit/8687b86e1e00ae39ff9c8173aef04eb8a9cda0a8))
- print errors when importing an invalid dynamic route ([#3201](https://github.com/vuejs/vitepress/issues/3201)) ([6d89a08](https://github.com/vuejs/vitepress/commit/6d89a08cb76674f4d92f54218f8af5624bcf4c47))
- remove double title from home pages ([9f1f04e](https://github.com/vuejs/vitepress/commit/9f1f04e00a9722ec7369941c40d3d8ad86f61d35)), closes [#3375](https://github.com/vuejs/vitepress/issues/3375)
- **theme/i18n:** support customizing dark mode switch titles ([#3311](https://github.com/vuejs/vitepress/issues/3311)) ([50c9758](https://github.com/vuejs/vitepress/commit/50c9758d3fa1b60aad5399a0db890644ac44a522))
### Features
- support custom image lazy loading ([#3346](https://github.com/vuejs/vitepress/issues/3346)) ([55be3f1](https://github.com/vuejs/vitepress/commit/55be3f14d79eb578c9aa2e3bc7a90205c910005d))
- support dir in frontmatter ([#3353](https://github.com/vuejs/vitepress/issues/3353)) ([203446d](https://github.com/vuejs/vitepress/commit/203446d69193483a46e1082bba5fbad0e35966fb))
- **theme/i18n:** allow customizing sponsor link's text ([#3276](https://github.com/vuejs/vitepress/issues/3276)) ([9c20e3b](https://github.com/vuejs/vitepress/commit/9c20e3b5f80e4197c14c20fa751ec3c8c8219e8e))
- **theme:** allow using VPBadge classes in sidebar ([#3391](https://github.com/vuejs/vitepress/issues/3391)) ([50a774e](https://github.com/vuejs/vitepress/commit/50a774ea7c70bb200e12c176d6691ab7144a73f9))
- **theme:** new design for local nav and global header ([#3359](https://github.com/vuejs/vitepress/issues/3359)) ([d10bf42](https://github.com/vuejs/vitepress/commit/d10bf42c2632f1aacb905bc01b36274e9004cbd9))
# [1.0.0-rc.33](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.32...v1.0.0-rc.33) (2023-12-26)
### Features
- allow explicitly mark code element as `.vp-copy-ignore` ([#3360](https://github.com/vuejs/vitepress/issues/3360)) ([93122ee](https://github.com/vuejs/vitepress/commit/93122eee20cb6586026c1ffac04d9787861cc2f3))
- **build:** enable VUE_PROD_HYDRATION_MISMATCH_DETAILS when DEBUG is truthy ([f4d4280](https://github.com/vuejs/vitepress/commit/f4d4280d7d1728a966bb04968a9bac10470c3d06)), closes [#422](https://github.com/vuejs/vitepress/issues/422)
### Performance Improvements
- implement concurrent promise pooling for render task ([#3366](https://github.com/vuejs/vitepress/issues/3366))
# [1.0.0-rc.32](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.31...v1.0.0-rc.32) (2023-12-16)
### Features
- allow ignoring node in header ([#3331](https://github.com/vuejs/vitepress/issues/3331)) ([e4bf1e4](https://github.com/vuejs/vitepress/commit/e4bf1e48e6a1592d583b218425c1fa7497955dc5))
- expose `shikijiSetup` hook ([#3344](https://github.com/vuejs/vitepress/issues/3344)) ([d12e23d](https://github.com/vuejs/vitepress/commit/d12e23ddf69480418078ff39846c99ecf2e1eb1b))
- update shikiji, support twoslash ([#3339](https://github.com/vuejs/vitepress/issues/3339)) ([8800195](https://github.com/vuejs/vitepress/commit/880019545795fd075be89d94794bfbd05af461b5))
# [1.0.0-rc.31](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.30...v1.0.0-rc.31) (2023-11-25)
### Bug Fixes
- **build:** make assets go through vite pipeline during dev too ([#3258](https://github.com/vuejs/vitepress/issues/3258)) ([c3d7f22](https://github.com/vuejs/vitepress/commit/c3d7f22bd313b09e6965ac3125ea662ce283ed2d))
- **theme:** use VPLink for links in VPDocFooter ([#3248](https://github.com/vuejs/vitepress/issues/3248)) ([479a320](https://github.com/vuejs/vitepress/commit/479a320731313b8e7e0bad3f8383ae6bc05ed8e2))
# [1.0.0-rc.30](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.29...v1.0.0-rc.30) (2023-11-23)
### Bug Fixes
- **client:** no onAfterRouteChanged called after popstate ([#3227](https://github.com/vuejs/vitepress/issues/3227)) ([60fc8fd](https://github.com/vuejs/vitepress/commit/60fc8fd24460eede1dc73768ad0aa53616da746f)), closes [#3226](https://github.com/vuejs/vitepress/issues/3226)
- **theme:** remove double padding from sidebar ([ef6d8d1](https://github.com/vuejs/vitepress/commit/ef6d8d1e4295c6ff967c17b5b9c20c04843da5a0)), closes [#3228](https://github.com/vuejs/vitepress/issues/3228)
### Features
- migrate to shikiji ([#3237](https://github.com/vuejs/vitepress/pull/3237)) ([75f18e4](https://github.com/vuejs/vitepress/commit/75f18e47334933b642d14b8b69b372cb1ebd4244))
### BREAKING CHANGES
- VitePress now uses shikiji instead of shiki for syntax highlighting. If you're using features like adding extra languages or custom aliases, please refer [shikiji docs](https://github.com/antfu/shikiji) for migration guide or comment on [#3237](https://github.com/vuejs/vitepress/pull/3237) if you need help.
# [1.0.0-rc.29](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.28...v1.0.0-rc.29) (2023-11-19)
### Bug Fixes
- **client:** regression - router not working without .html present ([d63cb86](https://github.com/vuejs/vitepress/commit/d63cb867b14ba49c8333ad0d69d33874e2ece6c6)), closes [#3225](https://github.com/vuejs/vitepress/issues/3225)
# [1.0.0-rc.28](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.27...v1.0.0-rc.28) (2023-11-18)
### Bug Fixes
- **ally:** clear up confusion with the title of theme switch ([#3215](https://github.com/vuejs/vitepress/issues/3215)) ([6761036](https://github.com/vuejs/vitepress/commit/67610363bcb354d33327e6b5c3c2d916ed025ffc))
- **build:** support nested assetsDir ([02161d0](https://github.com/vuejs/vitepress/commit/02161d0f797cfa36d715119e8c7618770b1a6761))
- wrong recognition of non-html extension leads to route error ([#3218](https://github.com/vuejs/vitepress/issues/3218)) ([c4abc95](https://github.com/vuejs/vitepress/commit/c4abc950af7061611e3b5eff93e767706bd12396))
### Features
- **build:** html head meta generator ([#3219](https://github.com/vuejs/vitepress/issues/3219)) ([672e494](https://github.com/vuejs/vitepress/commit/672e4946ac3c24f3fc79469534e66cfaf6f23e67))
- **client:** allow disabling link auto-prefetching ([#3220](https://github.com/vuejs/vitepress/issues/3220)) ([563dc89](https://github.com/vuejs/vitepress/commit/563dc899757e58d2261bcb31081283eb395fab0b))
# [1.0.0-rc.27](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.26...v1.0.0-rc.27) (2023-11-17)
### Bug Fixes
- CSS missing after build ([#3217](https://github.com/vuejs/vitepress/issues/3217)) ([da73b58](https://github.com/vuejs/vitepress/commit/da73b58c795a65a09d028e0ca6acefa1170d3d5b)), closes [#3216](https://github.com/vuejs/vitepress/issues/3216)
# [1.0.0-rc.26](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.25...v1.0.0-rc.26) (2023-11-16)
### Bug Fixes
- "VPNavScreenMenuGroup" component HTML not supported ([#3148](https://github.com/vuejs/vitepress/issues/3148)) ([237ad85](https://github.com/vuejs/vitepress/commit/237ad859a982f3fa55f7bba0f98ca94707108618))
- **build:** remove frontmatter in md file inclusion ([dbbffa2](https://github.com/vuejs/vitepress/commit/dbbffa2487cd1f9899916baa166591248fb24334)), closes [#3195](https://github.com/vuejs/vitepress/issues/3195)
- style links in footer ([#3178](https://github.com/vuejs/vitepress/issues/3178)) ([a482611](https://github.com/vuejs/vitepress/commit/a482611d17197a0b7afc403891cd95f344e7a55f))
### Features
- switch to vite 5 and bump deps ([#3200](https://github.com/vuejs/vitepress/issues/3200)) ([d2238ee](https://github.com/vuejs/vitepress/commit/d2238eedb7c0c81b2d9f425e6f70f7019ad6a482))
### BREAKING CHANGES
- VitePress now runs on Vite 5. Please refer https://vitejs.dev/guide/migration for breaking changes and migration guide if you're relying on some Vite-specific things.
# [1.0.0-rc.25](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.24...v1.0.0-rc.25) (2023-11-05)
### Bug Fixes
- double-slash format url should be external link ([#3165](https://github.com/vuejs/vitepress/issues/3165)) ([7dbeac6](https://github.com/vuejs/vitepress/commit/7dbeac6df0dfc0da74dffc79998a85a3afa86874))
- missing export types in localSearch ([#3157](https://github.com/vuejs/vitepress/issues/3157)) ([0761062](https://github.com/vuejs/vitepress/commit/0761062790b441eccd0d57d51903271f30e713af))
- **theme:** table row background-color in custom containers ([#3179](https://github.com/vuejs/vitepress/issues/3179)) ([beecec1](https://github.com/vuejs/vitepress/commit/beecec16a8d62c18f46522d461db353c97199415))
- **theme:** theme switch is not hidden on force-dark ([#3155](https://github.com/vuejs/vitepress/issues/3155)) ([2276c1d](https://github.com/vuejs/vitepress/commit/2276c1d4dac547bb09015fcd0df73825b32c5fad))
### Features
- export `mergeConfig()` ([#3143](https://github.com/vuejs/vitepress/issues/3143)) ([a850786](https://github.com/vuejs/vitepress/commit/a850786a566606fda20cc4ed71b79e975307b52a))
### Performance Improvements
- reduce duplicate rendering in localSearch ([#3170](https://github.com/vuejs/vitepress/issues/3170)) ([878f437](https://github.com/vuejs/vitepress/commit/878f4378cdee3c41f7643d9c7693bb607344d0c2))
# [1.0.0-rc.24](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.23...v1.0.0-rc.24) (2023-10-24)
### Bug Fixes
- lock plugin-vue version ([aa75fd6](https://github.com/vuejs/vitepress/commit/aa75fd62643d51be647f6e5937c97b7c47bf9739))
- **styles:** large blur radius is causing color issues with safari ([a31e143](https://github.com/vuejs/vitepress/commit/a31e143afac597034a8d77f516961b0d2857ac8d))
### Features
- **template:** add types for theme config ([#3122](https://github.com/vuejs/vitepress/issues/3122)) ([56b3ce5](https://github.com/vuejs/vitepress/commit/56b3ce5032b1d3bcfd66a1a397d87172a6f113d7))
# [1.0.0-rc.23](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.22...v1.0.0-rc.23) (2023-10-22)
### Bug Fixes
- don't normalize non-html/non-http links ([#3114](https://github.com/vuejs/vitepress/issues/3114)) ([da3d781](https://github.com/vuejs/vitepress/commit/da3d7812a143e3aa360845b89f573d4e1ec637dd))
- **mpa:** properly emit assets in mpa mode ([#3115](https://github.com/vuejs/vitepress/issues/3115)) ([6cf1de5](https://github.com/vuejs/vitepress/commit/6cf1de5e9e15d4507054744b665ac15d5f9a05f1))
- **theme/search:** prevent reactivity loss with i18n ([#3121](https://github.com/vuejs/vitepress/issues/3121)) ([50d61fa](https://github.com/vuejs/vitepress/commit/50d61faefacc3885efe99fe5477a3b815354a0c4))
# [1.0.0-rc.22](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.21...v1.0.0-rc.22) (2023-10-15)
### Bug Fixes
- fixes a regression related with nanoid v5 ([#3090](https://github.com/vuejs/vitepress/issues/3090))
# [1.0.0-rc.21](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.20...v1.0.0-rc.21) (2023-10-12)
### Bug Fixes
- **build:** handle .mjs/.mts files as data / path loaders ([#3058](https://github.com/vuejs/vitepress/issues/3058)) ([7991180](https://github.com/vuejs/vitepress/commit/7991180080366f9eb0d43fe95d25b53cf7af652c))
- **client:** only update head if needed ([#3017](https://github.com/vuejs/vitepress/issues/3017)) ([f2fc3dc](https://github.com/vuejs/vitepress/commit/f2fc3dc51b8019c18d5ab70a6b55b8333c91045a))
- **theme:** search's configuration about buttonAriaLabel doesn't work ([#3070](https://github.com/vuejs/vitepress/issues/3070)) ([c08bd46](https://github.com/vuejs/vitepress/commit/c08bd46aa757e7a0bc28b2318fb38037d583b27d))
### Features
- **md:** allow customizing container titles globally ([#3044](https://github.com/vuejs/vitepress/issues/3044)) ([bdb0800](https://github.com/vuejs/vitepress/commit/bdb080093f95ec43d013ea2ad537e567bdbb5a44))
# [1.0.0-rc.20](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.15...v1.0.0-rc.20) (2023-09-24)
### Bug Fixes
- **build:** consistent route.path across dev and ssr ([#2997](https://github.com/vuejs/vitepress/issues/2997)) ([0d56855](https://github.com/vuejs/vitepress/commit/0d56855b54a97d4350485ee76c07a040fdc5738c))
- **build:** don't show missing lang warnings with text specifiers in fences ([aa40cec](https://github.com/vuejs/vitepress/commit/aa40cecd48942506ffb063863c9b054e66f1d79e))
- handle references in container titles ([7fbfe71](https://github.com/vuejs/vitepress/commit/7fbfe71b6cab2f091ba3d0c47a401fdc612b88b6)), closes [#3004](https://github.com/vuejs/vitepress/issues/3004)
- **hmr:** handle hmr in imported code snippets ([#3005](https://github.com/vuejs/vitepress/issues/3005)) ([e84f313](https://github.com/vuejs/vitepress/commit/e84f31371e9e5219d46ae58151667d24e12b77bb))
- snippet hmr not working with rewrites ([a275049](https://github.com/vuejs/vitepress/commit/a2750492be7869ed48a5bde1ffbc177093356758))
- selectively pass env for container titles ([1a9c32d](https://github.com/vuejs/vitepress/commit/1a9c32df12388386877c50daf9fc7924888eac07)), closes [#3007](https://github.com/vuejs/vitepress/issues/3007)
- **types:** add RegExp to markdown's allowed attributes ([#3008](https://github.com/vuejs/vitepress/issues/3008)) ([bc96b2b](https://github.com/vuejs/vitepress/commit/bc96b2bb5bc5361e55c46f270e3759c513db65d3))
# [1.0.0-rc.15](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.14...v1.0.0-rc.15) (2023-09-20)
### Bug Fixes
- **build:** allow using symlinks with code snippets ([f186901](https://github.com/vuejs/vitepress/commit/f186901a5157c904b3593089d72f2bad3530e7a3)), closes [#1617](https://github.com/vuejs/vitepress/issues/1617)
- **build:** handle importing code snippets not having an extension ([#2978](https://github.com/vuejs/vitepress/issues/2978)) ([e99aaad](https://github.com/vuejs/vitepress/commit/e99aaad9cf8ab3661e609cd2cf6ac7da57cb7eb5))
- **build:** indentation being lost in code blocks ([5bb6bb0](https://github.com/vuejs/vitepress/commit/5bb6bb0a147ad43ca2d7069aad50fb9c6c2c11d6)), closes [#2988](https://github.com/vuejs/vitepress/issues/2988)
- **compat:** reset setRawMode on process exit ([#2994](https://github.com/vuejs/vitepress/issues/2994)) ([70fe47c](https://github.com/vuejs/vitepress/commit/70fe47c1dd69d39a40c83e919324d2b71f19bdaa))
### Features
- allow passing fast glob options to `createContentLoader` ([4f9a60b](https://github.com/vuejs/vitepress/commit/4f9a60b0cfa2fa841465f6e8cc5f77ed3e023817)), closes [#2985](https://github.com/vuejs/vitepress/issues/2985)
# [1.0.0-rc.14](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.13...v1.0.0-rc.14) (2023-09-16)
### Bug Fixes
- **client:** router in invalid state after 404 ([#2972](https://github.com/vuejs/vitepress/issues/2972)) ([28ef0ea](https://github.com/vuejs/vitepress/commit/28ef0ea6f60ab33e9cf34ecef10e1515d84f7168))
- **client:** scripts loading out of order when added through head ([#2970](https://github.com/vuejs/vitepress/issues/2970)) ([98679c9](https://github.com/vuejs/vitepress/commit/98679c9e82fcd3bbe3829640d0386cbd730e61ba))
- customizing the starting line number even if globally set ([#2941](https://github.com/vuejs/vitepress/issues/2941)) ([0cd87b1](https://github.com/vuejs/vitepress/commit/0cd87b1bafa6158ded0bf741553816f3d9b43a89))
- make algolia search work with indices that don't return absolute urls ([#2956](https://github.com/vuejs/vitepress/issues/2956)) ([2a34c6b](https://github.com/vuejs/vitepress/commit/2a34c6b3076bf418b3abbbca984fcb033743a611)), closes [#336](https://github.com/vuejs/vitepress/issues/336) [#805](https://github.com/vuejs/vitepress/issues/805)
- **theme:** remove extra padding from top when navbar is hidden ([#2575](https://github.com/vuejs/vitepress/issues/2575)) ([fd46dc9](https://github.com/vuejs/vitepress/commit/fd46dc9b8f8951b3196e4208d958d1ca0e1dc6e8))
### Features
- mathjax support ([#2977](https://github.com/vuejs/vitepress/issues/2977)) ([7271a95](https://github.com/vuejs/vitepress/commit/7271a959480261d60c01146d2e520d0f662e0380))
- **theme:** allow forcing dark mode ([#2974](https://github.com/vuejs/vitepress/issues/2974)) ([1fb5d22](https://github.com/vuejs/vitepress/commit/1fb5d228a269e913163246e988806056b3f1b9d9))
- **theme:** allow forcing site locale in last updated format ([#2973](https://github.com/vuejs/vitepress/issues/2973)) ([a18e5e4](https://github.com/vuejs/vitepress/commit/a18e5e48a442b09487cda8ab14e3b103ce270641))
# [1.0.0-rc.13](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.12...v1.0.0-rc.13) (2023-09-13)
### Bug Fixes
- **theme:** allow wrapping feature icons ([a1e1267](https://github.com/vuejs/vitepress/commit/a1e1267549e198b35455d055536cd0c6d1ad79ce)), closes [#2923](https://github.com/vuejs/vitepress/issues/2923)
- **theme:** local search enter key with the search result ([#2937](https://github.com/vuejs/vitepress/issues/2937)) ([00ef2f1](https://github.com/vuejs/vitepress/commit/00ef2f1db0369f50b3b634508e798b19b9525b34))
### Features
- **theme:** add search insights boolean to algolia search ([#2940](https://github.com/vuejs/vitepress/issues/2940)) ([32aa2a7](https://github.com/vuejs/vitepress/commit/32aa2a7d179049e5a1ed809018c32418bf69e8d5))
### Reverts
- Revert "feat(theme): use inert to avoid traverse menus and content with keyboard" (#2953) ([54891df](https://github.com/vuejs/vitepress/commit/54891df6149f4d0a871b16edf5f9a8a6fec639f9)), closes [#2953](https://github.com/vuejs/vitepress/issues/2953) [#2932](https://github.com/vuejs/vitepress/issues/2932)
# [1.0.0-rc.12](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.11...v1.0.0-rc.12) (2023-09-10)
### Bug Fixes
- **theme:** prevent closing local search box on key enter ([#2933](https://github.com/vuejs/vitepress/issues/2933)) ([e544b41](https://github.com/vuejs/vitepress/commit/e544b411d91eba54154243b0af4cea3226c192c4))
- **theme:** use brand color on search highlight ([dfc0fbf](https://github.com/vuejs/vitepress/commit/dfc0fbfcb4f255461bd90aef23a3dda1422b8335)), closes [#2902](https://github.com/vuejs/vitepress/issues/2902)
### Features
- highlight nav by default when one of the items is matched ([#2893](https://github.com/vuejs/vitepress/issues/2893)) ([b1fbece](https://github.com/vuejs/vitepress/commit/b1fbece047ca503f2c59553f9e37a0aac4be52c9))
- process md includes before building local search index ([#2906](https://github.com/vuejs/vitepress/issues/2906)) ([c6ff5c7](https://github.com/vuejs/vitepress/commit/c6ff5c76867dc59d5548cb33fd8447e23712bef5))
- support for customizing the starting line number in a code block ([#2917](https://github.com/vuejs/vitepress/issues/2917)) ([c0ce7f7](https://github.com/vuejs/vitepress/commit/c0ce7f723e52682d9ca107e4ce4e0e5c82710e02))
- **theme:** allow setting target in home features ([#2897](https://github.com/vuejs/vitepress/issues/2897)) ([cb49673](https://github.com/vuejs/vitepress/commit/cb4967313e5edcfd4bfc12aa10e75fec7b32e0c8))
- **theme:** use inert to avoid traverse menus and content with keyboard ([#2932](https://github.com/vuejs/vitepress/issues/2932)) ([070fc0a](https://github.com/vuejs/vitepress/commit/070fc0a56ddb941e26a098ba7207b5d1e91b7b51))
# [1.0.0-rc.11](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.10...v1.0.0-rc.11) (2023-09-10)
### Bug Fixes
- **init:** missing mts extension on windows ([195ebe9](https://github.com/vuejs/vitepress/commit/195ebe9464e2cc9b208e7d6c8bc5fa9f92025fdc)), closes [#2886](https://github.com/vuejs/vitepress/issues/2886)
- respect attrs on custom containers ([8b76167](https://github.com/vuejs/vitepress/commit/8b76167ccfbe5bf21295db6905451e1c50ca4407))
- temp workaround for broken navigation from 404 to home ([a18d544](https://github.com/vuejs/vitepress/commit/a18d5447f29f05d75bf0e20ff839e5c3bcdac390)), closes [#2891](https://github.com/vuejs/vitepress/issues/2891)
- **theme:** dropdown menu partially hidden by the homepage footer when it is too long ([#2904](https://github.com/vuejs/vitepress/issues/2904)) ([a60f079](https://github.com/vuejs/vitepress/commit/a60f079f996cc8ce9aeb189a25187fdbce2217ab))
- **theme:** improve contrast of search highlight text ([#2887](https://github.com/vuejs/vitepress/issues/2887)) ([20f9770](https://github.com/vuejs/vitepress/commit/20f97702680b47eb9675770df4db94a3e3b94ef1))
- **theme:** link hover color inside a custom block ([#2876](https://github.com/vuejs/vitepress/issues/2876)) ([39784ca](https://github.com/vuejs/vitepress/commit/39784ca55fdbefa97b7e9f892609ef8bdaeadf50))
- **theme:** prevent layout shift in search button key ([#2889](https://github.com/vuejs/vitepress/issues/2889)) ([0088434](https://github.com/vuejs/vitepress/commit/0088434895e5df9afea5bb8e81c515a41e824c44))
- **theme:** search button key misplaced on safari ([18adc07](https://github.com/vuejs/vitepress/commit/18adc07117cbf151b51aa205419496938a322a2e))
- **types:** NavItem can only have either link or items ([#2880](https://github.com/vuejs/vitepress/issues/2880)) ([12ef12d](https://github.com/vuejs/vitepress/commit/12ef12d6330f61a29102e7a0d537e742ff20367f))
### Features
- detect bun package manager ([#2874](https://github.com/vuejs/vitepress/issues/2874)) ([83270fe](https://github.com/vuejs/vitepress/commit/83270fe65767016a98cd59b6256f1361439cc7c8))
- skip rendering if env.BUNDLE_ONLY is truthy ([#2890](https://github.com/vuejs/vitepress/issues/2890)) ([d40eb19](https://github.com/vuejs/vitepress/commit/d40eb1903be022c9dfe10136122f5dc5aacb71d3))
# [1.0.0-rc.10](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.9...v1.0.0-rc.10) (2023-08-28)
### Bug Fixes
- pseudo styles being removed with postcssIsolateStyles ([21b4f8c](https://github.com/vuejs/vitepress/commit/21b4f8caad8f0b9a570f00ac2662635062db8566)), closes [#2868](https://github.com/vuejs/vitepress/issues/2868) [#2867](https://github.com/vuejs/vitepress/issues/2867)
- resolve snippets from original file path - align with include behavior ([8aa032f](https://github.com/vuejs/vitepress/commit/8aa032f60cd52e674a401f79b3cb473ac7d22abb))
### Features
- allow overriding mdit-vue/component options ([4f01f1a](https://github.com/vuejs/vitepress/commit/4f01f1a09c84fced276e1a138a59ed1b9679ce15))
### Reverts
- "fix: createContentLoader generates invalid url when sets `base`" ([#2865](https://github.com/vuejs/vitepress/issues/2865)) ([6be5a7e](https://github.com/vuejs/vitepress/commit/6be5a7e830fab2361bde5a4194930b2898733a8b))
# [1.0.0-rc.9](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.4...v1.0.0-rc.9) (2023-08-28)
### Bug Fixes
- **a11y/theme:** disable transitions if user prefers reduced motion ([fc5092f](https://github.com/vuejs/vitepress/commit/fc5092fb651487e69737fff04d3979f00c67dcc6))
- **build:** respect preserveSymlinks ([#2780](https://github.com/vuejs/vitepress/issues/2780)) ([1bda710](https://github.com/vuejs/vitepress/commit/1bda710702f5569e26b24b44785d938296870884))
- **cli/init:** print the correct packageManager ([#2787](https://github.com/vuejs/vitepress/issues/2787)) ([b388b0a](https://github.com/vuejs/vitepress/commit/b388b0a8c169e399f8da43368022454b6e8ea489))
- **cli/init:** terminal message has not enough contrast ([#2786](https://github.com/vuejs/vitepress/issues/2786)) ([4d9d977](https://github.com/vuejs/vitepress/commit/4d9d9775190178d0eaea5b3cea86309ae420bd43))
- restart server on theme creation/deletion ([#2785](https://github.com/vuejs/vitepress/issues/2785)) ([e0be677](https://github.com/vuejs/vitepress/commit/e0be677554a517e8b02fcaf930828bb052d1c4a4))
- scroll-to-top in iOS when opens sidebar ([#2803](https://github.com/vuejs/vitepress/issues/2803)) ([3dab9a6](https://github.com/vuejs/vitepress/commit/3dab9a6be1b543cf52c7c61f1e439a7973cd6667))
- stackblitz not working on firefox ([877f643](https://github.com/vuejs/vitepress/commit/877f643b133b70f01bbf397900829050a399893f)), closes [#2817](https://github.com/vuejs/vitepress/issues/2817)
- **theme:** docsearch variables not applying properly on ios beta ([436e99a](https://github.com/vuejs/vitepress/commit/436e99a594d42650f69c062fd095eb0502a76b34))
- **theme:** improve logo svg and add `art` dir ([1f8c58a](https://github.com/vuejs/vitepress/commit/1f8c58aed0bf5a191021913dd7f9a87e9b75f3eb))
- **theme:** prevent sidebar re-render unless there is actual change ([33962e0](https://github.com/vuejs/vitepress/commit/33962e04ebb2724e12b131f61ff00fe0aaf990f3)), closes [#2796](https://github.com/vuejs/vitepress/issues/2796)
- **theme:** revert 79 to 179 in yellow-soft ([#2858](https://github.com/vuejs/vitepress/issues/2858)) ([74fcb60](https://github.com/vuejs/vitepress/commit/74fcb60fb4ceb97b9ab0442a26e22a726af2dcc9))
- **theme:** show only one carbon ad at a time ([5ced0cc](https://github.com/vuejs/vitepress/commit/5ced0cca837ac7fbf1884ab56255b29c69dbec40))
- **theme:** ssr issues on deno ([e8edd0a](https://github.com/vuejs/vitepress/commit/e8edd0a05f43491656c00db36630f391caf64461))
### Features
- allow customizing markdown renderer used for local search indexing ([#2770](https://github.com/vuejs/vitepress/issues/2770)) ([00dc1e6](https://github.com/vuejs/vitepress/commit/00dc1e6742273fe6fde74e7abbd160bd7724af4d))
- export postcssIsolateStyles for vp-raw ([3c736c1](https://github.com/vuejs/vitepress/commit/3c736c1c95814d1ca43b4e99bda62b8ccc908cd5))
- **theme:** allow overriding code copied text from css ([#2833](https://github.com/vuejs/vitepress/issues/2833)) ([e8ef1aa](https://github.com/vuejs/vitepress/commit/e8ef1aaabecd7374cdf6cefca6b02ff9d3d3573f))
- **theme:** allow overriding last updated time in doc footer from frontmatter ([#2848](https://github.com/vuejs/vitepress/issues/2848)) ([9a062a6](https://github.com/vuejs/vitepress/commit/9a062a6dd63db3dc9d951f2973c4ab606594a11f))
- **theme:** allow providing custom `toggle-appearance` function ([#2844](https://github.com/vuejs/vitepress/issues/2844)) ([a5f2eac](https://github.com/vuejs/vitepress/commit/a5f2eacf225ff1a9a82c10ae492658190f313fb0))
- **theme:** allow setting rel and target on sidebar links ([e477cdf](https://github.com/vuejs/vitepress/commit/e477cdfd2f62144cd6331f45aaaa865185a64575)), closes [#2851](https://github.com/vuejs/vitepress/issues/2851)
- **theme:** export VPButton and VPSponsors ([#2767](https://github.com/vuejs/vitepress/issues/2767)) ([6960ec1](https://github.com/vuejs/vitepress/commit/6960ec1cf61e973ffb238af2b77ad7aaf8c83500))
- **theme:** export VPImage ([#2814](https://github.com/vuejs/vitepress/issues/2814)) ([f242140](https://github.com/vuejs/vitepress/commit/f242140c47e8a15070f689d5a4e54c7d88100f96))
- **theme:** improve color system ([#2797](https://github.com/vuejs/vitepress/issues/2797)) ([e4f5c51](https://github.com/vuejs/vitepress/commit/e4f5c51bbe25d42fd52a1cd47e83dda4254fdd7e)), closes [#2100](https://github.com/vuejs/vitepress/issues/2100)
### BREAKING CHANGES
- `pathname://` protocol is dropped. Specify `target="_self"` or `target="_blank"` instead. Refer [docs](https://vitepress.dev/guide/routing#linking-to-non-vitepress-pages) to learn more.
- Shiki's default theme is now changed to `github-light` and `github-dark`. If you want to use the old theme, you can set `markdown.theme` in your config to `'material-theme-palenight'`.
- Internal logic of `isDark` is changed to use vueuse. It might impact your custom theme. You can customize its behavior using [`appearance`](https://vitepress.dev/reference/site-config#appearance) option.
- Default theme's color system is updated to make it more easily customizable. Refer the [PR](https://github.com/vuejs/vitepress/pull/2797) for new variables.
# [1.0.0-rc.4](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.7...v1.0.0-rc.4) (2023-08-08)
### Bug Fixes
- `createContentLoader` generates invalid url when `base` is set ([#2714](https://github.com/vuejs/vitepress/issues/2714)) ([0f38eb4](https://github.com/vuejs/vitepress/commit/0f38eb440492f3a486517714976fbfe6dfb30a09))
- **build:** make outDir from cli work properly ([17378c0](https://github.com/vuejs/vitepress/commit/17378c064f3e6f166ce180f8d7eeced2f1cc4224)), closes [#2716](https://github.com/vuejs/vitepress/issues/2716)
- **build:** nested rewrites not working properly ([0f421d7](https://github.com/vuejs/vitepress/commit/0f421d72221495b8ef14195db3e3df9297ebc6ff))
- **client:** handle empty hash in links ([#2738](https://github.com/vuejs/vitepress/issues/2738)) ([c6c983e](https://github.com/vuejs/vitepress/commit/c6c983ed73a019027b452b3eaf0ee4b502d38818))
- fix sitemap path resolution ([481a5e3](https://github.com/vuejs/vitepress/commit/481a5e3cb55c6fda2c318180cfa0532ed34e4fc5)), closes [#2749](https://github.com/vuejs/vitepress/issues/2749)
- **theme:** align max-width media queries ([d31051a](https://github.com/vuejs/vitepress/commit/d31051a05106f97924be3cdb3919f24acc232b59))
- **theme:** allow using h1 headings in outline ([e3f8fc7](https://github.com/vuejs/vitepress/commit/e3f8fc7972f5506cd9def08ad13c62141737318f)), closes [#1529](https://github.com/vuejs/vitepress/issues/1529)
- **theme:** close dropdown menus after an item is clicked ([#2380](https://github.com/vuejs/vitepress/issues/2380)) ([e54eea3](https://github.com/vuejs/vitepress/commit/e54eea3da0de640e7b343381bddf9a439d638954))
- **theme:** don't reset scroll position on changing tab in code groups ([039798a](https://github.com/vuejs/vitepress/commit/039798a8c14a8c455e1187c5584c7f518c40f66a)), closes [#2732](https://github.com/vuejs/vitepress/issues/2732) [#2362](https://github.com/vuejs/vitepress/issues/2362)
- **theme:** dont show transparent navbar other than home ([#2742](https://github.com/vuejs/vitepress/issues/2742)) ([1d6254b](https://github.com/vuejs/vitepress/commit/1d6254b615b48ceef85267045e8fce976a7eafd5))
- **theme:** hide outline marker on scroll to top ([81e7405](https://github.com/vuejs/vitepress/commit/81e7405e193e832442db9aedb50ed3dc741e92ed))
- **theme:** outline marker flicks when navigating towards above ([e8ebf1b](https://github.com/vuejs/vitepress/commit/e8ebf1b0483e025b7d3bc3ea6eb3fa02d4acac93)), closes [#2665](https://github.com/vuejs/vitepress/issues/2665) [#2676](https://github.com/vuejs/vitepress/issues/2676)
- **theme:** override docsearch button bg ([063b0e5](https://github.com/vuejs/vitepress/commit/063b0e520a0b34db934371f56ddba212ceb3ba4c)), closes [#2735](https://github.com/vuejs/vitepress/issues/2735)
- **theme:** respect feature icon dimensions set from frontmatter ([93823a8](https://github.com/vuejs/vitepress/commit/93823a8566df22c57cb4fbc81fa65c34222ece5e)), closes [#1886](https://github.com/vuejs/vitepress/issues/1886)
- **theme:** scroll code group tab into view on selection ([1a6efba](https://github.com/vuejs/vitepress/commit/1a6efbae8e13eb6612aacdb8d384554e72e5f562)), closes [#2355](https://github.com/vuejs/vitepress/issues/2355)
- **theme:** update sidebar active link status on hash change ([#2736](https://github.com/vuejs/vitepress/issues/2736)) ([3840eaa](https://github.com/vuejs/vitepress/commit/3840eaae163cc9307c8d8525ad03c59752443b2b))
- **regression/theme:** fix sidebar collapsing ([#2753](https://github.com/vuejs/vitepress/issues/2753)) ([9a4ee07](https://github.com/vuejs/vitepress/commit/9a4ee07260191adeb4c3810d95b044439609525c))
- **cli:** generate mjs file on init if `"type": "module"` is not present ([23d7511](https://github.com/vuejs/vitepress/commit/23d751165f6def6fa6b3a5d7efd89b993a2780d8))
- **theme:** language menu undefined text ([#2755](https://github.com/vuejs/vitepress/issues/2755)) ([c9d4655](https://github.com/vuejs/vitepress/commit/c9d465587a3b2188ff9922483a15d7096e6a3e6c))
### Features
- **theme:** final re-brand ([#2727](https://github.com/vuejs/vitepress/pull/2727)) ([c0d838b](https://github.com/vuejs/vitepress/commit/c0d838bda0121fc162d1e6a43324f75290bc1b72))
- allow html blocks inside code groups ([#2719](https://github.com/vuejs/vitepress/issues/2719)) ([7f0c18e](https://github.com/vuejs/vitepress/commit/7f0c18e01384d48380b64ba629229ec048f85453))
- **build:** add `markdown.preConfig` option ([ce85726](https://github.com/vuejs/vitepress/commit/ce85726c127d9478274126374df9c37ee8b31167)), closes [#1382](https://github.com/vuejs/vitepress/issues/1382)
- **build:** allow overriding vite config loading ([#2750](https://github.com/vuejs/vitepress/issues/2750)) ([1bed154](https://github.com/vuejs/vitepress/commit/1bed154612661ac3783558cf82a7e94832ee4ff8))
- **client:** allow customizing scrollOffset padding ([20b509c](https://github.com/vuejs/vitepress/commit/20b509c6e1d957c73be75da27635b23de42781d4)), closes [#2739](https://github.com/vuejs/vitepress/issues/2739)
- **client:** allow overriding props on Content ([1179484](https://github.com/vuejs/vitepress/commit/11794844327c65bd6086b1237b0d6568cb32a4cb)), closes [#2712](https://github.com/vuejs/vitepress/issues/2712)
- i18n with sitemap ([#2708](https://github.com/vuejs/vitepress/issues/2708)) ([7778187](https://github.com/vuejs/vitepress/commit/7778187f2dc31554fa7541da9648235c994d4ae8))
- **search:** allow enabling detailed view by default ([4af5975](https://github.com/vuejs/vitepress/commit/4af597582cd8ae565e22c912f26f67123babcd61)), closes [#2690](https://github.com/vuejs/vitepress/issues/2690)
- **theme:** allow adding custom layouts ([f4a5c43](https://github.com/vuejs/vitepress/commit/f4a5c43cb00d70143cefcd9dfd9ba536f120ffda)), closes [#2547](https://github.com/vuejs/vitepress/issues/2547)
- **theme:** allow customizing default theme's 404 page ([d7e2254](https://github.com/vuejs/vitepress/commit/d7e225473bd072119c3ce76317db2b723be74f81)), closes [#2715](https://github.com/vuejs/vitepress/issues/2715)
- **theme:** allow customizing prev/next text from config file ([09a4fdc](https://github.com/vuejs/vitepress/commit/09a4fdc9b844a3e1877045afc496282b988f6f6b)), closes [#1373](https://github.com/vuejs/vitepress/issues/1373)
- **theme:** allow overriding logo link ([2a7422b](https://github.com/vuejs/vitepress/commit/2a7422bbbf91b852e27525d64627e9cff6eff294)), closes [#1683](https://github.com/vuejs/vitepress/issues/1683)
- **theme:** allow passing html in nav links ([69251b7](https://github.com/vuejs/vitepress/commit/69251b7484d8e4591841c32dd2f5a0179859cf14)), closes [#1652](https://github.com/vuejs/vitepress/issues/1652)
- **theme:** allow setting base path in sidebar items ([#2734](https://github.com/vuejs/vitepress/issues/2734)) ([52884d9](https://github.com/vuejs/vitepress/commit/52884d9d4b3ad294f4c4fcab637c4e07c80dde3a))
### Reverts
- [#2689](https://github.com/vuejs/vitepress/issues/2689) ([#2722](https://github.com/vuejs/vitepress/issues/2722)) ([a56d608](https://github.com/vuejs/vitepress/commit/a56d608bec427ad51a9edb620d8fb01ebae29550))
### BREAKING CHANGES
- Node v18+ is now required to run VitePress.
- VitePress now only provides ESM API. Refer [#2703](https://github.com/vuejs/vitepress/issues/2703) for details.
# [1.0.0-beta.7](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-07-29)
### Bug Fixes
- **build:** `createContentLoader` generates invalid url when `srcDir` is set ([#2578](https://github.com/vuejs/vitepress/issues/2578)) ([74d9ba2](https://github.com/vuejs/vitepress/commit/74d9ba27b53c6fd09b91b58bba9c1f138a6ee6f1))
- **build:** duplicate description tags with transformHead ([#2702](https://github.com/vuejs/vitepress/issues/2702)) ([68f25f5](https://github.com/vuejs/vitepress/commit/68f25f5a9cca1d059831184ad8876bb40326d9b6))
- **build:** use vue dev build when DEBUG is truthy ([#2689](https://github.com/vuejs/vitepress/issues/2689)) ([b61f36d](https://github.com/vuejs/vitepress/commit/b61f36d85326912ca67f552ecbe89aa4ca0b1919))
- **build:** remove index.html when using createContentLoader ([#2693](https://github.com/vuejs/vitepress/issues/2693)) ([6fc88a5](https://github.com/vuejs/vitepress/commit/6fc88a5cce431fa47330860155191f7b3eccb62e))
- **search:** add useFocusTrap and mark.js to optimizeDeps ([#2682](https://github.com/vuejs/vitepress/issues/2682)) ([fb048a6](https://github.com/vuejs/vitepress/commit/fb048a6f7289a12a8e67724cee29e55252568489))
- **theme:** incorrect header anchor icon position with multline headers ([#2694](https://github.com/vuejs/vitepress/issues/2694)) ([77c1b4d](https://github.com/vuejs/vitepress/commit/77c1b4d3cd3c47ffc5268ac24d0f983df443075d))
- **theme:** code group tab divider not showing full-width ([#2701](https://github.com/vuejs/vitepress/issues/2701)) ([b39b491](https://github.com/vuejs/vitepress/commit/b39b4912af9664d14f5f7c658e64b96de3865f04))
- **theme:** fix feature component always generating anchor tags ([51f28bf](https://github.com/vuejs/vitepress/commit/51f28bfac96bbb14ea0175c796e0d18fff3b2cc5))
- **theme:** respect empty rel and target ([#2705](https://github.com/vuejs/vitepress/issues/2705)) ([60dd0a4](https://github.com/vuejs/vitepress/commit/60dd0a474b056ec884f3173a233f1fb951d96870))
### Features
- sitemap generation ([#2691](https://github.com/vuejs/vitepress/issues/2691)) ([5563695](https://github.com/vuejs/vitepress/commit/5563695b1599165fa85ea69f15334e27ab6955bf))
- **build:** custom excerpt for `createContentLoader` ([#2698](https://github.com/vuejs/vitepress/issues/2698)) ([13f94a6](https://github.com/vuejs/vitepress/commit/13f94a6663d5b4472ce380ee1c27e6124da8fec3))
- **theme:** rel for feature links ([#2704](https://github.com/vuejs/vitepress/issues/2704)) ([5d18fd8](https://github.com/vuejs/vitepress/commit/5d18fd8978e418ce920aab357b180a58b1af3077))
- **theme:** support custom page class ([#2696](https://github.com/vuejs/vitepress/issues/2696)) ([2ae90a2](https://github.com/vuejs/vitepress/commit/2ae90a234338ea074b536e5583d81fd565d8e3f3))
### BREAKING CHANGES
- **build:** `createContentLoader` will now resolve globs relative to `srcDir` instead of `root`
# [1.0.0-beta.6](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-07-22)
### Bug Fixes
- **build:** cannot handle file name containing single quote ([#2615](https://github.com/vuejs/vitepress/issues/2615)) ([9949f00](https://github.com/vuejs/vitepress/commit/9949f0046114fdbb59062ecc044aa0a735733e2e))
- **build:** remove `=""` from boolean attributes in head ([#2620](https://github.com/vuejs/vitepress/issues/2620)) ([e02adfe](https://github.com/vuejs/vitepress/commit/e02adfe3eaed9761f71d1d263822c5f94618ee72)), closes [#1131 (comment)](https://github.com/vuejs/vitepress/issues/1131#issuecomment-1574092184) [#2607](https://github.com/vuejs/vitepress/issues/2607)
- **build:** resolve nested md inclusions properly ([e8074e6](https://github.com/vuejs/vitepress/commit/e8074e60ec5941e7b447f21a289e59e9a91a9e33)), closes [#2584](https://github.com/vuejs/vitepress/issues/2584) [#2586](https://github.com/vuejs/vitepress/issues/2586)
- **compat:** disable stdin-discarder ([#2640](https://github.com/vuejs/vitepress/issues/2640)) ([08c4bac](https://github.com/vuejs/vitepress/commit/08c4bacac5e1acaa95a9878e71781f65b49f48f4))
- **hmr:** allow disabling md cache during dev ([#2581](https://github.com/vuejs/vitepress/issues/2581)) ([f60b32f](https://github.com/vuejs/vitepress/commit/f60b32f02f4236ec0c29f450c4fe79d6aabf5995))
- invalid css ([b199885](https://github.com/vuejs/vitepress/commit/b199885b9bc55082914fa651407989a03e4e3a9f))
- **lastUpdated:** use author date instead of commit date ([#2618](https://github.com/vuejs/vitepress/issues/2618)) ([47bf5bf](https://github.com/vuejs/vitepress/commit/47bf5bf991e48fd41b83613136396bc607751104))
- **theme:** code block style is broken inside custom block ([#2664](https://github.com/vuejs/vitepress/issues/2664)) ([8ff431a](https://github.com/vuejs/vitepress/commit/8ff431a6bcce8cca04d9ea23ef92045a728d686a))
- **theme:** don't show external link icon on social links ([f3a4597](https://github.com/vuejs/vitepress/commit/f3a459708d55b3b98a9d25b090e442beebcdaa92))
- **theme:** fix doc footer's prev and next's size difference ([#2600](https://github.com/vuejs/vitepress/issues/2600)) ([f52a262](https://github.com/vuejs/vitepress/commit/f52a2629a7f565ff10b263bf7efd8e258c7d4979))
- **theme:** fix sidebar's caret alignment issue with long text ([#2599](https://github.com/vuejs/vitepress/issues/2599)) ([01120a5](https://github.com/vuejs/vitepress/commit/01120a51d6d13f842678c6a1d418ac7bd3ccceca))
- **theme:** fix theme without fonts emitting inter ([#2588](https://github.com/vuejs/vitepress/issues/2588)) ([71eb11f](https://github.com/vuejs/vitepress/commit/71eb11f72e60706a546b756dc3fd72d06e2ae4e2))
- **theme:** invalid html -- article inside span ([d0e7374](https://github.com/vuejs/vitepress/commit/d0e73744412520fbbc36a8d701fa3aaaaa53ab35))
- **theme:** re-export default ([#2606](https://github.com/vuejs/vitepress/issues/2606)) ([9fdee9c](https://github.com/vuejs/vitepress/commit/9fdee9c2a30eeccb500e6aff165887d79a1686ef))
- **theme:** respect `--vp-nav-height` in local nav calculations ([#2663](https://github.com/vuejs/vitepress/issues/2663)) ([3912951](https://github.com/vuejs/vitepress/commit/3912951bad6f61950ba9da4f5cd3061218903e7d))
- **theme:** support missing meta description tag ([#2639](https://github.com/vuejs/vitepress/issues/2639)) ([cfa870f](https://github.com/vuejs/vitepress/commit/cfa870f060934c4738c2f70e7b21ad13b6acdb42))
- **theme:** two outlines at 1280px ([ceedb68](https://github.com/vuejs/vitepress/commit/ceedb68d3b22e5c5cc72be1777c6a3f7090d0a6a)), closes [#2668](https://github.com/vuejs/vitepress/issues/2668)
- **type:** `useSidebar()` type error ([#2643](https://github.com/vuejs/vitepress/issues/2643)) ([a07f959](https://github.com/vuejs/vitepress/commit/a07f959d472f1976d26c675066204eca9bc7c651))
### Features
- **build:** add `metaChunk` option to extract metadata to separate chunk ([#2626](https://github.com/vuejs/vitepress/issues/2626)) ([700fad1](https://github.com/vuejs/vitepress/commit/700fad192edef1f5d4681d714d3eaebbd77eab95))
- **build:** support custom `assetsDir` ([#2497](https://github.com/vuejs/vitepress/issues/2497)) ([64d7c3b](https://github.com/vuejs/vitepress/commit/64d7c3ba54ed2dceabcc1cb65634381d7b42ce47))
- **build:** support overriding meta viewport tag ([#2642](https://github.com/vuejs/vitepress/issues/2642)) ([94e2966](https://github.com/vuejs/vitepress/commit/94e2966babfe572a62c71907332450b18c6c9509))
- **search:** allow excluding content from search results ([#2602](https://github.com/vuejs/vitepress/issues/2602)) ([37d5b27](https://github.com/vuejs/vitepress/commit/37d5b273fbfddd41958e5cae4cc874a81dd9298a)), closes [#2344](https://github.com/vuejs/vitepress/issues/2344)
- **search:** support `minisearch` customization ([#2576](https://github.com/vuejs/vitepress/issues/2576)) ([9fee554](https://github.com/vuejs/vitepress/commit/9fee5542cb4bd0b83ccad5d625cb4eca8f8abb25))
- **theme:** allow using html text in VPHero ([#2635](https://github.com/vuejs/vitepress/issues/2635)) ([ec7643d](https://github.com/vuejs/vitepress/commit/ec7643dc1397d5b27158bd0865bd517f08e198a5))
- **theme:** make navbar logo's height customizable by css variable ([#2644](https://github.com/vuejs/vitepress/issues/2644)) ([c2e79aa](https://github.com/vuejs/vitepress/commit/c2e79aa58387281e482f88e4f307a3c36da60f40))
- **theme:** support footer frontmatter config ([#2574](https://github.com/vuejs/vitepress/issues/2574)) ([e79a13e](https://github.com/vuejs/vitepress/commit/e79a13eb42a0ab37713f09e7fd067cac559ab812))
### Performance Improvements
- fix race conditions with cache ([#2579](https://github.com/vuejs/vitepress/issues/2579)) ([32d65d4](https://github.com/vuejs/vitepress/commit/32d65d40c55b7df1a814820d5117c360f9d449a4))
# [1.0.0-beta.5](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2023-07-03)
### Bug Fixes
- **types:** `Sidebar` was exported multiple times breaking the config ([#2573](https://github.com/vuejs/vitepress/issues/2573)) ([a99dcf9](https://github.com/vuejs/vitepress/commit/a99dcf94436d6cbbd53ef5481a6ec5ffd8d887d2))
# [1.0.0-beta.4](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-07-02)
### Bug Fixes
- **build:** add `@vue/devtools-api` to `optimizeDeps.include` ([#2543](https://github.com/vuejs/vitepress/issues/2543)) ([b2a129f](https://github.com/vuejs/vitepress/commit/b2a129f49b8c83e528f594af977b1e901a57313e))
- **client:** bypass client router for links explicitly specifying target ([#2563](https://github.com/vuejs/vitepress/issues/2563)) ([e95015f](https://github.com/vuejs/vitepress/commit/e95015f598846e318c60929f1ef6466a8cfbb729))
- **client:** don't throw on using special chars in element ids ([#2560](https://github.com/vuejs/vitepress/issues/2560)) ([6b98113](https://github.com/vuejs/vitepress/commit/6b98113a4295e5db8d3876f176dab7e5a5b33e5c))
- **client:** scroll not working on clicking an anchor in search box ([#2527](https://github.com/vuejs/vitepress/issues/2527)) ([c30e758](https://github.com/vuejs/vitepress/commit/c30e758585ef512eef68b33918832d4413839e9c))
- **theme:** unresponsive back button with empty input in search box ([#2566](https://github.com/vuejs/vitepress/issues/2566)) ([fa3780f](https://github.com/vuejs/vitepress/commit/fa3780f8ef99b88e998523570f08a4e7f86dfd1b))
### Features
- **build:** support nested markdown includes ([#2545](https://github.com/vuejs/vitepress/issues/2545)) ([0c4210b](https://github.com/vuejs/vitepress/commit/0c4210bb5ed114fb8597786230cb145790578071))
- **client:** add onBeforePageLoad hook for router ([#2564](https://github.com/vuejs/vitepress/issues/2564)) ([665f3b0](https://github.com/vuejs/vitepress/commit/665f3b02f828175d4df5c0f79263dfa6e3f601d2))
- support selecting line range when importing md file ([#2502](https://github.com/vuejs/vitepress/issues/2502)) ([1ef33fe](https://github.com/vuejs/vitepress/commit/1ef33fe1c44875dc86835a698a708b1aa847e16e))
- **theme:** allow customizing last updated date time format options ([#2332](https://github.com/vuejs/vitepress/issues/2332)) ([24abc7c](https://github.com/vuejs/vitepress/commit/24abc7c6bda66df6e7ed543531f52c87f52f52df))
- **theme:** allow hiding navbar on specific pages via frontmatter ([#2565](https://github.com/vuejs/vitepress/issues/2565)) ([1e15001](https://github.com/vuejs/vitepress/commit/1e1500141bf6e2619caa7950f019016dc26d147f))
- **theme:** expose `useSidebar` ([#2496](https://github.com/vuejs/vitepress/issues/2496)) ([c4909e4](https://github.com/vuejs/vitepress/commit/c4909e4298ec706cf1762cb36af03e5fd3637ccc))
- **theme:** option to show icon for external links ([#2501](https://github.com/vuejs/vitepress/issues/2501)) ([52cfbc3](https://github.com/vuejs/vitepress/commit/52cfbc323615c3e017b656bb551e0d9de02d1e5f))
### BREAKING CHANGES
- **client:** specifying `target="_self"` for internal links will now perform full reload.
# [1.0.0-beta.3](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2023-06-20)
### Bug Fixes
- **build:** disable validation for rewrite compiling ([69b2625](https://github.com/vuejs/vitepress/commit/69b2625623292591207b6b591f6b39019a054a43))
- **theme:** prevent glitch when algolia chunk is loaded ([#2519](https://github.com/vuejs/vitepress/issues/2519)) ([51661de](https://github.com/vuejs/vitepress/commit/51661def8ff743733d391a61ffb2ab1b66473fd2))
- use extends in template custom theme ([#2500](https://github.com/vuejs/vitepress/issues/2500)) ([7e39e02](https://github.com/vuejs/vitepress/commit/7e39e02185f5b18da09b01bd4c132a8b50e15b07))
- revert!: sync defineConfig types with vite (#2529) ([cd03db8](https://github.com/vuejs/vitepress/commit/cd03db803d5e6b9f04e242f7843153dded73ccb2)), closes [#2529](https://github.com/vuejs/vitepress/issues/2529)
### Features
- **build:** allow using regex in rewrites ([f831767](https://github.com/vuejs/vitepress/commit/f831767764030c77cc79db4cc860e7d76afc1b6a))
- **client:** expose dataSymbol ([a547530](https://github.com/vuejs/vitepress/commit/a5475304faad7db037e19a9ffe4d6f48a816e6ed)), closes [#2489](https://github.com/vuejs/vitepress/issues/2489)
### BREAKING CHANGES
- reverts the breaking changes in beta-2. `defineConfig` and `defineConfigWithTheme` no longer accept functions as argument.
# [1.0.0-beta.2](https://github.com/vuejs/vitepress/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2023-06-11)
### Bug Fixes
- **build:** create markdown env for localSearchPlugin ([#2322](https://github.com/vuejs/vitepress/issues/2322)) ([c9a98ac](https://github.com/vuejs/vitepress/commit/c9a98ac6bb854a7a24c08cfc23e84ebc243ba347))
- **build:** use rimraf to handle temp folder deletion in windows ([#2483](https://github.com/vuejs/vitepress/issues/2483)) ([2f75769](https://github.com/vuejs/vitepress/commit/2f7576998587387ee32173b6de90f338fc7e85d3))
- **search:** detailed view not working when page contains script setup ([80e734d](https://github.com/vuejs/vitepress/commit/80e734d67763fea449647b7b21dfde0bde1c360b)), closes [#2485](https://github.com/vuejs/vitepress/issues/2485)
- **theme:** adjust z-index for active code group marker ([#2413](https://github.com/vuejs/vitepress/issues/2413)) ([06c0fc5](https://github.com/vuejs/vitepress/commit/06c0fc5d5cd55e03b4eee14feac67b749e7283ed))
- **theme:** properly show divider between navs ([#2481](https://github.com/vuejs/vitepress/issues/2481)) ([2bd55ec](https://github.com/vuejs/vitepress/commit/2bd55eca2e7d8384ac50c94b049310dc6173f849))
- **theme:** use brand color in skip link in dark theme ([#2431](https://github.com/vuejs/vitepress/issues/2431)) ([62d1110](https://github.com/vuejs/vitepress/commit/62d1110848e9b8944d920232bee185d8066194dd))
- **theme:** use document !== undefined check for browser ([#2417](https://github.com/vuejs/vitepress/issues/2417)) ([c869ea6](https://github.com/vuejs/vitepress/commit/c869ea64ae3c20aef60af1425b02e5797faa8d69))
- **types:** sync defineConfig types with vite ([b3ded34](https://github.com/vuejs/vitepress/commit/b3ded34d8a9ca7a9a82e9b0cf705a2ed6233e881))
- **types:** theme-without-fonts types for node ([#2416](https://github.com/vuejs/vitepress/issues/2416)) ([8e87c14](https://github.com/vuejs/vitepress/commit/8e87c14fba6a76d2dec8611f3d56c0c3a84accc0))
### Features
- **build:** support relative path for code snippet ([#1894](https://github.com/vuejs/vitepress/issues/1894)) ([90478b3](https://github.com/vuejs/vitepress/commit/90478b36cd4d161c2118a9e677384982805963b0))
- **cli:** add shortcut for restarting server ([#2403](https://github.com/vuejs/vitepress/issues/2403)) ([64b06db](https://github.com/vuejs/vitepress/commit/64b06db3ece7c4c2e73dd28c2f349f521afa390a))
- **theme:** add custom label for social links ([#2466](https://github.com/vuejs/vitepress/issues/2466)) ([c995b9f](https://github.com/vuejs/vitepress/commit/c995b9f61d90aa7671371373c5772ab59b516fc5))
- **theme:** add semantic markup to local search dialog ([#2325](https://github.com/vuejs/vitepress/issues/2325)) ([4ddb96f](https://github.com/vuejs/vitepress/commit/4ddb96fe508578893ee5a44621b5bac098bd4710))
- **theme:** allow prev/next links to be disabled globally ([#2317](https://github.com/vuejs/vitepress/issues/2317)) ([29a9647](https://github.com/vuejs/vitepress/commit/29a9647ee92efe8ea9a7c6698d5cacb22bf3e9ce))
### Performance Improvements
- parallelize mpa chunks copy ([#2389](https://github.com/vuejs/vitepress/issues/2389)) ([6d7d195](https://github.com/vuejs/vitepress/commit/6d7d195adcf354b94e2a69c330264a3106ed5955))
- **search:** use dom apis instead of regex-based section parsing ([#2486](https://github.com/vuejs/vitepress/issues/2486)) ([d62e6f6](https://github.com/vuejs/vitepress/commit/d62e6f6dd68e1ac31654e0da6102915a5a3709f0))
- **theme/search:** prevent repeated rendering of same page ([#2398](https://github.com/vuejs/vitepress/issues/2398)) ([e7be720](https://github.com/vuejs/vitepress/commit/e7be720ede403598dcec0a520ccc7bacf4e8b276))
### BREAKING CHANGES
- **types:** `defineConfig` and `defineConfigWithTheme` can now accept functions that return the config object. This might break typings in some third-party plugins that rely on the type of these functions.
# [1.0.0-beta.1](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.76...v1.0.0-beta.1) (2023-05-22)
### Bug Fixes
- **config:** set scrollOffset to 0 is not effect ([#2395](https://github.com/vuejs/vitepress/issues/2395)) ([8153f23](https://github.com/vuejs/vitepress/commit/8153f23c901a6200661813e65f0d8eb602ad46da))
- **theme:** make features section layout consistent ([#2382](https://github.com/vuejs/vitepress/issues/2382)) ([26f21d9](https://github.com/vuejs/vitepress/commit/26f21d95dfbd671477d425e6b8ac5b0172a846ac))
- **theme:** missing global properties in localSearch ([#2396](https://github.com/vuejs/vitepress/issues/2396)) ([4896811](https://github.com/vuejs/vitepress/commit/489681117f46a803704b6ec80546a5e787e19df2))
- **theme:** support custom target and rel in navbar links for mobile ([#2400](https://github.com/vuejs/vitepress/issues/2400)) ([f364a5d](https://github.com/vuejs/vitepress/commit/f364a5d1d3c066c9728beb5d07576d6cb4b0640d))
# [1.0.0-alpha.76](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.75...v1.0.0-alpha.76) (2023-05-18)
### Bug Fixes
- **a11y:** mobile and theme switcher ([#2354](https://github.com/vuejs/vitepress/issues/2354)) ([d6c0985](https://github.com/vuejs/vitepress/commit/d6c0985002ee792b1e8e052f71cdd6bd72c315ad))
- **build:** uniform handling of windows slash in localSearchPlugin ([#2358](https://github.com/vuejs/vitepress/issues/2358)) ([b31933f](https://github.com/vuejs/vitepress/commit/b31933fbdd7aabfe080234407153aefa8f6a3f30))
- hmr when `base` is set ([#2375](https://github.com/vuejs/vitepress/issues/2375)) ([484ff5d](https://github.com/vuejs/vitepress/commit/484ff5dd4bd2e5c2d5168437895d400a39f2bfa8))
- **theme:** don't update opacity on hover ([#2326](https://github.com/vuejs/vitepress/issues/2326)) ([35f8b89](https://github.com/vuejs/vitepress/commit/35f8b896372e75e62882df613a49e8945e7bc832))
### Features
- **cli:** add shortcuts ([#2353](https://github.com/vuejs/vitepress/issues/2353)) ([97065ce](https://github.com/vuejs/vitepress/commit/97065cefc22e4772c0295c5ad23a87eea286f46b))
- **theme:** add focus trap to local search dialog ([#2324](https://github.com/vuejs/vitepress/issues/2324)) ([2f482af](https://github.com/vuejs/vitepress/commit/2f482afaabdb4206b87e2453d0099257693c4653))
- **theme:** open search box on pressing slash too ([#2328](https://github.com/vuejs/vitepress/issues/2328)) ([c20bd28](https://github.com/vuejs/vitepress/commit/c20bd283319158135e2d850485970dfc5fe82812))
# [1.0.0-alpha.75](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.74...v1.0.0-alpha.75) (2023-04-30)
### Bug Fixes
- **build:** reset regex lastIndex before testing ([188893c](https://github.com/vuejs/vitepress/commit/188893c2c1569e332e8776581cfa40b4c5f1168e))
- **cli/init:** remove trailing slash from npm scripts ([64ecedc](https://github.com/vuejs/vitepress/commit/64ecedc73f3e7010de85381d946af1c95404820e))
- **theme:** hide local nav on home page ([f07587a](https://github.com/vuejs/vitepress/commit/f07587af8a51f92a5ec491e5789dd088e28067b5)), closes [#2312](https://github.com/vuejs/vitepress/issues/2312)
- **theme:** local search get 404 on build when use route rewrites in windows ([#2301](https://github.com/vuejs/vitepress/issues/2301)) ([494c634](https://github.com/vuejs/vitepress/commit/494c634eb1d77963e555a736fa057dcb23700989))
- **theme:** vitepress data not properly injected in app when use localSearch ([#2299](https://github.com/vuejs/vitepress/issues/2299)) ([69c7646](https://github.com/vuejs/vitepress/commit/69c7646dafe7a774e0717e032f697b008d9cf7aa))
### Features
- add `filePath` to `PageData` ([#2140](https://github.com/vuejs/vitepress/issues/2140)) ([b24acc6](https://github.com/vuejs/vitepress/commit/b24acc6991570aa054a99b8d3977b8b4d0255418))
- **build:** allow using `@` prefix with `@include` ([#2292](https://github.com/vuejs/vitepress/issues/2292)) ([a3b38d1](https://github.com/vuejs/vitepress/commit/a3b38d18824343fd5b571a7a9a5d2c4ccf29e8e1))
- preserve user log level ([#2310](https://github.com/vuejs/vitepress/issues/2310)) ([a647cd3](https://github.com/vuejs/vitepress/commit/a647cd384320101f6df31e03960dd2c40808c49c))
- **theme:** support light shiki themes ([#2319](https://github.com/vuejs/vitepress/issues/2319)) ([d0f0012](https://github.com/vuejs/vitepress/commit/d0f0012aea4cc71fb28f60f2dd649c23aae146b8))
### BREAKING CHANGES
- **theme:** Styling for code blocks might break, especially if you were earlier overriding it for light theme. Those workarounds are no longer required. VitePress will now show code blocks and groups in light mode too if a light shiki theme is specified.
# [1.0.0-alpha.74](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.73...v1.0.0-alpha.74) (2023-04-24)
### Bug Fixes
- **build:** allow data-loaders files in packages to be found (closes [#2272](https://github.com/vuejs/vitepress/issues/2272)) ([84cf457](https://github.com/vuejs/vitepress/commit/84cf45772ed59f5eae747c15fbffc375768007b8))
- **router:** scroll back to the hash anchor even if it is already selected ([#2265](https://github.com/vuejs/vitepress/issues/2265)) ([f3d3332](https://github.com/vuejs/vitepress/commit/f3d3332fff72d1df6f70c5893bfc90442b1776fb))
### Features
- allow using html in member description ([#2269](https://github.com/vuejs/vitepress/issues/2269)) ([f744364](https://github.com/vuejs/vitepress/commit/f7443643a4510a6c650f1a1bda977c1d55fddf64))
- **search:** support custom `disableQueryPersistence` in local search ([#2273](https://github.com/vuejs/vitepress/issues/2273)) ([2f0f2d5](https://github.com/vuejs/vitepress/commit/2f0f2d5ac6efcab22bdb452e5c0780e7cd8f1498))
- **theme:** mobile view show outline button after removing sidebar ([#2274](https://github.com/vuejs/vitepress/issues/2274)) ([25b9111](https://github.com/vuejs/vitepress/commit/25b9111222cbd3de008e18cac6554933d4db993e))
# [1.0.0-alpha.73](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.72...v1.0.0-alpha.73) (2023-04-20)
### Bug Fixes
- **search:** fix highlighting in detailed view ([1f4920c](https://github.com/vuejs/vitepress/commit/1f4920c60dc1be03444781539064be7b3ec9eb08))
- **search:** local search showDetailedList not working in windows ([#2253](https://github.com/vuejs/vitepress/issues/2253)) ([09be057](https://github.com/vuejs/vitepress/commit/09be057ffb767e55d3a86f1a3664ebd0690f2fc5))
### Features
- outline link add title attribute ([#2261](https://github.com/vuejs/vitepress/issues/2261)) ([1f5798e](https://github.com/vuejs/vitepress/commit/1f5798e43771ae1e13921a39319345c89bb2298a))
# [1.0.0-alpha.72](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.71...v1.0.0-alpha.72) (2023-04-17)
### Bug Fixes
- **search:** don't directly access userConfig ([3e0e9d2](https://github.com/vuejs/vitepress/commit/3e0e9d2b27c02e250c5b350bf83dce9b95e217a8))
- **search:** ready event is not fired on mac ([e37e5cb](https://github.com/vuejs/vitepress/commit/e37e5cb45a6c3507b906b9955897ce4e84adf500))
- **theme:** local search showDetailedList not working in windows ([#2248](https://github.com/vuejs/vitepress/issues/2248)) ([8354f8f](https://github.com/vuejs/vitepress/commit/8354f8fb8649d429b2cb525dd6f35127faba7ae6))
# [1.0.0-alpha.71](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.70...v1.0.0-alpha.71) (2023-04-16)
### Bug Fixes
- **search:** esm interop mark.js import ([1b0a249](https://github.com/vuejs/vitepress/commit/1b0a249ad66288ff56675e4db905959ff0079726))
- **search:** properly group nested headings ([b1c956c](https://github.com/vuejs/vitepress/commit/b1c956ce99505316842c157c76a4ec051eb7610b)), closes [#2238](https://github.com/vuejs/vitepress/issues/2238)
# [1.0.0-alpha.70](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.69...v1.0.0-alpha.70) (2023-04-16)
### Bug Fixes
- **a11y:** increase touch target size of search icons ([4449867](https://github.com/vuejs/vitepress/commit/44498675aca3271596b041881d44e1524d744df6))
- **search:** avoid body scroll when using local search ([#2236](https://github.com/vuejs/vitepress/issues/2236)) ([144a7d8](https://github.com/vuejs/vitepress/commit/144a7d8e4ee483475b6956090c267213a1e2f8e1))
- **search:** better highlighting in detailed view ([#2234](https://github.com/vuejs/vitepress/issues/2234)) ([be83524](https://github.com/vuejs/vitepress/commit/be8352441f8b9a8561961c69f3e1794370101de2))
- **search:** fix keyword highlighting and scrolling in excerpts ([ca8db8a](https://github.com/vuejs/vitepress/commit/ca8db8adca028bb982b819553b85ac19fe946e7e))
- **search:** remove double base on importing excepts ([185213c](https://github.com/vuejs/vitepress/commit/185213c6ba4416071025fbf3c5ca7fadf311fdbf)), closes [#2230](https://github.com/vuejs/vitepress/issues/2230)
- **search:** remove extra /index from routes ([9e04b43](https://github.com/vuejs/vitepress/commit/9e04b435671accfcaee795ec8ec2833d8aa358f8))
- **search:** show escape to close on footer ([6d5b4cd](https://github.com/vuejs/vitepress/commit/6d5b4cd784274786ad57cef378646320ba17faf1))
### Features
- **search:** allow force disabling detailed view ([40f1d1b](https://github.com/vuejs/vitepress/commit/40f1d1b6f6f2f6c43fd0d9bcf4b6bc1174ce4831))
- **search:** make styling more configurable, align more with the theme ([#2233](https://github.com/vuejs/vitepress/issues/2233)) ([b2077c7](https://github.com/vuejs/vitepress/commit/b2077c70250d5c390d69ce31111a1c44769dbc78))
# [1.0.0-alpha.69](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.68...v1.0.0-alpha.69) (2023-04-15)
### Bug Fixes
- **search:** fix errors on empty titles ([6d363ec](https://github.com/vuejs/vitepress/commit/6d363ec9ffd6b27e1c77e5aab853471c6883c7bd))
- **theme:** fix color of blockquote in custom containers ([#2173](https://github.com/vuejs/vitepress/issues/2173)) ([712a57f](https://github.com/vuejs/vitepress/commit/712a57fde74daa27f69319861d95f9dec6bc05ad))
# [1.0.0-alpha.68](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.67...v1.0.0-alpha.68) (2023-04-15)
### Bug Fixes
- **theme:** fix top of scrollbar being unusable ([#2224](https://github.com/vuejs/vitepress/issues/2224)) ([7178a22](https://github.com/vuejs/vitepress/commit/7178a22c9d317245e5167abf80f7081fbf87e78a))
# [1.0.0-alpha.67](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.66...v1.0.0-alpha.67) (2023-04-15)
### Bug Fixes
- **search:** avoid double base ([25a1fe9](https://github.com/vuejs/vitepress/commit/25a1fe90bddd021a1ce5e068d8cad455687647bf))
- **theme:** navbar style ([#2202](https://github.com/vuejs/vitepress/issues/2202)) ([8ee6b90](https://github.com/vuejs/vitepress/commit/8ee6b905f5243a036c2dee7688539ef33e164f09))
### Features
- allow passing props and children/slots to defineClientComponent ([#2198](https://github.com/vuejs/vitepress/issues/2198)) ([4c24960](https://github.com/vuejs/vitepress/commit/4c2496043394d9b14376e74a5bf11ccea5e6e7d7))
# [1.0.0-alpha.66](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.65...v1.0.0-alpha.66) (2023-04-15)
### Bug Fixes
- **search:** properly resolve page link ([609d447](https://github.com/vuejs/vitepress/commit/609d447ab50b2b8fb78a174e7d5aa0ff52411b0e))
- **theme:** fix meta key not showing on search button ([e295160](https://github.com/vuejs/vitepress/commit/e2951604fd61336df9559ea16972d3ea76a49894))
### Features
- offline search ([#2110](https://github.com/vuejs/vitepress/issues/2110)) ([6c92675](https://github.com/vuejs/vitepress/commit/6c92675e33d3276a02b790a34083a68093b58c7f))
# [1.0.0-alpha.65](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.64...v1.0.0-alpha.65) (2023-04-04)
### Bug Fixes
- **build:** remove extra line at end of code blocks ([#2191](https://github.com/vuejs/vitepress/issues/2191)) ([a681fd1](https://github.com/vuejs/vitepress/commit/a681fd11e32709367d673cf0d9d26e4288f27776))
# [1.0.0-alpha.64](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.63...v1.0.0-alpha.64) (2023-03-29)
### Bug Fixes
- **build:** make `lastUpdated` work with git submodules ([#2149](https://github.com/vuejs/vitepress/issues/2149)) ([4c23003](https://github.com/vuejs/vitepress/commit/4c2300318952bfdaabd766a6f16f26419ee854da))
- **theme:** fix color of table head row in custom containers ([#2160](https://github.com/vuejs/vitepress/issues/2160)) ([51ecd58](https://github.com/vuejs/vitepress/commit/51ecd580a29d9e2bea73d4d5897154954d750d9f))
- **theme:** hide outline dropdown scrollbar when it does not overflow ([#2151](https://github.com/vuejs/vitepress/issues/2151)) ([ff26ff1](https://github.com/vuejs/vitepress/commit/ff26ff1e6683def53bfbe6cbd7656740c77f4bcc))
### Features
- **build:** provide `siteConfig` in `transformPageData` context ([#2163](https://github.com/vuejs/vitepress/issues/2163)) ([3714741](https://github.com/vuejs/vitepress/commit/3714741b409f4e5f8df4cc42c7b59b065c8cc6f6))
- **theme:** add `page-top/bottom` and `doc-top/bottom` slots ([#2139](https://github.com/vuejs/vitepress/issues/2139)) ([53d0099](https://github.com/vuejs/vitepress/commit/53d0099ffa99582f552d7dff5676734c965ceb05))
- **theme:** allow moving aside to left ([#2138](https://github.com/vuejs/vitepress/issues/2138)) ([9e3cf0f](https://github.com/vuejs/vitepress/commit/9e3cf0fa7d2c2589d129ef931457ab40f513d187))
# [1.0.0-alpha.63](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.62...v1.0.0-alpha.63) (2023-03-26)
### Bug Fixes
- **theme:** allow adding html as feature icons ([e5bc1e1](https://github.com/vuejs/vitepress/commit/e5bc1e10862a765f6790f5f08aa2bd76bb258532))
- **theme:** remove label background of code-group tabs ([#2136](https://github.com/vuejs/vitepress/issues/2136)) ([eac03f2](https://github.com/vuejs/vitepress/commit/eac03f26e2d3ab47158ac2528210e95460f6c302))
### Features
- more flexible `ignoreDeadLinks` ([#2135](https://github.com/vuejs/vitepress/issues/2135)) ([3235c23](https://github.com/vuejs/vitepress/commit/3235c23313d81f8f95b91779a48db839c02aa952))
# [1.0.0-alpha.62](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.61...v1.0.0-alpha.62) (2023-03-25)
### Bug Fixes
- make md includes work with rewrites ([#1898](https://github.com/vuejs/vitepress/issues/1898)) ([3553f01](https://github.com/vuejs/vitepress/commit/3553f015a9138cb935d57487755d9d5717f79ae3))
- **theme:** don't show outline when no header is there ([#2117](https://github.com/vuejs/vitepress/issues/2117)) ([42a0ef2](https://github.com/vuejs/vitepress/commit/42a0ef21c17da20c8f22565807578a05a0461df6))
- **theme:** fix aside position when footer is there ([#2115](https://github.com/vuejs/vitepress/issues/2115)) ([aecdeb9](https://github.com/vuejs/vitepress/commit/aecdeb9b216803f407fe3b48574bf7664262ef01))
- **theme:** properly align not found icon in algolia ([#2116](https://github.com/vuejs/vitepress/issues/2116)) ([83ce1b8](https://github.com/vuejs/vitepress/commit/83ce1b8c5e95d2e29e733d9312f514d725fe7f0b))
- **theme:** use locale lang instead of navigator lang for last updated ([#2118](https://github.com/vuejs/vitepress/issues/2118)) ([56a7d9a](https://github.com/vuejs/vitepress/commit/56a7d9aa74bbb1d945c6ca3a3573b5e49ba3ca65))
# [1.0.0-alpha.61](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.60...v1.0.0-alpha.61) (2023-03-20)
### Bug Fixes
- **build:** skip warning for `txt` language ([#2109](https://github.com/vuejs/vitepress/issues/2109)) ([ac953ce](https://github.com/vuejs/vitepress/commit/ac953ce8bdeecb2854257613c849b82d38a91846))
- decode when query selecting current hash ([1f2f1ff](https://github.com/vuejs/vitepress/commit/1f2f1ff43dbb3c1598810fe04608678426e4fed5)), closes [#2089](https://github.com/vuejs/vitepress/issues/2089)
- **theme:** prevent code-groups conflict with shiki-twoslash ([#2059](https://github.com/vuejs/vitepress/issues/2059)) ([ee6cda4](https://github.com/vuejs/vitepress/commit/ee6cda42d8631c5f1f6ef47ac1aec0b178a6cbf2))
# [1.0.0-alpha.60](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.59...v1.0.0-alpha.60) (2023-03-15)
### Features
- support multiple selectors for scrollOffset ([86e2a6f](https://github.com/vuejs/vitepress/commit/86e2a6f97287c0999090d5af0e8362f3e48884db))
- **theme:** add animation to mobile page outline dropdown ([a6b18a8](https://github.com/vuejs/vitepress/commit/a6b18a8b9aba706aa3a567ee7b2564437a0850aa))
# [1.0.0-alpha.59](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.58...v1.0.0-alpha.59) (2023-03-15)
### Bug Fixes
- handle async enhanceApp when extending themes ([52b04f3](https://github.com/vuejs/vitepress/commit/52b04f324cc3a675ed87353d516a6302d282ccfb))
- **theme:** improve Chinese font handling ([81ae1c7](https://github.com/vuejs/vitepress/commit/81ae1c79cd1c0c9c31f48100f131715efc68efbd)), closes [#2036](https://github.com/vuejs/vitepress/issues/2036)
- **theme:** move doc-footer-before slot into the footer ([b0160bc](https://github.com/vuejs/vitepress/commit/b0160bc2619b50e3bca2bf1bba60d68708a39145)), closes [#2082](https://github.com/vuejs/vitepress/issues/2082)
### Features
- defineClientComponent helper ([2ad668c](https://github.com/vuejs/vitepress/commit/2ad668cd54174b37a8c68b389a5e31e0aae60828))
# [1.0.0-alpha.58](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.57...v1.0.0-alpha.58) (2023-03-14)
### Bug Fixes
- fix optional component imports from default theme ([7b0f289](https://github.com/vuejs/vitepress/commit/7b0f28915fc15e155fbb27d5153e25d004bdc294))
# [1.0.0-alpha.57](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.56...v1.0.0-alpha.57) (2023-03-14)
### Bug Fixes
- **types:** allow void return in transformHead hook ([32dfaf5](https://github.com/vuejs/vitepress/commit/32dfaf5adc9db5e87995c67a7060169cbf835b09))
### Features
- expose page and assets on build hooks TransformContext ([468c049](https://github.com/vuejs/vitepress/commit/468c049ccd7648144761def11c88ebf70c0d4226))
- **theme:** a11y improvements ([3b6a6d1](https://github.com/vuejs/vitepress/commit/3b6a6d1abdc42437d9e659ef598db1d93695db21))
- **theme:** aria-label for social links ([6ca34c4](https://github.com/vuejs/vitepress/commit/6ca34c4236c076fb40fb0b4fb01c1f9783e2210c))
- **theme:** page outline for mobile ([7182c42](https://github.com/vuejs/vitepress/commit/7182c4231f3c435f1471dfecacdce99d48270978))
- **theme:** support extending default theme without importing fonts ([da1691d](https://github.com/vuejs/vitepress/commit/da1691d77e371892cbe566ba45ca24f1fa03dc7c))
- **theme:** use more accessible header anchors [#2040](https://github.com/vuejs/vitepress/pull/2040)
### Performance Improvements
- **theme:** preload font ([24735db](https://github.com/vuejs/vitepress/commit/24735dbcde15be41bc2697a4ea44001a1a583511))
### BREAKING CHANGES
- `markdown.headers` is now disabled by default. This means `PageData` will no longer include extracted headers by default unless this option is explicitly enabled. This is because the default theme now extracts page headers at runtime, so the data is no longer needed by default.
# [1.0.0-alpha.56](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.55...v1.0.0-alpha.56) (2023-03-13)
### Bug Fixes
- do not include head tags in inlined site data ([2f26693](https://github.com/vuejs/vitepress/commit/2f26693a1d78f24d5a62a9b988c457e7c299fc5c))
# [1.0.0-alpha.55](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.54...v1.0.0-alpha.55) (2023-03-13)
### Bug Fixes
- fix scroll to hash on new tab during dev ([9aafc88](https://github.com/vuejs/vitepress/commit/9aafc88d5951684b9b583a7a164840a9b87467b0)), closes [#653](https://github.com/vuejs/vitepress/issues/653)
- gracefully handle config update with syntax error ([470ce3d](https://github.com/vuejs/vitepress/commit/470ce3d3f3272639288cb888dc89d37f041df104)), closes [#2041](https://github.com/vuejs/vitepress/issues/2041)
### Performance Improvements
- inline site data on page ([22ace7b](https://github.com/vuejs/vitepress/commit/22ace7b075276c340d0ae2a1f260d119e82c6470))
- kickoff main chunk fetch earlier in browsers without modulepreload support ([d64a76e](https://github.com/vuejs/vitepress/commit/d64a76eb366a270c56189096a5e0ae6b8ae23ea7))
# [1.0.0-alpha.54](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.53...v1.0.0-alpha.54) (2023-03-13)
### Bug Fixes
- fix chunking logic that causes breakage ([bed202d](https://github.com/vuejs/vitepress/commit/bed202dbcc8f3954c12aaef993369b29ff47211e)), closes [#2072](https://github.com/vuejs/vitepress/issues/2072) [#2073](https://github.com/vuejs/vitepress/issues/2073) [#2074](https://github.com/vuejs/vitepress/issues/2074) [#2075](https://github.com/vuejs/vitepress/issues/2075)
# [1.0.0-alpha.53](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.52...v1.0.0-alpha.53) (2023-03-13)
### Bug Fixes
- avoid circular dependency between siteData virtual module and useData() ([905f58b](https://github.com/vuejs/vitepress/commit/905f58b2a80cd1dd37b645dddde3d54b02cd60d4)), closes [#2072](https://github.com/vuejs/vitepress/issues/2072) [#2073](https://github.com/vuejs/vitepress/issues/2073) [#2074](https://github.com/vuejs/vitepress/issues/2074)
### Features
- createContentLoader ([d2838e3](https://github.com/vuejs/vitepress/commit/d2838e3755a8ef5861d1a921a336dfebc6156634))
- **theme:** editLink can accept function ([#2058](https://github.com/vuejs/vitepress/issues/2058)) ([192708d](https://github.com/vuejs/vitepress/commit/192708de678115116f3477293742c155b8f48e5d))
# [1.0.0-alpha.52](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.51...v1.0.0-alpha.52) (2023-03-11)
### Bug Fixes
- fix line higlighting for empty lines ([9708510](https://github.com/vuejs/vitepress/commit/9708510cbd893f02916c95fabad5a8f07d52dbaf))
- fix rewrites with non ascii chars ([6ce88da](https://github.com/vuejs/vitepress/commit/6ce88da3baa4bc9e6b8dc3254180ed995766c7ec)), closes [#2017](https://github.com/vuejs/vitepress/issues/2017)
- fix same page hash links with encoded chars ([e05a3f2](https://github.com/vuejs/vitepress/commit/e05a3f2b5aff54ec7e5211c1021c16814eb57e58)), closes [#1749](https://github.com/vuejs/vitepress/issues/1749)
- properly serialize header in outline ([8ab36d0](https://github.com/vuejs/vitepress/commit/8ab36d05fa4aa8b3707c1f89efc1c820ffaf9669))
- remove @vue/devtools from force include ([9bd940f](https://github.com/vuejs/vitepress/commit/9bd940f22cae0ec88dc1670a31fb9ebc015e1f92))
- respect user vue alias ([63f33d2](https://github.com/vuejs/vitepress/commit/63f33d2895d21c08903eb4d625c13d8d3721d861)), closes [#1065](https://github.com/vuejs/vitepress/issues/1065)
- **theme:** re-support dynamic headers ([657a7d3](https://github.com/vuejs/vitepress/commit/657a7d38df3c9022a7ef6977fd71a6bde6571cfc))
- trim spaces from outline headers ([9ceff1d](https://github.com/vuejs/vitepress/commit/9ceff1d587f6b61529806c5eb705fc417b685ad9))
### Features
- allow disabling markdown.headers ([868a9ff](https://github.com/vuejs/vitepress/commit/868a9ff81ea445556bc7500dfe4210d253da9ceb))
### Performance Improvements
- improve default theme chunking ([f6cb4c0](https://github.com/vuejs/vitepress/commit/f6cb4c0d44108116c91b28a3fcde820093d94340))
### BREAKING CHANGES
- default theme config option `outlineBadge` has been
removed. Badges in headers are now always excluded when generating
outline text.
# [1.0.0-alpha.51](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.50...v1.0.0-alpha.51) (2023-03-09)
### Bug Fixes
- **theme:** align number to code line ([#2044](https://github.com/vuejs/vitepress/issues/2044)) ([27e3adf](https://github.com/vuejs/vitepress/commit/27e3adf8ed888f03466fec2e10bc7589b0d010e8))
- **theme:** remove log in VPContent ([747a04d](https://github.com/vuejs/vitepress/commit/747a04d3416a4014e46e41ebfdc734643268bc29))
### Features
- **theme:** add not-found layout slot ([#2054](https://github.com/vuejs/vitepress/issues/2054)) ([41987b6](https://github.com/vuejs/vitepress/commit/41987b6a880d99e78e48ae3b4a2e6b815e183348))
### Performance Improvements
- **a11y:** add aria-label to language button ([#2025](https://github.com/vuejs/vitepress/issues/2025)) ([322c633](https://github.com/vuejs/vitepress/commit/322c633fd0df15b2dfae62b54479d7cdb3255155))
# [1.0.0-alpha.50](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.49...v1.0.0-alpha.50) (2023-03-07)
### Bug Fixes
- avoid deprecation warning when using --force ([0c0b6cc](https://github.com/vuejs/vitepress/commit/0c0b6cc5a3a06bb0bee14dc854c7c1102a1b6657))
- ensure HMR works properly for page outline ([1457681](https://github.com/vuejs/vitepress/commit/1457681484c873a7801729f9a9e11872b60b4868)), closes [#1281](https://github.com/vuejs/vitepress/issues/1281)
- extract all headers by default ([580a8e1](https://github.com/vuejs/vitepress/commit/580a8e1a551089e973745fd224d97aec9d3fa702))
- respect command line minify and outDir options ([22047f3](https://github.com/vuejs/vitepress/commit/22047f3363af290687cb3077ff617ae550af6e8a))
- **theme:** make tip box text color darker ([3158115](https://github.com/vuejs/vitepress/commit/3158115afc8f15bee3e35644a33328b02dee6d6d))
- **theme:** prevent text wrapping in nav dropdown menu ([2a1abbe](https://github.com/vuejs/vitepress/commit/2a1abbe45e10b38f03795357cd52dc4f6cea5dfc))
### Features
- **data-loader:** defineLoader() type helper ([4673bb1](https://github.com/vuejs/vitepress/commit/4673bb187905374896b7a1a3b1a1e5ad3777bdc4))
- **data-loader:** pass watched files into load() ([e29b6a0](https://github.com/vuejs/vitepress/commit/e29b6a051e89e23945e2acfdfca7057978929715))
- deprecate Theme.setup ([868a586](https://github.com/vuejs/vitepress/commit/868a58670e747310bba1f0f900a76243c6473da3))
- export loadEnv from vite ([7609704](https://github.com/vuejs/vitepress/commit/76097048f3570b3f2417ac76ef177ce16afb9116))
- expose isNotFound on PageData, deperecate Theme.NotFound ([74caccd](https://github.com/vuejs/vitepress/commit/74caccda4342feee3ab980b1a446ef7ec4819e0f))
- expose params at top level in useData() ([66f94fd](https://github.com/vuejs/vitepress/commit/66f94fd7a0f43882386d32769b6b98014154ffa6))
- support $params in page components ([a4ac055](https://github.com/vuejs/vitepress/commit/a4ac055dbf42848206683611a8d15e09572441ac))
- support Theme.extends ([f39b6a9](https://github.com/vuejs/vitepress/commit/f39b6a98d6d2cc9ba405204a4d7a91eadce64a0d))
- **theme:** add `as` prop to `Content` ([#2011](https://github.com/vuejs/vitepress/issues/2011)) ([254e15b](https://github.com/vuejs/vitepress/commit/254e15beb9b895c081e301eb379cbc2551b3e53c))
- **theme:** add `home-hero-info` slot ([#1807](https://github.com/vuejs/vitepress/issues/1807)) ([996a5f4](https://github.com/vuejs/vitepress/commit/996a5f47e9064da839aef9e81db22db70fa8d76d))
- vitepress init command ([#2020](https://github.com/vuejs/vitepress/issues/2020)) ([38bbdad](https://github.com/vuejs/vitepress/commit/38bbdaddb72ec426865d731c2f443e545e5bbbd7)), closes [#1252](https://github.com/vuejs/vitepress/issues/1252)
# [1.0.0-alpha.49](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.48...v1.0.0-alpha.49) (2023-02-28)
### Bug Fixes
- disable fuzzy link recognition by default ([2450710](https://github.com/vuejs/vitepress/commit/24507105b18362210632543b8a72893832b5940a))
- dyamic routes w/ srcDir + relative imports ([b075ee5](https://github.com/vuejs/vitepress/commit/b075ee5be6785e671b19ded066c22a1d506ec508))
- hmr on deps change of data loaders ([5913ebc](https://github.com/vuejs/vitepress/commit/5913ebc34f810e84b4ad482aa835e1a4e8beb404))
- normalize all paths in config ([8e8fcd9](https://github.com/vuejs/vitepress/commit/8e8fcd9caa4194787c5fc81ad10d17cf82638b8f))
- **theme:** "copy code" button not readable on hover state ([#819](https://github.com/vuejs/vitepress/issues/819)) ([#1892](https://github.com/vuejs/vitepress/issues/1892)) ([#1998](https://github.com/vuejs/vitepress/issues/1998)) ([c2de4ca](https://github.com/vuejs/vitepress/commit/c2de4caa345bdeda5252a8fc00cfcdbcc18d5d2d))
- **theme:** tip custom container has wrong bg color for `<code>` block ([d9a2e6e](https://github.com/vuejs/vitepress/commit/d9a2e6e8978f614d70f347be81b9b3b9df03d7a1))
- update route configs on file add / delete ([bccce98](https://github.com/vuejs/vitepress/commit/bccce98c62d1ea405c55a6f72bab6f2ce27e2e65))
### Features
- dynamic routes ([24fa862](https://github.com/vuejs/vitepress/commit/24fa862c39d1b5c2ea6da6faf08cfe95e07f5d2f))
- **theme:** enhance readability of custom containers ([#1824](https://github.com/vuejs/vitepress/issues/1824)) ([#1989](https://github.com/vuejs/vitepress/issues/1989)) ([472b6ec](https://github.com/vuejs/vitepress/commit/472b6ecf5e404bccc751bcf93b868ac30f43f22b))
# [1.0.0-alpha.48](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.47...v1.0.0-alpha.48) (2023-02-26)
### Bug Fixes
- **compat:** remove use of array.at ([fd99590](https://github.com/vuejs/vitepress/commit/fd995906f61e5181ca8e1116dcd93eec65075056))
- **theme:** add height constraints to hero image ([#1983](https://github.com/vuejs/vitepress/issues/1983)) ([803d5b6](https://github.com/vuejs/vitepress/commit/803d5b6d663b5293c70672ca5526a33f454e4a17))
- **theme:** allow empty details in home feature ([#1936](https://github.com/vuejs/vitepress/issues/1936)) ([#1963](https://github.com/vuejs/vitepress/issues/1963)) ([b56351c](https://github.com/vuejs/vitepress/commit/b56351c7785b7a3a3413dcf24d7ac63c1f40fd2b))
- **theme:** show external link icon in navbar ([#1881](https://github.com/vuejs/vitepress/issues/1881)) ([8e6e8d9](https://github.com/vuejs/vitepress/commit/8e6e8d9af534e124cb16552686b460e19d0f894f)), closes [#1948](https://github.com/vuejs/vitepress/issues/1948)
- **theme:** show external link icon on same line ([#1880](https://github.com/vuejs/vitepress/issues/1880)) ([6218b10](https://github.com/vuejs/vitepress/commit/6218b108bc78aed0ec1afd3d1cf4182e611eed90))
### Features
- **build:** add support for custom languages ([#1837](https://github.com/vuejs/vitepress/issues/1837)) ([5a6d384](https://github.com/vuejs/vitepress/commit/5a6d3849527ee1dfd9f4299f5350cfa7641effb7))
- **theme:** make prev/next links changeable ([#1972](https://github.com/vuejs/vitepress/issues/1972)) ([b8a5e8e](https://github.com/vuejs/vitepress/commit/b8a5e8e5b24b025c9a5e4850b72296f726ae71e5))
- **theme:** support custom target and rel in navbar links ([#1993](https://github.com/vuejs/vitepress/issues/1993)) ([e2d4edf](https://github.com/vuejs/vitepress/commit/e2d4edf45b5ec890c088d3b0517b21a7b3eab9df))
# [1.0.0-alpha.47](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.46...v1.0.0-alpha.47) (2023-02-20)
### Bug Fixes
- **build:** show error stack in logs ([#1960](https://github.com/vuejs/vitepress/issues/1960)) ([c4d8d72](https://github.com/vuejs/vitepress/commit/c4d8d7225c2d8dd75f1640730e8d1425097e3aa3))
- custom titles of code snippets inside code groups ([#1834](https://github.com/vuejs/vitepress/issues/1834)) ([bcb8cbf](https://github.com/vuejs/vitepress/commit/bcb8cbf3c839dc17c1eaee7e39edb3ecca236a27))
- **types:** augment vite user config ([#1946](https://github.com/vuejs/vitepress/issues/1946)) ([5c9b75e](https://github.com/vuejs/vitepress/commit/5c9b75e325c27f63373c969e16035a9df5292cc9))
### Reverts
- "docs: add linkage for `code-groups` in `getting-started`" ([#1943](https://github.com/vuejs/vitepress/issues/1943)) ([ed90724](https://github.com/vuejs/vitepress/commit/ed90724022359358de582a3c00e86f381d57eeba)), closes [#1906](https://github.com/vuejs/vitepress/issues/1906)
# [1.0.0-alpha.46](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.45...v1.0.0-alpha.46) (2023-02-12)
### Bug Fixes
- **build:** prepend base to all internal non-relative links ([#1908](https://github.com/vuejs/vitepress/issues/1908)) ([dcf2941](https://github.com/vuejs/vitepress/commit/dcf29419f24bfb0fe99e424771be931bf77b9961))
- **theme-default:** avoid preconnect without algolia ([#1902](https://github.com/vuejs/vitepress/issues/1902)) ([616fe5b](https://github.com/vuejs/vitepress/commit/616fe5b636050caa338cabede3794e658baa0ed6))
- **theme-default:** remove duplicate judgments in `preconnect()` ([#1903](https://github.com/vuejs/vitepress/issues/1903)) ([48c9b11](https://github.com/vuejs/vitepress/commit/48c9b113161823133276198ebeb15131b83a7a75))
- **theme:** make features support line wrapping ([#1913](https://github.com/vuejs/vitepress/issues/1913)) ([ea43076](https://github.com/vuejs/vitepress/commit/ea430760f507e3ba381c4ab01ec89a2111f35e8c))
### Features
- **build:** use vite logger ([#1899](https://github.com/vuejs/vitepress/issues/1899)) ([a00bb62](https://github.com/vuejs/vitepress/commit/a00bb621439b2571b3d33da6aa67c74ecd13d3c6))
- **shiki:** support `ansi` code highlight ([#1878](https://github.com/vuejs/vitepress/issues/1878)) ([f974381](https://github.com/vuejs/vitepress/commit/f9743816a55503c387b9c71793a92eb38817650d))
- **theme:** support disabling aside globally ([#1925](https://github.com/vuejs/vitepress/issues/1925)) ([dd0c4c6](https://github.com/vuejs/vitepress/commit/dd0c4c698c26d3e249d353c3baff568a8f406e8f))
### BREAKING CHANGES
- **build:** `base` is now prepended to all internal (non-relative) links, including any reference to a file present in the public directory. If you want the earlier behavior for such links, use absolute links.
# [1.0.0-alpha.45](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.44...v1.0.0-alpha.45) (2023-01-31)
### Bug Fixes
- safari use `window.requestIdleCallback` ([#1871](https://github.com/vuejs/vitepress/issues/1871)) ([507b193](https://github.com/vuejs/vitepress/commit/507b193ef0e09afe667fccbf6de256cbc86de53f))
# [1.0.0-alpha.44](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.43...v1.0.0-alpha.44) (2023-01-31)
### Bug Fixes
- take `<a>` in SVG into account ([#1850](https://github.com/vuejs/vitepress/issues/1850)) ([010b3e5](https://github.com/vuejs/vitepress/commit/010b3e5ad99f5e61fd01e27d0c3144896a8f3d86))
- **theme:** infer collapsible from collapsed ([#1865](https://github.com/vuejs/vitepress/issues/1865)) ([dea6cfa](https://github.com/vuejs/vitepress/commit/dea6cfa9cbccf4c6433295e80571acee9b260f71))
### Features
- **theme:** preconnect algolia when idle ([#1851](https://github.com/vuejs/vitepress/issues/1851)) ([1f77577](https://github.com/vuejs/vitepress/commit/1f775774da7ef51ae8e690bbd86f94c739611a65))
### BREAKING CHANGES
- **theme:** `collapsible` is dropped from sidebar, use `collapsed` instead
# [1.0.0-alpha.43](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.42...v1.0.0-alpha.43) (2023-01-29)
### Bug Fixes
- **build:** hmr with rewrites when base is set ([a05956f](https://github.com/vuejs/vitepress/commit/a05956f38a5295cf038ecfc762c044dbc1cdf040))
# [1.0.0-alpha.42](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.41...v1.0.0-alpha.42) (2023-01-29)
### Bug Fixes
- **build:** consider base when checking actual pathname ([#1858](https://github.com/vuejs/vitepress/issues/1858)) ([cf8ad1a](https://github.com/vuejs/vitepress/commit/cf8ad1a29133cc373a1a70720d36e02b38ba6898))
# [1.0.0-alpha.41](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.40...v1.0.0-alpha.41) (2023-01-28)
### Bug Fixes
- check document instead of window to detect browser ([#1833](https://github.com/vuejs/vitepress/issues/1833)) ([0f145cb](https://github.com/vuejs/vitepress/commit/0f145cb3c6568760199a9c8eee785aecaf0e0494))
- **router:** avoid duplicate history entries ([#1827](https://github.com/vuejs/vitepress/issues/1827)) ([1553dbc](https://github.com/vuejs/vitepress/commit/1553dbce8eac9ed4a65312d4590d6b0f9261135c))
- **theme:** don't show border on navbar when sidebar is there ([#1845](https://github.com/vuejs/vitepress/issues/1845)) ([3db532e](https://github.com/vuejs/vitepress/commit/3db532ed0999c9bddfd6bc90f6b627ae1b9178af))
### Features
- **build:** allow ignoring only localhost dead links ([#1821](https://github.com/vuejs/vitepress/issues/1821)) ([fe52fa3](https://github.com/vuejs/vitepress/commit/fe52fa34201dcfa87ac4886fe285331f0ef89ba8))
- **build:** expose vitepress site config to vite plugins ([#1822](https://github.com/vuejs/vitepress/issues/1822)) ([05430e4](https://github.com/vuejs/vitepress/commit/05430e45c90562b62796caba28c633070934d85f))
- **build:** support rewrites ([#1798](https://github.com/vuejs/vitepress/issues/1798)) ([00abac6](https://github.com/vuejs/vitepress/commit/00abac611664e12710e5152d0259390b22c0e8ca))
- stable `cleanUrls` ([#1852](https://github.com/vuejs/vitepress/issues/1852)) ([5ae4fbd](https://github.com/vuejs/vitepress/commit/5ae4fbde3843236e180e63e2cd2b7021efa0fad4))
- **theme:** allow removing badge text from outline ([#1825](https://github.com/vuejs/vitepress/issues/1825)) ([5d2fc3f](https://github.com/vuejs/vitepress/commit/5d2fc3f9228c9b26dec26264d0951d0f43b3d90d))
- **theme:** enable multi level sidebar nesting ([#1360](https://github.com/vuejs/vitepress/issues/1360)) ([#1835](https://github.com/vuejs/vitepress/issues/1835)) ([c35a1f0](https://github.com/vuejs/vitepress/commit/c35a1f0faee3702c0494fb22043ce058e7a2954c)), closes [#1361](https://github.com/vuejs/vitepress/issues/1361) [#1680](https://github.com/vuejs/vitepress/issues/1680)
# [1.0.0-alpha.40](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.39...v1.0.0-alpha.40) (2023-01-20)
### Bug Fixes
- **theme:** nav bg not being applied on some viewport ([39294e0](https://github.com/vuejs/vitepress/commit/39294e0a4ec53b245da4344187de842d0044dac8))
# [1.0.0-alpha.39](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.38...v1.0.0-alpha.39) (2023-01-20)
### Bug Fixes
- **theme:** adjust the position of the curtain to avoid block sidebar ([#1816](https://github.com/vuejs/vitepress/issues/1816)) ([48f0b01](https://github.com/vuejs/vitepress/commit/48f0b015694c17767180eb2f75e9eb12c3f2a358))
- **theme:** sidebar scrollbar is cropped by nav bar ([bd36224](https://github.com/vuejs/vitepress/commit/bd36224b45ee832765afcf4a57c211d362e4e6af))
# [1.0.0-alpha.38](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.37...v1.0.0-alpha.38) (2023-01-17)
### Bug Fixes
- **theme:** spacing between aside sponsors and ads section is missing ([5c2eb1b](https://github.com/vuejs/vitepress/commit/5c2eb1b3b0988ae98639543e60a740d6b40a17a5))
# [1.0.0-alpha.37](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.36...v1.0.0-alpha.37) (2023-01-17)
### Bug Fixes
- **build:** don't warn on blank lang in fences ([99ad162](https://github.com/vuejs/vitepress/commit/99ad162fb7b11ac80c787131714c9c8bf66fa8c7))
- **theme:** prevent vertical scrollbar on code group tabs ([#1793](https://github.com/vuejs/vitepress/issues/1793)) ([#1805](https://github.com/vuejs/vitepress/issues/1805)) ([4314b57](https://github.com/vuejs/vitepress/commit/4314b5795918ceaa798dee550b79ff2e8a686b26))
### Features
- add i18n feature ([#1339](https://github.com/vuejs/vitepress/issues/1339)) ([8de2f44](https://github.com/vuejs/vitepress/commit/8de2f4499d9364d85e6070ce4b94651a1902b101)), closes [#291](https://github.com/vuejs/vitepress/issues/291) [#628](https://github.com/vuejs/vitepress/issues/628) [#631](https://github.com/vuejs/vitepress/issues/631) [#902](https://github.com/vuejs/vitepress/issues/902) [#955](https://github.com/vuejs/vitepress/issues/955) [#1253](https://github.com/vuejs/vitepress/issues/1253) [#1381](https://github.com/vuejs/vitepress/issues/1381)
- support for teleports to body ([#1642](https://github.com/vuejs/vitepress/issues/1642)) ([09c2c52](https://github.com/vuejs/vitepress/commit/09c2c52d6c027f6e30fac33c2d11246a4a530c24))
- **build:** don't hard fail on unknown languages in fences ([#1750](https://github.com/vuejs/vitepress/issues/1750)) ([1ae0596](https://github.com/vuejs/vitepress/commit/1ae05969396ef1651af56c66696ed77f8c4e7e85))
- **theme:** refine overall styles ([#1049](https://github.com/vuejs/vitepress/issues/1049)) ([#1790](https://github.com/vuejs/vitepress/issues/1790)) ([471f00a](https://github.com/vuejs/vitepress/commit/471f00a68d1e3d8d925ab996f462adaf4f1261a0))
# [1.0.0-alpha.36](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.35...v1.0.0-alpha.36) (2023-01-11)
### Bug Fixes
- **build:** handle cleanUrls without trailing slash ([#1772](https://github.com/vuejs/vitepress/issues/1772)) ([2a80fbd](https://github.com/vuejs/vitepress/commit/2a80fbd14ae124eddb05deca71ebffa50de4c2ce))
- **theme:** `activeMatch` support regexp ([#1754](https://github.com/vuejs/vitepress/issues/1754)) ([0913e0f](https://github.com/vuejs/vitepress/commit/0913e0fe69167c796b0c3c22706b26f4840c6493)), closes [#1771](https://github.com/vuejs/vitepress/issues/1771)
- **theme:** add cursor for summary of custom block details ([#1774](https://github.com/vuejs/vitepress/issues/1774)) ([167a474](https://github.com/vuejs/vitepress/commit/167a474cb8121d758c2aa863016dffbe8d0a1e55))
- **theme:** wrap long words in `li` ([#1782](https://github.com/vuejs/vitepress/issues/1782)) ([48a42c1](https://github.com/vuejs/vitepress/commit/48a42c19b17417fea384bb0a7004d140b16d9c23)), closes [#1783](https://github.com/vuejs/vitepress/issues/1783) [#1405](https://github.com/vuejs/vitepress/issues/1405)
### Features
- allow `enhanceApp` to return a `Promise` ([#1760](https://github.com/vuejs/vitepress/issues/1760)) ([01ac579](https://github.com/vuejs/vitepress/commit/01ac57918767f44a0757414316e67072399ffb6d))
- **build:** support interpolation inside code blocks ([#1759](https://github.com/vuejs/vitepress/issues/1759)) ([3b7ff8d](https://github.com/vuejs/vitepress/commit/3b7ff8d66e9eda3aab1fb126984efc63132bd22d))
# [1.0.0-alpha.35](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.34...v1.0.0-alpha.35) (2023-01-03)
### Bug Fixes
- **theme:** adjust styles for copied button ([#1751](https://github.com/vuejs/vitepress/issues/1751)) ([565ae71](https://github.com/vuejs/vitepress/commit/565ae711b9b90ad2fe820cdbaa04a9d41506ac53))
- **theme:** adjust styles for diff indicator in code blocks ([#1755](https://github.com/vuejs/vitepress/issues/1755)) ([a642ea2](https://github.com/vuejs/vitepress/commit/a642ea2526f5638243283bd37ef9ba0af350d407))
- **theme:** prevent layout shift on carbon ads ([f6c5e1f](https://github.com/vuejs/vitepress/commit/f6c5e1f098d1fd4d4f6325a21adbb088c32a0740))
- **theme:** refresh ads per page navigation ([#1734](https://github.com/vuejs/vitepress/issues/1734)) ([8db20fe](https://github.com/vuejs/vitepress/commit/8db20fe02240bb1d3c02da738740f2433edb1e8b))
# [1.0.0-alpha.34](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.33...v1.0.0-alpha.34) (2023-01-01)
### Bug Fixes
- **build:** dedent of a single-line region ([#1687](https://github.com/vuejs/vitepress/issues/1687)) ([7de7fff](https://github.com/vuejs/vitepress/commit/7de7fff4178251a6173ac67b52de50176830f539))
- **build:** handle `-` in title of code blocks with line highlighting ([#1743](https://github.com/vuejs/vitepress/issues/1743)) ([ce9467e](https://github.com/vuejs/vitepress/commit/ce9467e389a2776f3230cb31e596cf9e575cc0df))
- handle cleanUrls with subfolders when using a trailing slash ([#1575](https://github.com/vuejs/vitepress/issues/1575)) ([195d867](https://github.com/vuejs/vitepress/commit/195d867ee9bb51a4c112534b34bda7bcd0c2c3f5))
### Features
- **build:** allow specifying default language for syntax highlighter ([#1296](https://github.com/vuejs/vitepress/issues/1296)) ([f40df31](https://github.com/vuejs/vitepress/commit/f40df319475dba9f3fe1e13ff8d8dc4c0950bf5f))
- **build:** fence-level config for line-numbers ([#1733](https://github.com/vuejs/vitepress/issues/1733)) ([c048076](https://github.com/vuejs/vitepress/commit/c048076370b081acc69c04754bf5deba2b8f5cd5))
- **theme:** add `home-hero-image` slot ([#1528](https://github.com/vuejs/vitepress/issues/1528)) ([e72998b](https://github.com/vuejs/vitepress/commit/e72998b68bfcc301d15553033a8b90dee0db65cf))
- **theme:** add mastodon icon ([#1736](https://github.com/vuejs/vitepress/issues/1736)) ([7a73784](https://github.com/vuejs/vitepress/commit/7a737845e5d81a09151320d373a787d2e5f881af))
- **theme:** allow adding images as icons in features section ([#1738](https://github.com/vuejs/vitepress/issues/1738)) ([9df598f](https://github.com/vuejs/vitepress/commit/9df598f36e30fdc9d1c7440bf98b45783126c39f))
### Performance Improvements
- **a11y:** make menu traversable only when it is open ([#1491](https://github.com/vuejs/vitepress/issues/1491)) ([257f9e6](https://github.com/vuejs/vitepress/commit/257f9e68e947a603f9c3ef0df4be7b2afa79fbe7))
- preload css to improve loading speed ([bf1315a](https://github.com/vuejs/vitepress/commit/bf1315ace670df0128682838736371e5381b3f42))
# [1.0.0-alpha.33](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.32...v1.0.0-alpha.33) (2022-12-21)
### Bug Fixes
- **theme:** remove experimental fonts ([#1710](https://github.com/vuejs/vitepress/issues/1710)) ([1ebde66](https://github.com/vuejs/vitepress/commit/1ebde6623ef7f279a77b5a2ddc61e50e322481d1))
### Features
- **build:** provide a `pathname://` protocol to escape SPA ([#1719](https://github.com/vuejs/vitepress/issues/1719)) ([ae21a3a](https://github.com/vuejs/vitepress/commit/ae21a3a622844af476f8311b1d7eba7ae3d5af36))
- **theme:** headings anchor should not be selectable ([#1701](https://github.com/vuejs/vitepress/issues/1701)) ([505a4f8](https://github.com/vuejs/vitepress/commit/505a4f8eee254844be98d224d7f0b943a33959e7))
# [1.0.0-alpha.32](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.31...v1.0.0-alpha.32) (2022-12-16)
### Bug Fixes
- **build:** fix code groups for line numbers mode ([#1700](https://github.com/vuejs/vitepress/issues/1700)) ([135b797](https://github.com/vuejs/vitepress/commit/135b797cfb572659726d9dfbe11ca6045dee9fa3))
### Features
- add code-group feature ([#728](https://github.com/vuejs/vitepress/issues/728)) ([#1560](https://github.com/vuejs/vitepress/issues/1560)) ([a684b67](https://github.com/vuejs/vitepress/commit/a684b67ec084fdc3b3a300ffbdd21e19fdcf7b1e)), closes [#1242](https://github.com/vuejs/vitepress/issues/1242)
- **build:** support `cacheDir` ([#1355](https://github.com/vuejs/vitepress/issues/1355)) ([f899764](https://github.com/vuejs/vitepress/commit/f899764bad8bfdf4fef91e23901d4af3cda91bcc))
# [1.0.0-alpha.31](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.30...v1.0.0-alpha.31) (2022-12-10)
### Features
- **build:** switch to rollup 3 and vite 4 ([#1591](https://github.com/vuejs/vitepress/issues/1591)) ([ae33896](https://github.com/vuejs/vitepress/commit/ae33896a322b6b4cc944d44398ddba6e60b5d1c7))
### Performance Improvements
- **a11y:** add aria-hidden to line numbers wrapper ([#1675](https://github.com/vuejs/vitepress/issues/1675)) ([4c5a892](https://github.com/vuejs/vitepress/commit/4c5a892d7787440faebf061daaaff908680dcd99))
# [1.0.0-alpha.30](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.29...v1.0.0-alpha.30) (2022-12-05)
### Bug Fixes
- **build:** allow importing files having numbers in extension ([#1618](https://github.com/vuejs/vitepress/issues/1618)) ([0565c38](https://github.com/vuejs/vitepress/commit/0565c38fc172cefb9a068882e215ac09dca6636d))
- **build:** allow serving files in dev from workspace root ([#1647](https://github.com/vuejs/vitepress/issues/1647)) ([dc59662](https://github.com/vuejs/vitepress/commit/dc596621cf5ad11585597423b0a98266949c932a))
- **theme:** default to vertical align top on badges inside headings ([#1584](https://github.com/vuejs/vitepress/issues/1584)) ([8a488de](https://github.com/vuejs/vitepress/commit/8a488deac111fbc43b8739c8959b8ae60cbedc80))
- **theme:** ignore removed diff lines while copying code ([f4d5417](https://github.com/vuejs/vitepress/commit/f4d54179306c0ecbc08e4275081e3e169d304e09))
- **theme:** move background colors to theme-default style ([#1347](https://github.com/vuejs/vitepress/issues/1347)) ([4f0194f](https://github.com/vuejs/vitepress/commit/4f0194f1dceec8c7aff70c490b5e757aca560e8a))
### Features
- **build:** add preview as an alias for serve in cli ([#1651](https://github.com/vuejs/vitepress/issues/1651)) ([4ba33da](https://github.com/vuejs/vitepress/commit/4ba33dac60b8b091627eb3e9c2347da0aa5efb82))
# [1.0.0-alpha.29](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.28...v1.0.0-alpha.29) (2022-11-15)
### Bug Fixes
- **build:** explicitly specify asset and entry file names ([#1607](https://github.com/vuejs/vitepress/issues/1607)) ([8601e15](https://github.com/vuejs/vitepress/commit/8601e1596b45e6684b71964d002133fb32d51b9f))
- **theme:** typo in attribute name ([#1597](https://github.com/vuejs/vitepress/issues/1597)) ([cc91d55](https://github.com/vuejs/vitepress/commit/cc91d555b5bfcbde35f2ba33aedcd79a5cef713b))
# [1.0.0-alpha.28](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) (2022-11-08)
### Bug Fixes
- **theme:** use faux italics only with web fonts ([#1581](https://github.com/vuejs/vitepress/issues/1581)) ([124158e](https://github.com/vuejs/vitepress/commit/124158e3a9793fc466b96b51cf7330b8aa3e055b))
### Features
- **theme:** sidebar nav slots ([#1582](https://github.com/vuejs/vitepress/issues/1582)) ([d410d4d](https://github.com/vuejs/vitepress/commit/d410d4dd9f1140b68d140642c1bceaf5419ff304))
- **theme:** use v-html in VPDocFooter ([#1580](https://github.com/vuejs/vitepress/issues/1580)) ([9d10b1d](https://github.com/vuejs/vitepress/commit/9d10b1d5a1ec8d30689ddad5f2d63d22342cf707))
# [1.0.0-alpha.27](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) (2022-11-03)
### Bug Fixes
- **build:** use addClass from shiki-processor ([#1557](https://github.com/vuejs/vitepress/issues/1557)) ([4b0b1ef](https://github.com/vuejs/vitepress/commit/4b0b1ef35f38461514f3e97e0a509029a70d3086)), closes [#1555](https://github.com/vuejs/vitepress/issues/1555)
- **build:** use default slugify from mdit-vue ([#1554](https://github.com/vuejs/vitepress/issues/1554)) ([8cd1f7c](https://github.com/vuejs/vitepress/commit/8cd1f7c4aadb7a911158ac628233b3878a60786a))
- prevent overlay getting hidden behind navbar ([#1547](https://github.com/vuejs/vitepress/issues/1547)) ([87d6c08](https://github.com/vuejs/vitepress/commit/87d6c085d6ccf084d5435216741e3af408c9897a))
- remove shell code copy trailing newline ([#1561](https://github.com/vuejs/vitepress/issues/1561)) ([f36cd0d](https://github.com/vuejs/vitepress/commit/f36cd0d62625c3221533b9e1f83a58b2cd4429a2))
- **theme:** use stored preference to be the value of `userPreference` ([#1543](https://github.com/vuejs/vitepress/issues/1543)) ([a7abf73](https://github.com/vuejs/vitepress/commit/a7abf73e432caa6b06b868e7c8c01c6f31b6cc54))
### Features
- **theme:** add built-in global component `Badge` ([#1239](https://github.com/vuejs/vitepress/issues/1239)) ([ac8619f](https://github.com/vuejs/vitepress/commit/ac8619f841862b8629ea0416ba2f188faceebc70))
- **theme:** add link feature in homepage features ([#984](https://github.com/vuejs/vitepress/issues/984)) ([#1404](https://github.com/vuejs/vitepress/issues/1404)) ([84b4abc](https://github.com/vuejs/vitepress/commit/84b4abc5fa29b353d52162508a31f55a4ea755e5)), closes [#1070](https://github.com/vuejs/vitepress/issues/1070)
- **theme:** sort multiple sidebars ([#1552](https://github.com/vuejs/vitepress/issues/1552)) ([db1c343](https://github.com/vuejs/vitepress/commit/db1c343dfb7011825b18253b4b8a47b5d8f6f817))
### Reverts
- **#1530:** explicitly exit process after build to prevent hangup ([#1572](https://github.com/vuejs/vitepress/issues/1572)) ([01719fa](https://github.com/vuejs/vitepress/commit/01719fa58e245291e640d5b0bc51cac5a4a3085c)), closes [#1530](https://github.com/vuejs/vitepress/issues/1530)
# [1.0.0-alpha.26](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.25...v1.0.0-alpha.26) (2022-10-27)
### Bug Fixes
- properly apply dark/light classes in code blocks ([#1546](https://github.com/vuejs/vitepress/issues/1546)) ([178895f](https://github.com/vuejs/vitepress/commit/178895f067e0f38e1c76d3efe64a75612cd4ad3a))
# [1.0.0-alpha.25](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.24...v1.0.0-alpha.25) (2022-10-25)
### Bug Fixes
- **banner:** prevent hidden local nav on scroll ([63449ca](https://github.com/vuejs/vitepress/commit/63449caf4cb2c7e8449e4f8aee1d8f504fa949df))
# [1.0.0-alpha.24](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2022-10-25)
### Bug Fixes
- **banner:** broken layout on smaller viewports ([#1536](https://github.com/vuejs/vitepress/issues/1536)) ([028cc2c](https://github.com/vuejs/vitepress/commit/028cc2c76e540c595e55a399606701490afd4beb))
# [1.0.0-alpha.23](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.22...v1.0.0-alpha.23) (2022-10-25)
### Bug Fixes
- **build:** explicitly exit process after build to prevent hangup ([#1530](https://github.com/vuejs/vitepress/issues/1530)) ([09fcc46](https://github.com/vuejs/vitepress/commit/09fcc460794d515c48c38ccb47a936d58a2582b3))
### Features
- **build:** add `useWebFonts` option ([#1531](https://github.com/vuejs/vitepress/issues/1531)) ([c9f04e0](https://github.com/vuejs/vitepress/commit/c9f04e045922a6f1e11136bd1ccc824c2e9928f1))
- support focus, colored diffs, error highlights in code blocks ([#1534](https://github.com/vuejs/vitepress/issues/1534)) ([04ab0eb](https://github.com/vuejs/vitepress/commit/04ab0eb6dcacb065e865332580088891bc2df893))
- **theme:** add --vp-layout-top-height to adjust banner ([#1521](https://github.com/vuejs/vitepress/issues/1521)) ([a29a4a6](https://github.com/vuejs/vitepress/commit/a29a4a62c682b54ec88c609cb480ddb68b3f4699))
# [1.0.0-alpha.22](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.21...v1.0.0-alpha.22) (2022-10-22)
### Bug Fixes
- **types:** change ComponentOptions to DefineComponent ([#1499](https://github.com/vuejs/vitepress/issues/1499)) ([5711660](https://github.com/vuejs/vitepress/commit/57116607b83f79e62f399cd6430b0d80524861a3))
### Features
- expose isDark ([#1525](https://github.com/vuejs/vitepress/issues/1525)) ([d327811](https://github.com/vuejs/vitepress/commit/d327811fd5b333a73d77730b6b0b347e3d052ebc))
- **theme:** allow defining dark as the default theme ([#1498](https://github.com/vuejs/vitepress/issues/1498)) ([d404753](https://github.com/vuejs/vitepress/commit/d404753005bf4cc3bb645553ac473d08c6473180))
- **theme:** support html strings for SidebarGroup headings, SidebarItem text ([#1489](https://github.com/vuejs/vitepress/issues/1489)) ([946c579](https://github.com/vuejs/vitepress/commit/946c579f2b8957839b8e0ef3474bded5ad06de1a))
- transformPageData hook ([#1492](https://github.com/vuejs/vitepress/issues/1492)) ([afeb06f](https://github.com/vuejs/vitepress/commit/afeb06f17cbd439e3e0151f9571107754fe98b57))
# [1.0.0-alpha.21](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.20...v1.0.0-alpha.21) (2022-10-14)
### Bug Fixes
- **build:** better align server and client side filename sanitization ([3fd20fe](https://github.com/vuejs/vitepress/commit/3fd20fedb81c88c188cff22b4c03ccc2ad416d2c))
- **theme:** match switch background transition with page transition ([#1479](https://github.com/vuejs/vitepress/issues/1479)) ([962065a](https://github.com/vuejs/vitepress/commit/962065a46ee1ef34eccbffbde9e65d7f174f8ab1))
- **theme:** prevent body scrolling when sidebar has opened on small screens ([#1391](https://github.com/vuejs/vitepress/issues/1391)) ([3daabdc](https://github.com/vuejs/vitepress/commit/3daabdc480c0cc10a12a83a08a734f8719d092c5))
### Features
- **theme:** allow specifying common alt for logo ([#1451](https://github.com/vuejs/vitepress/issues/1451)) ([55688a8](https://github.com/vuejs/vitepress/commit/55688a87e3baa38d0e0a37a6eba0039484416875))
# [1.0.0-alpha.20](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.19...v1.0.0-alpha.20) (2022-10-12)
### Bug Fixes
- **a11y:** add title to copy code button ([#1437](https://github.com/vuejs/vitepress/issues/1437)) ([f79bb78](https://github.com/vuejs/vitepress/commit/f79bb78bf7f472d9bc376a3ec393f731bfe9e7ce))
- **router:** don't intercept download links ([#1452](https://github.com/vuejs/vitepress/issues/1452)) ([54cf6ce](https://github.com/vuejs/vitepress/commit/54cf6ce51fcf8ce91c0706332e0b51ddcc2b519d))
- **theme:** disable transitions on theme toggle ([#1447](https://github.com/vuejs/vitepress/issues/1447)) ([067e1a9](https://github.com/vuejs/vitepress/commit/067e1a97434f88835dbfedcf18e2f98d8bfacad9))
- **theme:** make text prop of VPHero optional ([#1445](https://github.com/vuejs/vitepress/issues/1445)) ([95e4f2a](https://github.com/vuejs/vitepress/commit/95e4f2acc9614360fbfe37450028d2067e5993b8))
### Reverts
- "fix(build): remove leading underscore from chunks" ([#1471](https://github.com/vuejs/vitepress/issues/1471)) ([18f0fb4](https://github.com/vuejs/vitepress/commit/18f0fb4e3989192ba95a397476371a945bf84542))
# [1.0.0-alpha.19](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.18...v1.0.0-alpha.19) (2022-10-02)
### Bug Fixes
- **build:** ignore tsconfig target in dev ([#1428](https://github.com/vuejs/vitepress/issues/1428)) ([a13bc86](https://github.com/vuejs/vitepress/commit/a13bc866d0af911256e0629136f4b48e88c44df1))
# [1.0.0-alpha.18](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.17...v1.0.0-alpha.18) (2022-10-01)
### Bug Fixes
- **theme:** break long words on overflow ([#1405](https://github.com/vuejs/vitepress/issues/1405)) ([2114d13](https://github.com/vuejs/vitepress/commit/2114d1326a9d3b952ca8a150f1c27c89169629cc))
# [1.0.0-alpha.17](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) (2022-09-27)
### Bug Fixes
- **theme:** add cursor for collapsible sidebar title ([#1397](https://github.com/vuejs/vitepress/issues/1397)) ([ed37b9a](https://github.com/vuejs/vitepress/commit/ed37b9a0e04f85f941131ec9e2ca8b145d89a535))
- **theme:** remove extra space before docsearch key ([#1396](https://github.com/vuejs/vitepress/issues/1396)) ([6cb79bb](https://github.com/vuejs/vitepress/commit/6cb79bbe6a26f2e8dbd4b07b3fb5b6377f06958d))
### Reverts
- [#1064](https://github.com/vuejs/vitepress/issues/1064) ([9d70ca5](https://github.com/vuejs/vitepress/commit/9d70ca56f147a2ec30d12b03353ea7e4b0850df0))
# [1.0.0-alpha.16](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) (2022-09-24)
### Bug Fixes
- **build:** line numbers mode when language specifier has symbol ([#1353](https://github.com/vuejs/vitepress/issues/1353)) ([9c04a10](https://github.com/vuejs/vitepress/commit/9c04a10c4d9fbfc591dc2386b4780a6728f6364a))
- **build:** remove leading underscore from chunks ([#1394](https://github.com/vuejs/vitepress/issues/1394)) ([66cd164](https://github.com/vuejs/vitepress/commit/66cd1640d16170e0c2d9eb4565ad1ebe81f940e1))
- **compat:** use default export of dns module ([#1388](https://github.com/vuejs/vitepress/issues/1388)) ([fa6fa56](https://github.com/vuejs/vitepress/commit/fa6fa56af9de78856017f935922e4f2f9376be62))
- **theme:** always add alt attribute to images ([#1348](https://github.com/vuejs/vitepress/issues/1348)) ([a621c69](https://github.com/vuejs/vitepress/commit/a621c6910c0083adc26dd4b7aaa7d532544cc7fa))
### Features
- **build:** allow using `transformIndexHtml` ([#1380](https://github.com/vuejs/vitepress/issues/1380)) ([ce8d139](https://github.com/vuejs/vitepress/commit/ce8d139a8e70e4d0a8d06711c50119990b041078))
# [1.0.0-alpha.15](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2022-09-15)
### Bug Fixes
- **build:** properly resolve node_modules ([#1337](https://github.com/vuejs/vitepress/issues/1337)) ([0672a69](https://github.com/vuejs/vitepress/commit/0672a696a427731851e1ed79fe689c4a2a46fedf))
- **theme:** hide extra navbar when no content ([#1338](https://github.com/vuejs/vitepress/issues/1338)) ([4482c50](https://github.com/vuejs/vitepress/commit/4482c5019d89129791fe066f011648500d105f41))
- **theme:** remove trailing `#` from outline ([#1344](https://github.com/vuejs/vitepress/issues/1344)) ([f1cf1e8](https://github.com/vuejs/vitepress/commit/f1cf1e800f0e99fe726bdfa7767180473faaf2c2))
# [1.0.0-alpha.14](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.13...v1.0.0-alpha.14) (2022-09-14)
### Bug Fixes
- prevent jumping on clicking docsearch action buttons ([#1140](https://github.com/vuejs/vitepress/issues/1140)) ([86413e6](https://github.com/vuejs/vitepress/commit/86413e6739a834f8490c2004a62a27d1f5a59d00))
- **theme:** break long words ([#1064](https://github.com/vuejs/vitepress/issues/1064)) ([9c739fd](https://github.com/vuejs/vitepress/commit/9c739fd37d15bbf16e8214e20a4bca1c763c4510))
- **theme:** don't nest sidebar links ([#1279](https://github.com/vuejs/vitepress/issues/1279)) ([f840dbc](https://github.com/vuejs/vitepress/commit/f840dbc58f972492ed4afa9b6b222c4f7d89ade1))
- **theme:** keep display copied hint when click multiple times ([#1262](https://github.com/vuejs/vitepress/issues/1262)) ([bb11d0f](https://github.com/vuejs/vitepress/commit/bb11d0f17852a3f2a35339f765acffca526a9ee8))
- **theme:** show progress bar after delay ([#1278](https://github.com/vuejs/vitepress/issues/1278)) ([496bd34](https://github.com/vuejs/vitepress/commit/496bd34ff4143dcef9532f4298ca670bfa34e399))
- **theme:** use pointer cursor only on enabled buttons ([#1300](https://github.com/vuejs/vitepress/issues/1300)) ([d7eac98](https://github.com/vuejs/vitepress/commit/d7eac980e15510de18dbf1fd675a6c1def5f6697))
- **theme:** use pointer-events auto instead of all ([#1290](https://github.com/vuejs/vitepress/issues/1290)) ([6fac5b2](https://github.com/vuejs/vitepress/commit/6fac5b2964e77462edc963811ee1714e337fa53e))
- **types:** allow non async `transformHtml` and `buildEnd` ([#1270](https://github.com/vuejs/vitepress/issues/1270)) ([ee37eaa](https://github.com/vuejs/vitepress/commit/ee37eaa27191faad03c04d60fb3ca8ffbb887fbe))
### Features
- add `transformHead` hook ([#1323](https://github.com/vuejs/vitepress/issues/1323)) ([6b16dad](https://github.com/vuejs/vitepress/commit/6b16dad22f944cb173dbf67ef04be5cb0d09279f))
- add `vp-raw` container ([#1104](https://github.com/vuejs/vitepress/issues/1104)) ([9a6e1ea](https://github.com/vuejs/vitepress/commit/9a6e1ea401c4a44205f96c4786c44061582f675c))
- bundle type definitions of dev-deps ([#1257](https://github.com/vuejs/vitepress/issues/1257)) ([12591a9](https://github.com/vuejs/vitepress/commit/12591a9487ff7647162051f4b28956f0c1403efb))
- **theme:** add page load progress bar ([#1264](https://github.com/vuejs/vitepress/issues/1264)) ([ecf5515](https://github.com/vuejs/vitepress/commit/ecf5515bd453eca20946339a56be9180f6dca2c1))
- **theme:** allow disabling whole layout ([#1268](https://github.com/vuejs/vitepress/issues/1268)) ([8f63033](https://github.com/vuejs/vitepress/commit/8f630339ba95cbaded97f0fcff9323755dd16bcc))
- **theme:** support dynamic headers and nesting in outline ([#1281](https://github.com/vuejs/vitepress/issues/1281)) ([288aa48](https://github.com/vuejs/vitepress/commit/288aa48b92bc1d4dd74d064148a3b03373cdf1c3))
### Performance Improvements
- **a11y:** add aria-checked attribute to switch ([#644](https://github.com/vuejs/vitepress/issues/644)) ([eb9026d](https://github.com/vuejs/vitepress/commit/eb9026d83ca17c59893e7063e0c64b0bf1b99765))
- render pages asynchronously ([#1320](https://github.com/vuejs/vitepress/issues/1320)) ([8e4ff4d](https://github.com/vuejs/vitepress/commit/8e4ff4de901d846ac99d37ebf212b12e9687ed5e))
### Reverts
- **#1264:** add page load progress bar ([#1311](https://github.com/vuejs/vitepress/issues/1311)) ([5378a49](https://github.com/vuejs/vitepress/commit/5378a49613ceef591d2cacecbc175921658b22b1)), closes [#1264](https://github.com/vuejs/vitepress/issues/1264)
# [1.0.0-alpha.13](https://github.com/vuejs/vitepress/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2022-08-30)
### Features
- use global delegation for copy code interaction ([b5bd73f](https://github.com/vuejs/vitepress/commit/b5bd73f6300e458d419d3a7816272d3c7244a4d3))
# [1.0.0-a
gitextract_9ysuzuto/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── feature_request.yml
│ ├── commit-convention.md
│ ├── contributing.md
│ ├── pull_request_template.md
│ └── workflows/
│ ├── cr-comment.yml
│ ├── cr.yml
│ ├── lock-threads.yml
│ ├── release-tag.yml
│ ├── stale.yml
│ └── test.yml
├── .gitignore
├── .prettierignore
├── .prettierrc.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── __tests__/
│ ├── e2e/
│ │ ├── .vitepress/
│ │ │ ├── config.ts
│ │ │ └── theme/
│ │ │ ├── components/
│ │ │ │ ├── ApiPreference.vue
│ │ │ │ ├── CustomLayout.vue
│ │ │ │ ├── HomeHeroCopy.vue
│ │ │ │ └── NavVersion.vue
│ │ │ └── index.ts
│ │ ├── __snapshots__/
│ │ │ └── home.test.ts.snap
│ │ ├── data-loading/
│ │ │ ├── basic.data.mts
│ │ │ ├── content/
│ │ │ │ ├── bar.md
│ │ │ │ └── foo.md
│ │ │ ├── contentLoader.data.ts
│ │ │ ├── data/
│ │ │ │ ├── a.json
│ │ │ │ └── b.json
│ │ │ ├── data.md
│ │ │ └── data.test.ts
│ │ ├── dynamic-routes/
│ │ │ ├── [id].md
│ │ │ ├── [id].paths.ts
│ │ │ ├── dynamic-routes.test.ts
│ │ │ └── paths.ts
│ │ ├── frontmatter/
│ │ │ ├── multiple-levels-outline.md
│ │ │ └── multiple-levels-outline.test.ts
│ │ ├── home.md
│ │ ├── home.test.ts
│ │ ├── index.md
│ │ ├── local-search/
│ │ │ ├── excluded.md
│ │ │ ├── frontmatter-excluded.md
│ │ │ ├── index.md
│ │ │ └── local-search.test.ts
│ │ ├── markdown-extensions/
│ │ │ ├── bar.md
│ │ │ ├── foo.md
│ │ │ ├── header-include.md
│ │ │ ├── index.md
│ │ │ ├── markdown-extensions.test.ts
│ │ │ ├── nested-include.md
│ │ │ ├── region-include.md
│ │ │ └── subfolder/
│ │ │ ├── inside-subfolder.md
│ │ │ └── subsub/
│ │ │ ├── subsub.md
│ │ │ └── subsubsub/
│ │ │ └── subsubsub.md
│ │ ├── multi-sidebar/
│ │ │ ├── index.md
│ │ │ └── index.test.ts
│ │ ├── package.json
│ │ ├── shims.ts
│ │ ├── text-literals/
│ │ │ └── index.md
│ │ ├── vitest.config.ts
│ │ ├── vitestGlobalSetup.ts
│ │ └── vitestSetup.ts
│ ├── init/
│ │ ├── init.test.ts
│ │ ├── package.json
│ │ └── vitest.config.ts
│ ├── tsconfig.json
│ └── unit/
│ ├── client/
│ │ └── theme-default/
│ │ ├── composables/
│ │ │ └── outline.test.ts
│ │ └── support/
│ │ ├── docsearch.test.ts
│ │ ├── sidebar.test.ts
│ │ └── utils.test.ts
│ ├── node/
│ │ ├── markdown/
│ │ │ └── plugins/
│ │ │ ├── highlight.test.ts
│ │ │ ├── link.test.ts
│ │ │ └── snippet.test.ts
│ │ ├── postcss/
│ │ │ ├── __snapshots__/
│ │ │ │ └── isolateStyles.test.ts.snap
│ │ │ └── isolateStyles.test.ts
│ │ └── utils/
│ │ └── moduleGraph.test.ts
│ ├── shims.ts
│ └── vitest.config.ts
├── bin/
│ └── vitepress.js
├── client.d.ts
├── docs/
│ ├── .postcssrc.json
│ ├── .vitepress/
│ │ ├── config.ts
│ │ └── theme/
│ │ ├── index.ts
│ │ └── styles.css
│ ├── components/
│ │ ├── ComponentInHeader.vue
│ │ └── ModalDemo.vue
│ ├── config.ts
│ ├── en/
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── es/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── fa/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── ja/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── ko/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── lunaria.config.json
│ ├── package.json
│ ├── pt/
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── public/
│ │ └── pure.html
│ ├── ru/
│ │ ├── components/
│ │ │ └── ModalDemo.vue
│ │ ├── config.ts
│ │ ├── guide/
│ │ │ ├── asset-handling.md
│ │ │ ├── cms.md
│ │ │ ├── custom-theme.md
│ │ │ ├── data-loading.md
│ │ │ ├── deploy.md
│ │ │ ├── extending-default-theme.md
│ │ │ ├── frontmatter.md
│ │ │ ├── getting-started.md
│ │ │ ├── i18n.md
│ │ │ ├── markdown.md
│ │ │ ├── migration-from-vitepress-0.md
│ │ │ ├── migration-from-vuepress.md
│ │ │ ├── mpa-mode.md
│ │ │ ├── routing.md
│ │ │ ├── sitemap-generation.md
│ │ │ ├── ssr-compat.md
│ │ │ ├── using-vue.md
│ │ │ └── what-is-vitepress.md
│ │ ├── index.md
│ │ └── reference/
│ │ ├── cli.md
│ │ ├── default-theme-badge.md
│ │ ├── default-theme-carbon-ads.md
│ │ ├── default-theme-config.md
│ │ ├── default-theme-edit-link.md
│ │ ├── default-theme-footer.md
│ │ ├── default-theme-home-page.md
│ │ ├── default-theme-last-updated.md
│ │ ├── default-theme-layout.md
│ │ ├── default-theme-nav.md
│ │ ├── default-theme-prev-next-links.md
│ │ ├── default-theme-search.md
│ │ ├── default-theme-sidebar.md
│ │ ├── default-theme-team-page.md
│ │ ├── frontmatter-config.md
│ │ ├── runtime-api.md
│ │ └── site-config.md
│ ├── snippets/
│ │ ├── algolia-crawler.js
│ │ ├── algolia-i18n.ts
│ │ ├── init.ansi
│ │ ├── snippet-with-region.js
│ │ └── snippet.js
│ └── zh/
│ ├── config.ts
│ ├── guide/
│ │ ├── asset-handling.md
│ │ ├── cms.md
│ │ ├── custom-theme.md
│ │ ├── data-loading.md
│ │ ├── deploy.md
│ │ ├── extending-default-theme.md
│ │ ├── frontmatter.md
│ │ ├── getting-started.md
│ │ ├── i18n.md
│ │ ├── markdown.md
│ │ ├── migration-from-vitepress-0.md
│ │ ├── migration-from-vuepress.md
│ │ ├── mpa-mode.md
│ │ ├── routing.md
│ │ ├── sitemap-generation.md
│ │ ├── ssr-compat.md
│ │ ├── using-vue.md
│ │ └── what-is-vitepress.md
│ ├── index.md
│ └── reference/
│ ├── cli.md
│ ├── default-theme-badge.md
│ ├── default-theme-carbon-ads.md
│ ├── default-theme-config.md
│ ├── default-theme-edit-link.md
│ ├── default-theme-footer.md
│ ├── default-theme-home-page.md
│ ├── default-theme-last-updated.md
│ ├── default-theme-layout.md
│ ├── default-theme-nav.md
│ ├── default-theme-prev-next-links.md
│ ├── default-theme-search.md
│ ├── default-theme-sidebar.md
│ ├── default-theme-team-page.md
│ ├── frontmatter-config.md
│ ├── runtime-api.md
│ └── site-config.md
├── netlify.toml
├── package.json
├── patches/
│ ├── @types__markdown-it-attrs.patch
│ ├── @types__mdurl@2.0.0.patch
│ ├── markdown-it-anchor@9.2.0.patch
│ └── markdown-it-attrs@4.3.1.patch
├── pnpm-workspace.yaml
├── rollup.config.ts
├── scripts/
│ ├── copyClient.js
│ ├── copyShared.js
│ ├── release.js
│ └── watchAndCopy.js
├── src/
│ ├── client/
│ │ ├── app/
│ │ │ ├── components/
│ │ │ │ ├── ClientOnly.ts
│ │ │ │ └── Content.ts
│ │ │ ├── composables/
│ │ │ │ ├── codeGroups.ts
│ │ │ │ ├── copyCode.ts
│ │ │ │ ├── head.ts
│ │ │ │ └── preFetch.ts
│ │ │ ├── data.ts
│ │ │ ├── devtools.ts
│ │ │ ├── index.ts
│ │ │ ├── router.ts
│ │ │ ├── ssr.ts
│ │ │ ├── theme.ts
│ │ │ └── utils.ts
│ │ ├── index.ts
│ │ ├── shims.d.ts
│ │ ├── theme-default/
│ │ │ ├── Layout.vue
│ │ │ ├── NotFound.vue
│ │ │ ├── components/
│ │ │ │ ├── VPAlgoliaSearchBox.vue
│ │ │ │ ├── VPBackdrop.vue
│ │ │ │ ├── VPBadge.vue
│ │ │ │ ├── VPButton.vue
│ │ │ │ ├── VPCarbonAds.vue
│ │ │ │ ├── VPContent.vue
│ │ │ │ ├── VPDoc.vue
│ │ │ │ ├── VPDocAside.vue
│ │ │ │ ├── VPDocAsideCarbonAds.vue
│ │ │ │ ├── VPDocAsideOutline.vue
│ │ │ │ ├── VPDocAsideSponsors.vue
│ │ │ │ ├── VPDocFooter.vue
│ │ │ │ ├── VPDocFooterLastUpdated.vue
│ │ │ │ ├── VPDocOutlineItem.vue
│ │ │ │ ├── VPFeature.vue
│ │ │ │ ├── VPFeatures.vue
│ │ │ │ ├── VPFlyout.vue
│ │ │ │ ├── VPFooter.vue
│ │ │ │ ├── VPHero.vue
│ │ │ │ ├── VPHome.vue
│ │ │ │ ├── VPHomeContent.vue
│ │ │ │ ├── VPHomeFeatures.vue
│ │ │ │ ├── VPHomeHero.vue
│ │ │ │ ├── VPHomeSponsors.vue
│ │ │ │ ├── VPImage.vue
│ │ │ │ ├── VPLink.vue
│ │ │ │ ├── VPLocalNav.vue
│ │ │ │ ├── VPLocalNavOutlineDropdown.vue
│ │ │ │ ├── VPLocalSearchBox.vue
│ │ │ │ ├── VPMenu.vue
│ │ │ │ ├── VPMenuGroup.vue
│ │ │ │ ├── VPMenuLink.vue
│ │ │ │ ├── VPNav.vue
│ │ │ │ ├── VPNavBar.vue
│ │ │ │ ├── VPNavBarAppearance.vue
│ │ │ │ ├── VPNavBarAskAiButton.vue
│ │ │ │ ├── VPNavBarExtra.vue
│ │ │ │ ├── VPNavBarHamburger.vue
│ │ │ │ ├── VPNavBarMenu.vue
│ │ │ │ ├── VPNavBarMenuGroup.vue
│ │ │ │ ├── VPNavBarMenuLink.vue
│ │ │ │ ├── VPNavBarSearch.vue
│ │ │ │ ├── VPNavBarSearchButton.vue
│ │ │ │ ├── VPNavBarSocialLinks.vue
│ │ │ │ ├── VPNavBarTitle.vue
│ │ │ │ ├── VPNavBarTranslations.vue
│ │ │ │ ├── VPNavScreen.vue
│ │ │ │ ├── VPNavScreenAppearance.vue
│ │ │ │ ├── VPNavScreenMenu.vue
│ │ │ │ ├── VPNavScreenMenuGroup.vue
│ │ │ │ ├── VPNavScreenMenuGroupLink.vue
│ │ │ │ ├── VPNavScreenMenuGroupSection.vue
│ │ │ │ ├── VPNavScreenMenuLink.vue
│ │ │ │ ├── VPNavScreenSocialLinks.vue
│ │ │ │ ├── VPNavScreenTranslations.vue
│ │ │ │ ├── VPPage.vue
│ │ │ │ ├── VPSidebar.vue
│ │ │ │ ├── VPSidebarGroup.vue
│ │ │ │ ├── VPSidebarItem.vue
│ │ │ │ ├── VPSkipLink.vue
│ │ │ │ ├── VPSocialLink.vue
│ │ │ │ ├── VPSocialLinks.vue
│ │ │ │ ├── VPSponsors.vue
│ │ │ │ ├── VPSponsorsGrid.vue
│ │ │ │ ├── VPSwitch.vue
│ │ │ │ ├── VPSwitchAppearance.vue
│ │ │ │ ├── VPTeamMembers.vue
│ │ │ │ ├── VPTeamMembersItem.vue
│ │ │ │ ├── VPTeamPage.vue
│ │ │ │ ├── VPTeamPageSection.vue
│ │ │ │ ├── VPTeamPageTitle.vue
│ │ │ │ └── icons/
│ │ │ │ ├── VPIconAlignJustify.vue
│ │ │ │ ├── VPIconAlignLeft.vue
│ │ │ │ ├── VPIconAlignRight.vue
│ │ │ │ ├── VPIconArrowLeft.vue
│ │ │ │ ├── VPIconArrowRight.vue
│ │ │ │ ├── VPIconChevronDown.vue
│ │ │ │ ├── VPIconChevronLeft.vue
│ │ │ │ ├── VPIconChevronRight.vue
│ │ │ │ ├── VPIconChevronUp.vue
│ │ │ │ ├── VPIconEdit.vue
│ │ │ │ ├── VPIconHeart.vue
│ │ │ │ ├── VPIconLanguages.vue
│ │ │ │ ├── VPIconMinus.vue
│ │ │ │ ├── VPIconMinusSquare.vue
│ │ │ │ ├── VPIconMoon.vue
│ │ │ │ ├── VPIconMoreHorizontal.vue
│ │ │ │ ├── VPIconPlus.vue
│ │ │ │ ├── VPIconPlusSquare.vue
│ │ │ │ └── VPIconSun.vue
│ │ │ ├── composables/
│ │ │ │ ├── aside.ts
│ │ │ │ ├── data.ts
│ │ │ │ ├── edit-link.ts
│ │ │ │ ├── flyout.ts
│ │ │ │ ├── langs.ts
│ │ │ │ ├── layout.ts
│ │ │ │ ├── nav.ts
│ │ │ │ ├── outline.ts
│ │ │ │ ├── prev-next.ts
│ │ │ │ ├── sidebar.ts
│ │ │ │ └── sponsor-grid.ts
│ │ │ ├── index.ts
│ │ │ ├── styles/
│ │ │ │ ├── base.css
│ │ │ │ ├── components/
│ │ │ │ │ ├── custom-block.css
│ │ │ │ │ ├── vp-code-group.css
│ │ │ │ │ ├── vp-code.css
│ │ │ │ │ ├── vp-doc.css
│ │ │ │ │ └── vp-sponsor.css
│ │ │ │ ├── docsearch.css
│ │ │ │ ├── fonts.css
│ │ │ │ ├── icons.css
│ │ │ │ ├── utils.css
│ │ │ │ └── vars.css
│ │ │ ├── support/
│ │ │ │ ├── docsearch.ts
│ │ │ │ ├── lru.ts
│ │ │ │ ├── reactivity.ts
│ │ │ │ ├── sidebar.ts
│ │ │ │ ├── translation.ts
│ │ │ │ └── utils.ts
│ │ │ └── without-fonts.ts
│ │ └── tsconfig.json
│ ├── node/
│ │ ├── alias.ts
│ │ ├── build/
│ │ │ ├── build.ts
│ │ │ ├── buildMPAClient.ts
│ │ │ ├── bundle.ts
│ │ │ ├── generateSitemap.ts
│ │ │ └── render.ts
│ │ ├── cli.ts
│ │ ├── config.ts
│ │ ├── contentLoader.ts
│ │ ├── defaultTheme.ts
│ │ ├── index.ts
│ │ ├── init/
│ │ │ └── init.ts
│ │ ├── markdown/
│ │ │ ├── markdown.ts
│ │ │ └── plugins/
│ │ │ ├── containers.ts
│ │ │ ├── githubAlerts.ts
│ │ │ ├── highlight.ts
│ │ │ ├── image.ts
│ │ │ ├── lineNumbers.ts
│ │ │ ├── link.ts
│ │ │ ├── preWrapper.ts
│ │ │ ├── restoreEntities.ts
│ │ │ └── snippet.ts
│ │ ├── markdownToVue.ts
│ │ ├── plugin.ts
│ │ ├── plugins/
│ │ │ ├── dynamicRoutesPlugin.ts
│ │ │ ├── localSearchPlugin.ts
│ │ │ ├── rewritesPlugin.ts
│ │ │ ├── staticDataPlugin.ts
│ │ │ └── webFontsPlugin.ts
│ │ ├── postcss/
│ │ │ └── isolateStyles.ts
│ │ ├── serve/
│ │ │ └── serve.ts
│ │ ├── server.ts
│ │ ├── shortcuts.ts
│ │ ├── siteConfig.ts
│ │ ├── tsconfig.json
│ │ └── utils/
│ │ ├── fnSerialize.ts
│ │ ├── getGitTimestamp.ts
│ │ ├── glob.ts
│ │ ├── moduleGraph.ts
│ │ ├── processIncludes.ts
│ │ └── task.ts
│ └── shared/
│ ├── shared.ts
│ └── tsconfig.json
├── template/
│ ├── .vitepress/
│ │ ├── config.js
│ │ └── theme/
│ │ ├── Layout.vue
│ │ ├── index.js
│ │ └── style.css
│ ├── api-examples.md
│ ├── index.md
│ └── markdown-examples.md
├── theme-without-fonts.d.ts
├── theme.d.ts
├── tsconfig.json
└── types/
├── default-theme.d.ts
├── docsearch.d.ts
├── index.d.ts
├── local-search.d.ts
└── shared.d.ts
SYMBOL INDEX (400 symbols across 96 files)
FILE: __tests__/e2e/.vitepress/config.ts
method _render (line 168) | async _render(src, env, md) {
FILE: __tests__/e2e/.vitepress/theme/index.ts
method enhanceApp (line 10) | enhanceApp({ app }) {
FILE: __tests__/e2e/data-loading/contentLoader.data.ts
method transform (line 7) | transform(data) {
FILE: __tests__/e2e/dynamic-routes/[id].paths.ts
method paths (line 5) | async paths(watchedFiles: string[]) {
method transformPageData (line 10) | async transformPageData(pageData) {
FILE: __tests__/e2e/markdown-extensions/markdown-extensions.test.ts
type CustomBlocks (line 126) | enum CustomBlocks {
FILE: __tests__/e2e/vitestGlobalSetup.ts
function setup (line 12) | async function setup() {
function teardown (line 32) | async function teardown() {
FILE: __tests__/init/init.test.ts
function goto (line 48) | async function goto(path: string) {
FILE: __tests__/unit/node/postcss/isolateStyles.test.ts
constant INPUT_CSS (line 4) | const INPUT_CSS = `
function run (line 91) | function run(css: string, from = 'src/styles/vp-doc.css') {
FILE: client.d.ts
type WindowEventMap (line 8) | interface WindowEventMap {
FILE: docs/.vitepress/config.ts
method postprocess (line 32) | postprocess(code) {
method config (line 39) | config(md) {
method transformItems (line 75) | transformItems(items) {
FILE: docs/config.ts
function nav (line 30) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 62) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 111) | function sidebarReference(): DefaultTheme.SidebarItem[] {
FILE: docs/es/config.ts
function nav (line 61) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 93) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 149) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 182) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/fa/config.ts
function nav (line 68) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 100) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 149) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 183) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/ja/config.ts
function nav (line 32) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 64) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 117) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 150) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/ko/config.ts
function nav (line 61) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 93) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 191) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 224) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/pt/config.ts
function nav (line 61) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 93) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 146) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 179) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/ru/config.ts
function nav (line 59) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 91) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 143) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 179) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: docs/snippets/snippet-with-region.js
function foo (line 2) | function foo() {
FILE: docs/zh/config.ts
function nav (line 61) | function nav(): DefaultTheme.NavItem[] {
function sidebarGuide (line 93) | function sidebarGuide(): DefaultTheme.SidebarItem[] {
function sidebarReference (line 139) | function sidebarReference(): DefaultTheme.SidebarItem[] {
function searchOptions (line 172) | function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
FILE: rollup.config.ts
constant DEV (line 15) | const DEV = !!process.env.DEV
constant PROD (line 16) | const PROD = !DEV
method onwarn (line 51) | onwarn(warning, warn) {
method closeBundle (line 89) | async closeBundle() {
FILE: scripts/copyClient.js
function toDest (line 4) | function toDest(file) {
FILE: scripts/release.js
function main (line 25) | async function main() {
function updatePackage (line 118) | function updatePackage(version) {
FILE: scripts/watchAndCopy.js
function toClientAndNode (line 5) | function toClientAndNode(method, file) {
function toDist (line 16) | function toDist(file) {
FILE: src/client/app/components/ClientOnly.ts
method setup (line 4) | setup(_, { slots }) {
FILE: src/client/app/components/Content.ts
method setup (line 12) | setup(props) {
FILE: src/client/app/composables/codeGroups.ts
function useCodeGroups (line 3) | function useCodeGroups() {
function activate (line 48) | function activate(el: Element): void {
FILE: src/client/app/composables/copyCode.ts
function useCopyCode (line 6) | function useCopyCode() {
function copyToClipboard (line 49) | async function copyToClipboard(text: string) {
FILE: src/client/app/composables/head.ts
function useUpdateHead (line 10) | function useUpdateHead(route: Route, siteDataByRouteRef: Ref<SiteData>) {
function createHeadElement (line 82) | function createHeadElement([tag, attrs, innerHTML]: HeadConfig) {
function isMetaDescription (line 97) | function isMetaDescription(headConfig: HeadConfig) {
function filterOutHeadDescription (line 105) | function filterOutHeadDescription(head: HeadConfig[]) {
FILE: src/client/app/composables/preFetch.ts
function usePrefetch (line 34) | function usePrefetch() {
FILE: src/client/app/data.ts
type VitePressData (line 25) | interface VitePressData<T = any> {
function initData (line 64) | function initData(route: Route): VitePressData {
function useData (line 116) | function useData<T = any>(): VitePressData<T> {
FILE: src/client/app/devtools.ts
constant COMPONENT_STATE_TYPE (line 6) | const COMPONENT_STATE_TYPE = 'VitePress'
FILE: src/client/app/index.ts
function resolveThemeExtends (line 21) | function resolveThemeExtends(theme: typeof RawTheme): typeof RawTheme {
method setup (line 40) | setup() {
function createApp (line 66) | async function createApp() {
function newApp (line 114) | function newApp(): App {
function newRouter (line 120) | function newRouter(): Router {
FILE: src/client/app/router.ts
type Route (line 8) | interface Route {
type Router (line 16) | interface Router {
type PageModule (line 68) | interface PageModule {
function createRouter (line 73) | function createRouter(
function useRouter (line 263) | function useRouter(): Router {
function useRoute (line 269) | function useRoute(): Route {
function scrollTo (line 273) | function scrollTo(hash: string, smooth = false, scrollPosition = 0) {
function handleHMR (line 332) | function handleHMR(route: Route): void {
function shouldHotReload (line 342) | function shouldHotReload(payload: PageDataPayload): boolean {
function normalizeHref (line 350) | function normalizeHref(href: string): string {
function changeRoute (line 362) | async function changeRoute(
FILE: src/client/app/ssr.ts
function render (line 6) | async function render(path: string) {
FILE: src/client/app/theme.ts
type EnhanceAppContext (line 5) | interface EnhanceAppContext {
type Theme (line 11) | interface Theme {
FILE: src/client/app/utils.ts
function joinPath (line 16) | function joinPath(base: string, path: string) {
function withBase (line 23) | function withBase(path: string) {
function pathToFile (line 32) | function pathToFile(path: string) {
function onContentUpdated (line 77) | function onContentUpdated(fn: () => any) {
function defineClientComponent (line 84) | function defineClientComponent(
function getScrollOffset (line 106) | function getScrollOffset() {
function tryOffsetSelector (line 131) | function tryOffsetSelector(selector: string, padding: number): number {
FILE: src/client/theme-default/composables/aside.ts
function useAside (line 5) | function useAside() {
FILE: src/client/theme-default/composables/edit-link.ts
function useEditLink (line 4) | function useEditLink() {
FILE: src/client/theme-default/composables/flyout.ts
type UseFlyoutOptions (line 4) | interface UseFlyoutOptions {
function useFlyout (line 15) | function useFlyout(options: UseFlyoutOptions) {
function activateFocusTracking (line 47) | function activateFocusTracking() {
function deactivateFocusTracking (line 53) | function deactivateFocusTracking() {
function handleFocusIn (line 57) | function handleFocusIn() {
FILE: src/client/theme-default/composables/langs.ts
function useLangs (line 5) | function useLangs({ correspondingLink = false } = {}) {
function normalizeLink (line 38) | function normalizeLink(
FILE: src/client/theme-default/composables/layout.ts
function useLayout (line 21) | function useLayout(): ReturnType<typeof expected> {
type RegisterWatchersOptions (line 72) | interface RegisterWatchersOptions {
function registerWatchers (line 76) | function registerWatchers({ closeSidebar }: RegisterWatchersOptions) {
type LayoutInfo (line 114) | interface LayoutInfo {
FILE: src/client/theme-default/composables/nav.ts
function useNav (line 4) | function useNav() {
type NavExposedMethods (line 39) | interface NavExposedMethods {
FILE: src/client/theme-default/composables/outline.ts
function resolveTitle (line 12) | function resolveTitle(theme: DefaultTheme.Config): string {
function getHeaders (line 22) | function getHeaders(
function serializeHeader (line 44) | function serializeHeader(h: Element): string {
function resolveHeaders (line 57) | function resolveHeaders(
function useActiveAnchor (line 80) | function useActiveAnchor(
function getAbsoluteTop (line 178) | function getAbsoluteTop(element: HTMLElement): number {
function buildTree (line 194) | function buildTree(
FILE: src/client/theme-default/composables/prev-next.ts
function usePrevNext (line 6) | function usePrevNext() {
function uniqBy (line 68) | function uniqBy<T>(array: T[], keyFn: (item: T) => any): T[] {
FILE: src/client/theme-default/composables/sidebar.ts
function useCloseSidebarOnEscape (line 22) | function useCloseSidebarOnEscape(close: () => void) {
function useSidebarControl (line 47) | function useSidebarControl() {
function useSidebarItemControl (line 68) | function useSidebarItemControl(
FILE: src/client/theme-default/composables/sponsor-grid.ts
type GridSetting (line 4) | interface GridSetting {
type GridSize (line 8) | type GridSize = 'xmini' | 'mini' | 'small' | 'medium' | 'big'
type UseSponsorsGridOptions (line 10) | interface UseSponsorsGridOptions {
function useSponsorsGrid (line 49) | function useSponsorsGrid({
function adjustSlots (line 69) | function adjustSlots(el: HTMLElement, size: GridSize) {
function setGrid (line 78) | function setGrid(el: HTMLElement, size: GridSize, items: number) {
function setGridData (line 96) | function setGridData(el: HTMLElement, value: number) {
function manageSlots (line 100) | function manageSlots(
function neutralizeSlots (line 113) | function neutralizeSlots(el: HTMLElement, count: number) {
function addSlots (line 121) | function addSlots(el: HTMLElement, count: number) {
function removeSlots (line 131) | function removeSlots(el: HTMLElement, count: number) {
FILE: src/client/theme-default/support/docsearch.ts
type FacetFilter (line 5) | type FacetFilter = string | string[] | FacetFilter[]
type ValidatedCredentials (line 7) | interface ValidatedCredentials {
type DocSearchMode (line 14) | type DocSearchMode = 'auto' | 'sidePanel' | 'hybrid' | 'modal'
type ResolvedMode (line 16) | interface ResolvedMode {
function resolveMode (line 30) | function resolveMode(
function hasKeywordSearch (line 84) | function hasKeywordSearch(
function hasAskAi (line 93) | function hasAskAi(
function mergeLangFacetFilters (line 105) | function mergeLangFacetFilters(
function validateCredentials (line 139) | function validateCredentials(
function buildAskAiConfig (line 160) | function buildAskAiConfig(
function resolveOptionsForLanguage (line 208) | function resolveOptionsForLanguage(
function deepMerge (line 230) | function deepMerge<T>(target: T, source: Partial<T>): T {
FILE: src/client/theme-default/support/lru.ts
class LRUCache (line 3) | class LRUCache<K, V> {
method constructor (line 7) | constructor(max: number = 10) {
method get (line 12) | get(key: K): V | undefined {
method set (line 22) | set(key: K, val: V): void {
method first (line 30) | first(): K | undefined {
method clear (line 34) | clear(): void {
FILE: src/client/theme-default/support/reactivity.ts
function smartComputed (line 3) | function smartComputed<T>(
FILE: src/client/theme-default/support/sidebar.ts
type SidebarLink (line 5) | interface SidebarLink {
type SidebarItem (line 11) | type SidebarItem = DefaultTheme.SidebarItem
function getSidebar (line 19) | function getSidebar(
function getSidebarGroups (line 46) | function getSidebarGroups(sidebar: SidebarItem[]): SidebarItem[] {
function getFlatSideBarLinks (line 69) | function getFlatSideBarLinks(sidebar: SidebarItem[]): SidebarLink[] {
function hasActiveLink (line 96) | function hasActiveLink(
function addBase (line 111) | function addBase(items: SidebarItem[], _base?: string): SidebarItem[] {
FILE: src/client/theme-default/support/translation.ts
function createSearchTranslate (line 6) | function createSearchTranslate(
FILE: src/client/theme-default/support/utils.ts
function throttleAndDebounce (line 5) | function throttleAndDebounce(fn: () => void, delay: number): () => void {
function ensureStartingSlash (line 19) | function ensureStartingSlash(path: string): string {
function normalizeLink (line 23) | function normalizeLink(url: string): string {
FILE: src/node/alias.ts
constant PKG_ROOT (line 7) | const PKG_ROOT = resolve(fileURLToPath(import.meta.url), '../..')
constant DIST_CLIENT_PATH (line 9) | const DIST_CLIENT_PATH = resolve(PKG_ROOT, 'client')
constant APP_PATH (line 10) | const APP_PATH = join(DIST_CLIENT_PATH, 'app')
constant SHARED_PATH (line 11) | const SHARED_PATH = join(DIST_CLIENT_PATH, 'shared')
constant DEFAULT_THEME_PATH (line 12) | const DEFAULT_THEME_PATH = join(DIST_CLIENT_PATH, 'theme-default')
constant SITE_DATA_ID (line 17) | const SITE_DATA_ID = '@siteData'
constant SITE_DATA_REQUEST_PATH (line 18) | const SITE_DATA_REQUEST_PATH = '/' + SITE_DATA_ID
function resolveAliases (line 22) | function resolveAliases(root: string, ssr: boolean): AliasOptions {
FILE: src/node/build/build.ts
function build (line 22) | async function build(
function linkVue (line 196) | function linkVue() {
function generateMetadataScript (line 212) | function generateMetadataScript(
FILE: src/node/build/buildMPAClient.ts
function buildMPAClient (line 6) | async function buildMPAClient(
FILE: src/node/build/bundle.ts
constant CSS_LANGS_RE (line 20) | const CSS_LANGS_RE =
function bundle (line 38) | async function bundle(
function isEagerChunk (line 226) | function isEagerChunk(id: string, getModuleInfo: Rollup.GetModuleInfo) {
function staticImportedByEntry (line 236) | function staticImportedByEntry(
FILE: src/node/build/generateSitemap.ts
function generateSitemap (line 16) | async function generateSitemap(siteConfig: SiteConfig) {
type SitemapItem (line 89) | interface SitemapItem {
FILE: src/node/build/render.ts
function renderPage (line 23) | async function renderPage(
function resolvePageImports (line 208) | function resolvePageImports(
function renderHead (line 238) | async function renderHead(head: HeadConfig[]): Promise<string> {
function renderAttrs (line 258) | function renderAttrs(attrs: Record<string, string>): string {
function minifyScript (line 267) | async function minifyScript(code: string, filename: string): Promise<str...
function filterOutHeadDescription (line 278) | function filterOutHeadDescription(head: HeadConfig[] = []) {
function isDescriptionOverridden (line 284) | function isDescriptionOverridden(head: HeadConfig[] = []) {
function isMetaViewportOverridden (line 290) | function isMetaViewportOverridden(head: HeadConfig[] = []) {
FILE: src/node/cli.ts
function restartServer (line 55) | function restartServer() {
method onAfterConfigResolve (line 89) | onAfterConfigResolve(siteConfig) {
function logErrorAndExit (line 102) | function logErrorAndExit(message: string, err?: any): never {
function logError (line 107) | function logError(message: string, err?: any) {
FILE: src/node/config.ts
type UserConfigFn (line 38) | type UserConfigFn<ThemeConfig> = (
type UserConfigExport (line 41) | type UserConfigExport<ThemeConfig> =
function defineConfig (line 48) | function defineConfig<ThemeConfig = DefaultTheme.Config>(
type AdditionalConfigFn (line 54) | type AdditionalConfigFn<ThemeConfig> = (
type AdditionalConfigExport (line 57) | type AdditionalConfigExport<ThemeConfig> =
function defineAdditionalConfig (line 64) | function defineAdditionalConfig<ThemeConfig = DefaultTheme.Config>(
function defineConfigWithTheme (line 75) | function defineConfigWithTheme<ThemeConfig>(
function resolveConfig (line 81) | async function resolveConfig(
function isAdditionalConfigFile (line 180) | function isAdditionalConfigFile(path: string) {
function gatherAdditionalConfig (line 184) | async function gatherAdditionalConfig(
function resolveUserConfig (line 232) | async function resolveUserConfig(
function resolveConfigExtends (line 280) | async function resolveConfigExtends(
function mergeConfig (line 291) | function mergeConfig(a: UserConfig, b: UserConfig, isRoot = true) {
function resolveSiteData (line 316) | async function resolveSiteData(
function resolveSiteDataHead (line 345) | function resolveSiteDataHead(userConfig?: UserConfig): HeadConfig[] {
FILE: src/node/contentLoader.ts
type ContentOptions (line 11) | interface ContentOptions<T = ContentData[]> {
type ContentData (line 61) | interface ContentData {
function createContentLoader (line 73) | function createContentLoader<T = ContentData[]>(
FILE: src/node/defaultTheme.ts
type LocalSearchOptions (line 13) | interface LocalSearchOptions {
type MiniSearchOptions (line 25) | interface MiniSearchOptions {
FILE: src/node/init/init.ts
type ScaffoldThemeType (line 17) | enum ScaffoldThemeType {
type ScaffoldOptions (line 23) | interface ScaffoldOptions {
function init (line 40) | async function init(root?: string) {
function scaffold (line 147) | function scaffold({
FILE: src/node/markdown/markdown.ts
type ThemeOptions (line 43) | type ThemeOptions =
type MarkdownOptions (line 51) | interface MarkdownOptions extends MarkdownItAsyncOptions {
type MarkdownRenderer (line 232) | type MarkdownRenderer = MarkdownItAsync
function disposeMdItInstance (line 240) | function disposeMdItInstance() {
function createMarkdownRenderer (line 250) | async function createMarkdownRenderer(
FILE: src/node/markdown/plugins/containers.ts
type ContainerArgs (line 29) | type ContainerArgs = [typeof container, string, { render: RenderRule }]
function createContainer (line 31) | function createContainer(
function createCodeGroup (line 60) | function createCodeGroup(md: MarkdownItAsync): ContainerArgs {
type ContainerOptions (line 106) | interface ContainerOptions {
FILE: src/node/markdown/plugins/githubAlerts.ts
function capitalize (line 65) | function capitalize(str: string) {
FILE: src/node/markdown/plugins/highlight.ts
function transformerDisableShellSymbolSelect (line 26) | function transformerDisableShellSymbolSelect(): ShikiTransformer {
function highlight (line 52) | async function highlight(
FILE: src/node/markdown/plugins/image.ts
type Options (line 6) | interface Options {
FILE: src/node/markdown/plugins/link.ts
function normalizeHref (line 77) | function normalizeHref(hrefAttr: [string, string], env: MarkdownEnv) {
function normalizeHash (line 114) | function normalizeHash(str: string) {
function pushLink (line 118) | function pushLink(link: string, env: MarkdownEnv) {
FILE: src/node/markdown/plugins/preWrapper.ts
type Options (line 3) | interface Options {
function preWrapperPlugin (line 8) | function preWrapperPlugin(md: MarkdownItAsync, options: Options) {
function extractTitle (line 38) | function extractTitle(info: string, html = false) {
function extractLang (line 47) | function extractLang(info: string): string {
FILE: src/node/markdown/plugins/restoreEntities.ts
function restoreEntities (line 6) | function restoreEntities(md: MarkdownItAsync): void {
function text_join (line 11) | function text_join(state: StateCore): void {
function getContent (line 44) | function getContent(token: Token): string {
FILE: src/node/markdown/plugins/snippet.ts
function rawPathToToken (line 21) | function rawPathToToken(rawPath: string) {
function dedent (line 37) | function dedent(text: string): string {
function findRegion (line 89) | function findRegion(lines: Array<string>, regionName: string) {
FILE: src/node/markdownToVue.ts
type MarkdownCompileResult (line 28) | interface MarkdownCompileResult {
function clearCache (line 35) | function clearCache(relativePath?: string) {
function getResolutionCache (line 50) | function getResolutionCache(siteConfig: SiteConfig) {
function createMarkdownToVueRenderFn (line 83) | async function createMarkdownToVueRenderFn(
function injectPageDataCode (line 266) | function injectPageDataCode(tags: string[], data: PageData) {
FILE: src/node/plugin.ts
type UserConfig (line 37) | interface UserConfig {
function createVitePressPlugin (line 68) | async function createVitePressPlugin(
function logDeadLinks (line 419) | function logDeadLinks(
FILE: src/node/plugins/dynamicRoutesPlugin.ts
type UserRouteConfig (line 19) | interface UserRouteConfig {
type ResolvedRouteConfig (line 24) | type ResolvedRouteConfig = UserRouteConfig & {
type RouteModule (line 43) | interface RouteModule {
type ResolvedRouteModule (line 52) | interface ResolvedRouteModule {
function defineRoutes (line 70) | function defineRoutes(loader: RouteModule): RouteModule {
type Optional (line 74) | type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
function resolvePages (line 76) | async function resolvePages(
method resolveId (line 136) | resolveId(id) {
method load (line 147) | load(id) {
method hotUpdate (line 175) | async hotUpdate({ file, modules: existingMods }) {
function getPageDataTransformer (line 211) | function getPageDataTransformer(
function resolveDynamicRoutes (line 217) | async function resolveDynamicRoutes(
function getModules (line 353) | function getModules(
FILE: src/node/plugins/localSearchPlugin.ts
constant LOCAL_SEARCH_INDEX_ID (line 14) | const LOCAL_SEARCH_INDEX_ID = '@localSearchIndex'
constant LOCAL_SEARCH_INDEX_REQUEST_PATH (line 15) | const LOCAL_SEARCH_INDEX_REQUEST_PATH = '/' + LOCAL_SEARCH_INDEX_ID
type IndexObject (line 17) | interface IndexObject {
function localSearchPlugin (line 24) | async function localSearchPlugin(
function getSearchableText (line 243) | function getSearchableText(content: string) {
function clearHtmlTags (line 248) | function clearHtmlTags(str: string) {
FILE: src/node/plugins/rewritesPlugin.ts
function resolveRewrites (line 5) | function resolveRewrites(
method configureServer (line 52) | configureServer(server) {
FILE: src/node/plugins/staticDataPlugin.ts
type LoaderModule (line 17) | interface LoaderModule<T = any> {
function defineLoader (line 26) | function defineLoader<T>(loader: LoaderModule<T>): LoaderModule<T> {
method configResolved (line 51) | configResolved(config) {
method configureServer (line 55) | configureServer(_server) {
method load (line 59) | async load(id) {
method hotUpdate (line 116) | hotUpdate({ file, modules: existingMods }) {
FILE: src/node/plugins/webFontsPlugin.ts
method transform (line 10) | transform(code, id) {
FILE: src/node/postcss/isolateStyles.ts
type Options (line 4) | type Options = {
function postcssIsolateStyles (line 10) | function postcssIsolateStyles({
FILE: src/node/serve/serve.ts
function trimChar (line 8) | function trimChar(str: string, char: string) {
type ServeOptions (line 20) | interface ServeOptions {
function serve (line 26) | async function serve(options: ServeOptions = {}) {
FILE: src/node/server.ts
function createServer (line 5) | async function createServer(
FILE: src/node/shortcuts.ts
type CLIShortcut (line 5) | type CLIShortcut = {
function bindShortcuts (line 14) | function bindShortcuts(
constant SHORTCUTS (line 73) | const SHORTCUTS: CLIShortcut[] = [
method action (line 77) | async action(server, restartServer) {
method action (line 88) | action(server) {
method action (line 96) | action(server) {
method action (line 103) | action(server) {
method action (line 110) | async action(server) {
FILE: src/node/siteConfig.ts
type RawConfigExports (line 22) | type RawConfigExports<ThemeConfig = any> =
type TransformContext (line 26) | interface TransformContext<ThemeConfig = any> {
type TransformPageContext (line 38) | interface TransformPageContext<ThemeConfig = any> {
type UserConfig (line 42) | interface UserConfig<
type SiteConfig (line 211) | interface SiteConfig<ThemeConfig = any> extends Pick<
FILE: src/node/utils/fnSerialize.ts
function serializeFunctions (line 1) | function serializeFunctions(value: any, key?: string): any {
FILE: src/node/utils/getGitTimestamp.ts
constant NUL (line 12) | const NUL = 0x00
type GitLogRecord (line 15) | interface GitLogRecord {
type State (line 20) | type State = 'READ_TS' | 'READ_FILE'
class GitLogParser (line 22) | class GitLogParser extends Transform {
method constructor (line 28) | constructor() {
method _transform (line 32) | override _transform(
method _flush (line 75) | override _flush(cb: TransformCallback): void {
method #emitRecord (line 91) | #emitRecord(): void {
function cacheAllGitTimestamps (line 106) | async function cacheAllGitTimestamps(
function getGitTimestamp (line 142) | async function getGitTimestamp(file: string): Promise<number> {
FILE: src/node/utils/glob.ts
type GlobOptions (line 5) | interface GlobOptions {
function normalizeGlob (line 13) | function normalizeGlob(
function glob (line 26) | async function glob(
FILE: src/node/utils/moduleGraph.ts
class ModuleGraph (line 1) | class ModuleGraph {
method add (line 18) | add(module: string, dependencies: string[]): void {
method delete (line 55) | delete(module: string): Set<string> {
method clear (line 96) | clear(): void {
method clone (line 107) | clone(): ModuleGraph {
FILE: src/node/utils/processIncludes.ts
function processIncludes (line 8) | function processIncludes(
FILE: src/node/utils/task.ts
function task (line 6) | async function task(taskName: string, task: () => Promise<void>) {
FILE: src/shared/shared.ts
constant EXTERNAL_URL_RE (line 25) | const EXTERNAL_URL_RE = /^(?:[a-z]+:|\/\/)/i
constant APPEARANCE_KEY (line 26) | const APPEARANCE_KEY = 'vitepress-theme-appearance'
constant VP_SOURCE_KEY (line 28) | const VP_SOURCE_KEY = '[VP_SOURCE]'
constant HASH_WITHOUT_FRAGMENT_RE (line 31) | const HASH_WITHOUT_FRAGMENT_RE = /#.*?(?=:~:|$)/
constant HASH_OR_QUERY_RE (line 32) | const HASH_OR_QUERY_RE = /[?#].*$/
constant INDEX_OR_EXT_RE (line 33) | const INDEX_OR_EXT_RE = /(?:(^|\/)index)?\.(?:md|html)$/
function isActive (line 48) | function isActive(
function normalize (line 76) | function normalize(path: string): string {
function isExternal (line 82) | function isExternal(path: string): boolean {
function getLocaleForPath (line 86) | function getLocaleForPath(
function resolveSiteDataByRoute (line 103) | function resolveSiteDataByRoute(
function createTitle (line 141) | function createTitle(siteData: SiteData, pageData: PageData): string {
function createTitleTemplate (line 158) | function createTitleTemplate(
function mergeHead (line 177) | function mergeHead(...headArrays: HeadConfig[][]): HeadConfig[] {
constant INVALID_CHAR_REGEX (line 208) | const INVALID_CHAR_REGEX = /[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g
constant DRIVE_LETTER_REGEX (line 209) | const DRIVE_LETTER_REGEX = /^[a-z]:/i
function sanitizeFileName (line 211) | function sanitizeFileName(name: string): string {
function slash (line 224) | function slash(p: string): string {
constant KNOWN_EXTENSIONS (line 228) | const KNOWN_EXTENSIONS = new Set()
function treatAsHtml (line 230) | function treatAsHtml(filename: string): boolean {
function escapeRegExp (line 257) | function escapeRegExp(str: string) {
function escapeHtml (line 264) | function escapeHtml(str: string): string {
function resolveAdditionalConfig (line 272) | function resolveAdditionalConfig(
function reportConfigLayers (line 294) | function reportConfigLayers(path: string, layers: Partial<SiteData>[]) {
function stackView (line 313) | function stackView<T extends ObjectType>(..._layers: Partial<T>[]): T {
type ObjectType (line 352) | type ObjectType = Record<PropertyKey, any>
function isObject (line 353) | function isObject(value: unknown): value is ObjectType {
function isShell (line 358) | function isShell(lang: string): boolean {
FILE: template/.vitepress/theme/index.js
method enhanceApp (line 9) | enhanceApp({ app, router, siteData }) {
method enhanceApp (line 26) | enhanceApp({ app, router, siteData }) {
FILE: types/default-theme.d.ts
type Config (line 7) | interface Config {
type NavItem (line 160) | type NavItem = NavItemComponent | NavItemWithLink | NavItemWithChildren
type NavItemComponent (line 162) | interface NavItemComponent {
type NavItemWithLink (line 167) | interface NavItemWithLink {
type NavItemChildren (line 182) | interface NavItemChildren {
type NavItemWithChildren (line 187) | interface NavItemWithChildren {
type ThemeableImage (line 200) | type ThemeableImage =
type FeatureIcon (line 205) | type FeatureIcon =
type Sidebar (line 225) | type Sidebar = SidebarItem[] | SidebarMulti
type SidebarMulti (line 227) | interface SidebarMulti {
type SidebarItem (line 231) | type SidebarItem = {
type EditLink (line 272) | interface EditLink {
type DocFooter (line 291) | interface DocFooter {
type SocialLink (line 309) | interface SocialLink {
type SocialLinkIcon (line 315) | type SocialLinkIcon = string | { svg: string }
type Footer (line 319) | interface Footer {
type TeamMember (line 326) | interface TeamMember {
type Outline (line 340) | interface Outline {
type OutlineItem (line 345) | type OutlineItem = Omit<Header, 'slug' | 'children'> & {
type LocalSearchOptions (line 352) | interface LocalSearchOptions {
type MiniSearchOptions (line 379) | interface MiniSearchOptions {
type AlgoliaSearchOptions (line 399) | interface AlgoliaSearchOptions extends DocSearchProps {
type CarbonAdsOptions (line 410) | interface CarbonAdsOptions {
type LastUpdatedOptions (line 417) | interface LastUpdatedOptions {
type NotFoundOptions (line 437) | interface NotFoundOptions {
FILE: types/docsearch.d.ts
type DocSearchProps (line 4) | type DocSearchProps = Partial<
type DocSearchAskAi (line 47) | type DocSearchAskAi = Partial<
type SidepanelProps (line 56) | type SidepanelProps = Partial<
FILE: types/local-search.d.ts
type LocalSearchTranslations (line 1) | interface LocalSearchTranslations {
type ButtonTranslations (line 6) | interface ButtonTranslations {
type ModalTranslations (line 11) | interface ModalTranslations {
type FooterTranslations (line 19) | interface FooterTranslations {
type PageSplitSection (line 29) | interface PageSplitSection {
FILE: types/shared.d.ts
type Awaitable (line 6) | type Awaitable<T> = T | PromiseLike<T>
type DeepPartial (line 8) | type DeepPartial<T> =
type PageData (line 21) | interface PageData {
type SfcBlock (line 41) | interface SfcBlock {
type MarkdownSfcBlocks (line 64) | interface MarkdownSfcBlocks {
type Header (line 94) | interface Header {
type SiteData (line 123) | interface SiteData<ThemeConfig = any> {
type HeadConfig (line 155) | type HeadConfig =
type PageDataPayload (line 159) | interface PageDataPayload {
type SSGContext (line 164) | interface SSGContext extends SSRContext {
type LocaleSpecificConfig (line 170) | interface LocaleSpecificConfig<ThemeConfig = any> {
type LocaleConfig (line 180) | type LocaleConfig<ThemeConfig = any> = Record<
type AdditionalConfig (line 185) | type AdditionalConfig<ThemeConfig = any> =
type AdditionalConfigDict (line 188) | type AdditionalConfigDict<ThemeConfig = any> = Record<
type AdditionalConfigLoader (line 193) | type AdditionalConfigLoader<ThemeConfig = any> = (
type MarkdownEnv (line 199) | interface MarkdownEnv {
Condensed preview — 596 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,561K chars).
[
{
"path": ".gitattributes",
"chars": 19,
"preview": "* text=auto eol=lf\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 84,
"preview": "github: [yyx990803, kiaking, brc-dd, posva]\nopen_collective: vuejs\npatreon: evanyou\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 2360,
"preview": "name: \"\\U0001F41E Bug report\"\ndescription: Create a report to help us improve\nlabels: ['bug: pending triage']\nbody:\n - "
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 1821,
"preview": "name: \"\\U0001F680 New feature proposal\"\ndescription: Suggest an idea for this project\nbody:\n - type: markdown\n attri"
},
{
"path": ".github/commit-convention.md",
"chars": 2927,
"preview": "## Git Commit Message Convention\n\n> This is adapted from [Angular's commit convention](https://github.com/conventional-c"
},
{
"path": ".github/contributing.md",
"chars": 1797,
"preview": "# VitePress Contributing Guide\n\nHi! We're really excited that you are interested in contributing to VitePress. Before su"
},
{
"path": ".github/pull_request_template.md",
"chars": 358,
"preview": "### Description\n\n<!-- Please insert your description here and provide info about the \"what\" this PR is solving. -->\n\n###"
},
{
"path": ".github/workflows/cr-comment.yml",
"chars": 624,
"preview": "name: Add continuous release label\n\non:\n issue_comment:\n types: [created]\n\npermissions:\n pull-requests: write\n\njobs"
},
{
"path": ".github/workflows/cr.yml",
"chars": 1391,
"preview": "name: CR\n\nenv:\n PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1'\n\non:\n pull_request:\n branches: [main]\n types: [opened, syn"
},
{
"path": ".github/workflows/lock-threads.yml",
"chars": 492,
"preview": "name: Lock Threads\n\non:\n schedule:\n - cron: 38 4 * * *\n workflow_dispatch:\n\npermissions:\n issues: write\n pull-req"
},
{
"path": ".github/workflows/release-tag.yml",
"chars": 626,
"preview": "name: Release\n\non:\n push:\n tags:\n - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10\n\njobs:\n release:\n "
},
{
"path": ".github/workflows/stale.yml",
"chars": 569,
"preview": "name: Close stale issues and PRs\non:\n schedule:\n - cron: '0 12 1,15 * *'\n workflow_dispatch:\n\njobs:\n stale:\n ru"
},
{
"path": ".github/workflows/test.yml",
"chars": 1011,
"preview": "name: Test\n\non:\n push:\n branches: [main]\n pull_request:\n branches: [main]\n workflow_dispatch:\n\npermissions: {}\n"
},
{
"path": ".gitignore",
"chars": 192,
"preview": "/coverage\n/src/client/shared.ts\n/src/node/shared.ts\n*.log\n*.tgz\n.DS_Store\n.idea\n.temp\n.vite_opt_cache\n.vscode\ndist\ncache"
},
{
"path": ".prettierignore",
"chars": 71,
"preview": "*.md\n*.vue\ndist\npnpm-lock.yaml\ncache\ntemplate\ntemp\n!CHANGELOG.md\n.temp\n"
},
{
"path": ".prettierrc.yml",
"chars": 65,
"preview": "semi: false\nsingleQuote: true\nprintWidth: 80\ntrailingComma: none\n"
},
{
"path": "CHANGELOG.md",
"chars": 260852,
"preview": "## [2.0.0-alpha.17](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.16...v2.0.0-alpha.17) (2026-03-19)\n\n### Bug "
},
{
"path": "LICENSE",
"chars": 1081,
"preview": "MIT License\n\nCopyright (c) 2019-present, Yuxi (Evan) You\n\nPermission is hereby granted, free of charge, to any person ob"
},
{
"path": "README.md",
"chars": 3658,
"preview": "# VitePress 📝💨\n\n[](https://g"
},
{
"path": "__tests__/e2e/.vitepress/config.ts",
"chars": 3364,
"preview": "import { defineConfig, type DefaultTheme } from 'vitepress'\n\nconst nav: DefaultTheme.Config['nav'] = [\n {\n text: 'Ho"
},
{
"path": "__tests__/e2e/.vitepress/theme/components/ApiPreference.vue",
"chars": 1721,
"preview": "<script setup lang=\"ts\">\nimport { useLocalStorage } from '@vueuse/core'\n\nconst props = defineProps<{\n options: string[]"
},
{
"path": "__tests__/e2e/.vitepress/theme/components/CustomLayout.vue",
"chars": 358,
"preview": "<script setup lang=\"ts\">\nimport DefaultTheme from 'vitepress/theme'\nimport HomeHeroCopy from './HomeHeroCopy.vue'\n\nconst"
},
{
"path": "__tests__/e2e/.vitepress/theme/components/HomeHeroCopy.vue",
"chars": 4268,
"preview": "<script setup lang=\"ts\">\n import { ref } from 'vue'\n\n const props = defineProps<{\n command: string\n }>()\n\n const "
},
{
"path": "__tests__/e2e/.vitepress/theme/components/NavVersion.vue",
"chars": 1208,
"preview": "<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useRoute } from 'vitepress'\nimport VPNavBarMenuGroup fr"
},
{
"path": "__tests__/e2e/.vitepress/theme/index.ts",
"chars": 458,
"preview": "import type { Theme } from 'vitepress'\nimport DefaultTheme from 'vitepress/theme'\nimport CustomLayout from './components"
},
{
"path": "__tests__/e2e/__snapshots__/home.test.ts.snap",
"chars": 3388,
"preview": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`render correct content > main content 1`] = `\n[\n"
},
{
"path": "__tests__/e2e/data-loading/basic.data.mts",
"chars": 433,
"preview": "import fs from 'node:fs'\nimport { defineLoader } from 'vitepress'\n\ntype Data = Record<string, boolean>[]\nexport declare "
},
{
"path": "__tests__/e2e/data-loading/content/bar.md",
"chars": 38,
"preview": "---\ntitle: bar\n---\n\nHello\n\n---\n\nworld\n"
},
{
"path": "__tests__/e2e/data-loading/content/foo.md",
"chars": 38,
"preview": "---\ntitle: foo\n---\n\nHello\n\n---\n\nworld\n"
},
{
"path": "__tests__/e2e/data-loading/contentLoader.data.ts",
"chars": 275,
"preview": "import { createContentLoader } from 'vitepress'\n\nexport default createContentLoader('data-loading/content/*.md', {\n inc"
},
{
"path": "__tests__/e2e/data-loading/data/a.json",
"chars": 16,
"preview": "{\n \"a\": true\n}\n"
},
{
"path": "__tests__/e2e/data-loading/data/b.json",
"chars": 16,
"preview": "{\n \"b\": true\n}\n"
},
{
"path": "__tests__/e2e/data-loading/data.md",
"chars": 229,
"preview": "# Static Data\n\n<script setup lang=\"ts\">\nimport { data } from './basic.data.mjs'\nimport { data as contentData } from './c"
},
{
"path": "__tests__/e2e/data-loading/data.test.ts",
"chars": 2983,
"preview": "import fs from 'node:fs/promises'\nimport { fileURLToPath } from 'node:url'\n\ndescribe('static data file support in vite 3"
},
{
"path": "__tests__/e2e/dynamic-routes/[id].md",
"chars": 59,
"preview": "<!-- @content -->\n\n<pre class=\"params\">{{ $params }}</pre>\n"
},
{
"path": "__tests__/e2e/dynamic-routes/[id].paths.ts",
"chars": 394,
"preview": "import { defineRoutes } from 'vitepress'\nimport paths from './paths'\n\nexport default defineRoutes({\n async paths(watche"
},
{
"path": "__tests__/e2e/dynamic-routes/dynamic-routes.test.ts",
"chars": 423,
"preview": "describe('dynamic routes', () => {\n test('render correct content', async () => {\n await goto('/dynamic-routes/foo')\n"
},
{
"path": "__tests__/e2e/dynamic-routes/paths.ts",
"chars": 112,
"preview": "export default [\n { params: { id: 'foo' }, content: `# Foo` },\n { params: { id: 'bar' }, content: `# Bar` }\n]\n"
},
{
"path": "__tests__/e2e/frontmatter/multiple-levels-outline.md",
"chars": 292,
"preview": "---\ntitle: Multiple Levels Outline\neditLink: true\noutline: deep\n---\n\n# h1 - 1\n\nLorem ipsum\n\n## h2 - 1\n\nLorem ipsum\n\n### "
},
{
"path": "__tests__/e2e/frontmatter/multiple-levels-outline.test.ts",
"chars": 801,
"preview": "describe('outline', () => {\n beforeAll(async () => {\n await goto('/frontmatter/multiple-levels-outline')\n })\n\n tes"
},
{
"path": "__tests__/e2e/home.md",
"chars": 3355,
"preview": "# Lorem Ipsum\n\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et d"
},
{
"path": "__tests__/e2e/home.test.ts",
"chars": 1032,
"preview": "describe('render correct content', async () => {\n beforeAll(async () => {\n await goto('/home')\n })\n\n test('main co"
},
{
"path": "__tests__/e2e/index.md",
"chars": 744,
"preview": "---\nlayout: home\n\ntitle: VitePress\n\nhero:\n name: VitePress\n text: Vite & Vue Powered Static Site Generator\n image:\n "
},
{
"path": "__tests__/e2e/local-search/excluded.md",
"chars": 30,
"preview": "# Local search config excluded"
},
{
"path": "__tests__/e2e/local-search/frontmatter-excluded.md",
"chars": 58,
"preview": "---\nsearch: false\n---\n\n# Local search frontmatter excluded"
},
{
"path": "__tests__/e2e/local-search/index.md",
"chars": 23,
"preview": "# Local search included"
},
{
"path": "__tests__/e2e/local-search/local-search.test.ts",
"chars": 874,
"preview": "describe('local search', () => {\n beforeEach(async () => {\n await goto('/')\n })\n\n test('exclude content from searc"
},
{
"path": "__tests__/e2e/markdown-extensions/bar.md",
"chars": 6,
"preview": "# Bar\n"
},
{
"path": "__tests__/e2e/markdown-extensions/foo.md",
"chars": 133,
"preview": "# Foo\n\nThis is before region\n\n<!-- #region snippet -->\n## Region\n\nThis is a region\n<!-- #endregion snippet -->\n\nThis is "
},
{
"path": "__tests__/e2e/markdown-extensions/header-include.md",
"chars": 259,
"preview": "# header 1\n\nheader 1 content\n\n## header 1.1\n\nheader 1.1 content\n\n### header 1.1.1\n\nheader 1.1.1 content\n\n### header 1.1."
},
{
"path": "__tests__/e2e/markdown-extensions/index.md",
"chars": 3485,
"preview": "# Markdown Extensions\n\n## Links\n\n### Internal Links\n\n- [home](/)\n- [markdown-extensions](/markdown-extensions/)\n- [headi"
},
{
"path": "__tests__/e2e/markdown-extensions/markdown-extensions.test.ts",
"chars": 11905,
"preview": "import type { Locator } from 'playwright-chromium'\n\nconst getClassList = async (locator: Locator) => {\n const className"
},
{
"path": "__tests__/e2e/markdown-extensions/nested-include.md",
"chars": 122,
"preview": "---\ntitle: Nested Include\n---\n\n<!--@include: ./foo.md-->\n\n### After Foo\n\n<!--@include: ./subfolder/inside-subfolder.md--"
},
{
"path": "__tests__/e2e/markdown-extensions/region-include.md",
"chars": 208,
"preview": "\n<!-- #region range-region -->\n\n## Range Region Line 1\n\n## Range Region Line 2\n\n## Range Region Line 3\n<!-- #endregion r"
},
{
"path": "__tests__/e2e/markdown-extensions/subfolder/inside-subfolder.md",
"chars": 57,
"preview": "# Inside sub folder\n\n<!--@include: ./subsub/subsub.md-->\n"
},
{
"path": "__tests__/e2e/markdown-extensions/subfolder/subsub/subsub.md",
"chars": 54,
"preview": "## Sub sub\n\n<!--@include: ./subsubsub/subsubsub.md-->\n"
},
{
"path": "__tests__/e2e/markdown-extensions/subfolder/subsub/subsubsub/subsubsub.md",
"chars": 16,
"preview": "### Sub sub sub\n"
},
{
"path": "__tests__/e2e/multi-sidebar/index.md",
"chars": 16,
"preview": "# Multi Sidebar\n"
},
{
"path": "__tests__/e2e/multi-sidebar/index.test.ts",
"chars": 940,
"preview": "describe('test multi sidebar sort root', () => {\n beforeAll(async () => {\n await goto('/frontmatter/multiple-levels-"
},
{
"path": "__tests__/e2e/package.json",
"chars": 307,
"preview": "{\n \"name\": \"tests-e2e\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"vitest run\",\n \"watch\": \"D"
},
{
"path": "__tests__/e2e/shims.ts",
"chars": 129,
"preview": "import { type Page } from 'playwright-chromium'\n\ndeclare global {\n var page: Page\n var goto: (path: string) => Promise"
},
{
"path": "__tests__/e2e/text-literals/index.md",
"chars": 16,
"preview": "# Text Literals\n"
},
{
"path": "__tests__/e2e/vitest.config.ts",
"chars": 296,
"preview": "import { defineConfig } from 'vitest/config'\n\nconst timeout = 60_000\n\nexport default defineConfig({\n test: {\n setupF"
},
{
"path": "__tests__/e2e/vitestGlobalSetup.ts",
"chars": 1128,
"preview": "import getPort from 'get-port'\nimport type { Server } from 'node:net'\nimport { chromium, type BrowserServer } from 'play"
},
{
"path": "__tests__/e2e/vitestSetup.ts",
"chars": 540,
"preview": "import { chromium, type Browser } from 'playwright-chromium'\n\nlet browser: Browser\n\nbeforeAll(async () => {\n browser = "
},
{
"path": "__tests__/init/init.test.ts",
"chars": 2080,
"preview": "import fs from 'fs-extra'\nimport getPort from 'get-port'\nimport { nanoid } from 'nanoid'\nimport path from 'node:path'\nim"
},
{
"path": "__tests__/init/package.json",
"chars": 201,
"preview": "{\n \"name\": \"tests-init\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"vitest run\",\n \"watch\": \""
},
{
"path": "__tests__/init/vitest.config.ts",
"chars": 217,
"preview": "import { defineConfig } from 'vitest/config'\n\nconst timeout = 60_000\n\nexport default defineConfig({\n test: {\n testTi"
},
{
"path": "__tests__/tsconfig.json",
"chars": 288,
"preview": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"isolatedModules\": false,\n \"baseUrl\": \".\",\n \"types\":"
},
{
"path": "__tests__/unit/client/theme-default/composables/outline.test.ts",
"chars": 4197,
"preview": "import { resolveHeaders } from 'client/theme-default/composables/outline'\n\nconst element = {\n classList: {\n contains"
},
{
"path": "__tests__/unit/client/theme-default/support/docsearch.test.ts",
"chars": 5342,
"preview": "import {\n buildAskAiConfig,\n hasAskAi,\n hasKeywordSearch,\n mergeLangFacetFilters,\n validateCredentials\n} from 'clie"
},
{
"path": "__tests__/unit/client/theme-default/support/sidebar.test.ts",
"chars": 3601,
"preview": "import { getSidebar, hasActiveLink } from 'client/theme-default/support/sidebar'\n\ndescribe('client/theme-default/support"
},
{
"path": "__tests__/unit/client/theme-default/support/utils.test.ts",
"chars": 501,
"preview": "import { ensureStartingSlash } from 'client/theme-default/support/utils'\n\ndescribe('client/theme-default/utils', () => {"
},
{
"path": "__tests__/unit/node/markdown/plugins/highlight.test.ts",
"chars": 703,
"preview": "import { highlight } from 'node/markdown/plugins/highlight'\n\ndescribe('node/markdown/plugins/highlight', () => {\n test("
},
{
"path": "__tests__/unit/node/markdown/plugins/link.test.ts",
"chars": 1718,
"preview": "import { slugify } from '@mdit-vue/shared'\nimport { MarkdownItAsync } from 'markdown-it-async'\nimport { linkPlugin } fro"
},
{
"path": "__tests__/unit/node/markdown/plugins/snippet.test.ts",
"chars": 11374,
"preview": "import {\n dedent,\n findRegion,\n rawPathToToken\n} from 'node/markdown/plugins/snippet'\n\nconst removeEmptyKeys = <T ext"
},
{
"path": "__tests__/unit/node/postcss/__snapshots__/isolateStyles.test.ts.snap",
"chars": 2792,
"preview": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`node/postcss/isolateStyles > transforms selector"
},
{
"path": "__tests__/unit/node/postcss/isolateStyles.test.ts",
"chars": 2187,
"preview": "import { postcssIsolateStyles } from 'node/postcss/isolateStyles'\nimport postcss from 'postcss'\n\nconst INPUT_CSS = `\n/* "
},
{
"path": "__tests__/unit/node/utils/moduleGraph.test.ts",
"chars": 2074,
"preview": "import { ModuleGraph } from 'node/utils/moduleGraph'\n\ndescribe('node/utils/moduleGraph', () => {\n let graph: ModuleGrap"
},
{
"path": "__tests__/unit/shims.ts",
"chars": 18,
"preview": "export default {}\n"
},
{
"path": "__tests__/unit/vitest.config.ts",
"chars": 867,
"preview": "import vue from '@vitejs/plugin-vue'\nimport { dirname, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:ur"
},
{
"path": "bin/vitepress.js",
"chars": 367,
"preview": "#!/usr/bin/env node\n// @ts-check\n\nimport module from 'node:module'\n\n// https://github.com/vitejs/vite/blob/6c8a5a27e645a"
},
{
"path": "client.d.ts",
"chars": 388,
"preview": "// re-export vite client types. with strict installers like pnpm, user won't\n// be able to reference vite/client in proj"
},
{
"path": "docs/.postcssrc.json",
"chars": 140,
"preview": "{\n \"plugins\": {\n \"postcss-rtlcss\": {\n \"ltrPrefix\": \":where([dir=\\\"ltr\\\"])\",\n \"rtlPrefix\": \":where([dir=\\\"r"
},
{
"path": "docs/.vitepress/config.ts",
"chars": 4732,
"preview": "import {\n defineConfig,\n resolveSiteDataByRoute,\n type HeadConfig\n} from 'vitepress'\nimport {\n groupIconMdPlugin,\n "
},
{
"path": "docs/.vitepress/theme/index.ts",
"chars": 113,
"preview": "import Theme from 'vitepress/theme'\nimport 'virtual:group-icons.css'\nimport './styles.css'\n\nexport default Theme\n"
},
{
"path": "docs/.vitepress/theme/styles.css",
"chars": 893,
"preview": ":root:where(:lang(fa)) {\n --vp-font-family-base:\n 'Vazirmatn', 'Inter', ui-sans-serif, system-ui, sans-serif,\n 'A"
},
{
"path": "docs/components/ComponentInHeader.vue",
"chars": 47,
"preview": "<template>\n <span>⚡</span>\n</template>\n"
},
{
"path": "docs/components/ModalDemo.vue",
"chars": 1641,
"preview": "<script setup lang=\"ts\">\nimport { ref } from 'vue'\nconst showModal = ref(false)\n</script>\n\n<template>\n <button class=\"m"
},
{
"path": "docs/config.ts",
"chars": 4103,
"preview": "import { createRequire } from 'module'\nimport { defineAdditionalConfig, type DefaultTheme } from 'vitepress'\n\nconst requ"
},
{
"path": "docs/en/guide/asset-handling.md",
"chars": 3364,
"preview": "# Asset Handling\n\n## Referencing Static Assets\n\nAll Markdown files are compiled into Vue components and processed by [Vi"
},
{
"path": "docs/en/guide/cms.md",
"chars": 1459,
"preview": "---\noutline: deep\n---\n\n# Connecting to a CMS\n\n## General Workflow\n\nConnecting VitePress to a CMS will largely revolve ar"
},
{
"path": "docs/en/guide/custom-theme.md",
"chars": 5955,
"preview": "# Using a Custom Theme\n\n## Theme Resolving\n\nYou can enable a custom theme by creating a `.vitepress/theme/index.js` or `"
},
{
"path": "docs/en/guide/data-loading.md",
"chars": 7696,
"preview": "# Build-Time Data Loading\n\nVitePress provides a feature called **data loaders** that allows you to load arbitrary data a"
},
{
"path": "docs/en/guide/deploy.md",
"chars": 11918,
"preview": "---\noutline: deep\n---\n\n# Deploy Your VitePress Site\n\nThe following guides are based on some shared assumptions:\n\n- The V"
},
{
"path": "docs/en/guide/extending-default-theme.md",
"chars": 8748,
"preview": "---\noutline: deep\n---\n\n# Extending the Default Theme\n\nVitePress' default theme is optimized for documentation, and can b"
},
{
"path": "docs/en/guide/frontmatter.md",
"chars": 1391,
"preview": "# Frontmatter\n\n## Usage\n\nVitePress supports YAML frontmatter in all Markdown files, parsing them with [gray-matter](http"
},
{
"path": "docs/en/guide/getting-started.md",
"chars": 6017,
"preview": "# Getting Started\n\n## Try It Online\n\nYou can try VitePress directly in your browser on [StackBlitz](https://vitepress.ne"
},
{
"path": "docs/en/guide/i18n.md",
"chars": 3309,
"preview": "# Internationalization\n\nTo use the built-in i18n features, one needs to create a directory structure as follows:\n\n```\ndo"
},
{
"path": "docs/en/guide/markdown.md",
"chars": 21950,
"preview": "# Markdown Extensions\n\nVitePress comes with built in Markdown Extensions.\n\n## Header Anchors\n\nHeaders automatically get "
},
{
"path": "docs/en/guide/migration-from-vitepress-0.md",
"chars": 1337,
"preview": "# Migration from VitePress 0.x\n\nIf you're coming from VitePress 0.x version, there're several breaking changes due to ne"
},
{
"path": "docs/en/guide/migration-from-vuepress.md",
"chars": 949,
"preview": "# Migration from VuePress\n\n## Config\n\n### Sidebar\n\nThe sidebar is no longer automatically populated from frontmatter. Yo"
},
{
"path": "docs/en/guide/mpa-mode.md",
"chars": 1508,
"preview": "# MPA Mode <Badge type=\"warning\" text=\"experimental\" />\n\nMPA (Multi-Page Application) mode can be enabled via the comman"
},
{
"path": "docs/en/guide/routing.md",
"chars": 13156,
"preview": "---\noutline: deep\n---\n\n# Routing\n\n## File-Based Routing\n\nVitePress uses file-based routing, which means the generated HT"
},
{
"path": "docs/en/guide/sitemap-generation.md",
"chars": 1664,
"preview": "# Sitemap Generation\n\nVitePress comes with out-of-the-box support for generating a `sitemap.xml` file for your site. To "
},
{
"path": "docs/en/guide/ssr-compat.md",
"chars": 3529,
"preview": "---\noutline: deep\n---\n\n# SSR Compatibility\n\nVitePress pre-renders the app in Node.js during the production build, using "
},
{
"path": "docs/en/guide/using-vue.md",
"chars": 8103,
"preview": "# Using Vue in Markdown\n\nIn VitePress, each Markdown file is compiled into HTML and then processed as a [Vue Single-File"
},
{
"path": "docs/en/guide/what-is-vitepress.md",
"chars": 5452,
"preview": "# What is VitePress?\n\nVitePress is a [Static Site Generator](https://en.wikipedia.org/wiki/Static_site_generator) (SSG) "
},
{
"path": "docs/en/index.md",
"chars": 2539,
"preview": "---\nlayout: home\n\nhero:\n name: VitePress\n text: Vite & Vue Powered Static Site Generator\n tagline: Markdown to beauti"
},
{
"path": "docs/en/reference/cli.md",
"chars": 2778,
"preview": "# Command Line Interface\n\n## `vitepress dev`\n\nStart VitePress dev server using designated directory as root. Defaults to"
},
{
"path": "docs/en/reference/default-theme-badge.md",
"chars": 1766,
"preview": "# Badge\n\nThe badge lets you add status to your headers. For example, it could be useful to specify the section's type, o"
},
{
"path": "docs/en/reference/default-theme-carbon-ads.md",
"chars": 590,
"preview": "# Carbon Ads\n\nVitePress has built in native support for [Carbon Ads](https://www.carbonads.net/). By defining the Carbon"
},
{
"path": "docs/en/reference/default-theme-config.md",
"chars": 11004,
"preview": "# Default Theme Config\n\nTheme config lets you customize your theme. You can define theme config via the `themeConfig` op"
},
{
"path": "docs/en/reference/default-theme-edit-link.md",
"chars": 1540,
"preview": "# Edit Link\n\n## Site-Level Config\n\nEdit Link lets you display a link to edit the page on Git management services such as"
},
{
"path": "docs/en/reference/default-theme-footer.md",
"chars": 1380,
"preview": "# Footer\n\nVitePress will display global footer at the bottom of the page when `themeConfig.footer` is present.\n\n```ts\nex"
},
{
"path": "docs/en/reference/default-theme-home-page.md",
"chars": 4667,
"preview": "# Home Page\n\nVitePress default theme provides a homepage layout, which you can also see used on [the homepage of this si"
},
{
"path": "docs/en/reference/default-theme-last-updated.md",
"chars": 1394,
"preview": "# Last Updated\n\nThe update time of the last content will be displayed in the lower right corner of the page. To enable i"
},
{
"path": "docs/en/reference/default-theme-layout.md",
"chars": 2278,
"preview": "# Layout\n\nYou may choose the page layout by setting `layout` option to the page [frontmatter](./frontmatter-config). The"
},
{
"path": "docs/en/reference/default-theme-nav.md",
"chars": 5925,
"preview": "# Nav\n\nThe Nav is the navigation bar displayed on top of the page. It contains the site title, global menu links, etc.\n\n"
},
{
"path": "docs/en/reference/default-theme-prev-next-links.md",
"chars": 942,
"preview": "# Prev Next Links\n\nYou can customize the text and link for the previous and next pages (shown at doc footer). This is he"
},
{
"path": "docs/en/reference/default-theme-search.md",
"chars": 9297,
"preview": "---\noutline: deep\n---\n\n# Search\n\n## Local Search\n\nVitePress supports fuzzy full-text search using an in-browser index th"
},
{
"path": "docs/en/reference/default-theme-sidebar.md",
"chars": 4030,
"preview": "# Sidebar\n\nThe sidebar is the main navigation block for your documentation. You can configure the sidebar menu in [`them"
},
{
"path": "docs/en/reference/default-theme-team-page.md",
"chars": 7290,
"preview": "<script setup>\nimport { VPTeamMembers } from 'vitepress/theme'\n\nconst members = [\n {\n avatar: 'https://github.com/yy"
},
{
"path": "docs/en/reference/frontmatter-config.md",
"chars": 4645,
"preview": "---\noutline: deep\n---\n\n# Frontmatter Config\n\nFrontmatter enables page based configuration. In every markdown file, you c"
},
{
"path": "docs/en/reference/runtime-api.md",
"chars": 4567,
"preview": "# Runtime API\n\nVitePress offers several built-in APIs to let you access app data. VitePress also comes with a few built-"
},
{
"path": "docs/en/reference/site-config.md",
"chars": 18774,
"preview": "---\noutline: deep\n---\n\n# Site Config\n\nSite config is where you can define the global settings of the site. App config op"
},
{
"path": "docs/es/config.ts",
"chars": 11606,
"preview": "import { createRequire } from 'module'\nimport { defineAdditionalConfig, type DefaultTheme } from 'vitepress'\n\nconst requ"
},
{
"path": "docs/es/guide/asset-handling.md",
"chars": 3532,
"preview": "# Manejo de Assets {#asset-handling}\n\n## Referenciando Assets Estáticos {#referencing-static-assets}\n\nTodos los archivos"
},
{
"path": "docs/es/guide/cms.md",
"chars": 1616,
"preview": "---\noutline: deep\n---\n\n# Conectando a un CMS {#connecting-to-a-cms}\n\n## Flujo de Trabajo general {#general-workflow}\n\nCo"
},
{
"path": "docs/es/guide/custom-theme.md",
"chars": 6743,
"preview": "# Usando un Tema Personalizado {#using-a-custom-theme}\n\n## Carga de Tema {#theme-resolving}\n\nPuede habilitar un tema per"
},
{
"path": "docs/es/guide/data-loading.md",
"chars": 8641,
"preview": "# Carga de Datos en Tiempo de Compilacion {#build-time-data-loading}\n\nVitePress proporciona un recurso llamado **cargado"
},
{
"path": "docs/es/guide/deploy.md",
"chars": 12554,
"preview": "---\noutline: deep\n---\n\n# Despliegue su Sitio VitePress {#deploy-your-vitepress-site}\n\nLas siguientes orientaciones están"
},
{
"path": "docs/es/guide/extending-default-theme.md",
"chars": 9512,
"preview": "---\noutline: deep\n---\n\n# Extendiendo el Tema por defecto {#extending-the-default-theme}\n\nEl tema por defecto de VitePres"
},
{
"path": "docs/es/guide/frontmatter.md",
"chars": 1678,
"preview": "# Frontmatter\n\n## Uso {#usage}\n\nVitePress soporta frontmatter YAML en todos los archivos Markdown, procesandolos con [gr"
},
{
"path": "docs/es/guide/getting-started.md",
"chars": 6783,
"preview": "# Iniciando {#getting-started}\n\n## Experimente Online {#try-it-online}\n\nPuede experimentar VitePress directamente en su "
},
{
"path": "docs/es/guide/i18n.md",
"chars": 3768,
"preview": "# Internacionalización {#internationalization}\n\nPara usar recursos de i18n integrados, es necesario crear una estructura"
},
{
"path": "docs/es/guide/markdown.md",
"chars": 21681,
"preview": "# Extensiones Markdown {#markdown-extensions}\n\nVitePress viene con Extensiones embutidas.\n\n## Anchors de Header {#header"
},
{
"path": "docs/es/guide/mpa-mode.md",
"chars": 1811,
"preview": "# Modo MPA <Badge type=\"warning\" text=\"experimental\" /> {#mpa-mode}\n\nEl modo MPA (Aplicación de multiples páginas) puede"
},
{
"path": "docs/es/guide/routing.md",
"chars": 11998,
"preview": "---\noutline: deep\n---\n\n# Enrutamiento {#routing}\n\n## Enrutamiento basasdo en Archivos {#file-based-routing}\n\nVitePress u"
},
{
"path": "docs/es/guide/sitemap-generation.md",
"chars": 1720,
"preview": "# Generación de Sitemap {#sitemap-generation}\n\nVitePress viene con soporte embutido para generar un archivo `sitemap.xml"
},
{
"path": "docs/es/guide/ssr-compat.md",
"chars": 4071,
"preview": "---\noutline: deep\n---\n\n# Compatibilidad SSR {#ssr-compatibility}\n\nVitePress pre-renderiza la aplicación en Node.js duran"
},
{
"path": "docs/es/guide/using-vue.md",
"chars": 9182,
"preview": "# Usando Vue en Markdown {#using-vue-in-markdown}\n\nEn VitePress, cada archivo Markdown es compilado para HTML y entonces"
},
{
"path": "docs/es/guide/what-is-vitepress.md",
"chars": 6312,
"preview": "# ¿Qué es VitePress? {#what-is-vitepress}\n\nVitePress es un [Generador de Sitios Estáticos](https://en.wikipedia.org/wiki"
},
{
"path": "docs/es/index.md",
"chars": 2598,
"preview": "---\nlayout: home\n\nhero:\n name: VitePress\n text: Generador de Sitios Estáticos Vite y Vue\n tagline: Markdown para obte"
},
{
"path": "docs/es/reference/cli.md",
"chars": 3007,
"preview": "# Intefaz de Linea de Comando {#command-line-interface}\n\n## `vitepress dev`\n\n Inicia el servidor de desarrollo VitePress"
},
{
"path": "docs/es/reference/default-theme-badge.md",
"chars": 1900,
"preview": "# Badge {#badge}\n\nLos Badge te permite agregar estados a tus encabezados. Por ejemplo, podría resultar útil especificar "
},
{
"path": "docs/es/reference/default-theme-carbon-ads.md",
"chars": 675,
"preview": "# Carbon Ads {#carbon-ads}\n\nVitePress ha incorporado soporte nativo para [Carbon Ads](https://www.carbonads.net/). Al de"
},
{
"path": "docs/es/reference/default-theme-config.md",
"chars": 10632,
"preview": "# Configuración del Tema Predeterminado {#default-theme-config}\n\nLa configuración del tema te permite personalizar tu te"
},
{
"path": "docs/es/reference/default-theme-edit-link.md",
"chars": 1724,
"preview": "# Editar Link {#edit-link}\n\n## Configuración a nivel de sitio {#site-level-config}\n\nEditar enlace le permite mostrar un "
},
{
"path": "docs/es/reference/default-theme-footer.md",
"chars": 1559,
"preview": "# Pie de página {#footer}\n\nVitePress mostrará un pie de página global en la parte inferior de la página cuando `themeCon"
},
{
"path": "docs/es/reference/default-theme-home-page.md",
"chars": 4556,
"preview": "# Página Inicial {#home-page}\n\nEl tema predeterminado de VitePress proporciona un diseño de página de inicio, que tambié"
},
{
"path": "docs/es/reference/default-theme-last-updated.md",
"chars": 857,
"preview": "# Última Actualización {#last-updated}\n\nLa hora en que se actualizó el contenido por última vez se mostrará en la esquin"
},
{
"path": "docs/es/reference/default-theme-layout.md",
"chars": 2670,
"preview": "# Layout {#layout}\n\nPuedes elegir el layout de la página definiendo una opción de `layout` para el [frontmatter](./front"
},
{
"path": "docs/es/reference/default-theme-nav.md",
"chars": 4909,
"preview": "# Navegación {#nav}\n\nRefiriéndose a la barra de navegación que se muestra en la parte superior de la página. Contiene el"
},
{
"path": "docs/es/reference/default-theme-prev-next-links.md",
"chars": 1058,
"preview": "# Links Anterior y Próximo {#prev-next-links}\n\nPuede personalizar el texto y el enlace de los botones Anterior y Siguien"
},
{
"path": "docs/es/reference/default-theme-search.md",
"chars": 10142,
"preview": "---\noutline: deep\n---\n\n# Buscar {#search}\n\n## Busqueda local {#local-search}\n\nVitePress admite la búsqueda de texto comp"
},
{
"path": "docs/es/reference/default-theme-sidebar.md",
"chars": 4348,
"preview": "# Barra Lateral {#sidebar}\n\nLa barra lateral es el bloque de navegación principal de su documentación. Puede configurar "
},
{
"path": "docs/es/reference/default-theme-team-page.md",
"chars": 8175,
"preview": "<script setup>\nimport { VPTeamMembers } from 'vitepress/theme'\n\nconst members = [\n {\n avatar: 'https://github.com/yy"
},
{
"path": "docs/es/reference/frontmatter-config.md",
"chars": 4962,
"preview": "---\noutline: deep\n---\n\n# Configuración Frontmatter {#frontmatter-config}\n\nFrontmatter permite la configuración basada en"
},
{
"path": "docs/es/reference/runtime-api.md",
"chars": 4772,
"preview": "# API en Tiempo de Ejecución {#runtime-api}\n\nVitePress ofrece varias API integradas para permitir el acceso a los datos "
},
{
"path": "docs/es/reference/site-config.md",
"chars": 20433,
"preview": "---\noutline: deep\n---\n\n# Configuración de site {#site-config}\n\nLa configuración del site es donde puede configurar los a"
},
{
"path": "docs/fa/config.ts",
"chars": 11216,
"preview": "import { createRequire } from 'module'\nimport { defineAdditionalConfig, type DefaultTheme } from 'vitepress'\n\nconst requ"
},
{
"path": "docs/fa/guide/asset-handling.md",
"chars": 3570,
"preview": "# مدیریت منابع {#asset-handling}\n\n## ارجاع به منابع ایستا {#referencing-static-assets}\n\nتمام فایلهای Markdown به کامپون"
},
{
"path": "docs/fa/guide/cms.md",
"chars": 1662,
"preview": "---\noutline: deep\n---\n\n# اتصال به یک سیستم مدیریت محتوا (CMS) {#connecting-to-a-cms}\n\n## گامهای کلی {#general-workflow}"
},
{
"path": "docs/fa/guide/custom-theme.md",
"chars": 6087,
"preview": "---\noutline: deep\n---\n\n# استفاده از یک تم سفارشی {#using-a-custom-theme}\n\n## Resolve کردن تم {#theme-resolving}\n\nمیتوان"
},
{
"path": "docs/fa/guide/data-loading.md",
"chars": 8190,
"preview": "# بارگذاری داده در زمان ساخت {#build-time-data-loading}\n\nویتپرس یک ویژگی به نام **بارگذارهای داده** ارائه میدهد که به "
},
{
"path": "docs/fa/guide/deploy.md",
"chars": 11870,
"preview": "---\noutline: deep\n---\n\n# استقرار وبسایت ویتپرس شما {#deploy-your-vitepress-site}\n\nراهنماهای زیر بر اساس برخی فرضیات مش"
},
{
"path": "docs/fa/guide/extending-default-theme.md",
"chars": 8971,
"preview": "---\noutline: deep\n---\n\n# گسترش تم پیشفرض {#extending-the-default-theme}\n\nتم پیشفرض ویتپرس برای مستندات بهینهسازی شده"
},
{
"path": "docs/fa/guide/frontmatter.md",
"chars": 1551,
"preview": "# Frontmatter\n\n## استفاده {#usage}\n\nویتپرس پشتیبانی از frontmatter YAML در تمام فایلهای Markdown را دارد و آنها را با"
},
{
"path": "docs/fa/guide/getting-started.md",
"chars": 6020,
"preview": "# شروع کار {#getting-started}\n\n## تست آنلاین {#try-it-online}\n\nمیتوانید ویتپرس را مستقیماً در مرورگر خود در [StackBlit"
},
{
"path": "docs/fa/guide/i18n.md",
"chars": 3449,
"preview": "# بینالمللیسازی {#internationalization}\n\nبرای استفاده از ویژگیهای داخلی بینالمللیسازی، نیاز است که یک ساختار دایرکت"
},
{
"path": "docs/fa/guide/markdown.md",
"chars": 20153,
"preview": "# افزونههای Markdown {#markdown-extensions}\n\nویتپرس با افزونههای markdown داخلی ارائه شده است.\n\n## لینکهای هدر {#hea"
},
{
"path": "docs/fa/guide/migration-from-vitepress-0.md",
"chars": 1392,
"preview": "# مهاجرت از ویتپرس 0.x\n\nاگر از نسخه 0.x ویتپرس میآیید، تغییرات قابل توجهی به دلیل ویژگیها و بهبودهای جدید وجود دارد."
},
{
"path": "docs/fa/guide/migration-from-vuepress.md",
"chars": 1031,
"preview": "# مهاجرت از VuePress\n\n## پیکربندی\n\n### نوار کناری\n\nنوار کناری دیگر به طور خودکار از frontmatter پر نمیشود. شما میتوانی"
},
{
"path": "docs/fa/guide/mpa-mode.md",
"chars": 1527,
"preview": "# حالت MPA <Badge type=\"warning\" text=\"آزمایشی\" /> {#mpa-mode}\n\nحالت MPA (برنامه چند صفحه) میتواند از طریق خط فرمان با "
},
{
"path": "docs/fa/guide/routing.md",
"chars": 11065,
"preview": "---\noutline: deep\n---\n\n# مسیریابی {#routing}\n\n## مسیریابی مبتنی بر فایل {#file-based-routing}\n\nویتپرس از مسیریابی مبتنی"
},
{
"path": "docs/fa/guide/sitemap-generation.md",
"chars": 1773,
"preview": "# جنریت کردن Sitemap {#sitemap-generation}\n\nویتپرس با پشتیبانی بیرونی برای تولید فایل `sitemap.xml` برای سایت شما ارائه"
},
{
"path": "docs/fa/guide/ssr-compat.md",
"chars": 3739,
"preview": "---\noutline: deep\n---\n\n# تطابق SSR {#ssr-compatibility}\n\nویتپرس، با استفاده از قابلیتهای رندرینگ سمت سرور (SSR) ارائه "
},
{
"path": "docs/fa/guide/using-vue.md",
"chars": 7688,
"preview": "# استفاده از Vue در Markdown {#using-vue-in-markdown}\n\nدر ویتپرس، هر فایل Markdown به HTML تبدیل شده و سپس به عنوان یک"
},
{
"path": "docs/fa/guide/what-is-vitepress.md",
"chars": 5375,
"preview": "# ویتپرس چیست؟ {#what-is-vitepress}\n\nویتپرس یک [تولید کننده سایت ایستا](https://en.wikipedia.org/wiki/Static_site_gene"
},
{
"path": "docs/fa/index.md",
"chars": 2519,
"preview": "---\nlayout: home\n\nhero:\n name: ویتپرس\n text: سازنده سایتهای ایستا به کمک Vite و Vue\n tagline: تبدیل Markdown به مست"
},
{
"path": "docs/fa/reference/cli.md",
"chars": 2917,
"preview": "# رابط خط فرمان {#command-line-interface}\n\n## `vitepress dev` {#vitepress-dev}\n\nشروع سرور توسعه ویتپرس با استفاده از دا"
},
{
"path": "docs/fa/reference/default-theme-badge.md",
"chars": 1957,
"preview": "# نشان {#badge}\n\nبرچسب به شما امکان میدهد وضعیتهای مختلفی را به سربرگهای خود اضافه کنید. به عنوان مثال، میتواند مفید"
},
{
"path": "docs/fa/reference/default-theme-carbon-ads.md",
"chars": 617,
"preview": "# تبلیغات Carbon {#carbon-ads}\n\nویتپرس پشتیبانی داخلی برای [Carbon Ads](https://www.carbonads.net/) را دارد. با تعریف م"
},
{
"path": "docs/fa/reference/default-theme-config.md",
"chars": 10458,
"preview": "# پیکربندی پیشفرض تم {#default-theme-config}\n\nپیکربندی تم به شما امکان میدهد تا تم خود را سفارشی کنید. شما میتوانید پ"
},
{
"path": "docs/fa/reference/default-theme-edit-link.md",
"chars": 1615,
"preview": "# پیوند ویرایش {#edit-link}\n\n## پیکربندی سطح سایت {#site-level-config}\n\nپیوند ویرایش به شما این امکان را میدهد که یک پی"
},
{
"path": "docs/fa/reference/default-theme-footer.md",
"chars": 1469,
"preview": "# پاورقی {#footer}\n\nوقتی `themeConfig.footer` حاضر باشد، ویتپرس پاورقی جهانی را در پایین صفحه نمایش میدهد.\n\n```ts\nexpo"
},
{
"path": "docs/fa/reference/default-theme-home-page.md",
"chars": 4633,
"preview": "# صفحه اصلی {#home-page}\n\nقالب پیشفرض ویتپرس یک طرح صفحه اصلی فراهم میکند که میتوانید آن را همچنین در [صفحه اصلی این"
},
{
"path": "docs/fa/reference/default-theme-last-updated.md",
"chars": 777,
"preview": "# آخرین بروزرسانی {#last-updated}\n\nزمان به روزرسانی آخرین محتوا در گوشه پایین سمت راست صفحه نمایش داده خواهد شد. برای فع"
},
{
"path": "docs/fa/reference/default-theme-layout.md",
"chars": 2452,
"preview": "# طرح بندی {#layout}\n\nمیتوانید طرح صفحه را با تنظیم گزینه `layout` در [frontmatter](./frontmatter-config) صفحه انتخاب ک"
},
{
"path": "docs/fa/reference/default-theme-nav.md",
"chars": 6154,
"preview": "# ناوبری {#nav}\n\nناوبری نوار ناوبری است که در بالای صفحه نمایش داده میشود و شامل عنوان سایت، لینکهای منوی جهانی، و غیر"
},
{
"path": "docs/fa/reference/default-theme-prev-next-links.md",
"chars": 990,
"preview": "# پیوندهای قبلی و بعدی {#prev-next-links}\n\nشما میتوانید متن و پیوند برای صفحات قبلی و بعدی را سفارشیسازی کنید (نمایش د"
},
{
"path": "docs/fa/reference/default-theme-search.md",
"chars": 9725,
"preview": "---\noutline: deep\n---\n\n# جستجو {#search}\n\n## جستجوی محلی {#local-search}\n\nویتپرس از جستجوی متن کامل نامتقارن با استفاده"
},
{
"path": "docs/fa/reference/default-theme-sidebar.md",
"chars": 4059,
"preview": "# نوار کناری {#sidebar}\n\nنوار کناری بلوک اصلی ناوبری برای مستندات شما است. شما میتوانید منوی نوار کناری را در [`themeCo"
},
{
"path": "docs/fa/reference/default-theme-team-page.md",
"chars": 7511,
"preview": "<script setup>\nimport { VPTeamMembers } from 'vitepress/theme'\n\nconst members = [\n {\n avatar: 'https://github.com/yy"
},
{
"path": "docs/fa/reference/frontmatter-config.md",
"chars": 4426,
"preview": "---\noutline: deep\n---\n\n# تنظیمات Frontmatter {#frontmatter-config}\n\nFrontmatter امکان پیکربندی بر اساس صفحه را فراهم می"
},
{
"path": "docs/fa/reference/runtime-api.md",
"chars": 4594,
"preview": "# API زمان اجرا {#runtime-api}\n\nویتپرس چندین API داخلی را ارائه میدهد تا به شما امکان دسترسی به دادههای برنامه را بده"
},
{
"path": "docs/fa/reference/site-config.md",
"chars": 19460,
"preview": "---\noutline: deep\n---\n\n# تنظیمات سایت {#site-config}\n\nتنظیمات سایت جایی است که میتوانید تنظیمات جهانی سایت را تعریف کنی"
},
{
"path": "docs/ja/config.ts",
"chars": 8992,
"preview": "import { createRequire } from 'module'\nimport { defineAdditionalConfig, type DefaultTheme } from 'vitepress'\n\nconst requ"
},
{
"path": "docs/ja/guide/asset-handling.md",
"chars": 2141,
"preview": "# アセットの取り扱い {#asset-handling}\n\n## 静的アセットの参照 {#referencing-static-assets}\n\nすべての Markdown ファイルは Vue コンポーネントにコンパイルされ、[Vite]"
}
]
// ... and 396 more files (download for full content)
About this extraction
This page contains the full source code of the vuejs/vitepress GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 596 files (2.3 MB), approximately 636.9k tokens, and a symbol index with 400 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.