Use BookStack's CSS variables and detect dark mode for Mermaid theme.
Replaces custom styles with BookStack's for better consistency.
crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
<script type="module">
crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
<script type="module">
+ // Detect if BookStack's dark mode is enabled
+ const isDarkMode = document.documentElement.classList.contains('dark-mode');
+
+ // Initialize Mermaid.js, dynamically setting the theme based on BookStack's mode
mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
+ theme: isDarkMode ? 'dark' : 'default'
});
// Zoom Level Configuration
});
// Zoom Level Configuration
const DRAG_THRESHOLD_PIXELS = 3;
const ZOOM_ANIMATION_CLASS_TIMEOUT_MS = 200;
const DRAG_THRESHOLD_PIXELS = 3;
const ZOOM_ANIMATION_CLASS_TIMEOUT_MS = 200;
- const NOTIFICATION_DISPLAY_TIMEOUT_MS = 2000;
const CSS_CLASSES = {
CONTAINER: 'mermaid-container',
const CSS_CLASSES = {
CONTAINER: 'mermaid-container',
+ /* Use BookStack's CSS variables for seamless theme integration */
+ background: var(--color-bg-alt);
border: 1px solid #d0d7de;
border-radius: 6px;
position: relative;
border: 1px solid #d0d7de;
border-radius: 6px;
position: relative;
align-items: center;
justify-content: center;
user-select: none;
align-items: center;
justify-content: center;
user-select: none;
- background: rgba(255, 255, 255, 0.9);
+ background: var(--color-bg);
width: 32px;
height: 32px;
width: 32px;
height: 32px;
+ color: var(--color-text);
}
.mermaid-viewer-button-base:hover {
background: #f6f8fa;
}
}
.mermaid-viewer-button-base:hover {
background: #f6f8fa;
}
+ /* Override for pure white icons in dark mode */
+ .dark-mode .mermaid-viewer-button-base {
+ color: #fff;
+ }
+
.mermaid-zoom-controls {
position: absolute;
bottom: 10px;
.mermaid-zoom-controls {
position: absolute;
bottom: 10px;