1. Home
  2. ChevronRight@bdocs/plugin-mermaid

@bdocs/plugin-mermaid

El plugin `@bdocs/plugin-mermaid` integra Mermaid.js en Boltdocs. Transforma automáticamente los bloques de código `mermaid` estándar en diagramas interactivos y responsivos que se sincronizan dinámicamente con tus preferencias de tema claro y oscuro.

Instalación y Inicio RápidoLink

Comienza añadiendo el paquete del plugin a tu proyecto de documentación.

1. Instalar el paqueteLink

pnpm add @bdocs/plugin-mermaid

2. Registrar el pluginLink

Añade el plugin al arreglo plugins en tu archivo de configuración:

boltdocs.config.ts
import { defineConfig } from 'boltdocs'
import mermaidPlugin from '@bdocs/plugin-mermaid'

export default defineConfig({
  plugins: [mermaidPlugin()],
})

Conceptos y ArquitecturaLink

El plugin Mermaid utiliza un pipeline de compilación híbrido para mantener tu documentación rápida:

graph LR
    A[Markdown Source] -->|Remark Transform| B[MDX Component Prep]
    B -->|SSG compilation| C[Light HTML Skeleton]
    C -->|Lazy Client Import| D[Interactive SVG Render]
  1. Transformación en Tiempo de Compilación: Cuando Boltdocs parsea tus archivos markdown, el compilador Remark del plugin encuentra bloques de código marcados como mermaid. Los compila en componentes React estándar <Mermaid /> e inyecta el texto crudo del diagrama como una prop.

  2. Renderizado Dinámico del Lado del Cliente: Para evitar tamaños de bundle JavaScript enormes en tus páginas estáticas, el motor de Mermaid.js se carga dinámicamente solo cuando un diagrama entra en el viewport del usuario. Si una página no contiene diagramas, no se envía código de Mermaid al cliente.


Referencia de la APILink

MermaidPluginOptionsLink

Configuración que se pasa al inicializador mermaidPlugin().

PropiedadTipoPredeterminadoDescripción
themesMermaidThemesundefinedVariables de tema personalizadas para coincidir con tu marca corporativa.

MermaidThemesLink

Configuraciones personalizadas para los modos de visualización claro y oscuro.

PropiedadTipoPredeterminadoDescripción
lightMermaidThemeVariablesdefaultLightThemeOverrides de tema aplicados cuando el modo claro del sitio está activo.
darkMermaidThemeVariablesdefaultDarkThemeOverrides de tema aplicados cuando el modo oscuro del sitio está activo.

MermaidThemeVariablesLink

Lista completa de variables de color disponibles para personalizar el estilo de los nodos del diagrama.

PropiedadTipoPredeterminadoDescripción
primaryColorstringClaro: '#f8fafc'
Oscuro: '#1e293b'
Color de fondo para nodos primarios.
primaryTextColorstringClaro: '#0f172a'
Oscuro: '#f8fafc'
Color de texto para nodos primarios.
primaryBorderColorstringClaro: '#e2e8f0'
Oscuro: '#334155'
Color de borde para nodos primarios.
lineColorstringClaro: '#64748b'
Oscuro: '#94a3b8'
Color para líneas de conexión y flechas.
secondaryColorstringClaro: '#f1f5f9'
Oscuro: '#0f172a'
Color de fondo para elementos secundarios.
tertiaryColorstringClaro: '#ffffff'
Oscuro: '#1e293b'
Color de fondo para elementos terciarios.
nodeBorderstringClaro: '#e2e8f0'
Oscuro: '#334155'
Color de borde predeterminado para nodos.
mainBkgstringClaro: '#ffffff'
Oscuro: '#0f172a'
Color de fondo del canvas principal.
nodeTextColorstringClaro: '#0f172a'
Oscuro: '#f8fafc'
Color de texto predeterminado dentro de los nodos.
edgeLabelBackgroundstringClaro: '#f8fafc'
Oscuro: '#1e293b'
Color de fondo para etiquetas de conectores.
clusterBkgstringClaro: '#f8fafc'
Oscuro: '#1e293b'
Color de fondo para grupos de clúster.
clusterBorderstringClaro: '#e2e8f0'
Oscuro: '#334155'
Color de borde para grupos de clúster.

Props del Componente MermaidLink

Propiedades soportadas al usar el componente React <Mermaid /> directamente en MDX.

PropiedadTipoPredeterminadoDescripción
chartstring(Requerido)La definición de marcado del diagrama Mermaid.
configMermaidConfigundefinedOverrides de tema en línea específicos para esta instancia de diagrama.

Ejemplos DetalladosLink

Temas PersonalizadosLink

Puedes personalizar los temas pasando overrides de variables directamente:

boltdocs.config.ts
import { defineConfig } from 'boltdocs'
import mermaidPlugin from '@bdocs/plugin-mermaid'

export default defineConfig({
  plugins: [
    mermaidPlugin({
      themes: {
        light: {
          primaryColor: '#e0f2fe',
          primaryTextColor: '#0369a1',
          primaryBorderColor: '#bae6fd',
          lineColor: '#0284c7',
        },
        dark: {
          primaryColor: '#0c4a6e',
          primaryTextColor: '#e0f2fe',
          primaryBorderColor: '#0284c7',
          lineColor: '#38bdf8',
        },
      },
    }),
  ],
})

Sintaxis de ComponentesLink

Para layouts avanzados, puedes invocar el componente JSX directamente:

<Mermaid chart={`
  flowchart LR
    A[Start] --> B[Process]
    B --> C[End]
`} />
Info
Recomendación de Sintaxis

Aunque tanto los bloques markdown como las variantes de etiquetas JSX producen resultados equivalentes, recomendamos los bloques de código markdown estándar (```mermaid) para una máxima legibilidad en los editores de código.


Solución de ProblemasLink

Los diagramas no se renderizanLink

  • Verifica la Configuración: Asegúrate de que mermaidPlugin() esté registrado en el arreglo de plugins de tu boltdocs.config.ts.
  • Verifica el Identificador de Lenguaje: La apertura de tu bloque de código markdown debe ser exactamente ```mermaid.
  • Revisa la Sintaxis: Revisa la consola de tu navegador web para errores de sintaxis generados por el compilador de Mermaid (por ejemplo, paréntesis sin cerrar o errores tipográficos en las conexiones de nodos).

Los temas no se sincronizanLink

El plugin se conecta al proveedor de modo oscuro del sitio. Si los temas no coinciden:

  • Asegúrate de que tus layouts personalizados consuman el hook useTheme() exportado por boltdocs/client para mantenerse sincronizado con la configuración global de la aplicación.

Los diagramas grandes se cortanLink

Por defecto, Boltdocs envuelve los diagramas en un contenedor responsivo con desplazamiento. Si necesitas que los diagramas se escalen para ajustarse al contenedor padre, añade lo siguiente a tu hoja de estilos CSS global personalizada:

.mermaid-container svg {
  max-width: 100%;
  height: auto;
}
Last updated on July 27, 2026

Was this page helpful?