From c1d4dfeaf6f4689ec7cb678bc7cbb9986f2c44ea Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Wed, 11 Jan 2023 18:31:30 +0100 Subject: [PATCH] nav component and session provider fix --- apps/web/components/layout.tsx | 161 +---------------------- apps/web/components/navigation.tsx | 204 +++++++++++++++++++++++++++++ apps/web/pages/_app.tsx | 4 +- 3 files changed, 211 insertions(+), 158 deletions(-) create mode 100644 apps/web/components/navigation.tsx diff --git a/apps/web/components/layout.tsx b/apps/web/components/layout.tsx index 970860612..82c7279ba 100644 --- a/apps/web/components/layout.tsx +++ b/apps/web/components/layout.tsx @@ -2,7 +2,7 @@ import { Fragment } from "react"; import { Disclosure, Menu, Transition } from "@headlessui/react"; import Link from "next/link"; import { useRouter } from "next/router"; -import { signOut } from "next-auth/react"; +import Navigation from "./navigation"; import { Bars3Icon, @@ -12,6 +12,7 @@ import { UserCircleIcon, } from "@heroicons/react/24/outline"; import Logo from "./logo"; +import { signOut, useSession } from "next-auth/react"; const user = { name: "Timur Ercan", @@ -47,164 +48,12 @@ export default function Layout({ children }: any) { element.current = router.route.startsWith("/" + element.href.split("/")[1]); }); + const session = useSession(); + return ( <>
- - {({ open }) => ( - <> -
-
-
-
- -
-
- {navigation.map((item) => ( - - {item.name} - - ))} -
-
-
- -
- - Open user menu - - -
- - - {userNavigation.map((item) => ( - - {({ active }) => ( - - - {item.name} - - )} - - ))} - - -
-
-
- {/* Mobile menu button */} - - Open main menu - {open ? ( - -
-
-
- - -
- {navigation.map((item) => ( - - {item.name} - - ))} -
-
-
-
- -
-
-
- {user.name} -
-
- {user.email} -
-
- -
-
- {userNavigation.map((item) => ( - - {item.name} - - ))} -
-
-
- - )} -
- +
{children}
diff --git a/apps/web/components/navigation.tsx b/apps/web/components/navigation.tsx new file mode 100644 index 000000000..3a5d813fa --- /dev/null +++ b/apps/web/components/navigation.tsx @@ -0,0 +1,204 @@ +import { Fragment } from "react"; +import { Disclosure, Menu, Transition } from "@headlessui/react"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import { signOut, useSession } from "next-auth/react"; + +import { + Bars3Icon, + BellIcon, + XMarkIcon, + ArrowLeftOnRectangleIcon, + UserCircleIcon, +} from "@heroicons/react/24/outline"; +import Logo from "./logo"; + +const user = { + name: "Timur Ercan", + email: "timur@documenso.com", + imageUrl: + "https://pbs.twimg.com/profile_images/1382036502390181888/4BT30oTM_400x400.jpg", +}; +const navigation = [ + { name: "Dashboard", href: "/dashboard", current: false }, + { name: "Documents", href: "/documents", current: false }, + { name: "Settings", href: "/settings", current: true }, +]; +const userNavigation = [ + { name: "Your Profile", href: "/settings/profile", icon: UserCircleIcon }, + { + name: "Sign out", + href: "", + click: (e: any) => { + e.preventDefault(); + signOut({ callbackUrl: "/login" }); + }, + icon: ArrowLeftOnRectangleIcon, + }, +]; + +function classNames(...classes: any) { + return classes.filter(Boolean).join(" "); +} + +export default function TopNavigation() { + // const session = useSession(); + + const router = useRouter(); + navigation.forEach((element) => { + element.current = router.route.startsWith("/" + element.href.split("/")[1]); + }); + + return ( + <> + + {({ open }) => ( + <> +
+
+
+
+ +
+
+ {navigation.map((item) => ( + + {item.name} + + ))} +
+
+
+ +
+ + Open user menu + + +
+ + + {userNavigation.map((item) => ( + + {({ active }) => ( + + + {item.name} + + )} + + ))} + + +
+
+
+ {/* Mobile menu button */} + + Open main menu + {open ? ( + +
+
+
+ + +
+ {navigation.map((item) => ( + + {item.name} + + ))} +
+
+
+
+ +
+
+
+ {user.name} +
+
+ {user.email} +
+
+ +
+
+ {userNavigation.map((item) => ( + + {item.name} + + ))} +
+
+
+ + )} +
+ + ); +} diff --git a/apps/web/pages/_app.tsx b/apps/web/pages/_app.tsx index a98d61f27..3ae2996cf 100644 --- a/apps/web/pages/_app.tsx +++ b/apps/web/pages/_app.tsx @@ -18,9 +18,9 @@ export default function App({ pageProps: { session, ...pageProps }, }: AppPropsWithLayout) { const getLayout = Component.getLayout || ((page: any) => page); - return getLayout( + return ( - {" "} + {getLayout()} ); }