27 lines
643 B
TypeScript
27 lines
643 B
TypeScript
'use client';
|
|
|
|
import { useEffect } from 'react';
|
|
import { useThemeStore } from '@/stores/theme-store';
|
|
import { themes } from '@/themes';
|
|
|
|
export function ThemeProvider({ children }: { children: React.ReactNode }) {
|
|
const { theme } = useThemeStore();
|
|
|
|
useEffect(() => {
|
|
const selectedTheme = themes[theme];
|
|
const root = document.documentElement;
|
|
|
|
Object.entries(selectedTheme.cssVars).forEach(([key, value]) => {
|
|
root.style.setProperty(key, value);
|
|
});
|
|
|
|
if (theme === 'dark') {
|
|
root.classList.add('dark');
|
|
} else {
|
|
root.classList.remove('dark');
|
|
}
|
|
}, [theme]);
|
|
|
|
return <>{children}</>;
|
|
}
|