\n\n\u003Cimg width=\"308\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0e1beb6b-d06b-436c-b106-c924fead87ab\" />\n\n\u003Cimg width=\"931\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/aef6f71a-fa28-4b7c-b512-e6386e18159a\" />\n\n### Describe the solution you'd like\n\nIn my [pull request](https://github.com/vuejs/vitepress/pull/4630), I've introduced custom components that can be overridden in the `enhanceApp` function. In these custom components, I can add custom logic for rendering text, such as using the Vue compile function. \n\nAdditionally, I added a flag to skip the title update, allowing for custom logic implementation. \n\nPlease also see my PR: [https://github.com/vuejs/vitepress/pull/4630](https://github.com/vuejs/vitepress/pull/4630).\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [x] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],4637,"Sidenav Components / Skip title update","2025-03-20T12:17:14Z","https://github.com/vuejs/vitepress/issues/4637",0.71738297,{"description":3171,"labels":3172,"number":3177,"owner":3155,"repository":3156,"state":3157,"title":3178,"updated_at":3179,"url":3180,"score":3181},"Hello, VitePress team! Thank you for this awesome project 😄 \n\nI'm trying VP for the first time. The following part of the **[Getting Started](https://vitepress.dev/guide/getting-started)** page is a bit confusing to me:\n\n> VitePress can be used on its own, or be installed into an existing project. In both cases, you can install it with:\n>\n> `npm add -D vitepress`\n\n**What's unclear?**\n\n- My first reaction was: _what_ am I adding this package to? I'm not currently in an npm-managed project. Did they mean `npm add -g vitepress` — maybe it's a scaffolding tool?\n- If the learning flow for new users is to add VP as a dev dependency to a new npm-managed project, I would recommend making those setup steps explicit (e.g. first `mkdir hello-vitepress`, cd `hello-vitepress`, `npm init`, and then `npm add -D vitepress`).\n- What does it mean to use VP \"on its own\"? What would this separate it from?\n\nThe **Setup Wizard** section is clear and helpful. My suggestion might be to make the Setup Wizard the recommended way to get started with VP, rather than presenting multiple learning paths (i.e. create your own project vs. let us scaffold it for you). I'd be happy to make a PR to make this a bit more more self-explanatory to newcomers!\n\n\n",[3173,3176],{"name":3174,"color":3175},"docs","0075ca",{"name":3152,"color":3153},4549,"[docs] \"Getting Started\" is a bit confusing","2025-03-22T14:04:14Z","https://github.com/vuejs/vitepress/issues/4549",0.72073615,{"description":3183,"labels":3184,"number":3185,"owner":3155,"repository":3156,"state":3157,"title":3186,"updated_at":3187,"url":3188,"score":3189},"### Is your feature request related to a problem? Please describe.\n\nWhen a heading comes from a Vue component, it gets an `id` and shows up in the \"On this page\" outline, but the invisible `\u003Ca class=\"header-anchor\">`, which appears on mouse hover, is missing.\n\nMinimal repro:\n\ndocs/index.md\n\n```md\n\u003Cscript setup lang=\"ts\">\nimport AComponent from './AComponent.vue'\n\u003C/script>\n\n## foo {#foo}\n\n\u003CAComponent />\n```\n\ndocs/AComponent.vue\n\n```vue\n\u003Ctemplate>\n \u003Ch2 id=\"bar\">bar\u003C/h2>\n \u003Ch2 id=\"baz\">baz\u003C/h2>\n\u003C/template>\n```\n\nResult: `## bar` and `## baz` appear in the outline and are linkable, but they have no header‑anchor element, so users cannot easily copy a permalink, and the UI feels a bit inconsistent when hovering the mouse over headings added by the component and the ones written in Markdown.\n\n\n### Describe the solution you'd like\n\nDuring the same client‑side pass that builds the outline, scan for any `\u003Ch1‑h6>` with an `id` but lacking `.header-anchor`, and inject an anchor with the same markup VitePress generates for Markdown headings.\n\n\n### Describe alternatives you've considered\n\nManually adding the anchor works...\n\n```html\n\u003Ch2 id=\"qux\">\n qux\n \u003Ca class=\"header-anchor\" href=\"#qux\" aria-label='Permalink to \"qux {#qux}\"'>​\u003C/a>\n\u003C/h2>\n```\n\n...but is somewhat boilerplate and is brittle. It must be manually added to each place where `\u003Ch1‑h6>` is used and will break if the theme changes.\n\n### Additional context\n\nScreencast of how the repro example looks:\n\n\nhttps://github.com/user-attachments/assets/28deb3dc-47d4-4c16-9d30-f491cfb58fda\n\n\n### Validations\n\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [x] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],4867,"Auto‑insert `\u003Ca.header‑anchor>` for headings rendered by Vue components","2025-07-30T19:09:15Z","https://github.com/vuejs/vitepress/issues/4867",0.7287084,{"description":3191,"labels":3192,"number":3194,"owner":3155,"repository":3156,"state":3157,"title":3195,"updated_at":3196,"url":3197,"score":3198},"### Is your feature request related to a problem? Please describe.\n\n1. sometimes need use vue dynamic render highlight content like json list or some thing . if can provide component or function to do that, that will be great.\r\n2. tryed use the vue dynamic component it's not woking , can we use it ? how.\r\n1.有时候需要动态输出 markdown ,能不能加一个从vue 动态输出的功能 。 2. 动态组件用不了,怎么才能用vue 的动态组件\n\n### Describe the solution you'd like\n\n1. sometimes need use vue dynamic render highlight content like json list or some thing . if can provide component or function to do that, that will be great.\r\n2. tryed use the vue dynamic component it's not woking , can we use it ? how.\r\n1.有时候需要动态输出 markdown ,能不能加一个从vue 动态输出的功能 。 2. 动态组件用不了,怎么才能用vue 的动态组件\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3193],{"name":3152,"color":3153},4253,"[Feature request] use vue render highlight section","2024-12-03T17:27:43Z","https://github.com/vuejs/vitepress/issues/4253",0.73354286,{"description":3200,"labels":3201,"number":3205,"owner":3155,"repository":3156,"state":3206,"title":3207,"updated_at":3208,"url":3209,"score":3210},"### Is your feature request related to a problem? Please describe.\n\nThe default page layout is 'doc', which is hard coded. It will easier the user's life to be able to provide an aletrnative layout so that he doesn't need to write a whole theme.\n\n### Describe the solution you'd like\n\nUse dynamic component in VPContent, and add a config option in the themeConfig.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.vuejs.org).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3202],{"name":3203,"color":3204},"need more info","bdbefc",1376,"closed","Customize default page layout","2023-01-21T14:23:05Z","https://github.com/vuejs/vitepress/issues/1376",0.69380426,{"description":3212,"labels":3213,"number":3215,"owner":3155,"repository":3156,"state":3206,"title":3216,"updated_at":3217,"url":3218,"score":3219},"### Is your feature request related to a problem? Please describe.\n\nWhen we want add a common footer section for every page, we have to add other code with \"Content component\". \r\nFor example:\r\n\r\n``` vue\r\n\u003Cdiv class='doc-content-wrapper'>\r\n \u003Cdiv class='doc-content-container'>\r\n \u003CContent\r\n ref='content'\r\n class='doc-content'\r\n @vnode-mounted='updateLink'\r\n @vnode-updated='updateLink'\r\n />\r\n \u003Cdiv class='doc-content'>\r\n \u003CVPComponentCssVar v-if='componentName'\r\n :component-name='componentName'>\u003C/VPComponentCssVar>\r\n \u003C/div>\r\n \u003CVPPageFooter />\r\n \u003CVPPageNav />\r\n \u003C/div>\r\n \u003C/div>\r\n```\n\n### Describe the solution you'd like\n\nAdd a footer and header slot to Content component.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/coc)\n- [X] Read the [docs](https://vitepress.vuejs.org/).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/master/.github/contributing.md).\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[3214],{"name":3203,"color":3204},543,"Please add slots for Content component.","2023-01-21T16:04:18Z","https://github.com/vuejs/vitepress/issues/543",0.7074898,{"description":3221,"labels":3222,"number":3223,"owner":3155,"repository":3156,"state":3206,"title":3224,"updated_at":3225,"url":3226,"score":3227},"### Is your feature request related to a problem? Please describe.\n\nI'm using Vue components that generate headers dynamically, and (of course) the headers I create in Vue components don't appear in the outline.\n\n### Describe the solution you'd like\n\nI'd like to be able to add headers to `page.headers` in my component.\n\n### Describe alternatives you've considered\n\nI tried manipulating `page.headers` in my component from `useData()`, but the headers are read-only at that point.\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.vuejs.org).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],1145,"Dynamic Outline","2023-01-21T14:26:54Z","https://github.com/vuejs/vitepress/issues/1145",0.71138513,{"description":3229,"labels":3230,"number":3231,"owner":3155,"repository":3156,"state":3206,"title":3232,"updated_at":3233,"url":3234,"score":3235},"i want use vitepress become a ui component display website. so i import my sfc in enhanceApp. But at meantime i must config my own `Layout.vue` and `notfound.vue` component. That is not what i want. i liked defaulte theme (vuepress old player) very mush. \r\n\r\n```js\r\nimport Layout from '/@theme/Layout.vue';\r\nimport Helloworld from \"../components/index\"\r\n\r\nexport default {\r\n Layout,\r\n // NotFound,\r\n enhanceApp({ app, router, siteData }) {\r\n app.use(Helloworld) \r\n }\r\n}\r\n```\r\n\r\ni think `@theme/index` should not config default layout and enhanceApp at same time or in the same file. or at least it must follow `Convention over configuration` rule.\r\n\r\nif follow [vuepress default theme file system](https://github.com/vuejs/vuepress/tree/master/packages/%40vuepress/theme-default) and `Convention over configuration`, it will be better\r\n\r\nmaybe use `@theme/layouts/`, `@theme/components/`\r\n\r\nand here is a bug, when a create emptyfile `theme` in `.vitepress` .it will crash",[],58,"want more flexibility in the customization part","2023-01-21T16:20:20Z","https://github.com/vuejs/vitepress/issues/58",0.715862,{"description":3237,"labels":3238,"number":3239,"owner":3155,"repository":3156,"state":3206,"title":3240,"updated_at":3241,"url":3242,"score":3243},"### Is your feature request related to a problem? Please describe.\n\nWhen adding Vue components or HTML markup inside a `doc` or `page` markdown file, it's frustrating to have to contend with the global `.vp-doc` styles.\n\n### Describe the solution you'd like\n\nIt would be very nice to have a `.not-vp-doc` class to negate and opt out of the global `.vp-doc` styles (for the element where you apply `.not-vp-doc` and all descendants) similar to the `.prose` and `.not-prose` classes used by [@tailwindcss/typography](https://github.com/tailwindlabs/tailwindcss-typography).\n\n### Describe alternatives you've considered\n\nI started creating my own override `vp-doc.css` stylesheet, but maintaining it and also getting it imported instead of the default one requires too much duplication files of the default theme.\n\nI also considered mechanisms to opt out of the `.vp-doc` styles at the theme level in `Layout.vue` but it really doesn't solve the problem - the opt-out needs to be able to happen on a specific fragment or component when embedded inside an `.md` file that otherwise consists primarily of markdown content.\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [x] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],4731,"Default theme: Add class to opt out of .vp-doc styles","2025-05-04T08:39:09Z","https://github.com/vuejs/vitepress/issues/4731",0.7164295,["Reactive",3245],{},["Set"],["ShallowReactive",3248],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fFUX0sz2RqAKyZyt1QSNxb1ow36s9Zqz8S7mHwqjYb-8":-1},"/vuejs/vitepress/1091"]