www-new/pages/_app.tsx

58 lines
1.6 KiB
TypeScript
Raw Normal View History

import { MDXProvider } from "@mdx-js/react";
import { NextComponentType, NextPageContext } from "next";
import { AppProps as DefaultAppProps } from "next/app";
import React, { ComponentType, ReactNode } from "react";
import { DefaultLayout } from "@/components/DefaultLayout";
import { Footer } from "@/components/Footer";
import { HorizontalLine } from "@/components/HorizontalLine";
import { Link } from "@/components/Link";
import { Navbar } from "@/components/Navbar";
2021-08-21 02:31:40 -04:00
import {
GetShapesConfig,
ShapesBackground,
} from "@/components/ShapesBackground";
import { ThemeProvider } from "@/components/Theme";
2021-06-13 19:55:25 -04:00
import styles from "./_app.module.css";
import "./_app.css";
2021-05-09 00:35:57 -04:00
import "./font.css";
2021-06-07 20:55:37 -04:00
2021-04-25 19:13:07 -04:00
export default function App({ Component, pageProps }: AppProps): JSX.Element {
const Layout = Component.Layout ?? DefaultLayout;
2021-04-26 19:16:55 -04:00
return (
<ThemeProvider>
<MDXProvider components={{ a: Link, hr: HorizontalLine }}>
2021-06-13 19:55:25 -04:00
<div className={styles.appContainer}>
<Navbar />
2021-08-19 22:46:34 -04:00
{/* Wrapping content with a div to allow for a display: block parent */}
<div className={styles.contentContainer}>
2021-08-21 02:31:40 -04:00
<ShapesBackground
getConfig={Component.getShapesConfig ?? undefined}
/>
<Layout>
<Component {...pageProps} />
</Layout>
2021-08-19 22:46:34 -04:00
</div>
2021-06-13 19:55:25 -04:00
<Footer />
</div>
</MDXProvider>
</ThemeProvider>
2021-04-26 19:16:55 -04:00
);
2021-04-25 19:13:07 -04:00
}
type PageComponent = NextComponentType<
NextPageContext,
unknown,
Record<string, unknown>
> & {
Layout?: ComponentType<{ children: ReactNode }>;
2021-08-21 02:31:40 -04:00
getShapesConfig?: GetShapesConfig;
};
type AppProps = DefaultAppProps & {
Component: PageComponent;
};