docs: add vitepress-plugin-group-icons (#4437) [lunaria-ignore]

Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
pull/4470/head
Leo 9 months ago committed by Divyansh Singh
parent 74aa6fabaf
commit 63c1ed06a2

@ -5,6 +5,11 @@ import { search as koSearch } from './ko'
import { search as ptSearch } from './pt'
import { search as ruSearch } from './ru'
import { search as zhSearch } from './zh'
import {
groupIconMdPlugin,
groupIconVitePlugin,
localIconLoader
} from 'vitepress-plugin-group-icons'
export const shared = defineConfig({
title: 'VitePress',
@ -55,6 +60,7 @@ export const shared = defineConfig({
`<button title="${codeCopyButtonTitle}" class="copy"></button>`
)
}
md.use(groupIconMdPlugin)
}
},
@ -104,5 +110,18 @@ export const shared = defineConfig({
},
carbonAds: { code: 'CEBDT27Y', placement: 'vuejsorg' }
},
vite: {
plugins: [
groupIconVitePlugin({
customIcon: {
vitepress: localIconLoader(
import.meta.url,
'../../public/vitepress-logo-mini.svg'
),
firebase: 'logos:firebase'
}
})
]
}
})

@ -0,0 +1,4 @@
import Theme from 'vitepress/theme'
import 'virtual:group-icons.css'
export default Theme

