Files
lume/src/pages/_app.tsx
2023-04-07 09:16:31 +07:00

26 lines
840 B
TypeScript

import RelayProvider from '@components/relaysProvider';
import type { NextPage } from 'next';
import type { AppProps } from 'next/app';
import { useRouter } from 'next/router';
import { ReactElement, ReactNode } from 'react';
import '../App.css';
// eslint-disable-next-line @typescript-eslint/ban-types
export type NextPageWithLayout<P = {}, IP = P> = NextPage<P, IP> & {
getLayout?: (page: ReactElement) => ReactNode;
};
type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
};
export default function MyApp({ Component, pageProps }: AppPropsWithLayout) {
const router = useRouter();
// Use the layout defined at the page level, if available
const getLayout = Component.getLayout ?? ((page) => page);
return <RelayProvider>{getLayout(<Component key={router.asPath} {...pageProps} />)}</RelayProvider>;
}