diff options
| author | Leo Goetz <dev@leogtz.de> | 2026-01-22 09:10:15 +0100 |
|---|---|---|
| committer | Leo Goetz <dev@leogtz.de> | 2026-01-22 09:10:15 +0100 |
| commit | 01c0f792484f8f52606eae0e58abe528acef3086 (patch) | |
| tree | e30894caf65b39aab1e050035f63450b5032123c /frontend/src/components/Header.ts | |
| parent | b6d422d33c3b647ab249a8cf3520bc986fa2c549 (diff) | |
Diffstat (limited to 'frontend/src/components/Header.ts')
| -rw-r--r-- | frontend/src/components/Header.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/frontend/src/components/Header.ts b/frontend/src/components/Header.ts new file mode 100644 index 0000000..11da46f --- /dev/null +++ b/frontend/src/components/Header.ts @@ -0,0 +1,40 @@ +import { Theme as ThemeIcon } from "./Icons"; + +const themeToggleId = "theme"; + +const Header = ` +<header> + <hgroup> + <h1 class=".parkinsans">event me</h1> + <p>All the events you never knew you needed to attend!</p> + </hgroup> + <a href="#" role="toggle" id="${themeToggleId}" title="Toggle color scheme" > + ${ThemeIcon} + </a> +</header> +`; + +type Theme = "dark" | "light"; + +const toggleDarkMode = () => { + const doc = document.documentElement; + const currentTheme = doc.getAttribute("data-theme"); + let newTheme: Theme; + if (currentTheme === "dark") { + newTheme = "light"; + doc.setAttribute("data-theme", newTheme); + } else if (currentTheme === "light") { + newTheme = "dark"; + doc.setAttribute("data-theme", newTheme); + } +}; +export function setupThemeToggle() { + const themeToggle = document.getElementById(themeToggleId); + if (!themeToggle) { + console.error("Missing Toggle"); + return; + } + themeToggle.addEventListener("click", toggleDarkMode); +} + +export default Header; |
