Skip to content

Commit 870568f

Browse files
committed
πŸŒ°πŸ‘ ↝ [SSG-268 SSG-270]: Use-theme hook for light mode toggle
1 parent cc3b6fa commit 870568f

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

β€Žadd_unlocked_column.sqlβ€Ž

Lines changed: 0 additions & 23 deletions
This file was deleted.

β€Žhooks/useTheme.tsβ€Ž

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useState, useEffect } from 'react';
2+
3+
export function useTheme() {
4+
const [isDark, setIsDark] = useState(false);
5+
6+
// Initialize theme from localStorage on component mount
7+
useEffect(() => {
8+
const savedTheme = localStorage.getItem('star-sailors-theme');
9+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
10+
11+
const shouldBeDark = savedTheme === 'dark' || (savedTheme === null && prefersDark);
12+
13+
setIsDark(shouldBeDark);
14+
document.documentElement.classList.toggle('dark', shouldBeDark);
15+
}, []);
16+
17+
const toggleTheme = () => {
18+
const newTheme = !isDark;
19+
setIsDark(newTheme);
20+
21+
// Save to localStorage
22+
localStorage.setItem('star-sailors-theme', newTheme ? 'dark' : 'light');
23+
24+
// Apply to document
25+
document.documentElement.classList.toggle('dark', newTheme);
26+
};
27+
28+
return { isDark, toggleTheme };
29+
}

0 commit comments

Comments
Β (0)