'use client'; import { useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { useAuthStore } from '@/stores/auth-store'; import { useThemeStore } from '@/stores/theme-store'; import { themes } from '@/themes'; import { Sidebar } from '@/components/layouts/sidebar'; import { TopNav } from '@/components/layouts/topnav'; import { SidebarCompact } from '@/components/layouts/sidebar-compact'; import { SidebarFloating } from '@/components/layouts/sidebar-floating'; import { MobileNav } from '@/components/layouts/mobile-nav'; import { SubscriptionBanner } from '@/components/subscription-banner'; import { cn } from '@horux/shared-ui'; export default function DashboardLayout({ children, }: { children: React.ReactNode; }) { const router = useRouter(); const { isAuthenticated, _hasHydrated } = useAuthStore(); const { theme } = useThemeStore(); const currentTheme = themes[theme]; const layout = currentTheme.layout; useEffect(() => { // Solo verificar autenticación después de que el store se rehidrate if (_hasHydrated && !isAuthenticated) { router.push('/login'); } }, [isAuthenticated, _hasHydrated, router]); // Mostrar loading mientras se rehidrata el store if (!_hasHydrated) { return (
Cargando...
); } if (!isAuthenticated) { return null; } // Render layout based on theme const renderDesktopNavigation = () => { switch (layout) { case 'topnav': return ; case 'sidebar-compact': return ; case 'sidebar-floating': return ; case 'sidebar-standard': default: return ; } }; const getContentClasses = () => { switch (layout) { case 'topnav': return 'pt-16 px-4 md:px-6'; // Top padding for fixed top nav case 'sidebar-compact': return 'md:pl-16 px-4 md:px-0'; // Small left padding for compact sidebar on desktop case 'sidebar-floating': return 'px-4 py-4 md:pl-72 md:pr-4 md:py-4'; // Padding for floating sidebar on desktop case 'sidebar-standard': default: return 'px-4 md:pl-64 md:px-0'; // Standard sidebar width on desktop } }; return (
{/* Mobile header with hamburger menu */}
Horux
{/* Desktop navigation - hidden on mobile */}
{renderDesktopNavigation()}
{/* Main content */}
{children}
); }