(() => {
const darkThemes = ['ayu', 'navy', 'coal'];
const lightThemes = ['light', 'rust'];
const htmlEl = document.getElementsByTagName('html')[0];
const classList = htmlEl.classList;
let isDark = false;
for (const cls of classList) {
if (darkThemes.includes(cls)) { isDark = true; break; }
}
function v(name, fallback) {
const val = getComputedStyle(document.documentElement)
.getPropertyValue(name).trim();
return val || fallback || '';
}
mermaid.initialize({
startOnLoad: true,
theme: 'base',
themeVariables: {
background: v('--bg'),
mainBkg: v('--table-header-bg'),
clusterBkg: v('--code-bg', v('--table-alternate-bg')),
edgeLabelBackground: v('--bg'),
secondaryColor: v('--quote-bg'),
tertiaryColor: v('--code-bg', v('--table-alternate-bg')),
primaryColor: v('--table-header-bg'),
primaryBorderColor: v('--table-border-color'),
primaryTextColor: v('--fg'),
nodeTextColor: v('--fg'),
clusterBorder: v('--table-border-color'),
lineColor: v('--links'),
titleColor: v('--fg'),
fontFamily: '"JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, monospace',
fontSize: '14px',
},
});
for (const darkTheme of darkThemes) {
const el = document.getElementById(darkTheme);
if (el) el.addEventListener('click', () => { if (!isDark) window.location.reload(); });
}
for (const lightTheme of lightThemes) {
const el = document.getElementById(lightTheme);
if (el) el.addEventListener('click', () => { if (isDark) window.location.reload(); });
}
})();