Files
nirvana/packages/web/pages/_app.tsx
T
2022-01-31 00:00:08 -08:00

40 lines
1.0 KiB
TypeScript

import "../styles/globals.css";
import "antd/dist/antd.css";
import { AuthProvider } from "../contexts/authContext";
import SiteLayout from "../components/Layouts/SiteLayout";
import { Toaster } from "react-hot-toast";
import { RecoilRoot } from "recoil";
import type { NextPage } from "next";
import type { AppProps } from "next/app";
import { connection } from "@nirvana/common";
import React, { ReactElement, ReactNode } from "react";
connection();
type NextPageWithLayout = NextPage & {
getLayout?: (page: ReactElement) => ReactNode;
};
type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
};
function MyApp({ Component, pageProps }: AppPropsWithLayout) {
// any custom layout for app persistence
const getLayout = Component.getLayout ?? ((page) => page);
return (
<RecoilRoot>
<SiteLayout>
<AuthProvider>{getLayout(<Component {...pageProps} />)}</AuthProvider>
<Toaster position="top-center" />
</SiteLayout>
</RecoilRoot>
);
}
export default MyApp;