I am going to generate from Markdowm to a single offline HTML page with inline styles and inline scripts. It has a selection list of three themes, using :root and a toggle of dark or light modes, with classes .vscode-dark and .vscode-light, based on VSCode's Markdowm Preview.
<p> Choose one theme</p>
<select name="theme-select" id="theme-select">
<option value="voxel-theme-empresas">empresas</option>
<option value="voxel-theme-ion">ion</option>
<option value="voxel-theme-iti">iti</option>
</select>
<button onclick="switchMode()">Toggle dark or light mode</button>
<script>
function switchMode() {
var element = document.body;
element.classList.toggle("vscode-dark");
}
</script>
It should be like:
<body class="voxel-theme-empresas vscode-light">
# Teste 2
Nostrud nostrud excepteur mollit anim. Sint proident officia anim eu pariatur laboris excepteur amet Lorem Lorem commodo consequat ullamco. Pariatur aute ut aliqua aliquip consectetur ea.
</body>
<body class="voxel-theme-empresas vscode-dark">
# Teste 2
Nostrud nostrud excepteur mollit anim. Sint proident officia anim eu pariatur laboris excepteur amet Lorem Lorem commodo consequat ullamco. Pariatur aute ut aliqua aliquip consectetur ea.
</body>
<body class="voxel-theme-iti vscode-light">
# Teste 2
Nostrud nostrud excepteur mollit anim. Sint proident officia anim eu pariatur laboris excepteur amet Lorem Lorem commodo consequat ullamco. Pariatur aute ut aliqua aliquip consectetur ea.
</body>
<body class="voxel-theme-iti vscode-dark">
# Teste 2
Nostrud nostrud excepteur mollit anim. Sint proident officia anim eu pariatur laboris excepteur amet Lorem Lorem commodo consequat ullamco. Pariatur aute ut aliqua aliquip consectetur ea.
</body>
And CSS:
:root[class*=voxel-theme-empresas], :root:not([class^=voxel-theme-])
{
--ids_color_action_primary_base: #ec7000;
--ids_color_darktBg_base: #001e4f;
--ids_color_lightBg_base: #fde9d7;
}
:root[class*=voxel-theme-ion], :root:not([class^=voxel-theme-])
{
--ids_color_action_primary_base: #a7ce2e;
--ids_color_darktBg_base: #133134;
--ids_color_lightBg_base: #efface;
}
:root[class*=voxel-theme-iti], :root:not([class^=voxel-theme-])
{
--ids_color_action_primary_base: #fe3386;
--ids_color_darktBg_base: #2b374a;
--ids_color_lightBg_base: #fcefef;
}
body
{
font-size: large;
}
h1
{
color: var(--ids_color_action_primary_base);
}
.vscode-light
{
background-color: var(--ids_color_lightBg_base);
color: var(--ids_color_darktBg_base);
}
.vscode-dark
{
background-color: var(--ids_color_darktBg_base);
color: var(--ids_color_lightBg_base);
}
Important observation
The root element classes have to remain preserved. I know it will not work if you try to add the class voxel-theme-empresas to body or div because it will trigger voxel-theme-iti's colour instead.