mirror of
https://github.com/lukevella/rallly.git
synced 2025-05-21 12:56:21 +02:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { AnimatePresence, domAnimation, LazyMotion, m } from "framer-motion";
|
|
import { useRouter } from "next/router";
|
|
import React from "react";
|
|
|
|
import { DayjsProvider } from "@/utils/dayjs";
|
|
|
|
import { NextPageWithLayout } from "../../types";
|
|
import ModalProvider from "../modal/modal-provider";
|
|
import { UserProvider } from "../user-provider";
|
|
import { MobileNavigation } from "./standard-layout/mobile-navigation";
|
|
|
|
const StandardLayout: React.VoidFunctionComponent<{
|
|
children?: React.ReactNode;
|
|
}> = ({ children, ...rest }) => {
|
|
const router = useRouter();
|
|
return (
|
|
<LazyMotion features={domAnimation}>
|
|
<UserProvider>
|
|
<DayjsProvider>
|
|
<ModalProvider>
|
|
<div className={"bg-pattern relative min-h-full"} {...rest}>
|
|
<MobileNavigation />
|
|
<div className="mx-auto max-w-4xl">
|
|
<AnimatePresence initial={false} exitBeforeEnter={true}>
|
|
<m.div
|
|
key={router.asPath}
|
|
initial={{ opacity: 0, y: -50 }}
|
|
animate={{ opacity: 1, y: 0 }}
|
|
exit={{ opacity: 0, y: -50 }}
|
|
>
|
|
{children}
|
|
</m.div>
|
|
</AnimatePresence>
|
|
</div>
|
|
</div>
|
|
</ModalProvider>
|
|
</DayjsProvider>
|
|
</UserProvider>
|
|
</LazyMotion>
|
|
);
|
|
};
|
|
|
|
export default StandardLayout;
|
|
|
|
export const getStandardLayout: NextPageWithLayout["getLayout"] =
|
|
function getLayout(page) {
|
|
return <StandardLayout>{page}</StandardLayout>;
|
|
};
|