@ -49,8 +49,7 @@ interface EnhanceAppContext {
The theme entry file should export the theme as its default export:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// You can directly import Vue files in the theme entry
// VitePress is pre-configured with @vitejs/plugin-vue.
@ -72,8 +71,7 @@ Inside your layout component, it works just like a normal Vite + Vue 3 applicati
The most basic layout component needs to contain a [`<Content />`](../reference/runtime-api#content) component:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Custom Layout!</h1>
@ -172,8 +170,7 @@ If you wish to distribute the theme as an npm package, follow these steps:
To consume an external theme, import and re-export it from the custom theme entry:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
If the theme needs to be extended:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {
@ -195,8 +191,7 @@ export default {
If the theme requires special VitePress config, you will need to also extend it in your own config:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
export default {
@ -207,8 +202,7 @@ export default {
Finally, if the theme provides types for its theme config:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
import { defineConfigWithTheme } from 'vitepress'
import type { ThemeConfig } from 'awesome-vitepress-theme'

@ -8,8 +8,7 @@ Data loaders can be used to fetch remote data, or generate metadata based on loc
A data loader file must end with either `.data.js` or `.data.ts`. The file should provide a default export of an object with the `load()` method:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -84,8 +83,7 @@ export default {
When building a content focused site, we often need to create an "archive" or "index" page: a page where we list all available entries in our content collection, for example blog posts or API pages. We **can** implement this directly with the data loader API, but since this is such a common use case, VitePress also provides a `createContentLoader` helper to simplify this:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* options */)
@ -135,8 +133,7 @@ import { data as posts } from './posts.data.js'
The default data may not suit all needs - you can opt-in to transform the data using options:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -162,8 +159,7 @@ Check out how it is used in the [Vue.js blog](https://github.com/vuejs/blog/blob
The `createContentLoader` API can also be used inside [build hooks](../reference/site-config#build-hooks):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ The following guides are based on some shared assumptions:
- You are using the default build output directory (`.vitepress/dist`).
- VitePress is installed as a local dependency in your project, and you have set up the following scripts in your `package.json`:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f
1. Create a file named `deploy.yml` inside `.github/workflows` directory of your project with some content like this:
```yaml
```yaml [.github/workflows/deploy.yml]
# Sample workflow for building and deploying a VitePress site to GitHub Pages
#
name: Deploy VitePress site to Pages
@ -204,7 +204,7 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f
2. Create a file named `.gitlab-ci.yml` in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -237,7 +237,7 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -248,7 +248,7 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
@ -276,7 +276,7 @@ Don't enable options like _Auto Minify_ for HTML code. It will remove comments f
2. Create a file called `static.json` in the root of your project with the below content:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ Before proceeding, make sure to first read [Using a Custom Theme](./custom-theme
The default theme CSS is customizable by overriding root level CSS variables:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress uses [Inter](https://rsms.me/inter/) as the default font, and will inc
To avoid including Inter in the build output, import the theme from `vitepress/theme-without-fonts` instead:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ If you are using optional components like the [Team Page](../reference/default-t
If your font is a local file referenced via `@font-face`, it will be processed as an asset and included under `.vitepress/dist/assets` with hashed filename. To preload this file, use the [transformHead](../reference/site-config#transformhead) build hook:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// adjust the regex accordingly to match your font
@ -94,8 +91,7 @@ export default {
## Registering Global Components
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
If you're using TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ Since we are using Vite, you can also leverage Vite's [glob import feature](http
The default theme's `<Layout/>` component has a few slots that can be used to inject content at certain locations of the page. Here's an example of injecting a component into the before outline:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -142,8 +136,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -161,8 +154,7 @@ const { Layout } = DefaultTheme
Or you could use render function as well.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -224,9 +216,7 @@ Full list of slots available in the default theme layout:
You can extend the default theme to provide a custom transition when the color mode is toggled. An example:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -120,8 +120,7 @@ By default, VitePress stores its dev server cache in `.vitepress/cache`, and the
The config file (`.vitepress/config.js`) allows you to customize various aspects of your VitePress site, with the most basic options being the title and description of the site:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// site-level options
title: 'VitePress',
@ -147,7 +146,7 @@ VitePress also provides the ability to generate clean URLs, rewrite paths, and d
The tool should have also injected the following npm scripts to your `package.json` if you allowed it to do so during the setup process:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
Then in `docs/.vitepress/config.ts`:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ However, VitePress won't redirect `/` to `/en/` by default. You'll need to confi
**Pro tip:** If using the above approach, you can use `nf_lang` cookie to persist user's language choice:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -905,8 +905,7 @@ This is currently opt-in. To enable it, you need to install `markdown-it-mathjax
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -178,8 +178,7 @@ packages/pkg-b/src/bar.md --> /pkg-b/bar.html
You can achieve this by configuring the [`rewrites`](../reference/site-config#rewrites) option like this:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/index.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
Since [`Theme.enhanceApp`](./custom-theme#theme-interface) can be async, you can conditionally import and register Vue plugins that access browser APIs on import:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
If you're using TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -165,8 +165,7 @@ Refer [`socialLinks`](./default-theme-config#sociallinks).
You can include custom components in the navigation bar by using the `component` option. The `component` key should be the Vue component name, and must be registered globally using [Theme.enhanceApp](../guide/custom-theme#theme-interface).
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
themeConfig: {
nav: [
@ -192,8 +191,7 @@ export default {
Then, you need to register the component globally:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyCustomComponent from './components/MyCustomComponent.vue'

@ -49,8 +49,7 @@ interface EnhanceAppContext {
El archivo de entrada del tema debe exportar el tema como su exportación por defecto:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// Puede importar archivos Vue directamente en el archivo de entrada del tema
// VitePress ya está preconfigurado con @vitejs/plugin-vue.
@ -72,8 +71,7 @@ Dentro de su componente de layout, el funciona como una aplicación Vite + Vue 3
El componente de layout más básico necesita un componente [`<Content />`](../reference/runtime-api#content):
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Layout Personalizado!</h1>
@ -172,8 +170,7 @@ Si desea distribuir su tema como un paquete npm, siga estos pasos:
Para consumir un tema extereno, importelo e reexportelo a partir del archivo de entrada del tema personalizado:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
Si el tema necesita ser extendido:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {

@ -8,8 +8,7 @@ Los cargadores de datos pueden ser usados para buscar datos remotos o generar me
Un archivo de cargados de datos debe terminar con `.data.js` o `.data.ts`. El archivo debe proporcionar una exportación por defecto de un objeto con el método `load()`:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -83,8 +82,7 @@ export default {
Al construir un sitio enfocado en contenido, frecuentemente necesitamos crear una página de "archivo" o "índice": una página donde listamos todas las entradas disponibles en nuestra colección de contenido, por ejemplo, articulos de blog o páginas de API. Nosotros **podemos** implementar esto directamente con el API de cargador de datos, pero como este es un caso de uso tan común, VitePress también proporciona un auxiliar `createContentLoader` para simplificar esto:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* opciones */)
@ -134,8 +132,7 @@ import { data as posts } from './posts.data.js'
Los datos por defecto pueden no atender todas las necesidades - puede optar por transformar los datos usando opciones:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -161,8 +158,7 @@ Vea cómo es usado en el [blog Vue.js](https://github.com/vuejs/blog/blob/main/.
El API `createContentLoader` también puede ser usada dentro de los [build hooks](../reference/site-config#build-hooks):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ Las siguientes orientaciones están basadas en algunos supuestos:
- Está usando la directorio por defecto para el build (`.vitepress/dist`).
- VitePress está instalado como una dependencia local en su proyecto, y usted configuró los siguientes scripts en su `package.json`:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario
1. Cree un archivo llamado `deploy.yml` dentro del directorio `.github/workflows` do seu projeto com algum conteúdo como este:
```yaml
```yaml [.github/workflows/deploy.yml]
# Ejemplo de flujo de trabajo para compilar e implantar un sitio VitePress en GitHub Pages
#
name: Implante el sitio VitePress en Pages
@ -205,7 +205,7 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario
2. Cree un archivo llamado `.gitlab-ci.yml` en la raiz del proyecto con el contenido abajo. Esto construirá e implantará su sitio siempre que haga alteraciones en el contenido.
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -238,7 +238,7 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -249,7 +249,7 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<SU_ID_FIREBASE>"
@ -277,7 +277,7 @@ No active opciones como _Auto Minify_ para código HTML. Eso removera comentario
2. Cree un archivo llamado `static.json` en la raiz de su proyecto con el contenido abajo:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ Antes de seguir, asegurese de leer primero [Usando un Tema Personalizado](./cust
El CSS del tema por defecto puede ser personalizado substuyendo las variables CSS a nivel de la raiz:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress usa [Inter](https://rsms.me/inter/) como fuente por defecto e incluir
Para evitar la inclusión de Inter en la salida de compilación, importe el tema de `vitepress/theme-without-fonts`:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ Si está usando componentes opcionales como los componentes de la [Página del e
Si su fuente es un archivo local referenciado via `@font-face`, ella será procesada como un asset e incluida en `.vitepress/dist/assets` con un nombre de archivo hash. Para pre-cargar ese archivo, use el hook de construcción [transformHead](../reference/site-config#transformhead):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// ajuste el regex para corresponder a su fuente
@ -94,8 +91,7 @@ export default {
## Registrando Componentes Globales {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
Si está usando TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ Como estamos usando Vite, puede también aprovechar la [funcionalidad de importa
El componente `<Layout/>` del tema por defecto posee algunos _slots_ que pueden ser usados para inyectar contenido en lugares específicos de la página. Aqui un ejemplo de como inyectar un componente antes del esquema:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -142,8 +136,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -161,8 +154,7 @@ const { Layout } = DefaultTheme
O puede también usar la función _render_.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -223,9 +215,7 @@ Lista completa de _slots_ disponibles en el layout del tema por defecto:
Puede extender el tema por defecto para proporcionar una transición personalizada cuando el modo de color es alternado. Un ejemplo:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -116,8 +116,7 @@ Por defecto, VitePress almacena el caché del servidor de desarrollo en `.vitepr
El archivo de configuración (`.vitepress/config.js`) permite que personalice vários aspectos de su sitio VitePress, con las opciones más básicas siendo el titulo y la descripción del sitio:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// opciones a nivel del sitio
title: 'VitePress',
@ -143,7 +142,7 @@ VitePress también proporciona la habilidad de generar URLs limpias, retambém f
La herramienta debe tener también inyectado los siguientes scripts npm en su `package.json` si permitió esto durante el proceso de instalación:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
En seguida, en el archivo `docs/.vitepress/config.ts`:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ Sin embargo, VitePress no redireccionará `/` para `/en/` por defecto. Necesitar
**Consejo profesional:** Si está usando la forma descrita arriba, puede usar el cookie `nf_lang` para persistir la selección de idioma del usuario:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -847,8 +847,7 @@ Esto es actualmente opcional. Para activarlo, necesita instalar `markdown-it-mat
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -175,8 +175,7 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html
Puede realizar esto configurando la opción [`rewrites`](../reference/site-config#rewrites) así:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
Como [`Theme.enhanceApp`](./custom-theme#theme-interface) puede ser asíncrono, puede importar condicionalmente y registrar plugins Vue que acceden APIs del navegador en la importación:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
Si está usando TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -53,8 +53,7 @@ interface EnhanceAppContext {
فایل ورودی تم باید تم را به عنوان export پیش‌فرض خود export کند:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// شما می‌توانید فایل‌های Vue را مستقیماً در ورودی تم وارد کنید
// ویت‌پرس با @vitejs/plugin-vue پیش‌تنظیم شده است.
@ -76,8 +75,7 @@ export پیش‌فرض تنها قراردادی برای یک تم سفارشی
بیشترین لایه‌ی پایه‌ای نیازمند دارای یک کامپوننت `<Content />` است:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>طرح سفارشی!</h1>
@ -176,8 +174,7 @@ const { page, frontmatter } = useData()
برای مصرف یک تم خارجی، آن را از ورودی تم سفارشی وارد و دوباره export کنید:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -185,8 +182,7 @@ export default Theme
اگر تم نیاز به گسترش دارد:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {
@ -199,8 +195,7 @@ export default {
اگر تم نیاز به پیکربندی خاص ویت‌پرس دارد، شما همچنین باید آن را در پیکربندی خود گسترش دهید:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
export default {
@ -211,8 +206,7 @@ export default {
سرانجام، اگر تم انواع خود را برای پیکربندی تم‌اش ارائه می‌دهد:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
import { defineConfigWithTheme } from 'vitepress'
import type { ThemeConfig } from 'awesome-vitepress-theme'
@ -223,4 +217,4 @@ export default defineConfigWithTheme<ThemeConfig>({
// نوع `ThemeConfig` است
}
})
```
```

@ -8,8 +8,7 @@
یک فایل بارگذار داده باید با `.data.js` یا `.data.ts` پایان یابد. فایل باید یک صادرات پیش‌فرض از یک شی با متد `load()` داشته باشد:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -84,8 +83,7 @@ export default {
وقتی که در حال ساختن یک سایت متمرکز بر محتوا هستیم، اغلب نیاز به ایجاد یک "بایگانی" یا "فهرست" صفحه داریم: یک صفحه که ما همه ورودی‌های موجود در مجموعه محتوای خود را لیست می‌کنیم، به عنوان مثال پست‌های وبلاگ یا صفحات API. ما می‌توانیم این کار را مستقیماً با API بارگذار داده انجام دهیم، اما از آنجا که این یک حالت استفاده رایج است، ویت‌پرس همچنین یک کمک‌کننده به نام `createContentLoader` را فراهم می‌کند تا این فرآیند را ساده‌تر کند:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* گزینه‌ها */)
@ -137,8 +135,7 @@ import { data as posts } from './posts.data.js'
احتمالاً داده پیش‌فرض به تمام نیازها پاسخ نمی‌دهد - شما می‌توانید با استفاده از گزینه‌ها به تبدیل داده‌ها مشترک شوید:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -164,8 +161,7 @@ export default createContentLoader('posts/*.md', {
API `createContentLoader` همچنین می‌تواند در داخل [هوک‌های ساخت](../reference/site-config#build-hooks) استفاده شود:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()
@ -247,4 +243,4 @@ export default defineLoader({
import type { SiteConfig } from 'vitepress'
const config: SiteConfig = (globalThis as any).VITEPRESS_CONFIG
```
```

@ -10,7 +10,7 @@ outline: deep
- شما از دایرکتوری خروجی پیش‌فرض ساخته‌شده (`.vitepress/dist`) استفاده می‌کنید.
- ویت‌پرس به‌عنوان یک وابستگی محلی در پروژه شما نصب شده است و شما اسکریپت‌های زیر را در `package.json` پیکربندی کرده‌اید:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ Cache-Control: max-age=31536000,immutable
1. یک فایل به نام `deploy.yml` در دایرکتوری `.github/workflows` پروژه خود ایجاد کنید با محتوایی مانند زیر:
```yaml
```yaml [.github/workflows/deploy.yml]
# Sample workflow for building and deploying a ویت‌پرس site to GitHub Pages
#
name: Deploy ویت‌پرس site to Pages
@ -202,7 +202,7 @@ Cache-Control: max-age=31536000,immutable
2. یک فایل به نام `.gitlab-ci.yml` در ریشه پروژه خود با محتوای زیر ایجاد کنید. این کار به ساخت و انتشار وب‌سایت شما هر زمانی که تغییری در محتوا ایجاد می‌کنید، می‌پردازد:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -235,7 +235,7 @@ Cache-Control: max-age=31536000,immutable
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -246,7 +246,7 @@ Cache-Control: max-age=31536000,immutable
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
@ -274,7 +274,7 @@ Cache-Control: max-age=31536000,immutable
2. یک فایل به نام `static.json` در ریشه پروژه خود با محتوای زیر ایجاد کنید:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ outline: deep
CSS تم پیش‌فرض با نادیده گرفتن متغیرهای CSS سطح ریشه قابل سفارشی‌سازی است:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ export default DefaultTheme
برای جلوگیری از شامل شدن Inter در خروجی ساخته‌شده، تم را به جای `vitepress/theme-without-fonts` وارد کنید:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ export default DefaultTheme
اگر فونت شما یک فایل محلی است که از طریق `@font-face` ارجاع شده است، به عنوان یک دارایی پردازش می‌شود و با نام فایل هشداردار در `.vitepress/dist/assets` شامل می‌شود. برای پیش‌بارگذاری این فایل، از هوک ساخت [transformHead](../reference/site-config#transformhead) استفاده کنید:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// منظور شده برای همسان سازی font خود، regex مورد نیاز را تنظیم کنید
@ -94,8 +91,7 @@ export default {
## ثبت مولفه‌های عمومی {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
اگر از TypeScript استفاده می‌کنید:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ export default {
کامپوننت `<Layout/>` تم پیش‌فرض چندین slot دارد که می‌توانید محتوا را در موقعیت‌های مختلف صفحه در آن‌ها درج کنید. در زیر مثالی از درج یک کامپوننت در قبل از طرح داده شده است:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -141,8 +135,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -162,8 +155,7 @@ const { Layout } = DefaultTheme
یا می‌توانید از تابع رندر نیز استفاده کنید.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -226,9 +218,7 @@ export default {
شما می‌توانید تم پیش‌فرض را گسترش دهید تا هنگام تغییر حالت رنگ، یک انتقال سفارشی را فراهم کند. به عنوان مثال:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -340,4 +330,4 @@ export default defineConfig({
})
```
برای دریافت نام دقیق کامپوننت به [کد منبع ما](https://github.com/vuejs/vitepress/tree/main/src/client/theme-default/components) مراجعه کنید. از آنجا که کامپوننت‌ها داخلی هستند، احتمال آنکه نام آن‌ها بین انتشارات کوچک تغییر کند، وجود دارد.
برای دریافت نام دقیق کامپوننت به [کد منبع ما](https://github.com/vuejs/vitepress/tree/main/src/client/theme-default/components) مراجعه کنید. از آنجا که کامپوننت‌ها داخلی هستند، احتمال آنکه نام آن‌ها بین انتشارات کوچک تغییر کند، وجود دارد.

@ -125,8 +125,7 @@ $ bun vitepress init
فایل پیکربندی (`.vitepress/config.js`) به شما اجازه می‌دهد جنبه‌های مختلف سایت ویت‌پرس خود را سفارشی کنید، با گزینه‌های پایه‌ای مانند عنوان و توضیحات سایت:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// گزینه‌های سطح سایت
title: 'ویت‌پرس',
@ -152,7 +151,7 @@ export default {
این ابزار باید اسکریپت‌های npm زیر را به `package.json` شما اضافه کرده باشد اگر اجازه این کار را در طول فرآیند راه‌اندازی داده باشید:
```json
```json [package.json]
{
...
"scripts": {
@ -222,4 +221,4 @@ $ bun vitepress dev docs
- اگر می‌خواهید ظاهر سایت خود را بیشتر سفارشی کنید، بررسی کنید که چگونه [تم پیش‌فرض را گسترش دهید](./extending-default-theme) یا [یک تم سفارشی بسازید](./custom-theme).
- هنگامی که سایت مستندات شما شکل گرفت، حتماً [راهنمای استقرار](./deploy) را بخوانید.
- هنگامی که سایت مستندات شما شکل گرفت، حتماً [راهنمای استقرار](./deploy) را بخوانید.

@ -13,7 +13,7 @@ docs/
سپس در `docs/.vitepress/config.ts` به شکل زیر عمل کنید:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ docs/
**نکته حرفه‌ای:** در صورت استفاده از روش فوق، می‌توانید از کوکی `nf_lang` برای ثبت انتخاب زبان کاربر استفاده کنید:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData } from 'vitepress'
import { watchEffect } from 'vue'
@ -110,4 +107,4 @@ watchEffect(() => {
## پشتیبانی از RTL (آزمایشی) {#rtl-support-experimental}
برای پشتیبانی از RTL، `dir: 'rtl'` را در پیکربندی مشخص کنید و از پلاگین‌های PostCSS RTLCSS مانند <https://github.com/MohammadYounes/rtlcss>، <https://github.com/vkalinichev/postcss-rtl> یا <https://github.com/elchininet/postcss-rtlcss> استفاده کنید. باید پلاگین PostCSS خود را به کارگیری `:where([dir="ltr"])` و `:where([dir="rtl"])` به عنوان پیشوندها جلوگیری از مشکلات اولویت CSS استفاده کنید.
برای پشتیبانی از RTL، `dir: 'rtl'` را در پیکربندی مشخص کنید و از پلاگین‌های PostCSS RTLCSS مانند <https://github.com/MohammadYounes/rtlcss>، <https://github.com/vkalinichev/postcss-rtl> یا <https://github.com/elchininet/postcss-rtlcss> استفاده کنید. باید پلاگین PostCSS خود را به کارگیری `:where([dir="ltr"])` و `:where([dir="rtl"])` به عنوان پیشوندها جلوگیری از مشکلات اولویت CSS استفاده کنید.

@ -836,8 +836,7 @@ export default config
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true
@ -919,4 +918,4 @@ export default defineConfig({
})
```
برای دیدن لیست کامل خصوصیات قابل تنظیم، به [مرجع تنظیمات: پیکربندی برنامه](../reference/site-config#markdown) مراجعه کنید.
برای دیدن لیست کامل خصوصیات قابل تنظیم، به [مرجع تنظیمات: پیکربندی برنامه](../reference/site-config#markdown) مراجعه کنید.

@ -178,8 +178,7 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html
می‌توانید این کار را با پیکربندی گزینه [`rewrites`](../reference/site-config#rewrites) مانند زیر انجام دهید:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md',
@ -374,4 +373,4 @@ export default {
```md
<!-- @content -->
```
```

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
از آنجا که `Theme.enhanceApp` می‌تواند async باشد، می‌توانید به صورت شرطی پلاگین‌های Vue را که دسترسی به APIهای مرورگر را هنگام وارد کردن دارند، وارد و ثبت کنید:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
اگر از TypeScript استفاده می‌کنید:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {
@ -133,4 +131,4 @@ const ClientComp = defineClientComponent(
</template>
```
کامپوننت مقصد فقط در هوک Mounted کامپوننت پوشش وارد می‌شود.
کامپوننت مقصد فقط در هوک Mounted کامپوننت پوشش وارد می‌شود.

@ -166,8 +166,7 @@ export default {
می‌توانید اجزای سفارشی را در نوار ناوبری با استفاده از گزینه `component` اضافه کنید. کلید `component` باید نام مؤلفه Vue باشد و باید به صورت جهانی با استفاده از [Theme.enhanceApp](../guide/custom-theme#theme-interface) ثبت شود.
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
themeConfig: {
nav: [
@ -193,8 +192,7 @@ export default {
سپس، شما باید مؤلفه را به صورت جهانی ثبت کنید:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyCustomComponent from './components/MyCustomComponent.vue'
@ -214,4 +212,4 @@ export default {
- `screenMenu`: یک بولین اختیاری که نشان می‌دهد آیا مؤلفه در منوی ناوبری تلفن همراه است یا خیر
می‌توانید یک نمونه را در آزمایش‌های e2e [اینجا](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress) بررسی کنید.
می‌توانید یک نمونه را در آزمایش‌های e2e [اینجا](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress) بررسی کنید.

@ -49,8 +49,7 @@ interface EnhanceAppContext {
테마 엔트리 파일은 테마(Theme 객체)를 "export default" 해야 합니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// 테마 엔트리에서 Vue 파일을 직접 "import" 할 수 있습니다.
// VitePress는 @vitejs/plugin-vue가 사전 구성되어 있습니다.
@ -72,8 +71,7 @@ export default {
가장 기본적인 레이아웃 컴포넌트는 [`<Content />`](../reference/runtime-api#content) 컴포넌트가 포함되어야 합니다:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Custom Layout!</h1>
@ -172,8 +170,7 @@ const { page, frontmatter } = useData()
외부 테마를 사용하려면, 커스텀 테마 엔트리에서 테마를 "import" 후 다시 "export"합니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
테마를 확장해야 하는 경우:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {
@ -195,8 +191,7 @@ export default {
테마가 특별한 VitePress 구성을 요구하는 경우, 해당 구성을 (외부 커스텀 테마를 사용하는 자신의) 구성 파일에서도 확장해야 합니다:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
export default {
@ -207,8 +202,7 @@ export default {
마지막으로 테마가 테마 구성에 대한 타입을 제공하는 경우:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
import { defineConfigWithTheme } from 'vitepress'
import type { ThemeConfig } from 'awesome-vitepress-theme'

@ -8,8 +8,7 @@ VitePress는 페이지나 컴포넌트에서 임의의 데이터를 로드하고
데이터 로더 파일은 반드시 `.data.js` 또는 `.data.ts`로 끝나야 합니다. 이 파일은 `load()` 메서드를 가진 객체를 "export default" 해야 합니다:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -84,8 +83,7 @@ export default {
콘텐츠가 많은 사이트를 구축할 때, 종종 "아카이브" 또는 "인덱스" 페이지를 만들어야 합니다. 이 페이지는 콘텐츠 모음에 있는 모든 항목(예: 블로그 게시물, API 페이지)을 나열하는 페이지입니다. 데이터 로더 API를 직접 사용하여 이를 구현할 수 있지만, VitePress는 이러한 일반적인 사용 사례를 간소화하기 위해 `createContentLoader` 헬퍼를 제공합니다:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* options */)
@ -135,8 +133,7 @@ import { data as posts } from './posts.data.js'
기본 데이터가 모든 요구 사항에 충족하지 않을 수 있습니다. 옵션을 사용하여 데이터를 변환할 수 있습니다:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -162,8 +159,7 @@ export default createContentLoader('posts/*.md', {
`createContentLoader` API는 [빌드 훅](../reference/site-config#build-hooks) 내에서도 사용할 수 있습니다:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ outline: deep
- 기본 빌드 출력 디렉토리(`.vitepress/dist`)를 사용하고 있다.
- VitePress는 프로젝트의 로컬 종속성으로 설치되어 있으며, `package.json`에 다음 스크립트가 설정되어 있다:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는
1. 프로젝트의 `.github/workflows` 디렉토리 안에 `deploy.yml`이라는 파일을 만들고 다음과 같은 내용을 추가하세요:
```yaml
```yaml [.github/workflows/deploy.yml]
# VitePress 사이트를 GitHub Pages에 빌드하고 배포하는 샘플 워크플로우
#
name: VitePress 사이트를 Pages에 배포
@ -203,7 +203,7 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는
2. 변경 사항을 적용할 때마다 사이트를 빌드하고 배포하도록 하기 위해 프로젝트의 루트에 다음 내용을 가진 `.gitlab-ci.yml` 파일을 생성하세요:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -236,7 +236,7 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -247,7 +247,7 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
@ -275,7 +275,7 @@ HTML 코드에 대해 _Auto Minify_ 옵션을 활성화하지 마세요. 이는
2. 프로젝트 루트에 아래 내용을 포함한 `static.json` 파일을 생성하세요:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ VitePress의 기본 테마는 문서화에 최적화되어 있으며, 커스텀
기본 테마의 CSS는 루트 레벨의 CSS 변수를 재정의하여 커스터마이징 할 수 있습니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress는 기본 폰트로 [Inter](https://rsms.me/inter/)를 사용하며,
빌드 결과물에 Inter를 포함시키지 않으려면, `vitepress/theme-without-fonts`에서 테마를 "import" 합니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ export default DefaultTheme
폰트가 `@font-face`를 통해 참조된 로컬 파일인 경우, 에셋으로 처리되어 해시된 파일 이름으로 `.vitepress/dist/assets`에 포함됩니다. 이 파일을 미리 로드하려면 [transformHead](../reference/site-config#transformhead) 빌드 훅을 사용해야 합니다:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// 폰트를 매칭하기 위해 정규식을 적절히 조정하세요
@ -94,8 +91,7 @@ export default {
## 전역 컴포넌트 등록하기 {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
TypeScript를 사용하는 경우:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ Vite를 사용하므로, Vite의 [glob import 기능](https://vitejs.dev/guide/f
기본 테마의 `<Layout/>` 컴포넌트는 페이지의 특정 위치에 컨텐츠를 삽입할 수 있는 몇 가지 슬롯을 가지고 있습니다. 다음은 아웃라인 앞에 컴포넌트를 삽입하는 예제입니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -142,8 +136,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -161,8 +154,7 @@ const { Layout } = DefaultTheme
또는 렌더 함수를 사용할 수도 있습니다.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -224,9 +216,7 @@ export default {
기본 테마를 확장하여 컬러 모드가 전환될 때 커스텀 트랜지션 효과를 제공할 수 있습니다. 예제:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -121,8 +121,7 @@ VitePress 프로젝트를 `./docs`에 구축하기로 한 경우, 생성된 파
구성 파일(`.vitepress/config.js`)을 사용하면 사이트의 제목과 설명과 같은 VitePress 사이트의 다양한 측면을 커스터마이즈할 수 있습니다:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// 사이트 옵션
title: 'VitePress',
@ -148,7 +147,7 @@ VitePress는 **파일 기반 라우팅**을 사용합니다: 각 `.md` 파일은
설치 과정에서 허용한 경우, 도구는 다음 npm 스크립트를 `package.json`에 추가했을 것입니다:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
그런 다음 `docs/.vitepress/config.ts`에서:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ docs/
**전문가 팁:** 위의 접근 방식을 사용하는 경우 `nf_lang` 쿠키를 사용하여 유저의 언어 선택을 유지할 수 있습니다:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -883,8 +883,7 @@ Can be created using `.foorc.json`.
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -176,8 +176,7 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html
이것은 [`rewrites`](../reference/site-config#rewrites) 옵션을 구성하여 구현할 수 있습니다:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
[`Theme.enhanceApp`](./custom-theme#theme-interface)은 비동기로 사용할 수 있기 때문에, "import" 시 브라우저 API에 접근하는 Vue 플러그인을 조건부로 "import"하고 등록할 수 있습니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
TypeScript를 사용하는 경우:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -165,8 +165,7 @@ export default {
네비게이션 바에 커스텀 컴포넌트를 포함하려면 `component` 옵션을 사용하세요. `component` 키는 Vue 컴포넌트 이름이어야 하며, [Theme.enhanceApp](../guide/custom-theme#theme-interface)을 사용하여 전역적으로 등록해야 합니다.
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
themeConfig: {
nav: [
@ -192,8 +191,7 @@ export default {
그런 다음, 컴포넌트를 전역적으로 등록해야 합니다:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyCustomComponent from './components/MyCustomComponent.vue'

@ -14,6 +14,7 @@
"markdown-it-mathjax3": "^4.3.2",
"open-cli": "^8.0.0",
"postcss-rtlcss": "^5.6.0",
"vitepress": "workspace:*"
"vitepress": "workspace:*",
"vitepress-plugin-group-icons": "^1.3.2"
}
}

@ -49,8 +49,7 @@ interface EnhanceAppContext {
O arquivo de entrada do tema deve exportar o tema como sua exportação padrão:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// Você pode importar arquivos Vue diretamente no arquivo de entrada do tema
// VitePress já está pré-configurado com @vitejs/plugin-vue.
@ -72,8 +71,7 @@ Dentro do seu componente de layout, ele funciona como uma aplicação Vite + Vue
O componente de layout mais básico precisa conter um componente [`<Content />`](../reference/runtime-api#content):
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Layout Personalizado!</h1>
@ -172,8 +170,7 @@ Se você deseja distribuir seu tema como um pacote npm, siga estas etapas:
Para consumir um tema externo, importe-o e reexporte-o a partir do arquivo de entrada do tema personalizado:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
Se o tema precisar ser estendido:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {

@ -8,8 +8,7 @@ Os carregadores de dados podem ser usados para buscar dados remotos ou gerar met
Um arquivo de carregador de dados deve terminar com `.data.js` ou `.data.ts`. O arquivo deve fornecer uma exportação padrão de um objeto com o método `load()`:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -84,8 +83,7 @@ export default {
Ao construir um site focado em conteúdo, frequentemente precisamos criar uma página de "arquivo" ou "índice": uma página onde listamos todas as entradas disponíveis em nossa coleção de conteúdo, por exemplo, artigos de blog ou páginas de API. Nós **podemos** implementar isso diretamente com a API de carregador de dados, mas como este é um caso de uso tão comum, VitePress também fornece um auxiliar `createContentLoader` para simplificar isso:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* opções */)
@ -135,8 +133,7 @@ import { data as posts } from './posts.data.js'
Os dados padrão podem não atender a todas as necessidades - você pode optar por transformar os dados usando opções:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -162,8 +159,7 @@ Veja como é usado no [blog Vue.js](https://github.com/vuejs/blog/blob/main/.vit
A API `createContentLoader` também pode ser usada dentro dos [ganchos de construção](../reference/site-config#build-hooks):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ Os guias a seguir são baseados em alguns pressupostos:
- Você está usando o diretório de saída de compilação padrão (`.vitepress/dist`).
- VitePress está instalado como uma dependência local em seu projeto, e você configurou os seguintes scripts em seu `package.json`:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment
1. Crie um arquivo chamado `deploy.yml` dentro do diretório `.github/workflows` do seu projeto com algum conteúdo como este:
```yaml
```yaml [.github/workflows/deploy.yml]
# Exemplo de fluxo de trabalho para compilar e implantar um site VitePress no GitHub Pages
#
name: Implante o site VitePress no Pages
@ -206,7 +206,7 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment
2. Crie um arquivo chamado `.gitlab-ci.yml` na raiz do seu projeto com o conteúdo abaixo. Isso construirá e implantará seu site sempre que você fizer alterações no conteúdo:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -239,7 +239,7 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -250,7 +250,7 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<SEU_ID_FIREBASE>"
@ -278,7 +278,7 @@ Não ative opções como _Auto Minify_ para código HTML. Isso removerá coment
2. Crie um arquivo chamado `static.json` na raiz do seu projeto com o conteúdo abaixo:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ Antes de prosseguir, certifique-se de ler primeiro [Usando um Tema Personalizado
O CSS do tema padrão pode ser personalizado substituindo as variáveis CSS no nível raiz:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress usa [Inter](https://rsms.me/inter/) como fonte padrão e incluirá as
Para evitar a inclusão de Inter na saída de compilação, importe o tema de `vitepress/theme-without-fonts`:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ Se estiver usando componentes opcionais como os componentes da [Página da Equip
Se a sua fonte é um arquivo local referenciado via `@font-face`, ela será processada como um ativo e incluída em `.vitepress/dist/assets` com um nome de arquivo hash. Para pré-carregar esse arquivo, use o gancho de construção [transformHead](../reference/site-config#transformhead):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// ajuste o regex para corresponder à sua fonte
@ -94,8 +91,7 @@ export default {
## Registrando Componentes Globais {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
Se estiver usando TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ Como estamos usando Vite, você também pode aproveitar a [funcionalidade de imp
O componente `<Layout/>` do tema padrão possui alguns _slots_ que podem ser usados para injetar conteúdo em locais específicos da página. Aqui está um exemplo de como injetar um componente antes do esquema :
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -142,8 +136,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -161,8 +154,7 @@ const { Layout } = DefaultTheme
Ou você também pode usar a função _render_.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -223,9 +215,7 @@ Lista completa de _slots_ disponíveis no layout do tema padrão:
Você pode estender o tema padrão para fornecer uma transição personalizada quando o modo de cor é alternado. Um exemplo:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -120,8 +120,7 @@ Por padrão, VitePress armazena o cache do servidor de desenvolvimento em `.vite
O arquivo de configuração (`.vitepress/config.js`) permite que você personalize vários aspectos do seu site VitePress, com as opções mais básicas sendo o título e a descrição do site:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// opções a nível do site
title: 'VitePress',
@ -147,7 +146,7 @@ VitePress também fornece a habilidade de gerar URLs limpas, reescrever caminhos
A ferramenta deve ter também injetado os seguintes scripts npm no seu `package.json` se você permitiu isso durante o processo de instalação:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
Em seguida, no arquivo `docs/.vitepress/config.ts`:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ No entanto, VitePress não redirecionará `/` para `/en/` por padrão. Você pre
**Dica profissional:** Se estiver usando a abordagem acima, você pode usar o cookie `nf_lang` para persistir a escolha de idioma do usuário:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -846,8 +846,7 @@ Isso é atualmente opcional. Para ativá-lo, você precisa instalar `markdown-it
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -175,8 +175,7 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html
Você pode realizar isso configurando a opção [`rewrites`](../reference/site-config#rewrites) assim:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
Como [`Theme.enhanceApp`](./custom-theme#theme-interface) pode ser assíncrono, você pode importar condicionalmente e registrar plugins Vue que acessam APIs do navegador na importação:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
Se estiver usando TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -49,8 +49,7 @@ interface EnhanceAppContext {
Файл входа темы должен экспортировать тему по умолчанию:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// Вы можете напрямую импортировать файлы Vue в файле входа темы.
// VitePress предварительно настроен с помощью @vitejs/plugin-vue.
@ -72,8 +71,7 @@ export default {
Самый базовый компонент макета должен содержать компонент [`<Content />`](../reference/runtime-api#content):
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Пользовательский макет!</h1>
@ -172,8 +170,7 @@ const { page, frontmatter } = useData()
Чтобы использовать внешнюю тему, импортируйте и реэкспортируйте её из элемента пользовательской темы:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
Если тема требует расширения:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {
@ -195,8 +191,7 @@ export default {
Если тема требует специальных настроек VitePress, вам нужно будет также расширить их в своем собственном конфиге:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
export default {
@ -207,8 +202,7 @@ export default {
Наконец, если тема предоставляет типы для своего конфига темы:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
import { defineConfigWithTheme } from 'vitepress'
import type { ThemeConfig } from 'awesome-vitepress-theme'

@ -8,8 +8,7 @@ VitePress предоставляет функцию **загрузчиков д
Файл загрузчика данных должен заканчиваться либо `.data.js`, либо `.data.ts`. Файл должен предоставлять экспорт объекта по умолчанию с помощью метода `load()`:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -83,8 +82,7 @@ export default {
При создании сайта, ориентированного на контент, нам часто приходится создавать страницы типа «архив», или «индекс», на которых мы перечисляем все доступные записи в нашей коллекции контента. Например, записи в блоге или страницы API. Мы **можем** реализовать это напрямую с помощью API загрузчика данных, но поскольку это очень распространённый случай использования, VitePress также предоставляет функцию `createContentLoader`, чтобы упростить эту задачу:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md' /* параметры */)
@ -134,8 +132,7 @@ import { data as posts } from './posts.data.js'
Данные по умолчанию могут не соответствовать всем требованиям — вы можете изменить данные с помощью параметров:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -165,8 +162,7 @@ export default createContentLoader('posts/*.md', {
API `createContentLoader` также можно использовать внутри [хуков сборки](../reference/site-config#build-hooks):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ outline: deep
- Вы используете выходной каталог сборки по умолчанию (`.vitepress/dist`).
- VitePress установлен как локальная зависимость в вашем проекте, и вы установили следующие скрипты в вашем `package.json`:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ Cache-Control: max-age=31536000,immutable
1. Создайте файл с именем `deploy.yml` в директории `.github/workflows` вашего проекта с примерно таким содержанием:
```yaml
```yaml [.github/workflows/deploy.yml]
# Пример рабочего процесса для создания и развёртывания сайта VitePress на GitHub Pages
#
name: Deploy VitePress site to Pages
@ -204,7 +204,7 @@ Cache-Control: max-age=31536000,immutable
2. Создайте файл с именем `.gitlab-ci.yml` в корне вашего проекта с приведённым ниже содержимым. Это позволит создавать и развёртывать ваш сайт каждый раз, когда вы вносите изменения в его содержимое:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -237,7 +237,7 @@ Cache-Control: max-age=31536000,immutable
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -248,7 +248,7 @@ Cache-Control: max-age=31536000,immutable
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
@ -276,7 +276,7 @@ Cache-Control: max-age=31536000,immutable
2. Создайте файл `static.json` в корне вашего проекта со следующим содержимым:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ outline: deep
CSS темы по умолчанию можно настроить, переопределив переменные CSS корневого уровня:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress использует [Inter](https://rsms.me/inter/) в качеств
Чтобы не включать Inter в вывод сборки, импортируйте тему из `vitepress/theme-without-fonts`:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ export default DefaultTheme
Если ваш шрифт — это локальный файл, на который ссылаются через `@font-face`, он будет обработан как ресурс и включён в каталог `.vitepress/dist/assets` с хэшированным именем файла. Чтобы предварительно загрузить этот файл, используйте хук сборки [transformHead](../reference/site-config#transformhead):
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// настраиваем regex соответствующим образом, чтобы он соответствовал вашему шрифту
@ -94,8 +91,7 @@ export default {
## Регистрация глобальных компонентов {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -110,8 +106,7 @@ export default {
Если вы используете TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -130,8 +125,7 @@ export default {
Компонент `<Layout/>` темы по умолчанию имеет несколько слотов, которые можно использовать для вставки содержимого в определённые места страницы. Вот пример внедрения компонента в структуру before:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -143,8 +137,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -162,8 +155,7 @@ const { Layout } = DefaultTheme
Также можно использовать функцию рендеринга.
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -225,9 +217,7 @@ export default {
Вы можете расширить стандартную тему, чтобы обеспечить пользовательский переход при переключении цветового режима. Пример:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -120,8 +120,7 @@ $ bun vitepress init
Файл конфигурации (`.vitepress/config.js`) позволяет настраивать различные аспекты сайта VitePress, самыми основными из которых являются название и описание сайта:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// параметры сайта
title: 'Заголовок сайта',
@ -147,7 +146,7 @@ VitePress также предоставляет возможность гене
Мастер настройки также должен был внедрить следующие скрипты npm в ваш `package.json`, если вы разрешили ему это сделать в процессе установки:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
Затем в `docs/.vitepress/config.ts`:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ docs/
**Совет:** Если вы используете описанный выше подход, вы можете использовать куки `nf_lang`, чтобы сохранить выбор языка пользователя:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -907,8 +907,7 @@ export default config
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -180,8 +180,7 @@ packages/pkg-b/src/bar.md --> /pkg-b/bar.html
Этого можно добиться, настроив опцию [`rewrites`](../reference/site-config#rewrites) следующим образом:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/index.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
Поскольку [`Theme.enhanceApp`](./custom-theme#theme-interface) может быть асинхронным, вы можете условно импортировать и регистрировать плагины Vue, которые получают доступ к API браузера при импорте:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -66,8 +65,7 @@ export default {
Если вы используете TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -165,8 +165,7 @@ export default {
Вы можете добавить пользовательские компоненты в панель навигации с помощью опции `component`. Ключ `component` должен быть именем компонента Vue и должен быть зарегистрирован глобально с помощью [Theme.enhanceApp](../guide/custom-theme#theme-interface).
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
themeConfig: {
nav: [
@ -192,8 +191,7 @@ export default {
Затем необходимо зарегистрировать компонент глобально:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyCustomComponent from './components/MyCustomComponent.vue'
@ -213,4 +211,4 @@ export default {
- `screenMenu`: необязательное булево значение, указывающее, находится ли компонент внутри мобильного навигационного меню
Пример можно посмотреть в тестах e2e [здесь](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress).
Пример можно посмотреть в тестах e2e [здесь](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress).

@ -49,8 +49,7 @@ interface EnhanceAppContext {
主题入口文件需要将主题作为默认导出来导出:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
// 可以直接在主题入口导入 Vue 文件
// VitePress 已预先配置 @vitejs/plugin-vue
@ -72,8 +71,7 @@ export default {
最基本的布局组件需要包含一个 [`<Content />`](../reference/runtime-api#content) 组件:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<template>
<h1>Custom Layout!</h1>
@ -172,8 +170,7 @@ const { page, frontmatter } = useData()
要使用外部主题,请导入它并重新导出:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default Theme
@ -181,8 +178,7 @@ export default Theme
如果主题需要扩展:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import Theme from 'awesome-vitepress-theme'
export default {
@ -195,8 +191,7 @@ export default {
如果主题需要特殊的 VitePress 配置,也需要在配置中扩展:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
export default {
@ -207,8 +202,7 @@ export default {
最后,如果主题为其主题配置提供了类型:
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
import baseConfig from 'awesome-vitepress-theme/config'
import { defineConfigWithTheme } from 'vitepress'
import type { ThemeConfig } from 'awesome-vitepress-theme'

@ -8,8 +8,7 @@ VitePress 提供了**数据加载**的功能,它允许加载任意数据并从
一个用于数据加载的文件必须以 `.data.js``.data.ts` 结尾。该文件应该提供一个默认导出的对象,该对象具有 `load()` 方法:
```js
// example.data.js
```js [example.data.js]
export default {
load() {
return {
@ -84,8 +83,7 @@ export default {
当构建一个内容为主的站点时,我们经常需要创建一个“归档”或“索引”页面:一个我们可以列出内容中的所有可用条目的页面,例如博客文章或 API 页面。我们**可以**直接使用数据加载 API 实现这一点但由于这会经常使用VitePress 还提供了一个 `createContentLoader` 辅助函数来简化这个过程:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', /* options */)
@ -135,8 +133,7 @@ import { data as posts } from './posts.data.js'
默认数据可能不适合所有需求——可以选择使用选项转换数据:
```js
// posts.data.js
```js [posts.data.js]
import { createContentLoader } from 'vitepress'
export default createContentLoader('posts/*.md', {
@ -162,8 +159,7 @@ export default createContentLoader('posts/*.md', {
`createContentLoader` API 也可以在[构建钩子](../reference/site-config#build-hooks)中使用:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
async buildEnd() {
const posts = await createContentLoader('posts/*.md').load()

@ -10,7 +10,7 @@ outline: deep
- 你使用的是默认的生成输出目录 `.vitepress/dist`)。
- VitePress 作为本地依赖项安装在项目中,并且你已在 `package.json` 中设置以下脚本:
```json
```json [package.json]
{
"scripts": {
"docs:build": "vitepress build docs",
@ -121,7 +121,7 @@ Cache-Control: max-age=31536000,immutable
1. 在项目的 `.github/workflows` 目录中创建一个名为 `deploy.yml` 的文件,其中包含这样的内容:
```yaml
```yaml [.github/workflows/deploy.yml]
# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
#
name: Deploy VitePress site to Pages
@ -204,7 +204,7 @@ Cache-Control: max-age=31536000,immutable
2. 在项目的根目录中创建一个名为 `.gitlab-ci.yml` 的文件,其中包含以下内容。每当你更改内容时,这都会构建和部署你的站点:
```yaml
```yaml [.gitlab-ci.yml]
image: node:18
pages:
cache:
@ -237,7 +237,7 @@ Cache-Control: max-age=31536000,immutable
`firebase.json`:
```json
```json [firebase.json]
{
"hosting": {
"public": "docs/.vitepress/dist",
@ -248,7 +248,7 @@ Cache-Control: max-age=31536000,immutable
`.firebaserc`:
```json
```json [.firebaserc]
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
@ -276,7 +276,7 @@ Cache-Control: max-age=31536000,immutable
2. 使用以下内容在项目的根目录中创建一个名为 `static.json` 的文件:
```json
```json [static.json]
{
"root": "docs/.vitepress/dist"
}

@ -22,8 +22,7 @@ VitePress 默认的主题已经针对文档进行了优化,并且可以进行
可以通过覆盖根级别的 CSS 变量来自定义默认主题的 CSS
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import './custom.css'
@ -46,8 +45,7 @@ VitePress 使用 [Inter](https://rsms.me/inter/) 作为默认字体,并且将
为了避免在生成后的输出中包含 Inter 字体,请从 `vitepress/theme-without-fonts` 中导入主题:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme-without-fonts'
import './my-fonts.css'
@ -68,8 +66,7 @@ export default DefaultTheme
如果字体是通过 `@font-face` 引用的本地文件,它将会被作为资源被包含在 `.vitepress/dist/asset` 目录下,并且使用哈希后的文件名。为了预加载这个文件,请使用 [transformHead](../reference/site-config#transformhead) 构建钩子:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
transformHead({ assets }) {
// 相应地调整正则表达式以匹配字体
@ -94,8 +91,7 @@ export default {
## 注册全局组件 {#registering-global-components}
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
/** @type {import('vitepress').Theme} */
@ -109,8 +105,7 @@ export default {
```
如果使用 TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
@ -129,8 +124,7 @@ export default {
默认主题的 `<Layout/>` 组件有一些插槽,能够被用来在页面的特定位置注入内容。下面这个例子展示了将一个组件注入到 outline 之前:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyLayout from './MyLayout.vue'
@ -141,8 +135,7 @@ export default {
}
```
```vue
<!--.vitepress/theme/MyLayout.vue-->
```vue [.vitepress/theme/MyLayout.vue]
<script setup>
import DefaultTheme from 'vitepress/theme'
@ -160,8 +153,7 @@ const { Layout } = DefaultTheme
也可以使用渲染函数。
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import { h } from 'vue'
import DefaultTheme from 'vitepress/theme'
import MyComponent from './MyComponent.vue'
@ -223,9 +215,7 @@ export default {
可以扩展默认主题以在切换颜色模式时提供自定义过渡动画。例如:
```vue
<!-- .vitepress/theme/Layout.vue -->
```vue [.vitepress/theme/Layout.vue]
<script setup lang="ts">
import { useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'

@ -120,8 +120,7 @@ $ bun vitepress init
配置文件 (`.vitepress/config.js`) 让你能够自定义 VitePress 站点的各个方面,最基本的选项是站点的标题和描述:
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
// 站点级选项
title: 'VitePress',
@ -147,7 +146,7 @@ VitePress 还提供了生成简洁 URL、重写路径和动态生成页面的能
该工具还应该将以下 npm 脚本注入到 `package.json` 中:
```json
```json [package.json]
{
...
"scripts": {

@ -13,7 +13,7 @@ docs/
然后在 `docs/.vitepress/config.ts` 中:
```ts
```ts [docs/.vitepress/config.ts]
import { defineConfig } from 'vitepress'
export default defineConfig({
@ -77,8 +77,7 @@ docs/
**提示:** 如果使用上述的方法,可以使用`nf_lang` cookie 来保存用户的语言选择。例如,可以在主题中添加以下代码:
```ts
// docs/.vitepress/theme/index.ts
```ts [docs/.vitepress/theme/index.ts]
import DefaultTheme from 'vitepress/theme'
import Layout from './Layout.vue'
@ -88,9 +87,7 @@ export default {
}
```
```vue
<!-- docs/.vitepress/theme/Layout.vue -->
<script setup lang="ts">
```vue [docs/.vitepress/theme/Layout.vue]<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import { useData, inBrowser } from 'vitepress'
import { watchEffect } from 'vue'

@ -846,8 +846,7 @@ Can be created using `.foorc.json`.
npm add -D markdown-it-mathjax3
```
```ts
// .vitepress/config.ts
```ts [.vitepress/config.ts]
export default {
markdown: {
math: true

@ -176,8 +176,7 @@ packages/pkg-b/src/pkg-b-docs.md --> /pkg-b/index.html
可以通过像这样配置 [`rewrites`](../reference/site-config#rewrites) 选项来实现此目的:
```ts
// .vitepress/config.js
```ts [.vitepress/config.js]
export default {
rewrites: {
'packages/pkg-a/src/pkg-a-docs.md': 'pkg-a/index.md',

@ -50,8 +50,7 @@ if (!import.meta.env.SSR) {
因为 [`Theme.enhanceApp`](./custom-theme#theme-interface) 可以是异步的,所以可以有条件地导入并注册访问浏览器 API 的 Vue 插件:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
/** @type {import('vitepress').Theme} */
export default {
// ...
@ -65,8 +64,7 @@ export default {
```
如果使用 TypeScript:
```ts
// .vitepress/theme/index.ts
```ts [.vitepress/theme/index.ts]
import type { Theme } from 'vitepress'
export default {

@ -164,8 +164,7 @@ export default {
你可以通过使用 `component` 选项在导航栏中包含自定义组件。`component` 键对应的值应为 Vue 组件名,并且必须使用 [Theme.enhanceApp](../guide/custom-theme#theme-interface) 全局注册。
```js
// .vitepress/config.js
```js [.vitepress/config.js]
export default {
themeConfig: {
nav: [
@ -191,8 +190,7 @@ export default {
然后,你需要全局注册该组件:
```js
// .vitepress/theme/index.js
```js [.vitepress/theme/index.js]
import DefaultTheme from 'vitepress/theme'
import MyCustomComponent from './components/MyCustomComponent.vue'
@ -212,4 +210,4 @@ export default {
- `screenMenu`:一个可选的布尔值,指示组件是否在移动导航菜单内
你可以在端到端测试中查看示例 [这里](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress)。
你可以在端到端测试中查看示例 [这里](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress)。

@ -100,20 +100,20 @@
"dependencies": {
"@docsearch/css": "^3.8.2",
"@docsearch/js": "^3.8.2",
"@iconify-json/simple-icons": "^1.2.17",
"@shikijs/core": "^1.24.4",
"@shikijs/transformers": "^1.24.4",
"@shikijs/types": "^1.24.4",
"@iconify-json/simple-icons": "^1.2.18",
"@shikijs/core": "^1.26.1",
"@shikijs/transformers": "^1.26.1",
"@shikijs/types": "^1.26.1",
"@types/markdown-it": "^14.1.2",
"@vitejs/plugin-vue": "^5.2.1",
"@vue/devtools-api": "^7.6.8",
"@vue/shared": "^3.5.13",
"@vueuse/core": "^12.2.0",
"@vueuse/integrations": "^12.2.0",
"@vueuse/core": "^12.3.0",
"@vueuse/integrations": "^12.3.0",
"focus-trap": "^7.6.2",
"mark.js": "8.11.1",
"minisearch": "^7.1.1",
"shiki": "^1.24.4",
"shiki": "^1.26.1",
"vite": "^5.4.11",
"vue": "^3.5.13"
},
@ -143,7 +143,7 @@
"@types/markdown-it-emoji": "^3.0.1",
"@types/micromatch": "^4.0.9",
"@types/minimist": "^1.2.5",
"@types/node": "^22.10.2",
"@types/node": "^22.10.5",
"@types/postcss-prefix-selector": "^1.16.3",
"@types/prompts": "^2.4.9",
"chokidar": "^4.0.3",
@ -179,7 +179,7 @@
"prompts": "^2.4.2",
"punycode": "^2.3.1",
"rimraf": "^6.0.1",
"rollup": "^4.29.1",
"rollup": "^4.30.0",
"rollup-plugin-dts": "^6.1.1",
"rollup-plugin-esbuild": "^6.1.1",
"semver": "^7.6.3",
@ -205,7 +205,7 @@
"optional": true
}
},
"packageManager": "pnpm@9.15.2",
"packageManager": "pnpm@9.15.3",
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": [

@ -23,23 +23,23 @@ importers:
specifier: ^3.8.2
version: 3.8.2(@algolia/client-search@5.18.0)
'@iconify-json/simple-icons':
specifier: ^1.2.17
version: 1.2.17
specifier: ^1.2.18
version: 1.2.18
'@shikijs/core':
specifier: ^1.24.4
version: 1.24.4
specifier: ^1.26.1
version: 1.26.1
'@shikijs/transformers':
specifier: ^1.24.4
version: 1.24.4
specifier: ^1.26.1
version: 1.26.1
'@shikijs/types':
specifier: ^1.24.4
version: 1.24.4
specifier: ^1.26.1
version: 1.26.1
'@types/markdown-it':
specifier: ^14.1.2
version: 14.1.2
'@vitejs/plugin-vue':
specifier: ^5.2.1
version: 5.2.1(vite@5.4.11(@types/node@22.10.2))(vue@3.5.13(typescript@5.7.2))
version: 5.2.1(vite@5.4.11(@types/node@22.10.5))(vue@3.5.13(typescript@5.7.2))
'@vue/devtools-api':
specifier: ^7.6.8
version: 7.6.8
@ -47,11 +47,11 @@ importers:
specifier: ^3.5.13
version: 3.5.13
'@vueuse/core':
specifier: ^12.2.0
version: 12.2.0(typescript@5.7.2)
specifier: ^12.3.0
version: 12.3.0(typescript@5.7.2)
'@vueuse/integrations':
specifier: ^12.2.0
version: 12.2.0(axios@1.7.9(debug@4.4.0))(focus-trap@7.6.2)(typescript@5.7.2)
specifier: ^12.3.0
version: 12.3.0(axios@1.7.9(debug@4.4.0))(focus-trap@7.6.2)(typescript@5.7.2)
focus-trap:
specifier: ^7.6.2
version: 7.6.2
@ -62,11 +62,11 @@ importers:
specifier: ^7.1.1
version: 7.1.1
shiki:
specifier: ^1.24.4
version: 1.24.4
specifier: ^1.26.1
version: 1.26.1
vite:
specifier: ^5.4.11
version: 5.4.11(@types/node@22.10.2)
version: 5.4.11(@types/node@22.10.5)
vue:
specifier: ^3.5.13
version: 3.5.13(typescript@5.7.2)
@ -103,19 +103,19 @@ importers:
version: 1.0.0-next.28
'@rollup/plugin-alias':
specifier: ^5.1.1
version: 5.1.1(rollup@4.29.1)
version: 5.1.1(rollup@4.30.0)
'@rollup/plugin-commonjs':
specifier: ^28.0.2
version: 28.0.2(rollup@4.29.1)
version: 28.0.2(rollup@4.30.0)
'@rollup/plugin-json':
specifier: ^6.1.0
version: 6.1.0(rollup@4.29.1)
version: 6.1.0(rollup@4.30.0)
'@rollup/plugin-node-resolve':
specifier: ^16.0.0
version: 16.0.0(rollup@4.29.1)
version: 16.0.0(rollup@4.30.0)
'@rollup/plugin-replace':
specifier: ^6.0.2
version: 6.0.2(rollup@4.29.1)
version: 6.0.2(rollup@4.30.0)
'@types/cross-spawn':
specifier: ^6.0.6
version: 6.0.6
@ -147,8 +147,8 @@ importers:
specifier: ^1.2.5
version: 1.2.5
'@types/node':
specifier: ^22.10.2
version: 22.10.2
specifier: ^22.10.5
version: 22.10.5
'@types/postcss-prefix-selector':
specifier: ^1.16.3
version: 1.16.3
@ -255,14 +255,14 @@ importers:
specifier: ^6.0.1
version: 6.0.1
rollup:
specifier: ^4.29.1
version: 4.29.1
specifier: ^4.30.0
version: 4.30.0
rollup-plugin-dts:
specifier: ^6.1.1
version: 6.1.1(rollup@4.29.1)(typescript@5.7.2)
version: 6.1.1(rollup@4.30.0)(typescript@5.7.2)
rollup-plugin-esbuild:
specifier: ^6.1.1
version: 6.1.1(esbuild@0.24.2)(rollup@4.29.1)
version: 6.1.1(esbuild@0.24.2)(rollup@4.30.0)
semver:
specifier: ^7.6.3
version: 7.6.3
@ -286,7 +286,7 @@ importers:
version: 5.7.2
vitest:
specifier: ^2.1.8
version: 2.1.8(@types/node@22.10.2)
version: 2.1.8(@types/node@22.10.5)
vue-tsc:
specifier: ^2.2.0
version: 2.2.0(typescript@5.7.2)
@ -323,6 +323,9 @@ importers:
vitepress:
specifier: workspace:*
version: link:..
vitepress-plugin-group-icons:
specifier: ^1.3.2
version: 1.3.2
packages:
@ -767,8 +770,14 @@ packages:
resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
engines: {node: '>=10.13.0'}
'@iconify-json/simple-icons@1.2.17':
resolution: {integrity: sha512-1vXbM6a6HV2rwXxu8ptD2OYhqrqX0ZZRepOg7nIjkvKlKq90Iici4X++A8h36bEVlV2wGjqx8uVYB0pwnPZVSw==}
'@iconify-json/logos@1.2.4':
resolution: {integrity: sha512-XC4If5D/hbaZvUkTV8iaZuGlQCyG6CNOlaAaJaGa13V5QMYwYjgtKk3vPP8wz3wtTVNVEVk3LRx1fOJz+YnSMw==}
'@iconify-json/simple-icons@1.2.18':
resolution: {integrity: sha512-ae4ig7fxNXME1wl5og7Ocp82TM4jyz6IsOyI8GrteSbvHR9gaPu2Z01Amn5V/xo1Y7A7/+EH/3Ovpy2az/gYbg==}
'@iconify-json/vscode-icons@1.2.8':
resolution: {integrity: sha512-nmPc4MFCXwtLW9B587P0tRxzUM34+5PP4mxjVGvfRzWYsBVOKwsoxGYU8MDZw/BI+FVdHtrMT+E+aZORdV7hRw==}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@ -895,121 +904,127 @@ packages:
rollup:
optional: true
'@rollup/rollup-android-arm-eabi@4.29.1':
resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==}
'@rollup/rollup-android-arm-eabi@4.30.0':
resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.29.1':
resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==}
'@rollup/rollup-android-arm64@4.30.0':
resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.29.1':
resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==}
'@rollup/rollup-darwin-arm64@4.30.0':
resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.29.1':
resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==}
'@rollup/rollup-darwin-x64@4.30.0':
resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.29.1':
resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==}
'@rollup/rollup-freebsd-arm64@4.30.0':
resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.29.1':
resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==}
'@rollup/rollup-freebsd-x64@4.30.0':
resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.29.1':
resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==}
'@rollup/rollup-linux-arm-gnueabihf@4.30.0':
resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.29.1':
resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==}
'@rollup/rollup-linux-arm-musleabihf@4.30.0':
resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.29.1':
resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==}
'@rollup/rollup-linux-arm64-gnu@4.30.0':
resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.29.1':
resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==}
'@rollup/rollup-linux-arm64-musl@4.30.0':
resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.29.1':
resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==}
'@rollup/rollup-linux-loongarch64-gnu@4.30.0':
resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.29.1':
resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==}
'@rollup/rollup-linux-powerpc64le-gnu@4.30.0':
resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.29.1':
resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==}
'@rollup/rollup-linux-riscv64-gnu@4.30.0':
resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.29.1':
resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==}
'@rollup/rollup-linux-s390x-gnu@4.30.0':
resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.29.1':
resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==}
'@rollup/rollup-linux-x64-gnu@4.30.0':
resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.29.1':
resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==}
'@rollup/rollup-linux-x64-musl@4.30.0':
resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.29.1':
resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==}
'@rollup/rollup-win32-arm64-msvc@4.30.0':
resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.29.1':
resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==}
'@rollup/rollup-win32-ia32-msvc@4.30.0':
resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.29.1':
resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==}
'@rollup/rollup-win32-x64-msvc@4.30.0':
resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==}
cpu: [x64]
os: [win32]
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
'@shikijs/core@1.24.4':
resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==}
'@shikijs/core@1.26.1':
resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==}
'@shikijs/engine-javascript@1.26.1':
resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==}
'@shikijs/engine-javascript@1.24.4':
resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==}
'@shikijs/engine-oniguruma@1.26.1':
resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==}
'@shikijs/engine-oniguruma@1.24.4':
resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==}
'@shikijs/langs@1.26.1':
resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==}
'@shikijs/transformers@1.24.4':
resolution: {integrity: sha512-0jq5p9WLB7ToM/O7RWfxuIwirTJbIQsUR06jxdG3h3CEuO5m7ik8GnDsxwHhyIEfgJSZczSnVUZWFrNKy5It6g==}
'@shikijs/themes@1.26.1':
resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==}
'@shikijs/types@1.24.4':
resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==}
'@shikijs/transformers@1.26.1':
resolution: {integrity: sha512-IRLJEP7YxkRMsHo367+7qDlpWjsUu6O79pdlUlkcbF1A5TrF1Ln0FBNrgHA/i9p+IKXiiKNATURa6WXh3iq7Uw==}
'@shikijs/vscode-textmate@9.3.1':
resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==}
'@shikijs/types@1.26.1':
resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==}
'@shikijs/vscode-textmate@10.0.1':
resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==}
'@sideway/address@4.1.5':
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
@ -1027,8 +1042,8 @@ packages:
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
'@types/braces@3.0.4':
resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==}
'@types/braces@3.0.5':
resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==}
'@types/cross-spawn@6.0.6':
resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==}
@ -1057,8 +1072,8 @@ packages:
'@types/lodash.template@4.5.3':
resolution: {integrity: sha512-Mo0UYKLu1oXgkV9TVoXZLlXXjyIXlW7ZQRxi/4gQJmzJr63dmicE8gG0OkPjYTKBrBic852q0JzqrtNUWLBIyA==}
'@types/lodash@4.17.13':
resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
'@types/lodash@4.17.14':
resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==}
'@types/mark.js@8.11.12':
resolution: {integrity: sha512-244ZnaIBpz4c6xutliAnYVZp6xJlmC569jZqnR3ElO1Y01ooYASSVQEqpd2x0A2UfrgVMs5V9/9tUAdZaDMytQ==}
@ -1093,8 +1108,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@types/node@22.10.2':
resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
'@types/node@22.10.5':
resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@ -1220,11 +1235,11 @@ packages:
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
'@vueuse/core@12.2.0':
resolution: {integrity: sha512-jksyNu+5EGwggNkRWd6xX+8qBkYbmrwdFQMgCABsz+wq8bKF6w3soPFLB8vocFp3wFIzn0OYkSPM9JP+AFKwsg==}
'@vueuse/core@12.3.0':
resolution: {integrity: sha512-cnV8QDKZrsyKC7tWjPbeEUz2cD9sa9faxF2YkR8QqNwfofgbOhmfIgvSYmkp+ttSvfOw4E6hLcQx15mRPr0yBA==}
'@vueuse/integrations@12.2.0':
resolution: {integrity: sha512-Bc0unXiGNZ0w7xqSvzCuP7AflBRKcZX6ib7tGi7vAjOxhLd6GtN3J8qizIbSPnI62XyPy5fauOkq2i2HUPq6MQ==}
'@vueuse/integrations@12.3.0':
resolution: {integrity: sha512-Ha42DSxc87BIf4JONUNammWod5X7iaUVqpYohMgzpDYBjAxhmhWtsMCcFpfUMXZYiMaS2xltUEiRldSXC9kmGw==}
peerDependencies:
async-validator: ^4
axios: ^1
@ -1264,11 +1279,11 @@ packages:
universal-cookie:
optional: true
'@vueuse/metadata@12.2.0':
resolution: {integrity: sha512-x6zynZtTh1l52m0y8d/EgzpshnMjg8cNZ2KWoncJ62Z5qPSGoc4FUunmMVrrRM/I/5542rTEY89CGftngZvrkQ==}
'@vueuse/metadata@12.3.0':
resolution: {integrity: sha512-M/iQHHjMffOv2npsw2ihlUx1CTiBwPEgb7DzByLq7zpg1+Ke8r7s9p5ybUWc5OIeGewtpY4Xy0R2cKqFqM8hFg==}
'@vueuse/shared@12.2.0':
resolution: {integrity: sha512-SRr4AZwv/giS+EmyA1ZIzn3/iALjjnWAGaBNmoDTMEob9JwQaevAocuaMDnPAvU7Z35Y5g3CFRusCWgp1gVJ3Q==}
'@vueuse/shared@12.3.0':
resolution: {integrity: sha512-X3YD35GUeW0d5Gajcwv9jdLAJTV2Jdb/Ll6Ii2JIYcKLYZqv5wxyLeKtiQkqWmHg3v0J0ZWjDUMVOw2E7RCXfA==}
acorn@8.14.0:
resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
@ -1671,8 +1686,8 @@ packages:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
engines: {node: '>=0.10.0'}
fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
fastq@1.18.0:
@ -2197,8 +2212,8 @@ packages:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
oniguruma-to-es@0.8.1:
resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==}
oniguruma-to-es@0.10.0:
resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==}
open-cli@8.0.0:
resolution: {integrity: sha512-3muD3BbfLyzl+aMVSEfn2FfOqGdPYR0O4KNnxXsLEPE2q9OSjBfJAaB6XKbrUzLgymoSMejvb5jpXJfru/Ko2A==}
@ -2428,8 +2443,8 @@ packages:
esbuild: '>=0.18.0'
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
rollup@4.29.1:
resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==}
rollup@4.30.0:
resolution: {integrity: sha512-sDnr1pcjTgUT69qBksNF1N1anwfbyYG6TBQ22b03bII8EdiUQ7J0TlozVaTMjT/eEJAO49e1ndV7t+UZfL1+vA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@ -2471,8 +2486,8 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shiki@1.24.4:
resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==}
shiki@1.26.1:
resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==}
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@ -2796,6 +2811,9 @@ packages:
terser:
optional: true
vitepress-plugin-group-icons@1.3.2:
resolution: {integrity: sha512-l7SMf8YZR3dTgnGSDvWwKHgv1K4DCtTFCxjXlo7cnYWoNT3kPRygnmSVf21azrXymRHHk0R6Lxkzjm65uBBKOQ==}
vitest@2.1.8:
resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -3230,7 +3248,15 @@ snapshots:
'@hutson/parse-repository-url@5.0.0': {}
'@iconify-json/simple-icons@1.2.17':
'@iconify-json/logos@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/simple-icons@1.2.18':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/vscode-icons@1.2.8':
dependencies:
'@iconify/types': 2.0.0
@ -3271,7 +3297,7 @@ snapshots:
'@lunariajs/core@0.1.1':
dependencies:
'@clack/core': 0.3.5
fast-glob: 3.3.2
fast-glob: 3.3.3
get-port: 7.1.0
jiti: 1.21.7
micromatch: 4.0.8
@ -3348,13 +3374,13 @@ snapshots:
'@polka/url@1.0.0-next.28': {}
'@rollup/plugin-alias@5.1.1(rollup@4.29.1)':
'@rollup/plugin-alias@5.1.1(rollup@4.30.0)':
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/plugin-commonjs@28.0.2(rollup@4.29.1)':
'@rollup/plugin-commonjs@28.0.2(rollup@4.30.0)':
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.29.1)
'@rollup/pluginutils': 5.1.4(rollup@4.30.0)
commondir: 1.0.1
estree-walker: 2.0.2
fdir: 6.4.2(picomatch@4.0.2)
@ -3362,128 +3388,136 @@ snapshots:
magic-string: 0.30.17
picomatch: 4.0.2
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/plugin-json@6.1.0(rollup@4.29.1)':
'@rollup/plugin-json@6.1.0(rollup@4.30.0)':
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.29.1)
'@rollup/pluginutils': 5.1.4(rollup@4.30.0)
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/plugin-node-resolve@16.0.0(rollup@4.29.1)':
'@rollup/plugin-node-resolve@16.0.0(rollup@4.30.0)':
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.29.1)
'@rollup/pluginutils': 5.1.4(rollup@4.30.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.10
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/plugin-replace@6.0.2(rollup@4.29.1)':
'@rollup/plugin-replace@6.0.2(rollup@4.30.0)':
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.29.1)
'@rollup/pluginutils': 5.1.4(rollup@4.30.0)
magic-string: 0.30.17
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/pluginutils@5.1.4(rollup@4.29.1)':
'@rollup/pluginutils@5.1.4(rollup@4.30.0)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
rollup: 4.29.1
rollup: 4.30.0
'@rollup/rollup-android-arm-eabi@4.29.1':
'@rollup/rollup-android-arm-eabi@4.30.0':
optional: true
'@rollup/rollup-android-arm64@4.29.1':
'@rollup/rollup-android-arm64@4.30.0':
optional: true
'@rollup/rollup-darwin-arm64@4.29.1':
'@rollup/rollup-darwin-arm64@4.30.0':
optional: true
'@rollup/rollup-darwin-x64@4.29.1':
'@rollup/rollup-darwin-x64@4.30.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.29.1':
'@rollup/rollup-freebsd-arm64@4.30.0':
optional: true
'@rollup/rollup-freebsd-x64@4.29.1':
'@rollup/rollup-freebsd-x64@4.30.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.29.1':
'@rollup/rollup-linux-arm-gnueabihf@4.30.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.29.1':
'@rollup/rollup-linux-arm-musleabihf@4.30.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.29.1':
'@rollup/rollup-linux-arm64-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.29.1':
'@rollup/rollup-linux-arm64-musl@4.30.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.29.1':
'@rollup/rollup-linux-loongarch64-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.29.1':
'@rollup/rollup-linux-powerpc64le-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.29.1':
'@rollup/rollup-linux-riscv64-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.29.1':
'@rollup/rollup-linux-s390x-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.29.1':
'@rollup/rollup-linux-x64-gnu@4.30.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.29.1':
'@rollup/rollup-linux-x64-musl@4.30.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.29.1':
'@rollup/rollup-win32-arm64-msvc@4.30.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.29.1':
'@rollup/rollup-win32-ia32-msvc@4.30.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.29.1':
'@rollup/rollup-win32-x64-msvc@4.30.0':
optional: true
'@sec-ant/readable-stream@0.4.1': {}
'@shikijs/core@1.24.4':
'@shikijs/core@1.26.1':
dependencies:
'@shikijs/engine-javascript': 1.24.4
'@shikijs/engine-oniguruma': 1.24.4
'@shikijs/types': 1.24.4
'@shikijs/vscode-textmate': 9.3.1
'@shikijs/engine-javascript': 1.26.1
'@shikijs/engine-oniguruma': 1.26.1
'@shikijs/types': 1.26.1
'@shikijs/vscode-textmate': 10.0.1
'@types/hast': 3.0.4
hast-util-to-html: 9.0.4
'@shikijs/engine-javascript@1.24.4':
'@shikijs/engine-javascript@1.26.1':
dependencies:
'@shikijs/types': 1.26.1
'@shikijs/vscode-textmate': 10.0.1
oniguruma-to-es: 0.10.0
'@shikijs/engine-oniguruma@1.26.1':
dependencies:
'@shikijs/types': 1.26.1
'@shikijs/vscode-textmate': 10.0.1
'@shikijs/langs@1.26.1':
dependencies:
'@shikijs/types': 1.24.4
'@shikijs/vscode-textmate': 9.3.1
oniguruma-to-es: 0.8.1
'@shikijs/types': 1.26.1
'@shikijs/engine-oniguruma@1.24.4':
'@shikijs/themes@1.26.1':
dependencies:
'@shikijs/types': 1.24.4
'@shikijs/vscode-textmate': 9.3.1
'@shikijs/types': 1.26.1
'@shikijs/transformers@1.24.4':
'@shikijs/transformers@1.26.1':
dependencies:
shiki: 1.24.4
shiki: 1.26.1
'@shikijs/types@1.24.4':
'@shikijs/types@1.26.1':
dependencies:
'@shikijs/vscode-textmate': 9.3.1
'@shikijs/vscode-textmate': 10.0.1
'@types/hast': 3.0.4
'@shikijs/vscode-textmate@9.3.1': {}
'@shikijs/vscode-textmate@10.0.1': {}
'@sideway/address@4.1.5':
dependencies:
@ -3497,11 +3531,11 @@ snapshots:
'@tokenizer/token@0.3.0': {}
'@types/braces@3.0.4': {}
'@types/braces@3.0.5': {}
'@types/cross-spawn@6.0.6':
dependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
'@types/debug@4.1.12':
dependencies:
@ -3512,7 +3546,7 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 22.10.2
'@types/node': 22.10.5
'@types/hast@3.0.4':
dependencies:
@ -3524,15 +3558,15 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
'@types/linkify-it@5.0.0': {}
'@types/lodash.template@4.5.3':
dependencies:
'@types/lodash': 4.17.13
'@types/lodash': 4.17.14
'@types/lodash@4.17.13': {}
'@types/lodash@4.17.14': {}
'@types/mark.js@8.11.12':
dependencies:
@ -3563,7 +3597,7 @@ snapshots:
'@types/micromatch@4.0.9':
dependencies:
'@types/braces': 3.0.4
'@types/braces': 3.0.5
'@types/minimist@1.2.5': {}
@ -3571,7 +3605,7 @@ snapshots:
'@types/node@17.0.45': {}
'@types/node@22.10.2':
'@types/node@22.10.5':
dependencies:
undici-types: 6.20.0
@ -3583,14 +3617,14 @@ snapshots:
'@types/prompts@2.4.9':
dependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
kleur: 3.0.3
'@types/resolve@1.20.2': {}
'@types/sax@1.2.7':
dependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
'@types/semver@7.5.8': {}
@ -3602,9 +3636,9 @@ snapshots:
'@ungap/structured-clone@1.2.1': {}
'@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.10.2))(vue@3.5.13(typescript@5.7.2))':
'@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.10.5))(vue@3.5.13(typescript@5.7.2))':
dependencies:
vite: 5.4.11(@types/node@22.10.2)
vite: 5.4.11(@types/node@22.10.5)
vue: 3.5.13(typescript@5.7.2)
'@vitest/expect@2.1.8':
@ -3614,13 +3648,13 @@ snapshots:
chai: 5.1.2
tinyrainbow: 1.2.0
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2))':
'@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.5))':
dependencies:
'@vitest/spy': 2.1.8
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
vite: 5.4.11(@types/node@22.10.2)
vite: 5.4.11(@types/node@22.10.5)
'@vitest/pretty-format@2.1.8':
dependencies:
@ -3749,19 +3783,19 @@ snapshots:
'@vue/shared@3.5.13': {}
'@vueuse/core@12.2.0(typescript@5.7.2)':
'@vueuse/core@12.3.0(typescript@5.7.2)':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 12.2.0
'@vueuse/shared': 12.2.0(typescript@5.7.2)
'@vueuse/metadata': 12.3.0
'@vueuse/shared': 12.3.0(typescript@5.7.2)
vue: 3.5.13(typescript@5.7.2)
transitivePeerDependencies:
- typescript
'@vueuse/integrations@12.2.0(axios@1.7.9(debug@4.4.0))(focus-trap@7.6.2)(typescript@5.7.2)':
'@vueuse/integrations@12.3.0(axios@1.7.9(debug@4.4.0))(focus-trap@7.6.2)(typescript@5.7.2)':
dependencies:
'@vueuse/core': 12.2.0(typescript@5.7.2)
'@vueuse/shared': 12.2.0(typescript@5.7.2)
'@vueuse/core': 12.3.0(typescript@5.7.2)
'@vueuse/shared': 12.3.0(typescript@5.7.2)
vue: 3.5.13(typescript@5.7.2)
optionalDependencies:
axios: 1.7.9(debug@4.4.0)
@ -3769,9 +3803,9 @@ snapshots:
transitivePeerDependencies:
- typescript
'@vueuse/metadata@12.2.0': {}
'@vueuse/metadata@12.3.0': {}
'@vueuse/shared@12.2.0(typescript@5.7.2)':
'@vueuse/shared@12.3.0(typescript@5.7.2)':
dependencies:
vue: 3.5.13(typescript@5.7.2)
transitivePeerDependencies:
@ -4217,7 +4251,7 @@ snapshots:
dependencies:
is-extendable: 0.1.1
fast-glob@3.3.2:
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
@ -4737,7 +4771,7 @@ snapshots:
dependencies:
mimic-function: 5.0.1
oniguruma-to-es@0.8.1:
oniguruma-to-es@0.10.0:
dependencies:
emoji-regex-xs: 1.0.0
regex: 5.1.1
@ -4941,48 +4975,48 @@ snapshots:
glob: 11.0.0
package-json-from-dist: 1.0.1
rollup-plugin-dts@6.1.1(rollup@4.29.1)(typescript@5.7.2):
rollup-plugin-dts@6.1.1(rollup@4.30.0)(typescript@5.7.2):
dependencies:
magic-string: 0.30.17
rollup: 4.29.1
rollup: 4.30.0
typescript: 5.7.2
optionalDependencies:
'@babel/code-frame': 7.26.2
rollup-plugin-esbuild@6.1.1(esbuild@0.24.2)(rollup@4.29.1):
rollup-plugin-esbuild@6.1.1(esbuild@0.24.2)(rollup@4.30.0):
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.29.1)
'@rollup/pluginutils': 5.1.4(rollup@4.30.0)
debug: 4.4.0
es-module-lexer: 1.6.0
esbuild: 0.24.2
get-tsconfig: 4.8.1
rollup: 4.29.1
rollup: 4.30.0
transitivePeerDependencies:
- supports-color
rollup@4.29.1:
rollup@4.30.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.29.1
'@rollup/rollup-android-arm64': 4.29.1
'@rollup/rollup-darwin-arm64': 4.29.1
'@rollup/rollup-darwin-x64': 4.29.1
'@rollup/rollup-freebsd-arm64': 4.29.1
'@rollup/rollup-freebsd-x64': 4.29.1
'@rollup/rollup-linux-arm-gnueabihf': 4.29.1
'@rollup/rollup-linux-arm-musleabihf': 4.29.1
'@rollup/rollup-linux-arm64-gnu': 4.29.1
'@rollup/rollup-linux-arm64-musl': 4.29.1
'@rollup/rollup-linux-loongarch64-gnu': 4.29.1
'@rollup/rollup-linux-powerpc64le-gnu': 4.29.1
'@rollup/rollup-linux-riscv64-gnu': 4.29.1
'@rollup/rollup-linux-s390x-gnu': 4.29.1
'@rollup/rollup-linux-x64-gnu': 4.29.1
'@rollup/rollup-linux-x64-musl': 4.29.1
'@rollup/rollup-win32-arm64-msvc': 4.29.1
'@rollup/rollup-win32-ia32-msvc': 4.29.1
'@rollup/rollup-win32-x64-msvc': 4.29.1
'@rollup/rollup-android-arm-eabi': 4.30.0
'@rollup/rollup-android-arm64': 4.30.0
'@rollup/rollup-darwin-arm64': 4.30.0
'@rollup/rollup-darwin-x64': 4.30.0
'@rollup/rollup-freebsd-arm64': 4.30.0
'@rollup/rollup-freebsd-x64': 4.30.0
'@rollup/rollup-linux-arm-gnueabihf': 4.30.0
'@rollup/rollup-linux-arm-musleabihf': 4.30.0
'@rollup/rollup-linux-arm64-gnu': 4.30.0
'@rollup/rollup-linux-arm64-musl': 4.30.0
'@rollup/rollup-linux-loongarch64-gnu': 4.30.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.30.0
'@rollup/rollup-linux-riscv64-gnu': 4.30.0
'@rollup/rollup-linux-s390x-gnu': 4.30.0
'@rollup/rollup-linux-x64-gnu': 4.30.0
'@rollup/rollup-linux-x64-musl': 4.30.0
'@rollup/rollup-win32-arm64-msvc': 4.30.0
'@rollup/rollup-win32-ia32-msvc': 4.30.0
'@rollup/rollup-win32-x64-msvc': 4.30.0
fsevents: 2.3.3
rtlcss@4.3.0:
@ -5019,13 +5053,15 @@ snapshots:
shebang-regex@3.0.0: {}
shiki@1.24.4:
shiki@1.26.1:
dependencies:
'@shikijs/core': 1.24.4
'@shikijs/engine-javascript': 1.24.4
'@shikijs/engine-oniguruma': 1.24.4
'@shikijs/types': 1.24.4
'@shikijs/vscode-textmate': 9.3.1
'@shikijs/core': 1.26.1
'@shikijs/engine-javascript': 1.26.1
'@shikijs/engine-oniguruma': 1.26.1
'@shikijs/langs': 1.26.1
'@shikijs/themes': 1.26.1
'@shikijs/types': 1.26.1
'@shikijs/vscode-textmate': 10.0.1
'@types/hast': 3.0.4
siginfo@2.0.0: {}
@ -5288,13 +5324,13 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
vite-node@2.1.8(@types/node@22.10.2):
vite-node@2.1.8(@types/node@22.10.5):
dependencies:
cac: 6.7.14
debug: 4.4.0
es-module-lexer: 1.6.0
pathe: 1.1.2
vite: 5.4.11(@types/node@22.10.2)
vite: 5.4.11(@types/node@22.10.5)
transitivePeerDependencies:
- '@types/node'
- less
@ -5306,19 +5342,27 @@ snapshots:
- supports-color
- terser
vite@5.4.11(@types/node@22.10.2):
vite@5.4.11(@types/node@22.10.5):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.29.1
rollup: 4.30.0
optionalDependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
fsevents: 2.3.3
vitest@2.1.8(@types/node@22.10.2):
vitepress-plugin-group-icons@1.3.2:
dependencies:
'@iconify-json/logos': 1.2.4
'@iconify-json/vscode-icons': 1.2.8
'@iconify/utils': 2.2.1
transitivePeerDependencies:
- supports-color
vitest@2.1.8(@types/node@22.10.5):
dependencies:
'@vitest/expect': 2.1.8
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2))
'@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.5))
'@vitest/pretty-format': 2.1.8
'@vitest/runner': 2.1.8
'@vitest/snapshot': 2.1.8
@ -5334,11 +5378,11 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 1.2.0
vite: 5.4.11(@types/node@22.10.2)
vite-node: 2.1.8(@types/node@22.10.2)
vite: 5.4.11(@types/node@22.10.5)
vite-node: 2.1.8(@types/node@22.10.5)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.10.2
'@types/node': 22.10.5
transitivePeerDependencies:
- less
- lightningcss

Loading…
Cancel
Save