import { observer } from "mobx-react"; import * as React from "react"; import { ThemeProvider } from "styled-components"; import { breakpoints } from "@shared/styles"; import GlobalStyles from "@shared/styles/globals"; import { dark, light, lightMobile, darkMobile } from "@shared/styles/theme"; import useMediaQuery from "~/hooks/useMediaQuery"; import useStores from "~/hooks/useStores"; const Theme: React.FC = ({ children }) => { const { auth, ui } = useStores(); const resolvedTheme = ui.resolvedTheme === "dark" ? dark : light; const resolvedMobileTheme = ui.resolvedTheme === "dark" ? darkMobile : lightMobile; const isMobile = useMediaQuery(`(max-width: ${breakpoints.tablet}px)`); const isPrinting = useMediaQuery("print"); const theme = isPrinting ? light : isMobile ? resolvedMobileTheme : resolvedTheme; React.useEffect(() => { window.dispatchEvent(new Event("theme-changed")); }, [theme]); return ( <> {children} ); }; export default observer(Theme);