import React, { useState } from 'react'; import { Outlet, Navigate } from 'react-router-dom'; import { useAdminAuth } from '../../contexts'; import { useSessionTimeout } from '../../hooks/useSessionTimeout'; import { AdminSidebar } from './AdminSidebar'; import { AdminHeader } from './AdminHeader'; import { MaintenanceBanner } from './MaintenanceBanner'; import { MandatoryPasswordChangeModal } from './MandatoryPasswordChangeModal'; export const AdminLayout: React.FC = () => { const { isAuthenticated, isLoading, mustChangePassword } = useAdminAuth(); const [sidebarOpen, setSidebarOpen] = useState(false); // Handle session timeout useSessionTimeout(); if (isLoading) { return (

Loading...

); } if (!isAuthenticated) { return ; } return (
{/* Mandatory Password Change Modal */} {mustChangePassword && } {/* Mobile sidebar backdrop */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar - disabled when password change required */}
setSidebarOpen(false)} />
{/* Main content */}
{/* Header - disabled when password change required */}
setSidebarOpen(true)} />
{/* Maintenance mode banner */} {/* Page content - disabled when password change required */}
); }; AdminLayout.displayName = 'AdminLayout';