import { ThemeProvider } from '@emotion/react'; import { createContext } from 'react'; import { useSystemColorScheme } from '@/ui/theme/hooks/useSystemColorScheme'; 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, ); const systemColorScheme = useSystemColorScheme(); const effectiveColorScheme = persistedColorScheme === 'System' ? systemColorScheme : persistedColorScheme; document.documentElement.className = effectiveColorScheme === 'Dark' ? 'dark' : 'light'; const theme = effectiveColorScheme === 'Dark' ? THEME_DARK : THEME_LIGHT; return ( {children} ); };