Coverage for src/lexigram/admin/theme/tailwind.py: 100%
4 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
1from __future__ import annotations
3"""Shared Tailwind CSS runtime scripts for admin layouts.
5Bootstrap scripts for the ``dark`` class on ``<html>`` before Alpine.js
6loads. The Tailwind utility stylesheet itself is prebuilt statically
7(see ``tailwind/build.sh``) and referenced via ``admin/static/css/tailwind.css``.
8"""
10DARK_BOOTSTRAP_SCRIPT: str = """<script>
11(function () {
12 var stored = localStorage.getItem('darkMode');
13 var dark = stored !== null ? stored === 'true' : window.matchMedia('(prefers-color-scheme: dark)').matches;
14 if (dark) document.documentElement.classList.add('dark');
15})();
16</script>"""
18THEME_BRIDGE_SCRIPT: str = """<script>
19window.toggleTheme = function () {
20 var dark = !document.documentElement.classList.contains('dark');
21 document.documentElement.classList.toggle('dark', dark);
22 localStorage.setItem('darkMode', String(dark));
23 window.dispatchEvent(new CustomEvent('darkmode-change', { detail: { dark: dark } }));
24};
25</script>"""