import { h, nextTick, watch } from 'vue'; import type { Theme } from 'vitepress'; import { useData } from 'vitepress'; import DefaultTheme from 'vitepress/theme'; import Layout from './Layout.vue'; import './style.css'; import './custom.css'; import './tools.css'; import './mermaid-overrides.css'; import { createMermaidRenderer } from 'vitepress-mermaid-renderer'; export default { extends: DefaultTheme, Layout: () => { const { isDark, localeIndex } = useData(); const initMermaid = () => { const mermaidRenderer = createMermaidRenderer({ theme: isDark.value ? 'dark' : 'forest', }); mermaidRenderer.setToolbar({ showLanguageLabel: false, downloadFormat: 'svg', fullscreenMode: 'browser', desktop: { copyCode: 'enabled', toggleFullscreen: 'enabled', resetView: 'enabled', zoomOut: 'enabled', zoomIn: 'enabled', zoomLevel: 'enabled', download: 'enabled', }, fullscreen: { copyCode: 'disabled', toggleFullscreen: 'enabled', resetView: 'disabled', zoomLevel: 'disabled', download: 'enabled', }, }); }; nextTick(initMermaid); watch( () => [isDark.value, localeIndex.value] as const, () => { initMermaid(); }, ); return h(Layout); }, enhanceApp() {}, } satisfies Theme;