Welcome to mirror list, hosted at ThFree Co, Russian Federation.

colorScheme.html « head « partials « layouts - github.com/CaiJimmy/hugo-theme-stack.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 04d63a5587cfe3a0cc96f24162f87ec2974e06e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{{- $defaultColorScheme := .Site.Params.colorScheme.default -}}
{{- if not .Site.Params.colorScheme.toggle -}}
    {{/* If toggle is disabled, force default scheme */}}
    <script>
        (function() {
            const colorSchemeKey = 'StackColorScheme';
            localStorage.setItem(colorSchemeKey, "{{ $defaultColorScheme }}");
        })();
    </script>
{{- else -}}
    {{/* Otherwise set to default scheme only if no preference is set by user */}}
    <script>
        (function() {
            const colorSchemeKey = 'StackColorScheme';
            if(!localStorage.getItem(colorSchemeKey)){
                localStorage.setItem(colorSchemeKey, "{{ $defaultColorScheme }}");
            }
        })();
    </script>
{{- end -}}

<script>
    (function() {
        const colorSchemeKey = 'StackColorScheme';
        const colorSchemeItem = localStorage.getItem(colorSchemeKey);
        const supportDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches === true;

        if (colorSchemeItem == 'dark' || colorSchemeItem === 'auto' && supportDarkMode) {
            /**
             * Enable dark mode if:
             * 1. If dark mode is set already (in local storage)
             * 2. Auto mode & prefere color scheme is dark
             */
            document.documentElement.dataset.scheme = 'dark';
        } else {
            document.documentElement.dataset.scheme = 'light';
        }
    })();
</script>