File tree Expand file tree Collapse file tree 2 files changed +47
-17
lines changed Expand file tree Collapse file tree 2 files changed +47
-17
lines changed Original file line number Diff line number Diff line change 55 const themeToggleButtons = document . querySelectorAll ( ".hextra-theme-toggle" ) ;
66 const themeToggleOptions = document . querySelectorAll ( ".hextra-theme-toggle-options p" ) ;
77
8- function setSystemTheme ( ) {
9- const prefersColorScheme = window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ? "dark" : "light" ;
10-
11- document . documentElement . classList . remove ( "dark" , "light" ) ;
12- document . documentElement . classList . add ( prefersColorScheme ) ;
13-
14- document . documentElement . style . colorScheme = prefersColorScheme ;
15- }
16-
178 function applyTheme ( theme ) {
189 themeToggleButtons . forEach ( ( btn ) => btn . parentElement . dataset . theme = theme ) ;
1910
2314 function switchTheme ( theme ) {
2415 switch ( theme ) {
2516 case "light" :
26- document . documentElement . classList . remove ( "dark" ) ;
27- document . documentElement . classList . add ( theme ) ;
28- document . documentElement . style . colorScheme = theme ;
29-
17+ setLightTheme ( )
3018 applyTheme ( theme ) ;
3119
3220 break ;
3321 case "dark" :
34- document . documentElement . classList . remove ( "light" ) ;
35- document . documentElement . classList . add ( theme ) ;
36- document . documentElement . style . colorScheme = theme ;
37-
22+ setDarkTheme ( )
3823 applyTheme ( theme ) ;
3924
4025 break ;
Original file line number Diff line number Diff line change 5959 {{ partial "google-analytics.html" . -}}
6060 {{- end }}
6161
62+ < script >
63+ // The section must not be in the theme.js file because it can create a quick flash (switch between light and dark).
64+
65+ const defaultTheme = '{{ site.Params.theme.default | default `system`}}'
66+
67+ function setLightTheme ( ) {
68+ document . documentElement . classList . remove ( "dark" ) ;
69+ document . documentElement . classList . add ( "light" ) ;
70+ document . documentElement . style . colorScheme = "light" ;
71+ }
72+
73+ function setDarkTheme ( ) {
74+ document . documentElement . classList . remove ( "light" ) ;
75+ document . documentElement . classList . add ( "dark" ) ;
76+ document . documentElement . style . colorScheme = "dark" ;
77+ }
78+
79+ function setSystemTheme ( ) {
80+ const prefersColorScheme = window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ? "dark" : "light" ;
81+
82+ document . documentElement . classList . remove ( "dark" , "light" ) ;
83+ document . documentElement . classList . add ( prefersColorScheme ) ;
84+
85+ document . documentElement . style . colorScheme = prefersColorScheme ;
86+ }
87+
88+ const colorTheme = "color-theme" in localStorage ? localStorage . getItem ( "color-theme" ) : defaultTheme ;
89+
90+ switch ( colorTheme ) {
91+ case "light" :
92+ setLightTheme ( ) ;
93+
94+ break ;
95+ case "dark" :
96+ setDarkTheme ( )
97+
98+ break ;
99+ default :
100+ setSystemTheme ( ) ;
101+
102+ break ;
103+ }
104+
105+ </ script >
106+
62107 <!-- Math engine -->
63108 {{ $noop := .WordCount -}}
64109 {{- $engine := site.Params.math.engine | default "katex" -}}
You can’t perform that action at this time.
0 commit comments