Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 May 2026 12:00:11 +0000
From:      Vladlen Popolitov <vladlen@FreeBSD.org>
To:        doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org
Subject:   git: a23bfd024c - main - website: fix light-dark themes switch
Message-ID:  <6a10454b.31e3d.28fc3d87@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by vladlen:

URL: https://cgit.FreeBSD.org/doc/commit/?id=a23bfd024cc0d33c3a89f7b152c7ca01ed895906

commit a23bfd024cc0d33c3a89f7b152c7ca01ed895906
Author:     Vladlen Popolitov <vladlen@FreeBSD.org>
AuthorDate: 2026-05-22 12:00:02 +0000
Commit:     Vladlen Popolitov <vladlen@FreeBSD.org>
CommitDate: 2026-05-22 12:00:02 +0000

    website: fix light-dark themes switch
    
    Reviewed by: carlavilla, ziaee
    Approved by: carlavilla
    Differential Revision: https://reviews.freebsd.org/D57057
    PR: 295341
---
 website/themes/beastie/assets/js/theme-chooser.js  | 47 ++++++++++++++++++++++
 .../beastie/layouts/_partials/site-head.html       |  3 ++
 2 files changed, 50 insertions(+)

diff --git a/website/themes/beastie/assets/js/theme-chooser.js b/website/themes/beastie/assets/js/theme-chooser.js
new file mode 100644
index 0000000000..0bdd3dc23a
--- /dev/null
+++ b/website/themes/beastie/assets/js/theme-chooser.js
@@ -0,0 +1,47 @@
+/*
+BSD 2-Clause License
+
+Copyright (c) 1994-2026, The FreeBSD Documentation Project
+Copyright (c) 2026,      Vladlen Popolitov
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+// FreeBSD light/dark theme persists
+;(function() {
+    const toggle = document.getElementById('theme-switch');
+    if (!toggle) return;
+
+    // restore saved state
+    const saved = localStorage.getItem('theme-preference');
+    if (saved === 'dark') {
+    toggle.checked = true;
+    } else if (saved === 'light') {
+    toggle.checked = false;
+    }
+    // if state was no saved - use current state (CSS uses prefers-color-scheme)
+    // save state, when theme switched to or from dark
+    toggle.addEventListener('change', function() {
+    localStorage.setItem('theme-preference', this.checked ? 'dark' : 'light');
+    });
+})();
diff --git a/website/themes/beastie/layouts/_partials/site-head.html b/website/themes/beastie/layouts/_partials/site-head.html
index ceafa1006f..5aa6a86463 100644
--- a/website/themes/beastie/layouts/_partials/site-head.html
+++ b/website/themes/beastie/layouts/_partials/site-head.html
@@ -44,6 +44,9 @@
   </script>
   <!-- END SEO -->
 
+  {{- $themeChooser := resources.Get "js/theme-chooser.js" | resources.Minify }}
+  <script defer src="{{ $themeChooser.RelPermalink }}"></script>
+
   {{- if hugo.IsServer -}}
     {{- printf "<!-- Dev mode: Not loading plausible script to avoid bloating stats -->" | safeHTML }}
   {{- else -}}


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a10454b.31e3d.28fc3d87>