Skip to content

Commit f62aabe

Browse files
authored
add theme switch btn (#311)
1 parent dff54d4 commit f62aabe

File tree

5 files changed

+165
-255
lines changed

5 files changed

+165
-255
lines changed

_includes/footer-js.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<script src="https://assets.phalcon.io/phalcon/test/core.js?v=111"></script>
1+
<script src="https://assets.phalcon.io/phalcon/test/core.js"></script>

_includes/head.html

+7-82
Original file line numberDiff line numberDiff line change
@@ -9,86 +9,6 @@
99
<meta name="MobileOptimized" content="320"/>
1010
<meta name="HandheldFriendly" content="true"/>
1111
<meta name="viewport min-width=320px" content="min-width=320, initial-scale=1.0"/>
12-
13-
<script>
14-
(() => {
15-
'use strict'
16-
17-
const getStoredTheme = () => localStorage.getItem('theme')
18-
const setStoredTheme = theme => localStorage.setItem('theme', theme)
19-
20-
const getPreferredTheme = () => {
21-
const storedTheme = getStoredTheme()
22-
if (storedTheme) {
23-
return storedTheme
24-
}
25-
26-
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
27-
}
28-
29-
const setTheme = theme => {
30-
if (theme === 'auto') {
31-
document.documentElement.setAttribute('data-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'))
32-
} else {
33-
document.documentElement.setAttribute('data-theme', theme)
34-
}
35-
}
36-
37-
setTheme(getPreferredTheme())
38-
39-
const showActiveTheme = (theme, focus = false) => {
40-
const themeSwitcher = document.querySelector('#bd-theme')
41-
42-
if (!themeSwitcher) {
43-
return
44-
}
45-
46-
const themeSwitcherText = document.querySelector('#bd-theme-text')
47-
const activeThemeIcon = document.querySelector('.theme-icon-active use')
48-
const btnToActive = document.querySelector(`[data-theme-value="${theme}"]`)
49-
const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
50-
51-
document.querySelectorAll('[data-theme-value]').forEach(element => {
52-
element.classList.remove('active')
53-
element.setAttribute('aria-pressed', 'false')
54-
})
55-
56-
btnToActive.classList.add('active')
57-
btnToActive.setAttribute('aria-pressed', 'true')
58-
activeThemeIcon.setAttribute('href', svgOfActiveBtn)
59-
const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
60-
themeSwitcher.setAttribute('aria-label', themeSwitcherLabel)
61-
62-
if (focus) {
63-
themeSwitcher.focus()
64-
}
65-
}
66-
67-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
68-
const storedTheme = getStoredTheme()
69-
if (storedTheme !== 'light' && storedTheme !== 'dark') {
70-
setTheme(getPreferredTheme())
71-
}
72-
})
73-
74-
window.addEventListener('DOMContentLoaded', () => {
75-
showActiveTheme(getPreferredTheme())
76-
77-
document.querySelectorAll('[data-theme-value]')
78-
.forEach(toggle => {
79-
toggle.addEventListener('click', () => {
80-
const theme = toggle.getAttribute('data-theme-value')
81-
setStoredTheme(theme)
82-
setTheme(theme)
83-
showActiveTheme(theme, true)
84-
})
85-
})
86-
})
87-
})()
88-
</script>
89-
<link rel="stylesheet"
90-
href="https://assets.phalcon.io/phalcon/test/dark.css?v=111">
91-
9212
<meta name="generator" content="Jekyll">
9313
<meta name="application-name" content="{{ site.app.name }}">
9414
<meta name="description" content="{{ site.app.description }}">
@@ -137,10 +57,15 @@
13757
gtag('config', '{{ site.app.analytics }}');
13858
</script>
13959
<!-- End Google Analytics -->
60+
<script>document.documentElement.classList.add(localStorage.getItem('mode') === 'auto' ? (matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : localStorage.getItem('mode'))</script>
61+
<script type="module" src="/assets/js/theme.js"></script>
62+
<link rel="stylesheet"
63+
href="/assets/css/dark.css">
64+
14065
<link rel="stylesheet"
141-
href="https://assets.phalcon.io/phalcon/test/core.css?v=111">
66+
href="https://assets.phalcon.io/phalcon/test/core.css">
14267
<link rel="stylesheet"
143-
href="https://assets.phalcon.io/phalcon/test/custom.css?v=111">
68+
href="https://assets.phalcon.io/phalcon/test/custom.css">
14469

14570
<title>
14671
{{ site.data.languages[page.language][page.title] }} - {{ site.app.title }}

_includes/header.html

+2
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@
251251
</svg>
252252
</a>
253253
</div>
254+
255+
<div class="switcher"><button></button></div>
254256
</div>
255257
</div>
256258
</header>

0 commit comments

Comments
 (0)