+:::
+```
+
+La clase `vp-raw` también puede ser usada directamente en elementos. El aislamiento de estilo es actualmente opcional:
+
+- Instale `postcss` con su gestor de paquetes preferido:
+
+ ```sh
+ $ npm add -D postcss
+ ```
+
+- Cree un archivo llamado `docs/postcss.config.mjs` y adicione lo siguiente:
+
+ ```js
+ import { postcssIsolateStyles } from 'vitepress'
+
+ export default {
+ plugins: [postcssIsolateStyles()]
+ }
+ ```
+
+ El utiliza [`postcss-prefix-selector`](https://github.com/postcss/postcss-load-config) internamente. Puede pasar opciones así:
+
+ ```js
+ postcssIsolateStyles({
+ includeFiles: [/vp-doc\.css/] // o padrão é /base\.css/
+ })
+ ```
+
+## Alertas en estilo GitHub {#github-flavored-alerts}
+
+VitePress también soporta [alertas en estilo GitHub](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) para presentar como un bloque de llamada. Ellos serán presentados de la misma forma que [elementos personalizados](#custom-containers).
+
+```md
+> [!NOTE]
+> Destaca informaciones que los usuarios deben tener en consideración, incluso leyendo rapidamente.
+
+> [!TIP]
+> Informaciones opcionales para ayudar al usuario a tener más éxito.
+
+> [!IMPORTANT]
+> Informaciones cruciales necesarias par que los usuarios tengan éxito.
+
+> [!WARNING]
+> Contenido critico exigiendo atención inmediata del usuario debido a riesgos potenciales.
+
+> [!CAUTION]
+> Potenciales consecuencias negativas de una acción.
+```
+
+> [!NOTE]
+> Destaca informaciones que los usuarios deben tener en consideración, incluso leyendo rapidamente.
+
+> [!TIP]
+> Informaciones opcionales para ayudar al usuario a tener más éxito.
+
+> [!IMPORTANT]
+> Informaciones cruciales necesarias par que los usuarios tengan éxito.
+
+> [!WARNING]
+> Contenido critico exigiendo atención inmediata del usuario debido a riesgos potenciales.
+
+> [!CAUTION]
+> Potenciales consecuencias negativas de una acción.
+
+## Destaque de Sintaxis en Bloques de Código {#syntax-highlighting-in-code-blocks}
+
+VitePress utiliza [Shiki](https://github.com/shikijs/shiki) para destacar la sintaxis del lenguaje en bloques de código Markdown, usando texto coloreado. Shiki soporta una amplia variedad de lenguajes de programación. Todo lo que necesita es adicionar un _alias_ de lenguaje válido después de los backticks iniciales del bloque de código:
+
+**Entrada**
+
+````
+```js
+export default {
+ name: 'MyComponent',
+ // ...
+}
+```
+````
+
+````
+```html
+
+```
+
+Una [lista de lenguajes válidas](https://shiki.style/languages) está disponible en el repositório Shiki.
+
+También puede personalizar el tema de destaque de sintaxis en la configuración de la aplicación. Consulte las [opciones `markdown`](../reference/site-config#markdown) para más detalles.
+
+## Destaque de Linea en Bloques de Código {#line-highlighting-in-code-blocks}
+
+**Entrada**
+
+````
+```js{4}
+export default {
+ data () {
+ return {
+ msg: 'Destacado!'
+ }
+ }
+}
+```
+````
+
+**Salida**
+
+```js{4}
+export default {
+ data () {
+ return {
+ msg: 'Destacado!'
+ }
+ }
+}
+```
+
+Además de una única linea, puede también especificar múltiples lineas únicas, intervalos, o ambos:
+
+- Intervalos de linea: por ejemplo, `{5-8}`, `{3-10}`, `{10-17}`
+- Múltiples lineas únicas: por ejemplo, `{4,7,9}`
+- Intervalos de linea y lineas únicas: por ejemplo, `{4,7-13,16,23-27,40}`
+
+**Entrada**
+
+````
+```js{1,4,6-8}
+export default { // Destacado
+ data () {
+ return {
+ msg: `Destacado!
+ Esta linea no está destacada,
+ pero esta y las próximas están.`,
+ motd: 'VitePress es increible',
+ lorem: 'ipsum'
+ }
+ }
+}
+```
+````
+
+**Salida**
+
+```js{1,4,6-8}
+export default { // Destacado
+ data () {
+ return {
+ msg: `Destacado!
+ Esta linea no está destacada,
+ pero esta y las próximas están.`,
+ motd: 'VitePress es increible',
+ lorem: 'ipsum',
+ }
+ }
+}
+```
+
+Alternativamente, es posible destacar directamente en la linea usando el comentario `// [!code highlight]`.
+
+**Entrada**
+
+````
+```js
+export default {
+ data () {
+ return {
+ msg: 'Destacado!' // [!!code highlight]
+ }
+ }
+}
+```
+````
+
+**Saída**
+
+```js
+export default {
+ data() {
+ return {
+ msg: 'Destacado!' // [!code highlight]
+ }
+ }
+}
+```
+
+## Enfoque en Bloques de Código {#focus-in-code-blocks}
+
+Adicionando el comentario `// [!code focus]` en una linea, esta será destacada y desenfocará las otras partes del código.
+
+Además, puede definir el número de lineas para enfocar usando `// [!code focus:]`.
+
+**Entrada**
+
+````
+```js
+export default {
+ data () {
+ return {
+ msg: 'Enfocado!' // [!!code focus]
+ }
+ }
+}
+```
+````
+
+**Salida**
+
+```js
+export default {
+ data() {
+ return {
+ msg: 'Enfocado!' // [!code focus]
+ }
+ }
+}
+```
+
+## Diferencias Coloreadas en Bloques de Código {#colored-diffs-in-code-blocks}
+
+Adicionar los comentarios `// [!code --]` o `// [!code ++]` en una linea creará una diferencia en esa linea, manteniendo los colores del bloque de código.
+
+**Entrada**
+
+````
+```js
+export default {
+ data () {
+ return {
+ msg: 'Borrado' // [!!code --]
+ msg: 'Adicionado' // [!!code ++]
+ }
+ }
+}
+```
+````
+
+**Salida**
+
+```js
+export default {
+ data () {
+ return {
+ msg: 'Borrado' // [!code --]
+ msg: 'Adicionado' // [!code ++]
+ }
+ }
+}
+```
+
+## Errores y Avisos en Bloques de Código {#errors-and-warnings-in-code-blocks}
+
+Adicionar los comentarios `// [!code warning]` o `// [!code error]` en una linea coloreará los bloques conforme necesário.
+
+**Entrada**
+
+````
+```js
+export default {
+ data () {
+ return {
+ msg: 'Error', // [!!code error]
+ msg: 'Aviso' // [!!code warning]
+ }
+ }
+}
+```
+````
+
+**Salida**
+
+```js
+export default {
+ data() {
+ return {
+ msg: 'Error', // [!code error]
+ msg: 'Aviso' // [!code warning]
+ }
+ }
+}
+```
+
+## Números de Linea {#line-numbers}
+
+Puede habilitar números de linea para cada bloque de código a través del archivo de configuración:
+
+```js
+export default {
+ markdown: {
+ lineNumbers: true
+ }
+}
+```
+
+Consulte las [opciones markdown](../reference/site-config#markdown) para más detalles.
+
+Puede adicionar la marca `:line-numbers` / `:no-line-numbers` en sus bloques de código para substituir el valor definido en la configuración.
+
+También puede personalizar el número inicial de linea adicionando `=` después `:line-numbers`. Por ejemplo, `:line-numbers=2` significa que los números de las lineas en los bloques de código comenzarán a partir de `2`.
+
+**Entrada**
+
+````md
+```ts {1}
+// números de linea desactivados por defecto
+const line2 = 'Esta es la linea 2'
+const line3 = 'Esta es la linea 3'
+```
+
+```ts:line-numbers {1}
+// números de linea activados
+const line2 = 'Esta es la linea 2'
+const line3 = 'Esta es la linea 3'
+```
+
+```ts:line-numbers=2 {1}
+// números de linea activados y comienzan en 2
+const line3 = 'Esta es la linea 3'
+const line4 = 'Esta es la linea 4'
+```
+````
+
+**Salida**
+
+```ts {1}
+// números de linea desactivados por defecto
+const line2 = 'Esta es la linea 2'
+const line3 = 'Esta es la linea 3'
+```
+
+```ts:line-numbers {1}
+// números de linea activados
+const line2 = 'Esta es la linea 2'
+const line3 = 'Esta es la linea 3'
+```
+
+```ts:line-numbers=2 {1}
+// números de linea activados y comienzan en 2
+const line3 = 'Esta es la linea 3'
+const line4 = 'Esta es la linea 4'
+```
+
+## Importar _Snippets_ de Código {#import-code-snippets}
+
+Puede importar pedazos de código de archivos existentes usando la siguiente sintaxis:
+
+```md
+<<< @/filepath
+```
+
+También soporta [destaque de linea](#line-highlighting-in-code-blocks):
+
+```md
+<<< @/filepath{highlightLines}
+```
+
+**Entrada**
+
+```md
+<<< @/snippets/snippet.js{2}
+```
+
+**Archivo de Código**
+
+<<< @/snippets/snippet.js
+
+**Salida**
+
+<<< @/snippets/snippet.js{2}
+
+::: tip
+
+El valor de `@` corresponde a la raiz del código fuente. Por defecto, es la raiz del proyecto VitePress, a menos que `srcDir` sea configurado. Alternativamente, puede también importar de paths relativos:
+
+```md
+<<< ../snippets/snippet.js
+```
+
+:::
+
+También puede usar una [región VS Code](https://code.visualstudio.com/docs/editor/codebasics#_folding) para incluir apenas la parte correspondiente del archivo de código. Puede proporcionar un nombre de región personalizado después de `#` siguiendo el path del archivo:
+
+**Entrada**
+
+```md
+<<< @/snippets/snippet-with-region.js#snippet{1}
+```
+
+**Archivo de Código**
+
+<<< @/snippets/snippet-with-region.js
+
+**Salida**
+
+<<< @/snippets/snippet-with-region.js#snippet{1}
+
+También puede especificar el idioma dentro de llaves (`{}`), así:
+
+```md
+<<< @/snippets/snippet.cs{c#}
+
+
+
+<<< @/snippets/snippet.cs{1,2,4-6 c#}
+
+
+
+<<< @/snippets/snippet.cs{1,2,4-6 c#:line-numbers}
+```
+
+Esto es útil si el lenguaje original no puede ser inferida por la extensión de archivo.
+
+## Grupos de Código {#code-groups}
+
+Puede agrupar varios bloques de código así:
+
+**Entrada**
+
+````md
+::: code-group
+
+```js [config.js]
+/**
+ * @type {import('vitepress').UserConfig}
+ */
+const config = {
+ // ...
+}
+
+export default config
+```
+
+```ts [config.ts]
+import type { UserConfig } from 'vitepress'
+
+const config: UserConfig = {
+ // ...
+}
+
+export default config
+```
+
+:::
+````
+
+**Salída**
+
+::: code-group
+
+```js [config.js]
+/**
+ * @type {import('vitepress').UserConfig}
+ */
+const config = {
+ // ...
+}
+
+export default config
+```
+
+```ts [config.ts]
+import type { UserConfig } from 'vitepress'
+
+const config: UserConfig = {
+ // ...
+}
+
+export default config
+```
+
+:::
+
+También puede [importar _snippets_ de código](#import-code-snippets) en grupos de código:
+
+**Entrada**
+
+```md
+::: code-group
+
+
+
+<<< @/snippets/snippet.js
+
+
+
+<<< @/snippets/snippet-with-region.js#snippet{1,2 ts:line-numbers} [snippet with region]
+
+:::
+```
+
+**Output**
+
+::: code-group
+
+<<< @/snippets/snippet.js
+
+<<< @/snippets/snippet-with-region.js#snippet{1,2 ts:line-numbers} [snippet with region]
+
+:::
+
+## Inclusión de Archivo Markdown {#markdown-file-inclusion}
+
+Puede incluir un archivo markdown en otro archvo markdown, incluso anidado.
+
+::: tip
+Puede prefijar el path del markdown con `@`, el actuará como la raiz de origen. Por defecto, es la raiz del projecto VitePress, a menos que `srcDir` sea configurado.
+:::
+
+Por ejemplo, puede incluir un archivo markdown relativo usando esto:
+
+**Entrada**
+
+```md
+# Documentación
+
+## Conceptos Básicos
+
+
+```
+
+**Archivo de Parte** (`parts/basics.md`)
+
+```md
+Algunas cosas básicas.
+
+### Configuración
+
+Puede ser creada usando `.foorc.json`.
+```
+
+**Código Equivalente**
+
+```md
+# Documentación
+
+## Conceptos básicos
+
+Algunas cosas básicas
+
+### Configuración
+
+Puede ser creada usando `.foorc.json`.
+```
+
+También soporta la selección de un intervalo de lineas:
+
+**Entrada**
+
+```md
+# Documentación
+
+## Conceptos Básicos
+
+
+```
+
+**Archivo de Parte** (`parts/basics.md`)
+
+```md
+Algunas cosas básicas.
+
+### Configuración
+
+Puede ser creada usando `.foorc.json`.
+```
+
+**Código Equivalente**
+
+```md
+# Documentación
+
+## Conceptos Básicos
+
+### Configuración
+
+Puede ser creada usando `.foorc.json`.
+```
+
+El formato del intervalo de lineas seleccionado puede ser: `{3,}`, `{,10}`, `{1,10}`
+
+::: warning
+Observe que esto no genera errores si el archivo no está presente. Por lo tanto, al usar este recurso, asegurese de que el contenido está siendo mostrado como se espera.:::
+
+## Ecuaciones Matemáticas {#math-equations}
+
+Esto es actualmente opcional. Para activarlo, necesita instalar `markdown-it-mathjax3` y definir `markdown.math` como `true` en su archivo de configuración:
+
+```sh
+npm add -D markdown-it-mathjax3
+```
+
+```ts
+// .vitepress/config.ts
+export default {
+ markdown: {
+ math: true
+ }
+}
+```
+
+**Entrada**
+
+```md
+Cuando $a \ne 0$, existen dos soluciones para $(ax^2 + bx + c = 0)$ y ellas son
+$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
+
+**Ecuaciones de Maxwell:**
+
+| ecuación | descripción |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+| $\nabla \cdot \vec{\mathbf{B}} = 0$ | la divergencia de $\vec{\mathbf{B}}$ es cero |
+| $\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} = \vec{\mathbf{0}}$ | la rotacional de $\vec{\mathbf{E}}$ es proporcional a la tasa de variación de $\vec{\mathbf{B}}$ |
+| $\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} = \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} = 4 \pi \rho$ | _hã?_ |
+
+**Salída**
+
+Cuando $a \ne 0$, existen dos soluciones para $(ax^2 + bx + c = 0)$ y ellas son
+$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
+
+**Ecuaciones de Maxwell:**
+
+| ecuación | descripción |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+| $\nabla \cdot \vec{\mathbf{B}} = 0$ | la divergencia de $\vec{\mathbf{B}}$ es cero |
+| $\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} = \vec{\mathbf{0}}$ | la rotacional de $\vec{\mathbf{E}}$ es proporcional a la tasa de variación de $\vec{\mathbf{B}}$ |
+| $\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} = \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} = 4 \pi \rho$ | _hã?_ |
+
+## _Lazy Loading_ de Imagenes {#image-lazy-loading}
+
+Puede activar la "carga perezosa" para cada imagen adicionada via markdown definiendo `lazyLoading` como `true` en su archivo de configuración:
+
+```js
+export default {
+ markdown: {
+ image: {
+ // la carga perezosa de imagenes está desactivada por defecto
+ lazyLoading: true
+ }
+ }
+}
+```
+
+## Configuración Avanzada {#advanced-configuration}
+
+VitePress usa [markdown-it](https://github.com/markdown-it/markdown-it) como interprete Markdown. Muchas de las extensiones arriba son implementadas por medio de _plugins_ personalizados. Puede personalizar más la instancia `markdown-it` usando la opción `markdown` en `.vitepress/config.js`:
+
+```js
+import { defineConfig } from 'vitepress'
+import markdownItAnchor from 'markdown-it-anchor'
+import markdownItFoo from 'markdown-it-foo'
+
+export default defineConfig({
+ markdown: {
+ // opciones para markdown-it-anchor
+ // https://github.com/valeriangalliat/markdown-it-anchor#usage
+ anchor: {
+ permalink: markdownItAnchor.permalink.headerLink()
+ },
+
+ // opciones para @mdit-vue/plugin-toc
+ // https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-toc#options
+ toc: { level: [1, 2] },
+
+ config: (md) => {
+ // use más plugins markdown-it!
+ md.use(markdownItFoo)
+ }
+ }
+})
+```
+
+Consulte la lista completa de propiedades configurables en [Referencia de Configuración: Configuración de la Aplicación](../reference/site-config#markdown).
diff --git a/docs/es/guide/mpa-mode.md b/docs/es/guide/mpa-mode.md
new file mode 100644
index 000000000000..1e8a7d26c572
--- /dev/null
+++ b/docs/es/guide/mpa-mode.md
@@ -0,0 +1,23 @@
+# Modo MPA {#mpa-mode}
+
+El modo MPA (Aplicación de multiples páginas) puede ser habilitado por la linea de comandos con `vitepress build --mpa`, o a través de la configuración por la opción `mpa: true`.
+
+En el modo MPA, todas las páginas son presentadas por defecto sin JavaScript incluído. Como resultado, el sitio en producción probablemente tendrá una marca de desempeño de visita inicial superior con herramientas de auditoría.
+
+Sin embargo, debido a la ausencia de navegación SPA, los links entre páginas resultan en recargas de página completos. Navegaciones después de la carga en el modo MPA no parecerán tan instantáneos en comparación con el modo SPA.
+
+También note que no tener JavaScript por defecto significa que está esencialmente utilizando Vue como modelo de lenguaje en el lado del servidor. Nungun manipulador de eventos será embutido en el navegador, entonces no habrá interactividad. Para cargar JavaScript en el lado del cliente, necesitará usar el tag especial `
+
+# Hola
+```
+
+`
+```
+
+### Presentando Contenido Crudo {#rendering-raw-content}
+
+Parámetros pasados para una página serán serializados en la carga JavaScript del cliente, por lo tanto, evite pasar datos pesados en los parámetros, como Markdown crudo o contenido HTML obtenido de un CSS remoto.
+
+En lugar de eso, puede pasar tal contenido para cada página usando la propiedad `content` en cada objeto de path:
+
+```js
+export default {
+ async paths() {
+ const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
+
+ return posts.map((post) => {
+ return {
+ params: { id: post.id },
+ content: post.content // Markdown o HTML crudo
+ }
+ })
+ }
+}
+```
+
+En seguida, use la siguiente sintaxis especial para presentar el contenido como parte del propio archivo Markdown:
+
+```md
+
+```
diff --git a/docs/es/guide/sitemap-generation.md b/docs/es/guide/sitemap-generation.md
new file mode 100644
index 000000000000..09f10aea1324
--- /dev/null
+++ b/docs/es/guide/sitemap-generation.md
@@ -0,0 +1,53 @@
+# Generación de Sitemap {#sitemap-generation}
+
+VitePress viene con soporte embutido para generar un archivo `sitemap.xml` para su sitio. Para habilitar, adicione lo siguiente a su `.vitepress/config.js`:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ sitemap: {
+ hostname: 'https://example.com'
+ }
+})
+```
+
+Para tener tags `` en su `sitemap.xml`, puede habilitar la opción [`lastUpdated`](../reference/default-theme-last-updated).
+
+## Opciones {#options}
+
+El soporte de Sitemap es alimentado por el módulo [`sitemap`](https://www.npmjs.com/package/sitemap). Puede pasar cualquiera de las opciones soportadas por el en la opción `sitemap` de su archivo de configuración. Estos serán pasados directamente al constructor `SitemapStream`. Consulte la [documentación `sitemap`](https://www.npmjs.com/package/sitemap#options-you-can-pass) para más detalles. Ejemplo:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ sitemap: {
+ hostname: 'https://example.com',
+ lastmodDateOnly: false
+ }
+})
+```
+
+## Hook `transformItems`
+
+Puede usar el hook `sitemap.transformItems` para modificar los items del sitemap antes de ser escritos en el archivo `sitemap.xml`. Este hook es llamado como un _array_ de items sitemap y espera un _array_ de items sitemap como retorno. Ejemplo:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ sitemap: {
+ hostname: 'https://example.com',
+ transformItems: (items) => {
+ // adiciona nuevos items o modifica/filtra items existentes
+ items.push({
+ url: '/extra-page',
+ changefreq: 'monthly',
+ priority: 0.8
+ })
+ return items
+ }
+ }
+})
+```
diff --git a/docs/es/guide/ssr-compat.md b/docs/es/guide/ssr-compat.md
new file mode 100644
index 000000000000..af0d26d989aa
--- /dev/null
+++ b/docs/es/guide/ssr-compat.md
@@ -0,0 +1,137 @@
+---
+outline: deep
+---
+
+# Compatibilidad SSR {#ssr-compatibility}
+
+VitePress pre-interpreta la aplicación en Node.js durante la compilación del producción, utilizando las capacidades de Interpretación del lado del servidor (SSR) de Vue. Esto significa que todo el código personalizado en los componentes del tema está sujeto a la compatibilidad SSR.
+
+La [sección SSR en la documentación Vue oficial](https://vuejs.org/guide/scaling-up/ssr.html) proporciona más contexto sobre lo que es SSR, la relación entre SSR / SSG y notas comunes sobre escribir código amigable con SSR. La regla general es acceder apenas APIs deln navegador / DOM en los hooks `beforeMount` o `mounted` de los componentes Vue.
+
+## ``
+
+Se está usando o demostrando componentes que no son compatibles con SSR (por ejemplo, contienen directivas personalizadas), puede envolverlos en el componente embutido ``:
+
+```md
+
+
+
+```
+
+## Bibliotecas que Acceden el API del Navegador en la Importación {#libraries-that-access-browser-api-on-import}
+
+Algunos componentes o bibliotecas acceden APIs del navegador **en la Importación**. Para usar código que asume un ambiente de navegador en la importación, necesita importarlo dinámicamente.
+
+### Importando en el Hook `mounted` {#importing-in-mounted-hook}
+
+```vue
+
+```
+
+### Importación Condicional {#conditional-import}
+
+Puede también importar condicionalmente usando el flag `import.meta.env.SSR` (parte de las [variables de entorno Vite](https://vitejs.dev/guide/env-and-mode.html#env-variables)):
+
+```js
+if (!import.meta.env.SSR) {
+ import('./lib-que-accede-window-en-la-importacion').then((module) => {
+ // usar código
+ })
+}
+```
+
+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
+/** @type {import('vitepress').Theme} */
+export default {
+ // ...
+ async enhanceApp({ app }) {
+ if (!import.meta.env.SSR) {
+ const plugin = await import('plugin-que-accede-window-en-la-importacion')
+ app.use(plugin.default)
+ }
+ }
+}
+```
+
+Si está usando TypeScript:
+```ts
+// .vitepress/theme/index.ts
+import type { Theme } from 'vitepress'
+
+export default {
+ // ...
+ async enhanceApp({ app }) {
+ if (!import.meta.env.SSR) {
+ const plugin = await import('plugin-que-accede-window-en-la-importacion')
+ app.use(plugin.default)
+ }
+ }
+} satisfies Theme
+```
+
+### `defineClientComponent`
+
+VitePress proporciona un auxiliar de conveniencia para importar componentes Vue que acceden APIs del navegador en la importación.
+
+```vue
+
+
+
+
+
+```
+
+Puede también pasar propiedades/hijos/_slots_ para el componente objetivo:
+
+```vue
+
+
+
+
+
+```
+
+El componente objetivo solo será importado en el hook `mounted` del componente que lo envuelve.
diff --git a/docs/es/guide/using-vue.md b/docs/es/guide/using-vue.md
new file mode 100644
index 000000000000..97cfbf934c3c
--- /dev/null
+++ b/docs/es/guide/using-vue.md
@@ -0,0 +1,256 @@
+# Usando Vue en Markdown {#using-vue-in-markdown}
+
+En VitePress, cada archivo Markdown es compilado para HTML y entonces procesado como un [Componente de Archivo Único de Vue](https://vuejs.org/guide/scaling-up/sfc.html). Esto significa que puede usar cualquier funcionalidad de Vue dentro del Markdown, incluyendo la interpolación dinámica, usar componentes Vue o lógica arbitrária de componentes Vue dentro de la página adicionando una tag `
+
+## Contenido Markdown
+
+El conteo es: {{ count }}
+
+
+
+
+```
+
+::: warning Evite `
+```
+
+## Usando _Teleports_ {#using-teleports}
+
+VitePress actualmente ofrece soporte a SSG para _teleports_ apenas para el cuerpo. Para otros objetivos, puede envolverlos dentro del componente embutido `` o inyectar la marcación de _teleport_ en la localización correcta en su página final HTML por medio del [hook `postRender`](../reference/site-config#postrender).
+
+
+
+::: details
+<<< @/components/ModalDemo.vue
+:::
+
+```md
+
+
+
+ // ...
+
+
+
+```
+
+
+
+
diff --git a/docs/es/guide/what-is-vitepress.md b/docs/es/guide/what-is-vitepress.md
new file mode 100644
index 000000000000..1d7558f085f2
--- /dev/null
+++ b/docs/es/guide/what-is-vitepress.md
@@ -0,0 +1,56 @@
+# Qué es VitePress? {#what-is-vitepress}
+
+VitePress es un [Generador de Sitios Estáticos](https://en.wikipedia.org/wiki/Static_site_generator) (SSG) proyectado para crear sitios rápidos y centrados en contenido. En suma, VitePress utiliza su contenido fuente escrito en [Markdown](https://en.wikipedia.org/wiki/Markdown), aplica un tema a el y genera páginas HTML estáticas que pueden ser facilmente implantadas en cualquier lugar.
+
+
+Quiere apenas experimentar? Valla al [Início Rápido](./getting-started).
+
+
+
+## Casos de Uso {#use-cases}
+
+- **Documentación**
+
+ VitePress viene con un tema por defecto proyectado para documentación técnica. El alimenta esta página que está leyendo ahora, juntamente con la documentación [Vite](https://vitejs.dev/), [Rollup](https://rollupjs.org/), [Pinia](https://pinia.vuejs.org/), [VueUse](https://vueuse.org/), [Vitest](https://vitest.dev/), [D3](https://d3js.org/), [UnoCSS](https://unocss.dev/), [Iconify](https://iconify.design/) e [muchos otros](https://www.vuetelescope.com/explore?framework.slug=vitepress).
+
+ La [documentación oficial Vue.js](https://vuejs.org/) también está basada en VitePress, pero usa un tema personalizado compartido entre varias traducciones.
+
+- **Blogs, Portfólios y sitios de Marketing**
+
+ VitePress soporta [temas totalmente personalizables](./custom-theme), con la experiencia de desarrollador por defecto de una aplicaciónn Vite + Vue. La construcción con Vite significa que puede aprovechar directamente plugins Vite de su rico ecosistema. Adicionalmente, VitePress proporciona APIs flexibles para[cargar datos](./data-loading) (locales o remotos) y [generar rutas dinámicamente](./routing#dynamic-routes). Puede usarlo para construir practicamente cualquier cosa desde que los datos puedan ser determinados en el momento del build.
+
+ El [blog oficial Vue.js](https://blog.vuejs.org/) es un blog simple que genera su página inicial basada en contenido local.
+
+## Experiencia de Desarrollador {#developer-experience}
+
+VitePress visa proporcionar excelente Experiencia de Desarrollador (DX) al trabajar con contenido en Markdown.
+
+- **[Alimentado por Vite:](https://vitejs.dev/)** inicialización instantánea del servidor, con ediciones siempre reflejadas instantáneamente (<100ms) sin recarga de página.
+
+- **[Extensiones Markdown Integradas:](./markdown)** Frontmatter, tablas, destaque de sintaxis... usted escoje. Especificamente, VitePress proporciona muchos recursos para trabajar con bloques de código, tornandolo ideal para documentación altamente técnica.
+
+- **[Markdown Mejorado por Vue:](./using-vue)** cada página Markdown es también un [Componente de Archivo único](https://pt.vuejs.org/guide/scaling-up/sfc.html), gracias a la compatibilidad de sintaxis de 100% del template Vue con HTML. Puede también incorporar iteractividad con su contenido estático usando recursos de template Vue o componentes Vue importados.
+
+## Desempeño {#performance}
+
+Al contrario de muchos SSGs tradicionales, un sitio generado por VitePress es la verdad una [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application) (SPA).
+
+- **Carga Inicial Rápida**
+
+ La visita inicial a cualquier página será servida con el HTML estático pré-renderizado para velocidad de carga rápida y SEO optimizado. La página entonces carga un paquete JavaScript que transforma la página en una SPA Vue ("hidratación"). El proceso de hidratación es extremadamente rápido: en [PageSpeed Insights](https://pagespeed.web.dev/report?url=https%3A%2F%2Fvitepress.dev%2F), sitios típicos VitePress alcanzan puntuaciones de desempeño casi perfectas, incluso en dispositivos móbiles de bajo desempeño con una red lenta.
+
+- **Navegación Rápida pos-carga**
+
+ Más importante todavía, el modelo SPA lleva a una mejor experiencia del usuario **después** de la carga inicial. La navegación subsequente dentro del sitio no causará una recarga adicional completa de la página. En vez de eso, el contenido de la página de entrada será buscado y actualizado dinámicamente. VitePress también pre-carga automáticamente pedazos de página para links que están dentro del viewport. En la mayoría de los casos, la navegación pos-carga parecerá instantánea.
+
+- **Interactividad Sin Penalidades**
+
+ Para ser capaz de hidratar las partes dinámicas Vue incorporadas dentro del Markdown estático, cada página Markdown es procesada como un componente Vue y compilada en JavaScript. Esto puede parecer ineficiente, pero el compilador Vue es suficientemente inteligente para separar las partes estáticas y dinámicas, minimizando tanto el costo de hidratación así como el tamaño de carga. Para la carga inicial de la página, las partes estáticas son automáticamente eliminadas de la carga JavaScript y omitidas durante la hidratación.
+
+## Y VuePress? {#what-about-vuepress}
+
+VitePress es el sucesor espiritual de VuePress. VuePress era orginalmente basado en Vue 2 y webpack. Con Vue 3 y Vite, VitePress ofrece una experiencia de desarrollador significamente mejor, mejor desempeño en producción, un tema por defecto más pulido y un API de personalización más flexible.
+
+A diferencia del API entre VitePress y VuePress reside principalmente en temas y personalización. Si estuviera usando VuePress 1 con el tema por defecto, la migración para VitePress debe ser relativamente simple.
+
+También hubo esfuerzo invertido en VuePress 2, que también soporta Vue 3 y Vite con mejor compatibilidad que con VuePress 1. Sin embargo, mantener dos SSGs en paralelo no es sustentable, entonces el equipo Vue decidió enfocarse en VitePress como el principal SSG recomendado a largo plazo.
diff --git a/docs/es/index.md b/docs/es/index.md
new file mode 100644
index 000000000000..bf9701e523a1
--- /dev/null
+++ b/docs/es/index.md
@@ -0,0 +1,60 @@
+---
+layout: home
+
+title: VitePress
+titleTemplate: Generador de Sitios Estáticos desarrollado con Vite y Vue
+
+hero:
+ name: VitePress
+ text: Generador de Sitios Estáticos Vite y Vue
+ tagline: Markdown para obtener lindos documentos en minutos
+ actions:
+ - theme: brand
+ text: Qué es VitePress?
+ link: /es/guide/what-is-vitepress
+ - theme: alt
+ text: Iniciar
+ link: /es/guide/getting-started
+ - theme: alt
+ text: GitHub
+ link: https://github.com/vuejs/vitepress
+ image:
+ src: /vitepress-logo-large.webp
+ alt: VitePress
+
+features:
+ - icon: 📝
+ title: Concéntrese en su contenido
+ details: Cree lindos sitios de documentación apenas con markdown.
+ - icon:
+ title: Disfruta de la experiencia Vite
+ details: Inicio instantaneo de servidor, actualizaciones ultrarrápidas, y plugins del ecosistema Vite.
+ - icon:
+ title: Personaliza con Vue
+ details: Usa la sintaxis y componentes Vue directamente en markdown, o construye temas personalizados con Vue.
+ - icon: 🚀
+ title: Entrega rápida de sitios
+ details: Carga inicial rápida con HTML estático, navegación rápida con enrutamiento del lado del cliente.
+---
+
+
diff --git a/docs/es/reference/cli.md b/docs/es/reference/cli.md
new file mode 100644
index 000000000000..f5a5583c0c0d
--- /dev/null
+++ b/docs/es/reference/cli.md
@@ -0,0 +1,74 @@
+# Intefaz de Linea de Comando {#command-line-interface}
+
+## `vitepress dev`
+
+ Inicia el servidor de desarrollo VitePress con el directorio designado como raíz. Por defecto, utiliza el director actual. el comando `dev` también se puede omitir cuando se ejecuta el directorio actual.
+
+### Uso
+
+```sh
+# Comienza en el directorio actual, omite el `dev`
+vitepress
+
+# iniciar en un subdirectorio
+vitepress dev [root]
+```
+
+### Opciones {#options}
+
+| Opciones | Descripción |
+| --------------- | ----------------------------------------------------------------- |
+| `--open [path]` | Abre el navegador en el inicio (`boolean \| string`) |
+| `--port ` | Especifica el puerto (`number`) |
+| `--base ` | Ruta de base pública (por defecto: `/`) (`string`) |
+| `--cors` | Habilitar CORS |
+| `--strictPort` | Salir si el puerto especificado ya esta en uso (`boolean`) |
+| `--force` | Obligar al optimizador a ignorar el cache y volver a empaquetar (`boolean`) |
+
+## `vitepress build`
+
+Compilar el sitio web de VitePress para producción.
+
+### Uso
+
+```sh
+vitepress build [root]
+```
+
+### Opciones
+
+| Opción | Descripción |
+| ------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
+| `--mpa` (experimental) | Compilar en [Modo MPA](../guide/mpa-mode) Sin hidratación del lado del cliente (`boolean`) |
+| `--base ` | Ruta de base pública (por defecto: `/`) (`string`) |
+| `--target ` | Transpilar objetivo (por defecto: `"modules"`) (`string`) |
+| `--outDir ` | Directorio de salida relativo a **cwd** (por defecto: `/.vitepress/dist`) (`string`) |
+| `--minify [minifier]` | Habilitar/desabilitar la minificación, o especifica un minero para usar (por defecto: `"esbuild"`) (`boolean \| "terser" \| "esbuild"`) |
+| `--assetsInlineLimit ` | Limitar los bytes para alinear los activos en base 64 (por defecto: `4096`) (`number`) |
+
+## `vitepress preview`
+
+Proporciona localmente la compilación de la producción.
+
+### Uso
+
+```sh
+vitepress preview [root]
+```
+
+### Opciones
+
+| Opción | Descripción |
+| --------------- | ------------------------------------------ |
+| `--base ` | Ruta de base pública (por defecto: `/`) (`string`) |
+| `--port ` | Especifica el puerto (`number`) |
+
+## `vitepress init`
+
+Inicia el [Asistente de Instalación](../guide/getting-started#setup-wizard) en el directorio actual.
+
+### Uso
+
+```sh
+vitepress init
+```
diff --git a/docs/es/reference/default-theme-badge.md b/docs/es/reference/default-theme-badge.md
new file mode 100644
index 000000000000..4c5e57ebe286
--- /dev/null
+++ b/docs/es/reference/default-theme-badge.md
@@ -0,0 +1,69 @@
+# Badge {#badge}
+
+Los Badge te permite agregar estados a tus encabezados. Por ejemplo, podría resultar útil especificar el tipo de sección o la version compatible.
+
+## Uso {#usage}
+
+Puedes usar el componente `Badge` que está disponible globalmente.
+
+```html
+### Title
+### Title
+### Title
+### Title
+```
+
+el código anterior se representa como:
+
+### Title
+### Title
+### Title
+### Title
+
+## Personalizar hijos {#custom-children}
+
+`` acepta `children` (hijos), que se mostrará en el badge.
+
+```html
+### Title custom element
+```
+
+### Title custom element
+
+## Personalizar Tipo de Color {#customize-type-color}
+
+Puedes personalizar el estilo del badge anulando las variables CSS. los siguiente son los valores predeterminados:
+
+```css
+:root {
+ --vp-badge-info-border: transparent;
+ --vp-badge-info-text: var(--vp-c-text-2);
+ --vp-badge-info-bg: var(--vp-c-default-soft);
+
+ --vp-badge-tip-border: transparent;
+ --vp-badge-tip-text: var(--vp-c-brand-1);
+ --vp-badge-tip-bg: var(--vp-c-brand-soft);
+
+ --vp-badge-warning-border: transparent;
+ --vp-badge-warning-text: var(--vp-c-warning-1);
+ --vp-badge-warning-bg: var(--vp-c-warning-soft);
+
+ --vp-badge-danger-border: transparent;
+ --vp-badge-danger-text: var(--vp-c-danger-1);
+ --vp-badge-danger-bg: var(--vp-c-danger-soft);
+}
+```
+
+## ``
+
+El componente `` acepta las siguiente propiedades:
+
+```ts
+interface Props {
+ // Cuando se pasa `` ese valor es ignorado.
+ text?: string
+
+ // El valor predeterminado es `tip`.
+ type?: 'info' | 'tip' | 'warning' | 'danger'
+}
+```
diff --git a/docs/es/reference/default-theme-carbon-ads.md b/docs/es/reference/default-theme-carbon-ads.md
new file mode 100644
index 000000000000..4ca016c571d3
--- /dev/null
+++ b/docs/es/reference/default-theme-carbon-ads.md
@@ -0,0 +1,22 @@
+# Carbon Ads {#carbon-ads}
+
+VitePress ha incorporado soporte nativo para [Carbon Ads](https://www.carbonads.net/). Al definir las credenciales de Carbon Ads en la configuración, VitePress mostrará anuncios en la página.
+
+```js
+export default {
+ themeConfig: {
+ carbonAds: {
+ code: 'tu-código-carbon',
+ placement: 'tu-vinculación-carbon'
+ }
+ }
+}
+```
+
+Estos valores se utilizan para llamar al script en CDN de carbon como se muestra a continuación.
+
+```js
+`//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}`
+```
+
+Para obtener más información de la configuración de Carbono Ads, por favor visite [Site Carbon Ads](https://www.carbonads.net/).
diff --git a/docs/es/reference/default-theme-config.md b/docs/es/reference/default-theme-config.md
new file mode 100644
index 000000000000..72cebed7005b
--- /dev/null
+++ b/docs/es/reference/default-theme-config.md
@@ -0,0 +1,452 @@
+# Configuración del Tema Predeterminado {#default-theme-config}
+
+La configuración del tema te permite personalizar tu tema. puedes definir la configuración del tema a través de la opción `themeConfig` en el archivo de configuración:
+
+```ts
+export default {
+ lang: 'pt-BR',
+ title: 'VitePress',
+ description: 'Generador de site estático Vite & Vue.',
+
+ // Configuraciones relacionadas con el tema.
+ themeConfig: {
+ logo: '/logo.svg',
+ nav: [...],
+ sidebar: { ... }
+ }
+}
+```
+
+**Las opciones documentadas de esta página se aplican unicamente al tema por defecto.** Diferentes temas esperan configuraciones diferentes de tema. Cuando se utiliza un tema personalizado, el objeto de configuración del tema se pasará al tema para que se puedan definir comportamientos condicionales.
+
+## i18nRouting
+
+- Tipo: `boolean`
+
+Cambie la configuración a, por ejemplo, `zh` será alterado para URL `/foo` (ou `/en/foo/`) para `/zh/foo`. Puedes desactivar este comportamiento configurado `themeConfig.i18nRouting` como `false`.
+
+## logo
+
+- Tipo: `ThemeableImage`
+
+Archivo de logotipo que se mostrará en la barra de navegación, justo antes del título del sitio. Acepta una ruta de cadena o un objeto para definir un logotipo diferente para los modos claro/oscuro.
+
+```ts
+export default {
+ themeConfig: {
+ logo: '/logo.svg'
+ }
+}
+```
+
+```ts
+type ThemeableImage =
+ | string
+ | { src: string; alt?: string }
+ | { light: string; dark: string; alt?: string }
+```
+
+## siteTitle
+
+- Tipo: `string | false`
+
+Puedes personalizar este elemento para reemplazar el título del sitio predeterminado (`title` en configuración de la aplicación) en navegación. Cuando se establece como `false`, el título en la navegación quedará deshabilitado. Útil cuando tienes un `logo` que ya contiene el título del sitio.
+
+```ts
+export default {
+ themeConfig: {
+ siteTitle: 'Hola mundo'
+ }
+}
+```
+
+## nav
+
+- Tipo: `NavItem`
+
+La configuración del elemento del menú de navegación. Más detalles en [Tema Predeterminado: Navegación](./default-theme-nav#navigation-links).
+
+```ts
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guia', link: '/guide' },
+ {
+ text: 'Menú Dropdown',
+ items: [
+ { text: 'Item A', link: '/item-1' },
+ { text: 'Item B', link: '/item-2' },
+ { text: 'Item C', link: '/item-3' }
+ ]
+ }
+ ]
+ }
+}
+```
+
+```ts
+type NavItem = NavItemWithLink | NavItemWithChildren
+
+interface NavItemWithLink {
+ text: string
+ link: string
+ activeMatch?: string
+ target?: string
+ rel?: string
+ noIcon?: boolean
+}
+
+interface NavItemChildren {
+ text?: string
+ items: NavItemWithLink[]
+}
+
+interface NavItemWithChildren {
+ text?: string
+ items: (NavItemChildren | NavItemWithLink)[]
+ activeMatch?: string
+}
+```
+
+## sidebar
+
+- Tipo: `Sidebar`
+
+La configuración del elemento del menú de la barra lateral. Más detalles en [Tema Predeterminado: Barra Lateral](./default-theme-sidebar).
+
+```ts
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Guia',
+ items: [
+ { text: 'Introducción', link: '/introduction' },
+ { text: 'A partir de', link: '/getting-started' },
+ ...
+ ]
+ }
+ ]
+ }
+}
+```
+
+```ts
+export type Sidebar = SidebarItem[] | SidebarMulti
+
+export interface SidebarMulti {
+ [path: string]: SidebarItem[]
+}
+
+export type SidebarItem = {
+ /**
+ * El rotulo del item.
+ */
+ text?: string
+
+ /**
+ * El link del item.
+ */
+ link?: string
+
+ /**
+ * Los hijos del item.
+ */
+ items?: SidebarItem[]
+
+ /**
+ * Si no se especifica, el grupo no es retráctil.
+ *
+ * Si es 'true', el grupo se puede contraer y está contraído de forma predeterminada.
+ *
+ * Si es 'false', el grupo se puede contraer pero se expande de forma predeterminada.
+ */
+ collapsed?: boolean
+}
+```
+
+## aside
+
+- Tipo: `boolean | 'left'`
+- Estandar: `true`
+- Puede ser anulado por la página a través de [frontmatter](./frontmatter-config#aside)
+
+Definir este valor como `false` evita que se muestre el elemento lateral.\
+Definir este valor como `true` presenta el lado de la derecha.\
+Definir este valor como `left` presenta el lado de la izquierda.
+
+Si desea deshabilitarlo para todas las vistas, debe usar `outline: false` en vez de eso.
+
+## outline
+
+- Tipo: `Outline | Outline['level'] | false`
+- El nivel se puede superponer por página mediante [frontmatter](./frontmatter-config#outline)
+
+Definir este valor como `false` evita que el elemento se muestre _outline_. Consulte la interfaz para más detalles:
+
+```ts
+interface Outline {
+ /**
+ * Los niveles de título que se mostrarán en el esquema.
+ * Un solo número significa que solo se mostrarán los títulos de ese nivel.
+ * Si se pasa una tupla, el primer número es el nivel mínimo y el segundo número es el nivel máximo.
+ * `'deep'` es lo mismo que `[2, 6]`, lo que significa que todos los titulos `
`. Si desea agregar elementos de tipo _block_, considere usar un _slot_ [`layout-bottom`](../guide/extending-default-theme#layout-slots).
+:::
+
+Tenga en cuenta que el pie de página no se mostrará cuando la [Barra Lateral](./default-theme-sidebar) es visible.
+
+## Configuración Frontmatter {#frontmatter-config}
+
+Esto se puede desactivar por página usando la opción `footer` en frontmatter:
+
+```yaml
+---
+footer: false
+---
+```
diff --git a/docs/es/reference/default-theme-home-page.md b/docs/es/reference/default-theme-home-page.md
new file mode 100644
index 000000000000..70dbdfcde05a
--- /dev/null
+++ b/docs/es/reference/default-theme-home-page.md
@@ -0,0 +1,168 @@
+# Página Inicial {#home-page}
+
+El tema predeterminado de VitePress proporciona un diseño de página de inicio, que también puedes ver en uso [en la página de inicio de este sitio web](../). Puedes usarlo en cualquiera de sus páginas especificando `layout: home` en [frontmatter](./frontmatter-config).
+
+```yaml
+---
+layout: home
+---
+```
+
+Sin embargo, esta opción por sí sola no sirve de mucho. Puede agregar varias "secciones" predefinidas diferentes a la página de inicio configurando opciones adicionales como `hero` y `features`.
+
+## Sección Hero {#hero-section}
+
+La sección _Hero_ queda en la parte superior de la página de inicio. Asi es como se puede configurar la sección _Hero_.
+
+```yaml
+---
+layout: home
+
+hero:
+ name: VitePress
+ text: Generador de sitios web estáticos con Vite & Vue.
+ tagline: Lorem ipsum...
+ image:
+ src: /logo.png
+ alt: VitePress
+ actions:
+ - theme: brand
+ text: Iniciar
+ link: /guide/what-is-vitepress
+ - theme: alt
+ text: Ver en GitHub
+ link: https://github.com/vuejs/vitepress
+---
+```
+
+```ts
+interface Hero {
+ // El string que se muestra encima del `text`. Viene con el color de la marca
+ // y se espera que sea breve, como el nombre del producto.
+ name?: string
+
+ // El texto principal de la sección de hero.
+ // Esto se definirá como un tag `h1`.
+ text: string
+
+ // Eslogan que se muestra abajo del `text`.
+ tagline?: string
+
+ // La imagen se muestra junto al área de texto y eslogan.
+ image?: ThemeableImage
+
+ // Botones accionables para mostrar en la sección principal de la página de inicio.
+ actions?: HeroAction[]
+}
+
+type ThemeableImage =
+ | string
+ | { src: string; alt?: string }
+ | { light: string; dark: string; alt?: string }
+
+interface HeroAction {
+ // Tema de color de botón. Estándar: `brand`.
+ theme?: 'brand' | 'alt'
+
+ // Etiqueta del botón.
+ text: string
+
+ // Destino del enlace del botón.
+ link: string
+
+ // Atributo target del link.
+ target?: string
+
+ // Atributo rel del link.
+ rel?: string
+}
+```
+
+### Personalizando el color del nombre {#customizing-the-name-color}
+
+VitePress usa el color de la marca (`--vp-c-brand-1`) para `name`. Sin embargo, puedes personalizar este color anulando la variable `--vp-home-hero-name-color`.
+
+```css
+:root {
+ --vp-home-hero-name-color: blue;
+}
+```
+
+También puedes personalizarlo aún más combinando `--vp-home-hero-name-background` para dar al `name` un color degradado.
+
+```css
+:root {
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
+}
+```
+
+## Sección de caracteristicas {#features-section}
+
+En la sección de funciones, puede enumerar cualquier cantidad de funciones que desee mostrar inmediatamente después de la sección. _Hero_. Para configurarlo seleccione la opción `features` para el frontmatter.
+
+Puede proporcionar un icono para cada función, que puede ser un emoji o cualquier tipo de imagen. Cuando el icono configurado es una imagen (svg, png, jpeg...), debes proporcionar al ícono el ancho y alto apropiados; También puedes proporcionar la descripción, su tamaño intrínseco y sus variantes para temas oscuros y claros cuando sea necesario.
+
+```yaml
+---
+layout: home
+
+features:
+ - icon: 🛠️
+ title: Sencillo y minimalista, siempre
+ details: Lorem ipsum...
+ - icon:
+ src: /cool-feature-icon.svg
+ title: Otra caracteristica interesante
+ details: Lorem ipsum...
+ - icon:
+ dark: /dark-feature-icon.svg
+ light: /light-feature-icon.svg
+ title: Otra caracteristica interesante
+ details: Lorem ipsum...
+---
+```
+
+```ts
+interface Feature {
+ // Muestra el icono en cada cuadro de función.
+ icon?: FeatureIcon
+
+ // Título de la caracteristica.
+ title: string
+
+ // Detalles de la caracteristicas.
+ details: string
+
+ // Enlace al hacer clic en el componente de funcionalidad
+ // El vínculo puede ser interno o externo.
+ //
+ // ej. `guide/reference/default-theme-home-page` ou `https://example.com`
+ link?: string
+
+ // Texto del enlace que se mostrará dentro del componente de funcionalidad.
+ // Mejor usado con opción `link`.
+ //
+ // ej. `Sepa más`, `Visitar página`, etc.
+ linkText?: string
+
+ // Atributo rel de enlace para la opción `link`.
+ //
+ // ej. `external`
+ rel?: string
+
+ // Atributo de destino del enlace para la opción `link`.
+ target?: string
+}
+
+type FeatureIcon =
+ | string
+ | { src: string; alt?: string; width?: string; height: string }
+ | {
+ light: string
+ dark: string
+ alt?: string
+ width?: string
+ height: string
+ }
+```
diff --git a/docs/es/reference/default-theme-last-updated.md b/docs/es/reference/default-theme-last-updated.md
new file mode 100644
index 000000000000..e1ac4022fa61
--- /dev/null
+++ b/docs/es/reference/default-theme-last-updated.md
@@ -0,0 +1,27 @@
+# Última Actualización {#last-updated}
+
+La hora en que se actualizó el contenido por última vez se mostrará en la esquina inferior derecha de la página. Para habilitar, agregue la opción `lastUpdated` en su confirguración.
+
+::: tip
+Necesitas hacer un _commit_ en el archivo markdown para ver el clima actualizado.
+:::
+
+## Configuración a nivel de sitio {#site-level-config}
+
+```js
+export default {
+ lastUpdated: true
+}
+```
+
+## Configuración Frontmatter {#frontmatter-config}
+
+Esto se puede desactivar por página usando la opción `lastUpdated` en frontmatter:
+
+```yaml
+---
+lastUpdated: false
+---
+```
+
+Consulte [Tema Personalizado: Última Actualización](./default-theme-config#lastupdated) para obtener más. Cualquier valor positivo a nivel de tema también habilitará la funcionalidad a menos que esté explícitamente deshabilitado a nivel de página o sitio.
diff --git a/docs/es/reference/default-theme-layout.md b/docs/es/reference/default-theme-layout.md
new file mode 100644
index 000000000000..10e910c04ad0
--- /dev/null
+++ b/docs/es/reference/default-theme-layout.md
@@ -0,0 +1,62 @@
+# Layout {#layout}
+
+Puedes elegir el layout de la página definiendo una opción de `layout` para el [frontmatter](./frontmatter-config) De la página. Hay tres opciones de layout: `doc`, `page` y `home`. Si no se especifica nada, la página será tratada como una página. `doc`.
+
+```yaml
+---
+layout: doc
+---
+```
+
+## Layout del documento {#doc-layout}
+
+La opción `doc` es el layout predeterminado y aplica estilo a todo el contenido de Markdown el aspecto de "documentación". Funciona agrupando todo el contenido en la clase CSS `vp-doc`, y aplicando estilos a los elementos debajo de ella.
+
+Casi todos los elementos genéricos como `p` o `h2`, recibirá un estilo especial. Por tanto, recuerda que si añades algún HTML contenido personalizado dentro del contenido Markdown, también se verá afectado por estos estilos.
+
+También proporciona recursos de documentación específicos que se enumeran a continuación. Estas funciones solo están habilitadas en este layout.
+
+- Editar link
+- Links Anterior y próximo.
+- _Outline_
+- [Carbon Ads](./default-theme-carbon-ads)
+
+## Layout de la Página {#page-layout}
+
+La opción `page` se trata como una 'página en blanco'. Markdown aún se procesará y todo [Extensiones Markdown](../guide/markdown) funcionará de la misma manera que el layout `doc`, pero esto no recibirá ningún estilo predeterminado.
+
+El layout de la página le permitirá diseñar todo sin que el tema de VitePress afecte el marcado. Esto es útil cuando desea crear su propia página personalizada.
+
+Tenga en cuenta que incluso en este mismo layout, la barra lateral seguirá apareciendo si la página tiene una configuración de barra lateral correspondiente.
+
+## Layout de Home {#home-layout}
+
+La opción `home` gerará un modelo de _"Homepage"_. En este layout podrás definir opciones extras, como `hero` y `features`, para personalizar todavá más el contenido. Visite [Tema predeterminado: Página Inicial](./default-theme-home-page) para obter más detalles.
+
+## Sin Layout {#no-layout}
+
+Si no quieres ningún diseño, puedes pasar `layout: false` a través del frontmatter. Esta opción es útil si deseas una página de destino completamente personalizable (sin barra lateral, barra de navegacón o pie de página por defecto).
+
+## Layout Personalizado {#custom-layout}
+
+También puedes usar un layout personalizado:
+
+```md
+---
+layout: foo
+---
+```
+
+Esto buscará un componente llamado `foo` registrado en contexto. Por ejemplo, puede registrar su componente globalmente en `.vitepress/theme/index.ts`:
+
+```ts
+import DefaultTheme from 'vitepress/theme'
+import Foo from './Foo.vue'
+
+export default {
+ extends: DefaultTheme,
+ enhanceApp({ app }) {
+ app.component('foo', Foo)
+ }
+}
+```
diff --git a/docs/es/reference/default-theme-nav.md b/docs/es/reference/default-theme-nav.md
new file mode 100644
index 000000000000..d244cba5696e
--- /dev/null
+++ b/docs/es/reference/default-theme-nav.md
@@ -0,0 +1,162 @@
+# Navegación {#nav}
+
+Refiriéndose a la barra de navegación que se muestra en la parte superior de la página. Contiene el título del sitio, enlaces del menú global, etc.
+
+## Título y logotipo del sitio {#site-title-and-logo}
+
+Por defecto, la navegación muestra el título del sitio que hace referencia al valor de [`config.title`](./site-config#title). Si desea cambiar lo que se muestra en la navegación, puede configurar un texto personalizado en el `themeConfig.siteTitle`.
+
+```js
+export default {
+ themeConfig: {
+ siteTitle: 'Mi Título Personalizado'
+ }
+}
+```
+
+Si tiene un logotipo para su sitio web, puede mostrarlo pasando la ruta a la imagen. Debes colocar el logo directamente dentro de la carpeta. `public`, y establezca la ruta absoluta hacia él.
+
+```js
+export default {
+ themeConfig: {
+ logo: '/my-logo.svg'
+ }
+}
+```
+
+Cuando agrega un logotipo, se muestra junto con el título del sitio. Si su logotipo tiene todo lo que necesita y desea ocultar el texto del título, configure `false` en la opción `siteTitle`.
+
+```js
+export default {
+ themeConfig: {
+ logo: '/my-logo.svg',
+ siteTitle: false
+ }
+}
+```
+
+También puedes pasar un objeto como logotipo si quieres agregar un atributo. `alt` o personalizarlo según el modo claro/oscuro. Consultar [`themeConfig.logo`](./default-theme-config#logo) para obtener más detalles.
+
+## Links de Navegación {#navigation-links}
+
+Puedes configurar la opción `themeConfig.nav` para añadir enlaces a tu navegación.
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guia', link: '/guide' },
+ { text: 'Configuración', link: '/config' },
+ { text: 'Registro de Cambios', link: 'https://github.com/...' }
+ ]
+ }
+}
+```
+
+`text` es el texto que se muestra en la navegación, y el `link` es el link al que será navegando cuando se hace click en el texto. Para el enlace, establezca la ruta al archivo sin el prefijo `.md` y siempre comenzar por `/`.
+
+Links de navegación también pueden ser menus _dropdown_. Para hacer eso, establezca la clave de `items` en la opción del link.
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guia', link: '/guide' },
+ {
+ text: 'Menú Dropdown',
+ items: [
+ { text: 'Item A', link: '/item-1' },
+ { text: 'Item B', link: '/item-2' },
+ { text: 'Item C', link: '/item-3' }
+ ]
+ }
+ ]
+ }
+}
+```
+
+Tenga en cuenta que el titulo del menú _dropdown_ (`Menu Dropdown` en el ejemplo anterior) no puede tener una propiedad `link`, ya que se convierte en un botón para abrir el cuadro del dialogo dropdown.
+
+También puedes agregar "secciones" a los elementos del menú _dropdown_ pasando más elementos anidados.
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ { text: 'Guia', link: '/guia' },
+ {
+ text: 'Menú Dropdown',
+ items: [
+ {
+ // Título da seção.
+ text: 'Título de la sección A',
+ items: [
+ { text: 'Item A de la sección A', link: '...' },
+ { text: 'Item B de la sección B', link: '...' }
+ ]
+ }
+ ]
+ },
+ {
+ text: 'Menú Dropdown',
+ items: [
+ {
+ // También puedes omitir el título
+ items: [
+ { text: 'Item A da Seção A', link: '...' },
+ { text: 'Item B da Seção B', link: '...' }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+### Personaliza el estado "activo" del link {#customize-link-s-active-state}
+
+Los elementos del menú de navegación se resaltarán cuando la página actual esté en la ruta correspondiente. Si desea personalizar la ruta que debe coincidir, establezca la propiedad `activeMatch` el regex como um valor en string.
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ // Este link esta en estado activo cuando
+ // el usuario esta en el camino `/config/`.
+ {
+ text: 'Guia',
+ link: '/guide',
+ activeMatch: '/config/'
+ }
+ ]
+ }
+}
+```
+
+::: warning
+`activeMatch` Debería ser un string regex, pero deberías definirla como un string. No podemos usar un objeto RegExp real aquí porque no es serializable durante el tiempo de construcción.
+:::
+
+### Personalizar los atributos "target" y "rel" de links {#customize-link-s-target-and-rel-attributes}
+
+Por defecto, VitePress determina automáticamente lod atributos `target` y `rel` en función de si existe un enlace externo o no. Pero si quieres, también puedes personalizarlos.
+
+```js
+export default {
+ themeConfig: {
+ nav: [
+ {
+ text: 'Merchandise',
+ link: 'https://www.thegithubshop.com/',
+ target: '_self',
+ rel: 'sponsored'
+ }
+ ]
+ }
+}
+```
+
+## Links Scociales {#social-links}
+
+Consulte [`socialLinks`](./default-theme-config#sociallinks).
diff --git a/docs/es/reference/default-theme-prev-next-links.md b/docs/es/reference/default-theme-prev-next-links.md
new file mode 100644
index 000000000000..6c10c7bcfd0a
--- /dev/null
+++ b/docs/es/reference/default-theme-prev-next-links.md
@@ -0,0 +1,43 @@
+# Links Anterior y Próximo {#prev-next-links}
+
+Puede personalizar el texto y el enlace de los botones Anterior y Siguiente que se muestran en la parte inferior de la página. Esto es útil cuando desea mostrar un texto diferente al que tiene en la barra lateral. Además, puede resultarle útil desactivar el pie de página o el enlace a la página para que no se incluya en la barra lateral.
+
+## prev
+
+- Tipo: `string | false | { text?: string; link?: string }`
+
+- Detalles:
+
+ Especifica el text/enlace que se mostrará en el enlace a la página anterior. Si no ve esto al principio, el text/enlace se deducirá de la configuración de la barra lateral.
+
+- Ejemplos:
+
+ - Para personalizar solo texto:
+
+ ```yaml
+ ---
+ prev: 'Iniciar | Markdown'
+ ---
+ ```
+
+ - Para personalizar ambos texto y link:
+
+ ```yaml
+ ---
+ prev:
+ text: 'Markdown'
+ link: '/guide/markdown'
+ ---
+ ```
+
+ - Para esconder la página anterior:
+
+ ```yaml
+ ---
+ prev: false
+ ---
+ ```
+
+## next
+
+Igual que el `prev` pero para la página siguiente.
diff --git a/docs/es/reference/default-theme-search.md b/docs/es/reference/default-theme-search.md
new file mode 100644
index 000000000000..10235382cd69
--- /dev/null
+++ b/docs/es/reference/default-theme-search.md
@@ -0,0 +1,379 @@
+---
+outline: deep
+---
+
+# Buscar {#search}
+
+## Busqueda local {#local-search}
+
+VitePress admite la búsqueda de texto completo utilizando un índice en el navegador gracias a [minisearch](https://github.com/lucaong/minisearch/). Para habilitar esta función, simplemente configure la opción `themeConfig.search.provider` como `'local'` en el archivo `.vitepress/config.ts`:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local'
+ }
+ }
+})
+```
+
+Resultado de ejemplo:
+
+
+
+Alternativamente, puedes usar [Algolia DocSearch](#algolia-search) o algunos complementos comunitarios como o .
+
+### i18n {#local-search-i18n}
+
+Puede utilizar una configuración como esta para utilizar la búsqueda multilingüe:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ locales: {
+ zh: {
+ translations: {
+ button: {
+ buttonText: '搜索文档',
+ buttonAriaLabel: '搜索文档'
+ },
+ modal: {
+ noResultsText: '无法找到相关结果',
+ resetButtonTitle: '清除查询条件',
+ footer: {
+ selectText: '选择',
+ navigateText: '切换'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+### Opciones MiniSearch {#mini-search-options}
+
+Puedes configurar MiniSearch de esta manera:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ miniSearch: {
+ /**
+ * @type {Pick}
+ */
+ options: {
+ /* ... */
+ },
+ /**
+ * @type {import('minisearch').SearchOptions}
+ * @default
+ * { fuzzy: 0.2, prefix: true, boost: { title: 4, text: 2, titles: 1 } }
+ */
+ searchOptions: {
+ /* ... */
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+Obtenga más información en [documentación de MiniSearch](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html).
+
+### Presentador de contenido personalizado {#custom-content-renderer}
+
+Puedes personalizar la función utilizada para presentar el contenido de rebajas antes de indexarlo:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ /**
+ * @param {string} src
+ * @param {import('vitepress').MarkdownEnv} env
+ * @param {import('markdown-it')} md
+ */
+ _render(src, env, md) {
+ // retorne un string HTML
+ }
+ }
+ }
+ }
+})
+```
+
+Esta función se eliminará de los datos del sitio web en el lado del cliente, por lo que podrá utilizar las API de Node.js en ella.
+
+#### Ejemplo: Excluir páginas de la busqueda {#example-excluding-pages-from-search}
+
+Puedes excluir páginas de la busqueda adicionando `search: false` al principio de la página. Alternativamente:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ _render(src, env, md) {
+ const html = md.render(src, env)
+ if (env.frontmatter?.search === false) return ''
+ if (env.relativePath.startsWith('algum/caminho')) return ''
+ return html
+ }
+ }
+ }
+ }
+})
+```
+
+::: warning Nota
+En este caso, una función `_render` se proporciona, es necesario manipular el `search: false` desde el frente por su cuenta. Además, el objeto `env` no estará completamente poblado antes que `md.render` se llama, luego verifica las propiedades opcionales `env`, como `frontmatter`, debe hacerse después de eso.
+:::
+
+#### Ejemplo: Transformar contenido - agregar anclajes {#example-transforming-content-adding-anchors}
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'local',
+ options: {
+ _render(src, env, md) {
+ const html = md.render(src, env)
+ if (env.frontmatter?.title)
+ return md.render(`# ${env.frontmatter.title}`) + html
+ return html
+ }
+ }
+ }
+ }
+})
+```
+
+## Busqueda de Algolia {#algolia-search}
+
+VitePress admite la búsqueda en su sitio de documentación utilizando [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch). Consulte su guía de introducción. en tu archivo `.vitepress/config.ts`, Deberá proporcionar al menos lo siguiente para que funcione:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'algolia',
+ options: {
+ appId: '...',
+ apiKey: '...',
+ indexName: '...'
+ }
+ }
+ }
+})
+```
+
+### i18n {#algolia-search-i18n} {#algolia-search-i18n}
+
+Puedes utilizar una configuración como esta para utilizar la búsqueda multilingüe:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ search: {
+ provider: 'algolia',
+ options: {
+ appId: '...',
+ apiKey: '...',
+ indexName: '...',
+ locales: {
+ zh: {
+ placeholder: '搜索文档',
+ translations: {
+ button: {
+ buttonText: '搜索文档',
+ buttonAriaLabel: '搜索文档'
+ },
+ modal: {
+ searchBox: {
+ resetButtonTitle: '清除查询条件',
+ resetButtonAriaLabel: '清除查询条件',
+ cancelButtonText: '取消',
+ cancelButtonAriaLabel: '取消'
+ },
+ startScreen: {
+ recentSearchesTitle: '搜索历史',
+ noRecentSearchesText: '没有搜索历史',
+ saveRecentSearchButtonTitle: '保存至搜索历史',
+ removeRecentSearchButtonTitle: '从搜索历史中移除',
+ favoriteSearchesTitle: '收藏',
+ removeFavoriteSearchButtonTitle: '从收藏中移除'
+ },
+ errorScreen: {
+ titleText: '无法获取结果',
+ helpText: '你可能需要检查你的网络连接'
+ },
+ footer: {
+ selectText: '选择',
+ navigateText: '切换',
+ closeText: '关闭',
+ searchByText: '搜索提供者'
+ },
+ noResultsScreen: {
+ noResultsText: '无法找到相关结果',
+ suggestedQueryText: '你可以尝试查询',
+ reportMissingResultsText: '你认为该查询应该有结果?',
+ reportMissingResultsLinkText: '点击反馈'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+})
+```
+
+[Estas opciones](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts) se pueden superponer. Consulte la documentación oficial de Algolia para obtener más información sobre ellos.
+
+### Configuración _Crawler_ {#crawler-config}
+
+A continuación se muestra un ejemplo de la configuración que utiliza este sitio:
+
+```ts
+new Crawler({
+ appId: '...',
+ apiKey: '...',
+ rateLimit: 8,
+ startUrls: ['https://vitepress.dev/'],
+ renderJavaScript: false,
+ sitemaps: [],
+ exclusionPatterns: [],
+ ignoreCanonicalTo: false,
+ discoveryPatterns: ['https://vitepress.dev/**'],
+ schedule: 'at 05:10 on Saturday',
+ actions: [
+ {
+ indexName: 'vitepress',
+ pathsToMatch: ['https://vitepress.dev/**'],
+ recordExtractor: ({ $, helpers }) => {
+ return helpers.docsearch({
+ recordProps: {
+ lvl1: '.content h1',
+ content: '.content p, .content li',
+ lvl0: {
+ selectors: '',
+ defaultValue: 'Documentation'
+ },
+ lvl2: '.content h2',
+ lvl3: '.content h3',
+ lvl4: '.content h4',
+ lvl5: '.content h5'
+ },
+ indexHeadings: true
+ })
+ }
+ }
+ ],
+ initialIndexSettings: {
+ vitepress: {
+ attributesForFaceting: ['type', 'lang'],
+ attributesToRetrieve: ['hierarchy', 'content', 'anchor', 'url'],
+ attributesToHighlight: ['hierarchy', 'hierarchy_camel', 'content'],
+ attributesToSnippet: ['content:10'],
+ camelCaseAttributes: ['hierarchy', 'hierarchy_radio', 'content'],
+ searchableAttributes: [
+ 'unordered(hierarchy_radio_camel.lvl0)',
+ 'unordered(hierarchy_radio.lvl0)',
+ 'unordered(hierarchy_radio_camel.lvl1)',
+ 'unordered(hierarchy_radio.lvl1)',
+ 'unordered(hierarchy_radio_camel.lvl2)',
+ 'unordered(hierarchy_radio.lvl2)',
+ 'unordered(hierarchy_radio_camel.lvl3)',
+ 'unordered(hierarchy_radio.lvl3)',
+ 'unordered(hierarchy_radio_camel.lvl4)',
+ 'unordered(hierarchy_radio.lvl4)',
+ 'unordered(hierarchy_radio_camel.lvl5)',
+ 'unordered(hierarchy_radio.lvl5)',
+ 'unordered(hierarchy_radio_camel.lvl6)',
+ 'unordered(hierarchy_radio.lvl6)',
+ 'unordered(hierarchy_camel.lvl0)',
+ 'unordered(hierarchy.lvl0)',
+ 'unordered(hierarchy_camel.lvl1)',
+ 'unordered(hierarchy.lvl1)',
+ 'unordered(hierarchy_camel.lvl2)',
+ 'unordered(hierarchy.lvl2)',
+ 'unordered(hierarchy_camel.lvl3)',
+ 'unordered(hierarchy.lvl3)',
+ 'unordered(hierarchy_camel.lvl4)',
+ 'unordered(hierarchy.lvl4)',
+ 'unordered(hierarchy_camel.lvl5)',
+ 'unordered(hierarchy.lvl5)',
+ 'unordered(hierarchy_camel.lvl6)',
+ 'unordered(hierarchy.lvl6)',
+ 'content'
+ ],
+ distinct: true,
+ attributeForDistinct: 'url',
+ customRanking: [
+ 'desc(weight.pageRank)',
+ 'desc(weight.level)',
+ 'asc(weight.position)'
+ ],
+ ranking: [
+ 'words',
+ 'filters',
+ 'typo',
+ 'attribute',
+ 'proximity',
+ 'exact',
+ 'custom'
+ ],
+ highlightPreTag: '',
+ highlightPostTag: '',
+ minWordSizefor1Typo: 3,
+ minWordSizefor2Typos: 7,
+ allowTyposOnNumericTokens: false,
+ minProximity: 1,
+ ignorePlurals: true,
+ advancedSyntax: true,
+ attributeCriteriaComputedByMinProximity: true,
+ removeWordsIfNoResults: 'allOptional'
+ }
+ }
+})
+```
+
+
diff --git a/docs/es/reference/default-theme-sidebar.md b/docs/es/reference/default-theme-sidebar.md
new file mode 100644
index 000000000000..05dd42f36827
--- /dev/null
+++ b/docs/es/reference/default-theme-sidebar.md
@@ -0,0 +1,217 @@
+# Barra Lateral {#sidebar}
+
+La barra lateral es el bloque de navegación principal de su documentación. Puede configurar el menú de la barra lateral en [`themeConfig.sidebar`](./default-theme-config#sidebar).
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Guia',
+ items: [
+ { text: 'Introducción', link: '/introduction' },
+ { text: 'Iniciando', link: '/getting-started' },
+ ...
+ ]
+ }
+ ]
+ }
+}
+```
+
+## Conceptos básicos {#the-basics}
+
+La forma más sencilla del menú de la barra lateral es pasar una único _array_ de links. El elemento de primer nivel define la "sección" de la barra latera. debe contener `text`, cuál es el título de la sección, y `items` que son los propios enlaces de navegación.
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Título de la sección A',
+ items: [
+ { text: 'Item A', link: '/item-a' },
+ { text: 'Item B', link: '/item-b' },
+ ...
+ ]
+ },
+ {
+ text: 'Título de la sección B',
+ items: [
+ { text: 'Item C', link: '/item-c' },
+ { text: 'Item D', link: '/item-d' },
+ ...
+ ]
+ }
+ ]
+ }
+}
+```
+
+Cada `link` debe especificar la ruta al archivo en sí comenzando con `/`.
+Si agrega una barra al final del enlace, mostrará el `index.md` del directorio correspondiente.
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Guia',
+ items: [
+ // Esto muestra la página `/guide/index.md`.
+ { text: 'Introducción', link: '/guide/' }
+ ]
+ }
+ ]
+ }
+}
+```
+
+Puede anidar aún más elementos de la barra lateral hasta 6 niveles de profundidad contando desde el nivel raíz. Tenga en cuenta que los niveles superiores a 6 se ignorarán y no se mostrarán en la barra lateral.
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Nivel 1',
+ items: [
+ {
+ text: 'Nivel 2',
+ items: [
+ {
+ text: 'Nivel 3',
+ items: [
+ ...
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+## Varias Barras Laterales {#multiple-sidebars}
+
+Puedes mostrar una barra lateral diferente según la ruta de la página. Por ejemplo, como se muestra en este sitio, es posible que desee crear secciones separadas de contenido en su documentación, como la página "Guía" y la página "Configuración".
+
+Para hacer esto, primero organice sus páginas en directorios para cada sección deseada:
+
+```
+.
+├─ guide/
+│ ├─ index.md
+│ ├─ one.md
+│ └─ two.md
+└─ config/
+ ├─ index.md
+ ├─ three.md
+ └─ four.md
+```
+
+Luego actualice su configuración para definir su barra lateral para cada sección. Esta vez debes pasar un objeto en lugar de un array.
+
+```js
+export default {
+ themeConfig: {
+ sidebar: {
+ // Esta barra lateral se muestra cuando un usuario
+ // está en el directorio `guide`.
+ '/guide/': [
+ {
+ text: 'Guia',
+ items: [
+ { text: 'Índice', link: '/guide/' },
+ { text: 'Um', link: '/guide/one' },
+ { text: 'Dois', link: '/guide/two' }
+ ]
+ }
+ ],
+
+ // Esta barra lateral se muestra cuando un usuario
+ // está en el directorio `config`.
+ '/config/': [
+ {
+ text: 'Configuración',
+ items: [
+ { text: 'Índice', link: '/config/' },
+ { text: 'Tres', link: '/config/three' },
+ { text: 'Cuatro', link: '/config/four' }
+ ]
+ }
+ ]
+ }
+ }
+}
+```
+
+## Grupos Retráctiles en la Barra Lateral {#collapsible-sidebar-groups}
+
+Adicionando una opción `collapsed` al grupo de la barra lateral, muestra un botón para ocultar/mostrar cada sección
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Título de la sección A',
+ collapsed: false,
+ items: [...]
+ }
+ ]
+ }
+}
+```
+
+Todas las secciones están 'abiertas' de forma predeterminada. Si desea que estén 'cerrados' al cargar la página inicial, configure la opción `collapsed` como `true`.
+
+```js
+export default {
+ themeConfig: {
+ sidebar: [
+ {
+ text: 'Título de la sección A',
+ collapsed: true,
+ items: [...]
+ }
+ ]
+ }
+}
+```
+
+## `useSidebar`
+
+Devuelve datos relacionados con la barra lateral. El objeto devuelto tiene el siguiente tipo:
+
+```ts
+export interface DocSidebar {
+ isOpen: Ref
+ sidebar: ComputedRef
+ sidebarGroups: ComputedRef
+ hasSidebar: ComputedRef
+ hasAside: ComputedRef
+ leftAside: ComputedRef
+ isSidebarEnabled: ComputedRef
+ open: () => void
+ close: () => void
+ toggle: () => void
+}
+```
+
+**Exemplo:**
+
+```vue
+
+
+
+
Sólo visible cuando existe la barra lateral
+
+
+```
diff --git a/docs/es/reference/default-theme-team-page.md b/docs/es/reference/default-theme-team-page.md
new file mode 100644
index 000000000000..1f6492a85fd0
--- /dev/null
+++ b/docs/es/reference/default-theme-team-page.md
@@ -0,0 +1,258 @@
+
+
+# Página de Equipo {#team-page}
+
+Si deseas presentar a tu equipo, puedes utilizar componentes del equipo para crear la página del equipo. Hay dos formas de utilizar estos componentes. Una es incrustarlo en la página del documento y otra es crear una página de equipo completa.
+
+## Mostrar miembros del equipo en una página {#show-team-members-in-a-page}
+
+Puedes usar el componente `` expuesto en `vitepress/theme` para mostrar una lista de los miembros del equipo en cualquier página.
+
+```html
+
+
+# Nuestro equipo
+
+Saluda a nuestro increible equipo.
+
+
+```
+
+El código anterior mostrará a un miembro del equipo en un elemento similar a una tarjeta. Debería mostrar algo similar a lo siguiente.
+
+
+
+El componente `` viene en dos tamaños diferentes, pequeño `small` y médio `medium`. Si bien es una cuestión de preferencia, generalmente el tamaño `small` debería encajar mejor cuando se use en la página del documento. Además, puede agregar más propiedades a cada miembro, como agregar el botón "descripción" o "patrocinador". Obtenga más información sobre en [``](#vpteammembers).
+
+Incrustar miembros del equipo en la página del documento es bueno para equipos pequeños donde tener una página de equipo dedicada completa puede ser demasiado, o introducir miembros parciales como referencia al contexto de la documentación.
+
+Si tienes una gran cantidad de miembros o simplemente deseas más espacio para exhibir a los miembros del equipo, considere [crear una página de equipo completa.](#create-a-full-team-page)
+
+## Creando una página de equipo completa {#create-a-full-team-page}
+
+En lugar de agregar miembros del equipo a la página del documento, también puede crear una página de equipo completa, del mismo modo que puede crear una [Página Inicial](./default-theme-home-page) personalizada.
+
+Para crear una página de equipo, primero cree un nuevo md. El nombre del archivo no importa, pero aquí lo llamaremos `team.md`. En este archivo, configure la opción `layout: page` desde frontmatter, y luego puedes componer la estructura de tu página usando componentes `TeamPage`.
+
+```html
+---
+layout: page
+---
+
+
+
+
+
+ Nuestro equipo
+
+
+ El desarrollo de VitePress está guiado por un equipo internacional,
+ Algunos de los miembros han elegido aparecer a continuación.
+
+
+
+
+```
+
+Al crear una página de equipo completa, recuerde agrupar todos los componentes con el componente ``. Este componente garantizará que todos los componentes anidados relacionados con el equipo obtengan la estructura de diseño adecuada, como los espacios.
+
+El componente `` adiciona la sección de título de la página. El título es `
`. Use los _slots_ `#title` y `#lead` para poder documentar sobre su equipo.
+
+`` funciona igual que cuando se usa en una página de documento. Mostrará la lista de miembros.
+
+### Agregar secciones para dividir a los miembros del equipo {#add-sections-to-divide-team-members}
+
+Puede agregar "secciones" a la página de su equipo. Por ejemplo, puede tener diferentes tipos de miembros del equipo, como miembros del equipo central y socios de la comunidad. Puede dividir a estos miembros en secciones para explicar mejor las funciones de cada grupo.
+
+Para poder hacerlo, agregue al componente `` al archivo `team.md` que creamos anteriormente.
+
+```html
+---
+layout: page
+---
+
+
+
+
+ Nuestro equipo
+ ...
+
+
+
+ Amigos
+ ...
+
+
+
+
+
+```
+
+El componente `` Puede tener los _slots_ `#title` y `#lead` similares al componente `VPTeamPageTitle`, y también al _slot_ `#members` para mostrar a los miembros del equipo.
+
+Recuerde colocar el componente `` dentro del _slot_ `#members`.
+
+## ``
+
+El componente `` muestra una determinada lista de miembros.
+
+```html
+
+```
+
+```ts
+interface Props {
+ // Tamaño de cada miembro. El valor predeterminado es `medium`.
+ size?: 'small' | 'medium'
+
+ // Lista de miembros que se mostrará.
+ members: TeamMember[]
+}
+
+interface TeamMember {
+ // Imagen de avatar de miembro.
+ avatar: string
+
+ // Nombre del miembro.
+ name: string
+
+ // Título a ser mostrado a bajo del nombre del miembro.
+ // Ej.: Desarrollador, Ingeniero de Software, etc.
+ title?: string
+
+ // Organización a la que pertenece al miembro.
+ org?: string
+
+ // URL de la organización.
+ orgLink?: string
+
+ // Descripción del miembro.
+ desc?: string
+
+ // Links sociales, por ejemplo, GitHub, Twitter, etc.
+ // Puedes pasar un objeto de Links Sociales aquí.
+ // Vea: https://vitepress.dev/reference/default-theme-config.html#sociallinks
+ links?: SocialLink[]
+
+ // URL de la página del patrocinador del miembro.
+ sponsor?: string
+
+ // Texto para enlace del patrocinador. El valor predeterminado es 'Sponsor'.
+ actionText?: string
+}
+```
+
+## ``
+
+El componente raíz al crear una página de equipo completa. Sólo acepta una _slot_. Aplicará estilo a todos los componentes anteriores relacionados con el equipo.
+
+## ``
+
+Agrega la sección "título" a la página. Es mejor usarlo desde el principio debajo ``. Acepta los _slots_ `#title` y `#lead`.
+
+```html
+
+
+
+ Nuestro equipo
+
+
+ El desarrollo de VitePress está guiado por un equipo internacional,
+ Algunos de los miembros han elegido aparecer a continuación.
+
+
+
+```
+
+## ``
+
+Crea una 'sección' en la página del equipo. Aceptar los _slots_ `#title`, `#lead` y `#members`. Puedes agregar tantas secciones como quieras dentro ``.
+
+```html
+
+ ...
+
+ Amigos
+ Lorem ipsum...
+
+
+
+
+
+```
diff --git a/docs/es/reference/frontmatter-config.md b/docs/es/reference/frontmatter-config.md
new file mode 100644
index 000000000000..9032f42e848e
--- /dev/null
+++ b/docs/es/reference/frontmatter-config.md
@@ -0,0 +1,221 @@
+---
+outline: deep
+---
+
+# Configuración Frontmatter {#frontmatter-config}
+
+Frontmatter permite la configuración basada en páginas. En cada archivo markdown, puede utilizar la configuración de frontmatter para anular las opciones de configuración a nivel de sitio o tema. Además, hay opciones de configuración que sólo se pueden establecer en frontmatter.
+
+Ejemplo de uso:
+
+```md
+---
+title: Documentación con VitePress
+editLink: true
+---
+```
+
+Puede acceder a los datos del frontmatter a través de la variable global `$frontmatter` en expresiones Vue:
+
+```md
+{{ $frontmatter.title }}
+```
+
+## title
+
+- Tipo: `string`
+
+Título de la página. Es lo mismo que [config.title](./site-config#title), y anula la configuración a nivel de sitio.
+
+```yaml
+---
+title: VitePress
+---
+```
+
+## titleTemplate
+
+- Tipo: `string | boolean`
+
+El sufijo del título. Es lo mismo que [config.titleTemplate](./site-config#titletemplate), y anula la configuración a nivel de sitio.
+
+```yaml
+---
+title: VitePress
+titleTemplate: Generador de sitios web estáticos con Vite & Vue
+---
+```
+
+## descripción
+
+- Tipo: `string`
+
+Descripción de la página. Es lo mismo que [config.description](./site-config#description), y anula la configuración a nivel de sitio.
+
+```yaml
+---
+description: VitePress
+---
+```
+
+## head
+
+- Tipo: `HeadConfig[]`
+
+Especifica etiquetas de encabezado adicionales que se inyectarán en la página actual. Se agregarán después de las etiquetas principales inyectadas por la configuración a nivel de sitio.
+
+```yaml
+---
+head:
+ - - meta
+ - name: description
+ content: hello
+ - - meta
+ - name: keywords
+ content: super duper SEO
+---
+```
+
+```ts
+type HeadConfig =
+ | [string, Record]
+ | [string, Record, string]
+```
+
+## Solo Tema Predeterminado {#default-theme-only}
+
+Las siguientes opciones de frontmatter solo se aplican cuando se usa el tema predeterminado.
+
+### layout
+
+- Tipo: `doc | home | page`
+- Predeterminado: `doc`
+
+Determina el layout de la página.
+
+- `doc` - Aplica estilos de documentación por defecto al contenido markdown.
+- `home` - Layout especial para la "Página Inicial". Puedes agregar opciones extras como `hero` y `features` para crear rapidamente una hermosa página inicial.
+- `page` - Se comporta de manera similar a `doc`, pero no aplica estilos al contenido. Útil cuando desea crear una página totalmente personalizada.
+
+```yaml
+---
+layout: doc
+---
+```
+
+### hero
+
+Define el contenido de la sección _hero_ en la página inicial cuando `layout` está definido como `home`. Más detalles en [Tema Predeterminado: Página Inicial](./default-theme-home-page).
+
+### features
+
+Define los elementos que se mostrarán en la sección de características cuando `layout` está definido como `home`. Más detalles en [Tema Predeterminado: Página Inicial](./default-theme-home-page).
+
+### navbar
+
+- Tipo: `boolean`
+- Predeterminado: `true`
+
+Se debe mostrar una [barra de navegación](./default-theme-nav).
+
+```yaml
+---
+navbar: false
+---
+```
+
+### sidebar
+
+- Tipo: `boolean`
+- Predeterminado: `true`
+
+Se debe mostrar una [barra lateral](./default-theme-sidebar).
+
+```yaml
+---
+sidebar: false
+---
+```
+
+### aside
+
+- Tipo: `boolean | 'left'`
+- Predeterminado: `true`
+
+Define la localización del componente aside en el layout `doc`.
+
+Configurar este valor como `false` evita que se muestre el elemento lateral.\
+Configurar este valor como `true` presenta el lado de la derecha.\
+Configurar este valor como `'left'` presenta el lado de la izquierda.
+
+```yaml
+---
+aside: false
+---
+```
+
+### outline
+
+- Tipo: `number | [number, number] | 'deep' | false`
+- Predeterminado: `2`
+
+Los niveles del encabezado en _outline_ que se mostrará para la página. Es lo mismo que [config.themeConfig.outline.level](./default-theme-config#outline), y anula el valor establecido en la configuración a nivel de sitio.
+
+### lastUpdated
+
+- Tipo: `boolean | Date`
+- Predeterminado: `true`
+
+Se debe mostrar el texto de [última actualización](./default-theme-last-updated) en el pie de página de la página actual. Si se especifica una fecha y hora específicas, se mostrarán en lugar de la hora de la última modificación de git.
+
+```yaml
+---
+lastUpdated: false
+---
+```
+
+### editLink
+
+- Tipo: `boolean`
+- Predeterminado: `true`
+
+Se debe mostrar el [link de edición](./default-theme-edit-link) en el pie de página de la página actual.
+
+```yaml
+---
+editLink: false
+---
+```
+
+### footer
+
+- Tipo: `boolean`
+- Predeterminado: `true`
+
+Se debe mostrar el [pie de página](./default-theme-footer).
+
+```yaml
+---
+footer: false
+---
+```
+
+### pageClass
+
+- Tipo: `string`
+
+Agrega un nombre de clase adicional a una página específica.
+
+```yaml
+---
+pageClass: custom-page-class
+---
+```
+
+Luego puede personalizar los estilos para esta página específica en el archivo. `.vitepress/theme/custom.css`:
+
+```css
+.custom-page-class {
+ /* estilos especificos de la página */
+}
+```
diff --git a/docs/es/reference/runtime-api.md b/docs/es/reference/runtime-api.md
new file mode 100644
index 000000000000..21fec5a9c4d4
--- /dev/null
+++ b/docs/es/reference/runtime-api.md
@@ -0,0 +1,165 @@
+# API en Tiempo de Ejecución {#runtime-api}
+
+VitePress ofrece varias API integradas para permitir el acceso a los datos de la aplicación. VitePress también viene con algunos componentes integrados que se pueden utilizar globalmente.
+
+Los métodos auxiliares son importaciones globales de `vitepress` y se utilizan a menudo en componentes Vue de temas personalizados. Sin embargo, también se pueden utilizar dentro de páginas `.md` porque los archivos de rebajas se compilan en [Componentes de Archivo Único Vue (SFC)](https://vuejs.org/guide/scaling-up/sfc.html).
+
+Métodos que comienzan con `use*` indican que es una función de [API de Composición Vue 3](https://vuejs.org/guide/introduction.html#composition-api) ("Composable") que solo puede ser utilizada dentro de `setup()` o `
+
+
+
{{ theme.footer.copyright }}
+
+```
+
+## `useRoute`
+
+Devuelve el objeto de ruta actual con el siguiente tipo:
+
+```ts
+interface Route {
+ path: string
+ data: PageData
+ component: Component | null
+}
+```
+
+## `useRouter`
+
+Devuelve la instancia del enrutador VitePress para que pueda navegar mediante programación a otra página.
+
+```ts
+interface Router {
+ /**
+ * Ruta atual.
+ */
+ route: Route
+ /**
+ * Navegar para una nueva URL.
+ */
+ go: (to?: string) => Promise
+ /**
+ * Llamado antes del cambio de ruta. Devuelve 'falso' para cancelar la navegación.
+ */
+ onBeforeRouteChange?: (to: string) => Awaitable
+ /**
+ * Se llama antes de que se cargue el componente de la página (después de que se haya actualizado el estado del historial).
+ * atualizado). Retorne `false` para cancelar la navegación.
+ */
+ onBeforePageLoad?: (to: string) => Awaitable
+ /**
+ * Llamado después del cambio de ruta.
+ */
+ onAfterRouteChanged?: (to: string) => Awaitable
+}
+```
+
+## `withBase`
+
+- **Tipo**: `(path: string) => string`
+
+agrega la [`base`](./site-config#base) configurada a una ruta URL determinada. Consulte también [Base URL](../guide/asset-handling#base-url).
+
+## ``
+
+El componente `` muestra el contenido de markdown renderizado. Útil [al crear tu propio tema](../guide/custom-theme).
+
+```vue
+
+
Layout Personalizado!
+
+
+```
+
+## ``
+
+El componente `` muestra tu _slot_ solo del lado del cliente.
+
+Debido a que las aplicaciones VitePress se interpretan en el lado del servidor en Node.js cuando generan compilaciones estáticas, cualquier uso de Vue debe seguir los requisitos del código universal. En resumen, asegúrese de acceder solo a las API del navegador/DOM en ganchos `beforeMount` o `mounted`.
+
+Si está utilizando o demostrando componentes que no son compatibles con SSR (por ejemplo, contienen directivas personalizadas), puede incluirlos dentro del componente. `ClientOnly`.
+
+```vue-html
+
+
+
+```
+
+- Relacionado: [Compatibilidad SSR](../guide/ssr-compat)
+
+## `$frontmatter`
+
+Accede directamente a los datos [frontmatter](../guide/frontmatter) de la página actual en expresiones Vue.
+
+```md
+---
+title: Olá
+---
+
+# {{ $frontmatter.title }}
+```
+
+## `$params`
+
+Accede directamente a los [parámetros de ruta dinámica](../guide/routing#dynamic-routes) de la página actual en expresiones Vue.
+
+```md
+- nombre del paquete: {{ $params.pkg }}
+- versión: {{ $params.version }}
+```
diff --git a/docs/es/reference/site-config.md b/docs/es/reference/site-config.md
new file mode 100644
index 000000000000..b2f3cf8305fc
--- /dev/null
+++ b/docs/es/reference/site-config.md
@@ -0,0 +1,705 @@
+---
+outline: deep
+---
+
+# Configuración de site {#site-config}
+
+La configuración del site es donde puede configurar los ajustes globales del site. Las opciones de configuración de la aplicación definen las configuraciones que se aplican a todos los sites de VitePress, independientemente del tema que estén utilizando. Por ejemplo, el directorio base o el título del site.
+
+## Vista general {#overview}
+
+### Resolución de configuración {#config-resolution}
+
+El archivo de configuración siempre se resuelve desde `/.vitepress/config.[ext]`, donde `` es la [raiz del proyecto](../guide/routing#root-and-source-directory) VitePress y `[ext]` es una de las extensiones de archivo compatibles. TypeScript es compatible desde el primer momento. Las extensiones compatibles incluyen `.js`, `.ts`, `.mjs` y `.mts`.
+
+Recuerde usar la sintaxis de módulos ES en los archivos de configuración. El archivo de configuración debe exportar por defecto un objeto:
+
+```ts
+export default {
+ // opciones de configuración a nivel de aplicación
+ lang: 'pt-BR',
+ title: 'VitePress',
+ description: 'Generador de site estático Vite & Vue.',
+ ...
+}
+```
+
+:::details Configuración dinámica (Assíncrona)
+
+Si necesitas generar dinamicamente la configuración, también puedes exportar por defecto una función. Por ejemplo:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default async () => {
+ const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
+
+ return defineConfig({
+ // opciones de configuración a nivel de aplicación
+ lang: 'pt-BR',
+ title: 'VitePress',
+ description: 'Generador de site estático Vite & Vue.',
+
+ // opciones de configuración a nivel de tema
+ themeConfig: {
+ sidebar: [
+ ...posts.map((post) => ({
+ text: post.name,
+ link: `/posts/${post.name}`
+ }))
+ ]
+ }
+ })
+}
+```
+
+También puedes utilizar `await` en el nivel superior. Como:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
+
+export default defineConfig({
+ // opciones de configuración a nivel de aplicación
+ lang: 'pt-BR',
+ title: 'VitePress',
+ description: 'Generador de site estático Vite & Vue.',
+
+ // opciones de configuración a nivel de tema
+ themeConfig: {
+ sidebar: [
+ ...posts.map((post) => ({
+ text: post.name,
+ link: `/posts/${post.name}`
+ }))
+ ]
+ }
+})
+```
+
+:::
+
+### Configuración Intellisense {#config-intellisense}
+
+Usar el auxiliar `defineConfig` proporcionará Intellisense con tecnología TypeScript para las opciones de configuración. Suponiendo que su IDE lo admita, esto debería funcionar tanto en JavaScript como en TypeScript.
+
+```js
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ // ...
+})
+```
+
+### Configuración de Tema Escrito {#typed-theme-config}
+
+Por defecto, el auxiliar `defineConfig` espera el tipo de configuración del tema por defecto:
+
+```ts
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ themeConfig: {
+ // El tipo es `DefaultTheme.Config`
+ }
+})
+```
+
+Si usa un tema personalizado y desea realizar comprobaciones de tipo para la configuración del tema, deberá usar `defineConfigWithTheme` en su lugar, y pase el tipo de configuración para su tema personalizado a través de un argumento genérico:
+
+```ts
+import { defineConfigWithTheme } from 'vitepress'
+import type { ThemeConfig } from 'your-theme'
+
+export default defineConfigWithTheme({
+ themeConfig: {
+ // El tipo es `ThemeConfig`
+ }
+})
+```
+
+### Configuración Vite, Vue & Markdown
+
+- **Vite**
+
+ Puede configurar la instancia de Vite subyacente usando la opción [vite](#vite) en su configuración de VitePress. No es necesario crear un archivo de configuración de Vite por separado.
+
+- **Vue**
+
+ VitePress ya incluye el plugin oficial de Vue para Vite ([@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue)). Puede configurar sus opciones usando la opción [vue](#vue) en su configuración VitePress.
+
+- **Markdown**
+
+ Puede configurar la instancia subyacente de [Markdown-It](https://github.com/markdown-it/markdown-it) usando la opción [markdown](#markdown) en su configuración VitePress.
+
+## Metadatos de Site {#site-metadata}
+
+### title
+
+- Tipo: `string`
+- Predeterminado: `VitePress`
+- Puede ser reemplazado por página a través de [frontmatter](./frontmatter-config#title)
+
+Título de site. Al usar el tema por defecto, este será mostrado en la barra de navegación.
+
+También se utilizará como sufijo predeterminado para todos los títulos de páginas individuales a menos que [`titleTemplate`](#titletemplate) definirse. El título final de una página individual será el contenido textual de su primer encabezado. `
`, combinado con el título global como sufijo. Por ejemplo, con la siguiente configuración y contenido de página:
+
+```ts
+export default {
+ title: 'Mi increible sitio web'
+}
+```
+
+```md
+# Hola
+```
+
+El título de la página será `Hola | Mi increible sitio web`.
+
+### titleTemplate
+
+- Tipo: `string | boolean`
+- Puede ser reemplazado por página a través de [frontmatter](./frontmatter-config#titletemplate)
+
+Le permite personalizar el sufijo del título de cada página o el título completo. Por ejemplo:
+
+```ts
+export default {
+ title: 'Mi increible sitio web',
+ titleTemplate: 'Sufijo Personalizado'
+}
+```
+
+```md
+# Hola
+```
+
+El título de la página será `Hola | Sufijo Personalizado`.
+
+Para personalizar completamente cómo se debe representar el título, puedes usar el símbolo `:title` en `titleTemplate`:
+
+```ts
+export default {
+ titleTemplate: ':title - Sufijo Personalizado'
+}
+```
+
+Aqui, `:title` será reemplazado por el texto que se deduce del primer título `
` de la página. El título del ejemplo de la página anterior será `Hola - Sufijo Personalizado`.
+
+Una opción puede ser definida como `false` para desactivar sufijos del título.
+
+### description
+
+- Tipo: `string`
+- Predeterminado: `Um site VitePress`
+- Puede ser sustituído por página a través de [frontmatter](./frontmatter-config#descrição)
+
+Descripción del sitio web. Esto se presentará como una etiqueta. `` en la página HTML.
+
+```ts
+export default {
+ descripción: 'Un site VitePress'
+}
+```
+
+### head
+
+- Tipo: `HeadConfig[]`
+- Predeterminado: `[]`
+- Se puede agregar por página a través de [frontmatter](./frontmatter-config#head)
+
+Elementos adicionales para agregar a la etiqueta `` de la página HTML. Las etiquetas agregadas por los usuarios son mostradas antes de la etiqueta `head` de cierre, despues de las etiquetas VitePress.
+
+```ts
+type HeadConfig =
+ | [string, Record]
+ | [string, Record, string]
+```
+
+#### Ejemplo: Agregando un favicon {#example-adding-a-favicon}
+
+```ts
+export default {
+ cabecera: [['link', { rel: 'icon', href: '/favicon.ico' }]]
+} // coloque favicon.ico en el directorio público, si la base está definida, use /base/favicon.ico
+
+/* Mostraría:
+
+*/
+```
+
+#### Ejemplo: Agregando Fuentes de Google {#example-adding-google-fonts}
+
+```ts
+export default {
+ head: [
+ [
+ 'link',
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' }
+ ],
+ [
+ 'link',
+ { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }
+ ],
+ [
+ 'link',
+ { href: 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', rel: 'stylesheet' }
+ ]
+ ]
+}
+
+/* Mostraría:
+
+
+
+*/
+```
+
+#### Ejemplo: Registrando un _service worker_ {#example-registering-a-service-worker}
+
+```ts
+export default {
+ head: [
+ [
+ 'script',
+ { id: 'register-sw' },
+ `;(() => {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.register('/sw.js')
+ }
+ })()`
+ ]
+ ]
+}
+
+/* Mostraría:
+
+*/
+```
+
+#### Ejemplo: Usando Google Analytics {#example-using-google-analytics}
+
+```ts
+export default {
+ head: [
+ [
+ 'script',
+ { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=TAG_ID' }
+ ],
+ [
+ 'script',
+ {},
+ `window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'TAG_ID');`
+ ]
+ ]
+}
+
+/* Mostraría:
+
+
+*/
+```
+
+### lang
+
+- Tipo: `string`
+- Predeterminado: `en-US`
+
+El atributo de idioma del sitio. Esto se mostrará como una etiqueta. `` en la página HTML.
+
+```ts
+export default {
+ lang: 'en-US'
+}
+```
+
+### base
+
+- Tipo: `string`
+- Predeterminado: `/`
+
+La URL base donde se implementará el sitio. Deberá configurar esto si planea implementar su sitio en un subdirectorio, por ejemplo, en páginas de GitHub. Si planea implementar su sitio web en `https://foo.github.io/bar/` entonces deberías definir la base como `'/bar/'`. Siempre debe comenzar y terminar con una barra.
+
+La base se agrega automáticamente a todas las URL que comienzan con / en otras opciones, por lo que solo necesitas especificarla una vez.
+
+```ts
+export default {
+ base: '/base/'
+}
+```
+
+## Roteamento {#routing}
+
+### cleanUrls
+
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+Cuando se establece en `true`, VitePress eliminará el `.html` al final de las URLs. Consulte también [Generar URL Limpia](../guide/routing#generating-clean-url).
+
+::: Alerta de Soporte de Servidor Requerido
+Habilitar esto puede requerir configurar adicional en su plataforma de alojamiento. Para funcionar, su servidor debe poder servir `/foo.html` cuando visite `/foo` **sin redirección**.
+:::
+
+### rewrites
+
+- Tipo: `Record`
+
+Define asignaciones de directorios personalizados <-> URL. Visite [Rutas: Reescribir Rutas](../guide/routing#route-rewrites) para obtener más detalles.
+
+```ts
+export default {
+ rewrites: {
+ 'source/:page': 'destination/:page'
+ }
+}
+```
+
+## Construcción {#build}
+
+### srcDir
+
+- Tipo: `string`
+- Predeterminado: `.`
+
+El directorio donde se almacenan tus páginas de rebajas, en relación con la raíz del proyecto. vea también [Directorio Raiz y de origen](../guide/routing#root-and-source-directory).
+
+```ts
+export default {
+ srcDir: './src'
+}
+```
+
+### srcExclude
+
+- Tipo: `string`
+- Predeterminado: `undefined`
+
+Un [patrón glob](https://github.com/mrmlnc/fast-glob#pattern-syntax) para hacer coincidir los archivos de rebajas que deben exluirse como contenido de origen.
+
+```ts
+export default {
+ srcExclude: ['**/README.md', '**/TODO.md']
+}
+```
+
+### outDir
+
+- Tipo: `string`
+- Predeterminado: `./.vitepress/dist`
+
+La ubicación de la salida de compilación para el sitio, en relación con el [raiz del proyecto](../guide/routing#root-and-source-directory).
+
+```ts
+export default {
+ outDir: '../public'
+}
+```
+
+### assetsDir
+
+- Tipo: `string`
+- Predeterminado: `assets`
+
+Especifica el directorio para anidar los activos generados. El camino debe estar dentro [`outDir`](#outdir) y se resuelve en relación con el mismo.
+
+```ts
+export default {
+ assetsDir: 'static'
+}
+```
+
+### cacheDir
+
+- Tipo: `string`
+- Predeterminado: `./.vitepress/cache`
+
+El directorio para los archivos de caché, en relación con el [raiz del proyecto](../guide/routing#root-and-source-directory). Vea también: [cacheDir](https://vitejs.dev/config/shared-options.html#cachedir).
+
+```ts
+export default {
+ cacheDir: './.vitepress/.vite'
+}
+```
+
+### ignoreDeadLinks
+
+- Tipo: `boolean | 'localhostLinks' | (string | RegExp | ((link: string) => boolean))[]`
+- Predeterminado: `false`
+
+Cuando se establece en `true`, VitePress no dejará de compilarse debido a links rotos.
+
+Cuando se establece en `'localhostLinks'`, la compilación fallará en links rotos, per no verificará los links `localhost`.
+
+```ts
+export default {
+ ignoreDeadLinks: true
+}
+```
+
+También puede ser un _array_ de una exacta URL en string, patrones regex, o funciones de filtro personalizadas.
+
+```ts
+export default {
+ ignoreDeadLinks: [
+ // ignora URL exacta "/playground"
+ '/playground',
+ // ignora todos los links localhost
+ /^https?:\/\/localhost/,
+ // ignora todos los links incluyendo "/repl/""
+ /\/repl\//,
+ // función personalizada, ignora todos los links incluyendo "ignore"
+ (url) => {
+ return url.toLowerCase().includes('ignore')
+ }
+ ]
+}
+```
+
+### mpa
+
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+Cuando se define como `true`, la aplicación de producción se compilará en [Modo MPA](../guide/mpa-mode). El modo MPA envía 0 kb de JavaScript de forma predeterminada, a expensas de deshabilitar la navegación del lado del cliente y requerir permiso explícito para la interactividad.
+
+## Tematización {#theming}
+
+### appearance
+
+- Tipo: `boolean | 'dark' | 'force-dark' | import('@vueuse/core').UseDarkOptions`
+- Predeterminado: `true`
+
+Se habilitará el modo oscuro (agregando una classe `.dark` al elemento ``).
+
+- Si la opción está configurada en `true` El tema predeterminado está determinado por la combinación de colores preferida del usuario.
+- Si la opción está configurada en `dark` El tema es oscuro de forma predeterminada a menos que el usuario lo cambie manualmente.
+- Si la opción está configurada en `false` los usuarios no podrán cambiar el tema.
+
+Esta opción inyecta un script en línea que restaura la configuración de los usuarios desde el almacenamiento local. (_local storage_) usando una llave `vitepress-theme-appearance`. Eso asegurará que la clase `.dark` se aplicará antes de que se muestre la página para evitar el parpadeo.
+
+`appearance.initialValue` puede ser `'dark' | undefined`. Refs o getters no son soportados.
+
+### lastUpdated
+
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+Para obtener la marca de tiempo de la última actualización para cada página usando Git. El sello de fecha se incluirá en los datos de cada página, accesible a través de [`useData`](./runtime-api#usedata).
+
+Cuando se utiliza el tema predeterminado, al habilitar esta opción se mostrará la última hora de actualización de cada página. Puedes personalizar el texto mediante la opción [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext).
+
+## Personalización {#customization}
+
+### markdown
+
+- Tipo: `MarkdownOption`
+
+Configure las opciones de procesador Markdown. VitePress usa [Markdown-it](https://github.com/markdown-it/markdown-it) como procesador y [Shiki](https://github.com/shikijs/shiki) para resaltar la sintaxis del idioma. Dentro de esta opción, puede pasar varias opciones de Markdown relacionadas para satisfacer sus necesidades.
+
+```js
+export default {
+ markdown: {...}
+}
+```
+
+Consulte la [declaración de tipo y jsdocs](https://github.com/vuejs/vitepress/blob/main/src/node/markdown/markdown.ts) para conocer todas las opciones disponibles.
+
+### vite
+
+- Tipo: `import('vite').UserConfig`
+
+Pase la [Configuración Vite](https://vitejs.dev/config/) sin procesar al servidor interno / empaquetador Vite.
+
+```js
+export default {
+ vite: {
+ // Opciones de configuración Vite
+ }
+}
+```
+
+### vue
+
+- Tipo: `import('@vitejs/plugin-vue').Options`
+
+Pase las opciones [`@vitejs/plugin-vue`](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#options) sin formato a la instancia del complemento interno.
+
+```js
+export default {
+ vue: {
+ // Opciones @vitejs/plugin-vue
+ }
+}
+```
+
+## Construir Ganchos {#build-hooks}
+
+Los enlaces de compilación VitePress permiten agregar nuevas funciones al su sitio web:
+
+- Sitemap
+- Indexación de busqueda
+- PWA
+- _Teleports_
+
+## buildEnd
+- Tipo: `(siteConfig: SiteConfig) => Awaitable`
+`buildEnd` es un enlace de compilación CLI (Interfaz de línea de comando), se ejecutará después de que se complete la compilación (SSG) pero antes de que finalice el proceso CLI de VitePress.
+
+```ts
+export default {
+ async buildEnd(siteConfig) {
+ // ...
+ }
+}
+```
+
+## postRender
+- Tipo: `(context: SSGContext) => Awaitable`
+- `postRender` es un gancho de compilación, llamado cuando se completa la interpretación de SSG. Le permitirá manipular el contenido de los _teleports_ durante la generación de sitios estáticos.
+
+ ```ts
+ export default {
+ async postRender(context) {
+ // ...
+ }
+ }
+ ```
+
+ ```ts
+ interface SSGContext {
+ content: string
+ teleports?: Record
+ [key: string]: any
+ }
+ ```
+
+## transformHead
+- Tipo: `(context: TransformContext) => Awaitable`
+
+`transformHead` es un enlace de compilación para transformar el encabezado antes de generar cada página. Esto le permite agregar entradas de encabezado que no se pueden agregar estáticamente a la configuración de VitePress. Sólo necesita devolver entradas adicionales, que se fusionarán automáticamente con las existentes.
+
+:::warning
+No mutes ningún elemento dentro `context`.
+:::
+
+```ts
+export default {
+ async transformHead(context) {
+ // ...
+ }
+}
+```
+
+```ts
+interface TransformContext {
+ page: string // e.g. index.md (relativo a srcDir)
+ assets: string[] // todos los activos no-js/css con URL pública completamente resuelta
+ siteConfig: SiteConfig
+ siteData: SiteData
+ pageData: PageData
+ title: string
+ description: string
+ head: HeadConfig[]
+ content: string
+}
+```
+
+Tenga en cuenta que este enlace solo se llama cuando se genera el sitio de forma estática. No se llama durante el desarrollo. Si necesita agregar entradas de encabezado dinámicas durante el desarrollo, puede usar el enlace [`transformPageData`](#transformpagedata) en su lugar.
+
+ ```ts
+ export default {
+ transformPageData(pageData) {
+ pageData.frontmatter.head ??= []
+ pageData.frontmatter.head.push([
+ 'meta',
+ {
+ name: 'og:title',
+ content:
+ pageData.frontmatter.layout === 'home'
+ ? `VitePress`
+ : `${pageData.title} | VitePress`
+ }
+ ])
+ }
+ }
+ ```
+
+#### Ejemplo: Agregando una URL canónica `` {#example-adding-a-canonical-url-link}
+
+```ts
+export default {
+ transformPageData(pageData) {
+ const canonicalUrl = `https://example.com/${pageData.relativePath}`
+ .replace(/index\.md$/, '')
+ .replace(/\.md$/, '.html')
+
+ pageData.frontmatter.head ??= []
+ pageData.frontmatter.head.push([
+ 'link',
+ { rel: 'canonical', href: canonicalUrl }
+ ])
+ }
+}
+```
+
+### transformHtml
+- Tipo: `(code: string, id: string, context: TransformContext) => Awaitable`
+`transformHtml` es un gancho de compilación para transformar el contenido de cada página antes de guardarla en el disco.
+
+:::warning
+No mute ningún elemento dentro del `context`. Además, modificar el contenido HTML puede provocar problemas de hidratación en tiempo de ejecución.
+:::
+
+```ts
+export default {
+ async transformHtml(code, id, context) {
+ // ...
+ }
+}
+```
+
+### transformPageData
+- Tipo: `(pageData: PageData, context: TransformPageContext) => Awaitable | { [key: string]: any } | void>`
+
+`transformPageData` es un gancho para transformar los datos de cada página. Puedes hacer mutaciones directamente en `pageData` o devolver valores modificados que se fusionarán con los datos de la página.
+
+:::warning
+No mute ningún elemento dentro del `context` y tenga cuidado ya que esto puede afectar el rendimiento del servidor de desarrollo, especialmente si tiene algunas solicitudes de red o cálculos pesados (como generar imágenes) en el gancho. Puede consultar `process.env.NODE_ENV === 'production'` para ver la lógica condicional.
+:::
+
+```ts
+export default {
+ async transformPageData(pageData, { siteConfig }) {
+ pageData.contributors = await getPageContributors(pageData.relativePath)
+ }
+
+ // o devolver datos para fusionar
+ async transformPageData(pageData, { siteConfig }) {
+ return {
+ contributors: await getPageContributors(pageData.relativePath)
+ }
+ }
+}
+```
+
+```ts
+interface TransformPageContext {
+ siteConfig: SiteConfig
+}
+```
diff --git a/docs/lunaria.config.json b/docs/lunaria.config.json
index 73b7a38a6084..9887d7606b39 100644
--- a/docs/lunaria.config.json
+++ b/docs/lunaria.config.json
@@ -6,7 +6,7 @@
},
"files": [
{
- "location": ".vitepress/config/{en,zh,pt,ru}.ts",
+ "location": ".vitepress/config/{en,zh,pt,ru,es}.ts",
"pattern": ".vitepress/config/@lang.ts",
"type": "universal"
},
@@ -32,6 +32,10 @@
{
"label": "Русский",
"lang": "ru"
+ },
+ {
+ "label": "Español",
+ "lang": "es"
}
],
"outDir": ".vitepress/dist/_translations",
diff --git a/docs/package.json b/docs/package.json
index 5cd9ec1f3498..25c3a0afe5c3 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -3,14 +3,14 @@
"private": true,
"type": "module",
"scripts": {
- "build": "vitepress build",
"dev": "vitepress dev",
+ "build": "vitepress build",
+ "preview": "vitepress preview",
"lunaria:build": "lunaria build",
- "lunaria:open": "open-cli .vitepress/dist/_translations/index.html",
- "preview": "vitepress preview"
+ "lunaria:open": "open-cli .vitepress/dist/_translations/index.html"
},
"devDependencies": {
- "@lunariajs/core": "^0.1.0",
+ "@lunariajs/core": "^0.1.1",
"markdown-it-mathjax3": "^4.3.2",
"open-cli": "^8.0.0",
"vitepress": "workspace:*"
diff --git a/docs/pt/guide/deploy.md b/docs/pt/guide/deploy.md
index ba8b2fd8b1ad..e853aa377f97 100644
--- a/docs/pt/guide/deploy.md
+++ b/docs/pt/guide/deploy.md
@@ -288,4 +288,4 @@ Consulte [Criar e Implantar um Aplicativo VitePress no Edgio](https://docs.edg.i
### Kinsta Static Site Hosting {#kinsta-static-site-hosting}
-Você pode implantar seu site Vitepress em [Kinsta](https://kinsta.com/static-site-hosting/) seguindo estas [instruções](https://kinsta.com/docs/vitepress-static-site-example/).
+Você pode implantar seu site VitePress em [Kinsta](https://kinsta.com/static-site-hosting/) seguindo estas [instruções](https://kinsta.com/docs/vitepress-static-site-example/).
diff --git a/docs/pt/guide/extending-default-theme.md b/docs/pt/guide/extending-default-theme.md
index db68e954a18c..88d32d12d95c 100644
--- a/docs/pt/guide/extending-default-theme.md
+++ b/docs/pt/guide/extending-default-theme.md
@@ -337,4 +337,4 @@ export default defineConfig({
})
```
-Para saber o nome exato do componente consulte [nosso código fonte](https://github.com/vuejs/vitepress/tree/main/src/client/theme-default/components). Como os componentes são internos, há uma pequena chance de que o nome deles seja atualizado entre lançamentos secundários.
\ No newline at end of file
+Para saber o nome exato do componente consulte [nosso código fonte](https://github.com/vuejs/vitepress/tree/main/src/client/theme-default/components). Como os componentes são internos, há uma pequena chance de que o nome deles seja atualizado entre lançamentos secundários.
diff --git a/docs/pt/guide/i18n.md b/docs/pt/guide/i18n.md
index d5ee91c72f44..3b72e826b8f8 100644
--- a/docs/pt/guide/i18n.md
+++ b/docs/pt/guide/i18n.md
@@ -110,4 +110,4 @@ watchEffect(() => {
## Suporte a RTL (Experimental) {#rtl-support-experimental}
-Para suporte a RTL (Right to Left), especifique `dir: 'rtl'` na configuração e use algum plugin RTLCSS PostCSS como , ou . Você precisará configurar seu plugin PostCSS para usar `:where([dir="ltr"])` e `:where([dir="rtl"])` como prefixos para evitar problemas de especificidade CSS.
\ No newline at end of file
+Para suporte a RTL (Right to Left), especifique `dir: 'rtl'` na configuração e use algum plugin RTLCSS PostCSS como , ou . Você precisará configurar seu plugin PostCSS para usar `:where([dir="ltr"])` e `:where([dir="rtl"])` como prefixos para evitar problemas de especificidade CSS.
diff --git a/docs/pt/guide/markdown.md b/docs/pt/guide/markdown.md
index 5fba73338604..cb2d3e222d27 100644
--- a/docs/pt/guide/markdown.md
+++ b/docs/pt/guide/markdown.md
@@ -769,7 +769,7 @@ Por exemplo, você pode incluir um arquivo markdown relativo usando isto:
```md
# Documentação
-## Conceitos Básicos
+## Conceitos Básicos
```
@@ -926,4 +926,4 @@ export default defineConfig({
})
```
-Consulte a lista completa de propriedades configuráveis em [Referência de Configuração: Configuração da Aplicação](../reference/site-config#markdown).
\ No newline at end of file
+Consulte a lista completa de propriedades configuráveis em [Referência de Configuração: Configuração da Aplicação](../reference/site-config#markdown).
diff --git a/docs/pt/guide/ssr-compat.md b/docs/pt/guide/ssr-compat.md
index deec9a7b1923..e4ed7847dd6c 100644
--- a/docs/pt/guide/ssr-compat.md
+++ b/docs/pt/guide/ssr-compat.md
@@ -133,4 +133,4 @@ const ClientComp = defineClientComponent(
```
-O componente alvo só será importado no gatilho `mounted` do componente que o envolve.
\ No newline at end of file
+O componente alvo só será importado no gatilho `mounted` do componente que o envolve.
diff --git a/docs/pt/guide/using-vue.md b/docs/pt/guide/using-vue.md
index 6c2002acee80..226d90d21bd6 100644
--- a/docs/pt/guide/using-vue.md
+++ b/docs/pt/guide/using-vue.md
@@ -223,7 +223,7 @@ Então você pode usar o seguinte em Markdown e nos componentes do tema:
## Usando _Teleports_ {#using-teleports}
-Vitepress atualmente oferece suporte a SSG para _teleports_ apenas para o corpo. Para outros alvos, você pode envolvê-los dentro do componente embutido `` ou injetar a marcação de _teleport_ na localização correta em sua página final HTML por meio do [gancho `postRender`](../reference/site-config#postrender).
+VitePress atualmente oferece suporte a SSG para _teleports_ apenas para o corpo. Para outros alvos, você pode envolvê-los dentro do componente embutido `` ou injetar a marcação de _teleport_ na localização correta em sua página final HTML por meio do [gancho `postRender`](../reference/site-config#postrender).
diff --git a/docs/pt/guide/what-is-vitepress.md b/docs/pt/guide/what-is-vitepress.md
index 835f5bd3f44f..734cd41780a5 100644
--- a/docs/pt/guide/what-is-vitepress.md
+++ b/docs/pt/guide/what-is-vitepress.md
@@ -54,4 +54,4 @@ VitePress é o sucessor espiritual de VuePress. VuePress era orginalmente basead
A diferença da API entre VitePress e VuePress reside principalmente em temas e personalização. Se você estiver usando VuePress 1 com o tema padrão, a migração para VitePress deve ser relativamente simples.
-Também houve esforço investido em VuePress 2, que também suporta Vue 3 e Vite com melhor compatibilidade do que VuePress 1. No entanto, manter dois SSGs em paralelo não é sustentável, então a equipe Vue decidiu focar em VitePress como o principal SSG recomendado a longo prazo.
\ No newline at end of file
+Também houve esforço investido em VuePress 2, que também suporta Vue 3 e Vite com melhor compatibilidade do que VuePress 1. No entanto, manter dois SSGs em paralelo não é sustentável, então a equipe Vue decidiu focar em VitePress como o principal SSG recomendado a longo prazo.
diff --git a/docs/pt/reference/default-theme-badge.md b/docs/pt/reference/default-theme-badge.md
index a96955a07f47..2fe79aa3825f 100644
--- a/docs/pt/reference/default-theme-badge.md
+++ b/docs/pt/reference/default-theme-badge.md
@@ -32,7 +32,7 @@ O código acima é apresentado como:
## Personalize o Tipo de Cor {#customize-type-color}
-Você pode personalizar o estilo dos emblemas sobrepondo variáveis CSS. Os seguintes são os valores padrão:
+Você pode personalizar o estilo dos emblemas sobrepondo variáveis CSS. Os seguintes são os valores padrão:
```css
:root {
diff --git a/docs/pt/reference/default-theme-footer.md b/docs/pt/reference/default-theme-footer.md
index 98b02b2cc982..138531e7e0d9 100644
--- a/docs/pt/reference/default-theme-footer.md
+++ b/docs/pt/reference/default-theme-footer.md
@@ -50,4 +50,4 @@ Isso pode ser desabilitado por página usando a opção `footer` em frontmatter:
---
footer: false
---
-```
\ No newline at end of file
+```
diff --git a/docs/pt/reference/default-theme-team-page.md b/docs/pt/reference/default-theme-team-page.md
index 9021b959469e..1daa47a55f10 100644
--- a/docs/pt/reference/default-theme-team-page.md
+++ b/docs/pt/reference/default-theme-team-page.md
@@ -100,7 +100,7 @@ const members = [
- Nosso time
+ Nosso time
O desenvolvimento do VitePress é orientado por uma equipe internacional,
diff --git a/docs/pt/reference/frontmatter-config.md b/docs/pt/reference/frontmatter-config.md
index 41ccad667683..41904d1accae 100644
--- a/docs/pt/reference/frontmatter-config.md
+++ b/docs/pt/reference/frontmatter-config.md
@@ -216,6 +216,6 @@ Em seguida, você pode personalizar os estilos desta página específica no arqu
```css
.custom-page-class {
- /* estilos específicos da página */
+ /* estilos específicos da página */
}
```
diff --git a/docs/pt/reference/site-config.md b/docs/pt/reference/site-config.md
index 013ee7d9e14b..922f698f2d98 100644
--- a/docs/pt/reference/site-config.md
+++ b/docs/pt/reference/site-config.md
@@ -640,7 +640,7 @@ Note que este gancho só é chamado ao gerar o site estaticamente. Não é chama
}
```
-#### Exemplo: Adicionar URL canônica `` {#example-adding-a-canonical-url-link}
+#### Exemplo: Adicionar URL canônica `` {#example-adding-a-canonical-url-link}
```ts
export default {
diff --git a/docs/ru/guide/deploy.md b/docs/ru/guide/deploy.md
index c54c1dc9413d..26ca6ee5a5a3 100644
--- a/docs/ru/guide/deploy.md
+++ b/docs/ru/guide/deploy.md
@@ -286,7 +286,7 @@ Cache-Control: max-age=31536000,immutable
### Хостинг статических файлов Kinsta {#kinsta-static-site-hosting}
-Вы можете развернуть свой сайт Vitepress на [Kinsta](https://kinsta.com/static-site-hosting/), следуя этим [инструкциям](https://kinsta.com/docs/vitepress-static-site-example/).
+Вы можете развернуть свой сайт VitePress на [Kinsta](https://kinsta.com/static-site-hosting/), следуя этим [инструкциям](https://kinsta.com/docs/vitepress-static-site-example/).
### Stormkit
diff --git a/docs/ru/guide/markdown.md b/docs/ru/guide/markdown.md
index 05eb4ad30bd7..ea19da0f16aa 100644
--- a/docs/ru/guide/markdown.md
+++ b/docs/ru/guide/markdown.md
@@ -377,8 +377,7 @@ export default {
Помимо одной строки, вы можете указать несколько отдельных строк, диапазонов или и то, и другое:
-– Диапазоны строк, например: `{5-8}`, `{3-10}`, `{10-17}`
-
+- Диапазоны строк, например: `{5-8}`, `{3-10}`, `{10-17}`
- Несколько одиночных строк, например: `{4,7,9}`
- Диапазоны строк и отдельные строки, например: `{4,7-13,16,23-27,40}`
diff --git a/docs/ru/guide/using-vue.md b/docs/ru/guide/using-vue.md
index 4a4c830f86ca..b36e17566f58 100644
--- a/docs/ru/guide/using-vue.md
+++ b/docs/ru/guide/using-vue.md
@@ -221,7 +221,7 @@ npm install -D stylus
## Использование телепортов {#using-teleports}
-В настоящее время Vitepress поддерживает SSG только для телепортов к элементу `body`. Для других целей вы можете обернуть их внутри встроенного компонента `` или внедрить разметку телепортации в нужное место HTML конечной страницы через [хук `postRender`](../reference/site-config#postrender).
+В настоящее время VitePress поддерживает SSG только для телепортов к элементу `body`. Для других целей вы можете обернуть их внутри встроенного компонента `` или внедрить разметку телепортации в нужное место HTML конечной страницы через [хук `postRender`](../reference/site-config#postrender).
diff --git a/docs/ru/reference/frontmatter-config.md b/docs/ru/reference/frontmatter-config.md
index 5c4b3a93f4c5..5b550263d63a 100644
--- a/docs/ru/reference/frontmatter-config.md
+++ b/docs/ru/reference/frontmatter-config.md
@@ -216,6 +216,6 @@ pageClass: custom-page-class
```css
.custom-page-class {
- /* стили для конкретной страницы */
+ /* стили для конкретной страницы */
}
```
diff --git a/docs/zh/guide/deploy.md b/docs/zh/guide/deploy.md
index ba0a063ee1d2..0df2e016766d 100644
--- a/docs/zh/guide/deploy.md
+++ b/docs/zh/guide/deploy.md
@@ -286,7 +286,7 @@ Cache-Control: max-age=31536000,immutable
### Kinsta 静态站点托管 {#kinsta-static-site-hosting}
-你可以按照这些[说明](https://kinsta.com/docs/vitepress-static-site-example/) 在 [Kinsta](https://kinsta.com/static-site-hosting/) 上部署 Vitepress 站点。
+你可以按照这些[说明](https://kinsta.com/docs/vitepress-static-site-example/) 在 [Kinsta](https://kinsta.com/static-site-hosting/) 上部署 VitePress 站点。
### Stormkit
@@ -317,7 +317,7 @@ server {
# a folder without index.html raises 403 in this setup
error_page 403 /404.html;
-
+
# adjust caching headers
# files in the assets folder have hashes filenames
location ~* ^/assets/ {
@@ -334,4 +334,4 @@ server {
try_files 解析不能像其他 Vue 应用那样默认为 index.html。这会导致页面状态处于无效。
:::
-更多信息请参见 [nginx 官方文档](https://nginx.org/en/docs/)、这些 GitHub Issue [#2837](https://github.com/vuejs/vitepress/discussions/2837)、[#3235](https://github.com/vuejs/vitepress/issues/3235)以及 Mehdi Merah 发表的[博客](https://blog.mehdi.cc/articles/vitepress-cleanurls-on-nginx-environment#readings)。
\ No newline at end of file
+更多信息请参见 [nginx 官方文档](https://nginx.org/en/docs/)、这些 GitHub Issue [#2837](https://github.com/vuejs/vitepress/discussions/2837)、[#3235](https://github.com/vuejs/vitepress/issues/3235)以及 Mehdi Merah 发表的[博客](https://blog.mehdi.cc/articles/vitepress-cleanurls-on-nginx-environment#readings)。
diff --git a/docs/zh/guide/markdown.md b/docs/zh/guide/markdown.md
index b5dc779d697d..8755c3309098 100644
--- a/docs/zh/guide/markdown.md
+++ b/docs/zh/guide/markdown.md
@@ -840,7 +840,7 @@ Can be created using `.foorc.json`.
## 数学方程 {#math-equations}
-现在这是可选的。要启用它, 需要安装 `markdown-it-mathjax3`,在配置文件中设置`markdown.math` 为 `true`:
+现在这是可选的。要启用它,需要安装 `markdown-it-mathjax3`,在配置文件中设置`markdown.math` 为 `true`:
```sh
npm add -D markdown-it-mathjax3
diff --git a/docs/zh/guide/mpa-mode.md b/docs/zh/guide/mpa-mode.md
index 80bf92f7daa5..aec4fbaa2d23 100644
--- a/docs/zh/guide/mpa-mode.md
+++ b/docs/zh/guide/mpa-mode.md
@@ -20,4 +20,4 @@ document.querySelector('h1').addEventListener('click', () => {
`
@@ -47,14 +49,28 @@ const showFooter = computed(() => {
Pager
-
-
+
+
-
-
+
+
diff --git a/src/client/theme-default/components/VPDocFooterLastUpdated.vue b/src/client/theme-default/components/VPDocFooterLastUpdated.vue
index bb85588a3c21..5ec3cfeb13ec 100644
--- a/src/client/theme-default/components/VPDocFooterLastUpdated.vue
+++ b/src/client/theme-default/components/VPDocFooterLastUpdated.vue
@@ -2,10 +2,10 @@
import { ref, computed, watchEffect, onMounted } from 'vue'
import { useData } from '../composables/data'
-const { theme, page, frontmatter, lang } = useData()
+const { theme, page, lang } = useData()
const date = computed(
- () => new Date(frontmatter.value.lastUpdated ?? page.value.lastUpdated)
+ () => new Date(page.value.lastUpdated!)
)
const isoDatetime = computed(() => date.value.toISOString())
const datetime = ref('')
diff --git a/src/client/theme-default/components/VPMenu.vue b/src/client/theme-default/components/VPMenu.vue
index ebe66623c539..b6f99014e3ef 100644
--- a/src/client/theme-default/components/VPMenu.vue
+++ b/src/client/theme-default/components/VPMenu.vue
@@ -10,8 +10,13 @@ defineProps<{