From 12e98652a6201e98066497568107d3ba2f74a73d Mon Sep 17 00:00:00 2001 From: Jan Jaap Date: Sat, 19 Oct 2024 18:04:04 +0200 Subject: [PATCH] fix(next): layout bullshit --- src/app/error/animated-error-content.tsx | 2 +- src/app/layout.tsx | 5 +++ src/components/nav-menu/nav-desktop.tsx | 20 +++++++++-- src/components/nav-menu/nav-mobile.tsx | 44 ++++++++++++++++-------- src/lib/file-upload.action.ts | 3 +- 5 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 src/app/layout.tsx diff --git a/src/app/error/animated-error-content.tsx b/src/app/error/animated-error-content.tsx index 98c5073..e9276a4 100644 --- a/src/app/error/animated-error-content.tsx +++ b/src/app/error/animated-error-content.tsx @@ -85,7 +85,7 @@ export default function AnimatedErrorContent({ animate={{ opacity: 1 }} transition={{ delay: 0.6, duration: 0.5 }} > - Don't worry, our team of highly caffeinated developers is on it! + Don't worry, our team of highly caffeinated developers is on it! {stackTrace && ( {props.isAuthenticated && @@ -20,15 +25,24 @@ export function NavDesktop(props: NavProps) { href={tab.pathname} className={cn( linkClassName, - tab.isActive - ? "text-gray-900 dark:text-gray-50 bg-gray-100 dark:bg-gray-800/30" - : "text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-50" + tab.isActive ? activeClassname : inActiveClassname )} prefetch={false} > {tab.label} ))} + + + {props.isAuthenticated && "Log out"} + {!props.isAuthenticated && "Log in"} + ); } diff --git a/src/components/nav-menu/nav-mobile.tsx b/src/components/nav-menu/nav-mobile.tsx index 77e7da3..1d2dbbd 100644 --- a/src/components/nav-menu/nav-mobile.tsx +++ b/src/components/nav-menu/nav-mobile.tsx @@ -5,10 +5,17 @@ import { useNavTabs } from "../../hooks/use-nav-tabs"; import { cn } from "@/lib/utils"; import { NavProps } from "./nav-props"; import { Button } from "../ui/button.extended"; -import { LogInIcon } from "lucide-react"; +import { LogInIcon, LogOutIcon } from "lucide-react"; export function NavMobile(props: NavProps) { - const { tabs } = useNavTabs(); + const { tabs } = useNavTabs(props.isAuthenticated); + + const linkClassName = + "flex-1 flex flex-col items-center gap-1 text-sm font-medium transition-colors bg-gray-100 dark:bg-gray-800 py-2"; + const activeClassName = + "bg-gray-200 text-gray-900 dark:bg-gray-800 dark:text-gray-50"; + const inActiveClassname = + "text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-50"; return ( ); diff --git a/src/lib/file-upload.action.ts b/src/lib/file-upload.action.ts index 674c33c..ed7f763 100644 --- a/src/lib/file-upload.action.ts +++ b/src/lib/file-upload.action.ts @@ -1,6 +1,7 @@ "use server"; import { getSupabaseServerClient } from "@/lib/supabase.server"; +import { AuthSessionMissingError } from "@supabase/supabase-js"; import { nanoid } from "nanoid"; interface UploadImageProps { @@ -24,7 +25,7 @@ export async function uploadFileAction({ if (!user) { return { - error: "NOT_AUTHENTICATED", + error: new AuthSessionMissingError(), }; }