import "../styles/globals.css"; import type { ReactElement, ReactNode } from "react"; import type { NextPage } from "next"; import type { AppProps } from "next/app"; import { AnimatePresence, domAnimation, LazyMotion } from "framer-motion"; import { Router } from "next/router"; export type NextPageWithLayout

= NextPage & { getLayout?: (page: ReactElement) => ReactNode; }; type AppPropsWithLayout = AppProps & { Component: NextPageWithLayout; }; const routeChange = () => { // Temporary fix to avoid flash of unstyled content // during route transitions. Keep an eye on this // issue and remove this code when resolved: // https://github.com/vercel/next.js/issues/17464 const tempFix = () => { const allStyleElems = document.querySelectorAll('style[media="x"]'); allStyleElems.forEach((elem) => { elem.removeAttribute("media"); }); }; tempFix(); }; Router.events.on("routeChangeComplete", routeChange); Router.events.on("routeChangeStart", routeChange); export default function App({ Component, pageProps }: AppPropsWithLayout) { // Use the layout defined at the page level, if available const getLayout = Component.getLayout ?? ((page) => page); return ( {getLayout()} ); }