af835e23be
Before: https://github.com/user-attachments/assets/a769a2f8-554a-42f7-8adb-e8b4be92a4d1 Aftter: https://github.com/user-attachments/assets/9200967a-902f-4f8d-822d-827dda32bac2 --------- Co-authored-by: Félix Malfait <felix@twenty.com>
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { ThemeProvider } from '@emotion/react';
|
|
import { createContext } from 'react';
|
|
|
|
import { persistedColorSchemeState } from '@/ui/theme/states/persistedColorSchemeState';
|
|
import { useRecoilState } from 'recoil';
|
|
import { type ColorScheme } from 'twenty-ui/input';
|
|
import { THEME_DARK, THEME_LIGHT, ThemeContextProvider } from 'twenty-ui/theme';
|
|
|
|
type BaseThemeProviderProps = {
|
|
children: JSX.Element | JSX.Element[];
|
|
};
|
|
|
|
export const ThemeSchemeContext = createContext<(theme: ColorScheme) => void>(
|
|
() => {},
|
|
);
|
|
|
|
export const BaseThemeProvider = ({ children }: BaseThemeProviderProps) => {
|
|
const [persistedColorScheme, setPersistedColorScheme] = useRecoilState(
|
|
persistedColorSchemeState,
|
|
);
|
|
document.documentElement.className =
|
|
persistedColorScheme === 'Dark' ? 'dark' : 'light';
|
|
|
|
const theme = persistedColorScheme === 'Dark' ? THEME_DARK : THEME_LIGHT;
|
|
|
|
return (
|
|
<ThemeSchemeContext.Provider value={setPersistedColorScheme}>
|
|
<ThemeProvider theme={theme}>
|
|
<ThemeContextProvider theme={theme}>{children}</ThemeContextProvider>
|
|
</ThemeProvider>
|
|
</ThemeSchemeContext.Provider>
|
|
);
|
|
};
|