// theme.ts
import { createStore } from "solid-js/store";
export enum Theme {
Light = "light",
Dark = "dark"
}
interface StoreProps {
theme?: Theme | "system"
}
export function createThemeSignal() {
const [store, setStore] = createStore({} as StoreProps);
if (!document.documentElement.hasAttribute("data-theme")) {
document.documentElement.setAttribute("data-theme", store.theme ?? "system");
}
let setTheme = (theme: Theme | "system") => {
document.documentElement.setAttribute("data-theme", theme);
setStore({ theme });
}
let getTheme = () => {
return store.theme ?? "system";
}
return [getTheme, setTheme] as const;
}
// theme.ts
import { createStore } from "solid-js/store";
export enum Theme {
Light = "light",
Dark = "dark"
}
interface StoreProps {
theme?: Theme | "system"
}
export function createThemeSignal() {
const [store, setStore] = createStore({} as StoreProps);
if (!document.documentElement.hasAttribute("data-theme")) {
document.documentElement.setAttribute("data-theme", store.theme ?? "system");
}
let setTheme = (theme: Theme | "system") => {
document.documentElement.setAttribute("data-theme", theme);
setStore({ theme });
}
let getTheme = () => {
return store.theme ?? "system";
}
return [getTheme, setTheme] as const;
}