dark mode strategy
CI / testsuite (pgsql, 8.2, ) (push) Successful in 3m52s
CI / testsuite (mysql, 8.2, ) (push) Successful in 3m51s
CI / testsuite (sqlite, 8.2, ) (push) Successful in 3m52s
CI / testsuite (mysql, 8.4, ) (push) Successful in 10m33s
CI / testsuite (pgsql, 8.4, ) (push) Successful in 9m1s
CI / testsuite (sqlite, 8.2, prefer-lowest) (push) Successful in 3m54s
Release / build (push) Successful in 14s
CI / Coding Standard & Static Analysis (push) Successful in 3m26s
CI / testsuite (sqlite, 8.4, ) (push) Successful in 10m5s

This commit is contained in:
bs
2026-08-27 02:57:25 -07:00
parent 99e01b3de3
commit 30325f4071
@@ -1,7 +1,11 @@
<?php <?php
use Cake\Core\Configure;
/** /**
* @var \App\View\AppView $this * @var \App\View\AppView $this
*/ */
$strategy = Configure::read('CheeseCake.darkMode.strategy', 'class');
?> ?>
<script> <script>
@@ -13,24 +17,38 @@
toggleDarkLink.addEventListener('click', function (e) { toggleDarkLink.addEventListener('click', function (e) {
e.preventDefault(); e.preventDefault();
localStorage.theme = 'dark'; localStorage.theme = 'dark';
<?php if ($strategy === 'class') : ?>
document.documentElement.classList.add('dark'); document.documentElement.classList.add('dark');
document.documentElement.classList.remove('auto'); document.documentElement.classList.remove('auto');
<?php else : ?>
document.documentElement.dataset.theme = 'dark';
<?php endif; ?>
}); });
} }
if (toggleLightLink) { if (toggleLightLink) {
toggleLightLink.addEventListener('click', function (e) { toggleLightLink.addEventListener('click', function (e) {
e.preventDefault(); e.preventDefault();
localStorage.theme = 'light'; localStorage.theme = 'light';
<?php if ($strategy === 'class') : ?>
document.documentElement.classList.remove('auto'); document.documentElement.classList.remove('auto');
document.documentElement.classList.remove('dark'); document.documentElement.classList.remove('dark');
<?php else : ?>
document.documentElement.dataset.theme = 'light';
<?php endif; ?>
}); });
} }
if (toggleAutoLink) { if (toggleAutoLink) {
toggleAutoLink.addEventListener('click', function (e) { toggleAutoLink.addEventListener('click', function (e) {
e.preventDefault(); e.preventDefault();
localStorage.theme = 'auto'; localStorage.theme = 'auto';
<?php if ($strategy === 'class') : ?>
document.documentElement.classList.add('auto'); document.documentElement.classList.add('auto');
document.documentElement.classList.remove('dark'); document.documentElement.classList.remove('dark');
<?php else : ?>
delete document.documentElement.dataset.theme;
<?php endif; ?>
}); });
} }
}) })