import '/styles/globals.css' import type { ReactElement, ReactNode } from 'react' import Layout from '../components/layout' import type { NextPage } from 'next' import { AppProps } from 'next/app'; import { DefaultTheme, ThemeProvider } from 'styled-components'; import { createContext, useContext, useEffect, useState } from 'react' import { getCookie, getCookies, setCookie } from 'cookies-next' import { darkTheme } from '../components/themes'; export type NextPageWithLayout
= NextPage
& {
getLayout?: (page: ReactElement) => ReactNode
}
export type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout
}
const ThemeUpdateContext = createContext(
(theme: DefaultTheme) => console.error("attempted to set theme outside of a ThemeUpdateContext.Provider")
)
export const useUpdateTheme = () => useContext(ThemeUpdateContext);
export default function Website({ Component, pageProps }: AppPropsWithLayout) {
const [selectedTheme, setselectedTheme] = useState(darkTheme);
//console.log("Selected Theme: ", selectedTheme); // DEBUG
useEffect(() => {
setCookie('theme', selectedTheme.themeId);
}, [selectedTheme])
// Use the layout defined at the page level, if available
const getLayout = Component.getLayout ?? ((page) => (