morethanadiagnosis-hub/web/app/(app)/layout.tsx

48 lines
1.4 KiB
TypeScript

'use client'
import { useEffect } from 'react'
import { useRouter } from 'next/navigation'
import { useAuth } from '@/lib/hooks/useAuth'
import { Sidebar } from '@/components/layout/Sidebar'
import { MobileNav } from '@/components/layout/MobileNav'
export default function AppLayout({
children,
}: {
children: React.ReactNode
}) {
const { isAuthenticated, isLoading } = useAuth()
const router = useRouter()
useEffect(() => {
if (!isLoading && !isAuthenticated) {
router.push('/login')
}
}, [isLoading, isAuthenticated, router])
if (isLoading) {
return (
<div className="flex items-center justify-center min-h-screen bg-gray-50">
<div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-primary-600"></div>
</div>
)
}
if (!isAuthenticated) {
return null // Will redirect
}
return (
<div className="min-h-screen bg-gray-50">
<Sidebar />
<div className="md:pl-64 flex flex-col min-h-screen">
<main className="flex-1 pb-20 md:pb-0">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
{children}
</div>
</main>
<MobileNav />
</div>
</div>
)
}