import { ComputedRef } from "vue"; import { DaisyTheme } from "~~/lib/data/themes"; export interface UseTheme { theme: ComputedRef; setTheme: (theme: DaisyTheme) => void; } const themeRef = ref("garden"); export function useTheme(): UseTheme { const preferences = useViewPreferences(); themeRef.value = preferences.value.theme; const setTheme = (newTheme: DaisyTheme) => { preferences.value.theme = newTheme; if (htmlEl) { htmlEl.value?.setAttribute("data-theme", newTheme); } themeRef.value = newTheme; }; const htmlEl = ref(); onMounted(() => { if (htmlEl.value) { return; } htmlEl.value = document.querySelector("html"); }); const theme = computed(() => { return themeRef.value; }); return { theme, setTheme }; }