UNPKG

@codedoc/core

Version:

Create beautiful modern documentation websites.

47 lines 2.07 kB
import { transport } from '@connectv/sdh/transport'; import { state, sink } from '@connectv/core'; import { DarkModeSwitchStyle } from './style'; import { switchMode, Mode } from './mode'; import { systemMode } from './system'; export function DarkModeSwitch(_, renderer) { const classes = this.theme.classes(DarkModeSwitchStyle); const sysMode = systemMode(); const runningMode = state(); let storageLoaded = false; sysMode.to(runningMode); this.track(runningMode.to(sink(mode => { if (mode === Mode.Light) document.body.classList.remove('dark'); else document.body.classList.add('dark'); if (storageLoaded) { if (mode !== sysMode.value) localStorage.setItem('dark-mode', (mode === Mode.Light) ? 'false' : 'true'); else localStorage.removeItem('dark-mode'); } }))); this.track({ bind() { if (localStorage.getItem('dark-mode')) runningMode.value = localStorage.getItem('dark-mode') === 'true' ? Mode.Dark : Mode.Light; document.body.classList.add('dark-mode-animate'); storageLoaded = true; } }); return renderer.create("div", { class: classes.dmSwitch, onclick: () => runningMode.value = switchMode(runningMode.value) }, renderer.create("div", { class: "arc" }), renderer.create("div", { class: "darc" }), renderer.create("div", { class: "ray one" }), renderer.create("div", { class: "ray two" }), renderer.create("div", { class: "ray three" }), renderer.create("div", { class: "ray four" }), renderer.create("div", { class: "ray five" }), renderer.create("div", { class: "ray six" }), renderer.create("div", { class: "ray seven" }), renderer.create("div", { class: "ray eight" })); } export const DarkModeSwitch$ = /*#__PURE__*/ transport(DarkModeSwitch); export * from './darklight'; export { DarkModeSwitchStyle } from './style'; //# sourceMappingURL=index.js.map