UNPKG

bootstrap-darkmode

Version:

Stylesheet and Scripts for implementing dark mode with Bootstrap 4

1 lines 3.54 kB
{"version":3,"file":"bootstrap-darkmode.mjs","sources":["../../src/lib/theme-config.ts","../../src/lib/dark-switch.ts","../../src/bootstrap-darkmode.ts"],"sourcesContent":["export class ThemeConfig {\n themeChangeHandlers: ((theme: string) => void)[] = [];\n\n loadTheme(): string | null {\n return localStorage.getItem('theme');\n }\n\n saveTheme(theme: string | null): void {\n if (theme === null) {\n localStorage.removeItem('theme');\n }\n else {\n localStorage.setItem('theme', theme)\n }\n }\n\n initTheme(): void {\n this.displayTheme(this.getTheme());\n }\n\n detectTheme(): string {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n getTheme(): string {\n return this.loadTheme() || this.detectTheme();\n }\n\n setTheme(theme: string): void {\n this.saveTheme(theme);\n this.displayTheme(theme);\n }\n\n displayTheme(theme: string): void {\n document.body.setAttribute('data-theme', theme);\n for (let i = 0; i < this.themeChangeHandlers.length; i++){\n this.themeChangeHandlers[i](theme);\n }\n }\n}\n","import {ThemeConfig} from './theme-config';\n\nexport function writeDarkSwitch(config: ThemeConfig) {\n document.write(`\n<div class=\"custom-control custom-switch\">\n<input type=\"checkbox\" class=\"custom-control-input\" id=\"darkSwitch\">\n<label class=\"custom-control-label\" for=\"darkSwitch\">Dark Mode</label>\n</div>\n`);\n\n const darkSwitch = document.getElementById('darkSwitch') as HTMLInputElement;\n\n darkSwitch.checked = config.getTheme() === 'dark';\n darkSwitch.onchange = () => {\n config.setTheme(darkSwitch.checked ? 'dark' : 'light');\n };\n\n config.themeChangeHandlers.push(theme => darkSwitch.checked = theme === 'dark');\n\n return darkSwitch;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"MAAa,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QACI,IAAmB,CAAA,mBAAA,GAAgC,EAAE,CAAC;KAsCzD;IApCG,SAAS,GAAA;AACL,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACxC;AAED,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC1B,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,SAAA;AACI,aAAA;AACD,YAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvC,SAAA;KACJ;IAED,SAAS,GAAA;QACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACtC;IAED,WAAW,GAAA;AACP,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;KACvF;IAED,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;KACjD;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;QACtB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;KACJ;AACJ;;ACrCK,SAAU,eAAe,CAAC,MAAmB,EAAA;IAC/C,QAAQ,CAAC,KAAK,CAAC,CAAA;;;;;AAKlB,CAAA,CAAC,CAAC;IAEC,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAqB,CAAC;IAE7E,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;AAClD,IAAA,UAAU,CAAC,QAAQ,GAAG,MAAK;AACvB,QAAA,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAC3D,KAAC,CAAC;AAEF,IAAA,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC;AAEhF,IAAA,OAAO,UAAU,CAAC;AACtB;;ACpBA;;AAEG;;;;"}