From 3eabe9204204d12a3c8e7d37fbe0309a2a9a2b51 Mon Sep 17 00:00:00 2001 From: Akshay Date: Mon, 10 Nov 2025 11:37:12 +0530 Subject: [PATCH] feat(header): Enhance mobile navigation with user actions and logout functionality - Add dashboard link to mobile menu for authenticated users - Implement logout functionality with Supabase auth signOut method - Refactor mobile menu user section to include dashboard and logout options - Add Shield and LogOut icons for improved visual navigation - Remove redundant UserIcon and UserDisplay in mobile menu - Improve mobile menu user experience with more actionable items --- components/header.tsx | 44 +++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/components/header.tsx b/components/header.tsx index ed9b2db3..2150683b 100644 --- a/components/header.tsx +++ b/components/header.tsx @@ -6,8 +6,10 @@ import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" // import { ThemeToggle } from "@/components/theme-toggle" import { UserIcon } from "@/components/user-icon" -import { Menu, X } from "lucide-react" +import { Menu, X, Shield, LogOut } from "lucide-react" import { useAuth } from "@/lib/hooks/useAuth" +import { createClient } from "@/lib/supabase/client" +import { useRouter } from "next/navigation" import CodeuniaLogo from "./codeunia-logo"; import dynamic from "next/dynamic"; @@ -25,7 +27,16 @@ const UserDisplay = dynamic(() => import("./UserDisplay"), { export default function Header() { const [isMenuOpen, setIsMenuOpen] = useState(false) const pathname = usePathname() + const router = useRouter() const { user, loading } = useAuth() + const supabase = createClient() + + const handleLogout = async () => { + await supabase.auth.signOut() + setIsMenuOpen(false) + router.push("/") + router.refresh() + } // Close mobile menu when clicking outside useEffect(() => { @@ -126,10 +137,7 @@ export default function Header() {
{/* */} {!loading && user && ( -
- - -
+ )}
)}