Skip to content

Commit 67c5936

Browse files
authored
update theme (#245)
1 parent ee07ccb commit 67c5936

File tree

3 files changed

+81
-20
lines changed

3 files changed

+81
-20
lines changed

_includes/header.html

-12
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,6 @@
6363
</ul>
6464

6565
<nav class="header-nav--mobile _navToggle">
66-
<div class="light-dark-auto-switcher">
67-
<a id="light-mode-button" href="#" class="light-dark-auto-button">Light</a>
68-
<a id="dark-mode-button" href="#" class="light-dark-auto-button">Dark</a>
69-
<a id="auto-mode-button" href="#" class="light-dark-auto-button">Auto</a>
70-
</div>
7166
<ul>
7267
<li>
7368
<a href="https://phalcon.io/docs">Documentation</a>
@@ -119,13 +114,6 @@
119114
</div>
120115

121116
<div class="header__right">
122-
123-
<div class="light-dark-auto-switcher">
124-
<a id="light-mode-button" href="#" class="light-dark-auto-button">Light</a>
125-
<a id="dark-mode-button" href="#" class="light-dark-auto-button">Dark</a>
126-
<a id="auto-mode-button" href="#" class="light-dark-auto-button">Auto</a>
127-
</div>
128-
129117
<div class="header__github">
130118
<a href="https://phalcon.io/github" aria-label="github">
131119
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">

_includes/js.html

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

_includes/meta.html

+80-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,84 @@
44

55
<meta charset="utf-8">
66
<meta name="viewport min-width=320px" content="min-width=320, initial-scale=1.0" />
7+
<script>
8+
(() => {
9+
'use strict'
10+
11+
const getStoredTheme = () => localStorage.getItem('theme')
12+
const setStoredTheme = theme => localStorage.setItem('theme', theme)
13+
14+
const getPreferredTheme = () => {
15+
const storedTheme = getStoredTheme()
16+
if (storedTheme) {
17+
return storedTheme
18+
}
19+
20+
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
21+
}
22+
23+
const setTheme = theme => {
24+
if (theme === 'auto') {
25+
document.documentElement.setAttribute('data-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'))
26+
} else {
27+
document.documentElement.setAttribute('data-theme', theme)
28+
}
29+
}
30+
31+
setTheme(getPreferredTheme())
32+
33+
const showActiveTheme = (theme, focus = false) => {
34+
const themeSwitcher = document.querySelector('#bd-theme')
35+
36+
if (!themeSwitcher) {
37+
return
38+
}
39+
40+
const themeSwitcherText = document.querySelector('#bd-theme-text')
41+
const activeThemeIcon = document.querySelector('.theme-icon-active use')
42+
const btnToActive = document.querySelector(`[data-theme-value="${theme}"]`)
43+
const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
44+
45+
document.querySelectorAll('[data-theme-value]').forEach(element => {
46+
element.classList.remove('active')
47+
element.setAttribute('aria-pressed', 'false')
48+
})
49+
50+
btnToActive.classList.add('active')
51+
btnToActive.setAttribute('aria-pressed', 'true')
52+
activeThemeIcon.setAttribute('href', svgOfActiveBtn)
53+
const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
54+
themeSwitcher.setAttribute('aria-label', themeSwitcherLabel)
55+
56+
if (focus) {
57+
themeSwitcher.focus()
58+
}
59+
}
60+
61+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
62+
const storedTheme = getStoredTheme()
63+
if (storedTheme !== 'light' && storedTheme !== 'dark') {
64+
setTheme(getPreferredTheme())
65+
}
66+
})
67+
68+
window.addEventListener('DOMContentLoaded', () => {
69+
showActiveTheme(getPreferredTheme())
70+
71+
document.querySelectorAll('[data-theme-value]')
72+
.forEach(toggle => {
73+
toggle.addEventListener('click', () => {
74+
const theme = toggle.getAttribute('data-theme-value')
75+
setStoredTheme(theme)
76+
setTheme(theme)
77+
showActiveTheme(theme, true)
78+
})
79+
})
80+
})
81+
})()
82+
</script>
83+
<link rel="stylesheet"
84+
href="https://assets.phalcon.io/phalcon/test/dark.css">
785
<meta name="author" content="{{ site.app.author }}">
886
<meta name="generator" content="{{ site.app.generator }}">
987
<meta name="application-name" content="{{ site.app.name }}">
@@ -52,11 +130,6 @@
52130
<meta name="theme-color" content="#273646">
53131

54132
<link rel="stylesheet"
55-
type="text/css"
56-
href="https://assets.phalcon.io/phalcon/css/core.css">
57-
<link rel="stylesheet"
58-
type="text/css"
59-
href="https://assets.phalcon.io/phalcon/css/core-custom.css">
133+
href="https://assets.phalcon.io/phalcon/test/core.css">
60134
<link rel="stylesheet"
61-
type="text/css"
62-
href="./../assets/css/dark.css">
135+
href="https://assets.phalcon.io/phalcon/test/custom.css">

0 commit comments

Comments
 (0)