From a3703c30807621ddd4dce7b3cae0918d79fa8de1 Mon Sep 17 00:00:00 2001 From: Biswa Kalyan Bhuyan Date: Thu, 24 Apr 2025 09:33:48 +0530 Subject: feat: updated advance ui and animation --- frontend/src/app/(main)/layout.tsx | 246 ++++++++++++++++++++++++++++++++++--- 1 file changed, 227 insertions(+), 19 deletions(-) (limited to 'frontend/src/app/(main)') diff --git a/frontend/src/app/(main)/layout.tsx b/frontend/src/app/(main)/layout.tsx index 846a118..5902dd6 100644 --- a/frontend/src/app/(main)/layout.tsx +++ b/frontend/src/app/(main)/layout.tsx @@ -6,6 +6,18 @@ import Link from 'next/link'; import { Button } from '@/components/ui/button'; import { authApi, userApi } from '@/lib/api'; import { ThemeToggle } from '@/components/shared/ThemeToggle'; +import { PageTransition } from '@/components/shared/PageTransition'; +import { + ChevronLeftIcon, + ChevronRightIcon, + LayoutDashboardIcon, + CoinsIcon, + TargetIcon, + SettingsIcon, + LogOutIcon, + MenuIcon +} from 'lucide-react'; +import { usePathname } from 'next/navigation'; export default function MainLayout({ @@ -14,8 +26,11 @@ export default function MainLayout({ children: React.ReactNode; }>) { const router = useRouter(); + const pathname = usePathname(); const [userName, setUserName] = useState(''); const [isLoading, setIsLoading] = useState(true); + const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); + const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); useEffect(() => { // Check if user is authenticated @@ -35,58 +50,251 @@ export default function MainLayout({ // If error fetching profile, redirect to login router.push('/login'); }); + + // Load sidebar state from localStorage + const savedSidebarState = localStorage.getItem('sidebarCollapsed'); + if (savedSidebarState !== null) { + setIsSidebarCollapsed(savedSidebarState === 'true'); + } }, [router]); + // Close mobile menu when changing routes + useEffect(() => { + setIsMobileMenuOpen(false); + }, [pathname]); + const handleLogout = () => { authApi.logout(); }; + const toggleSidebar = () => { + const newState = !isSidebarCollapsed; + setIsSidebarCollapsed(newState); + localStorage.setItem('sidebarCollapsed', newState.toString()); + }; + + const toggleMobileMenu = () => { + setIsMobileMenuOpen(!isMobileMenuOpen); + }; + if (isLoading) { - return
Loading...
; + return ( +
+
+
+
+
+

Loading...

+
+
+ ); } return ( -
+
{/* Top Navigation */} -
-
+
+
-
Finance Management
+ {/* Mobile menu button - only visible on small screens */} + +
+ + Finance Management + +
- Welcome!, {userName} +
+ + + + + + {userName} + +
-
- {/* Main Content */} -
- {/* Sidebar */} -
-- cgit v1.2.3-59-g8ed1b