import { AppContent } from '@/components/app-content';
import { AppShell } from '@/components/app-shell';
import { AdminSidebar } from '@/components/admin-sidebar';
import { type BreadcrumbItem } from '@/types';
import { type PropsWithChildren } from 'react';
import AdminHeader from './admin-header';
import FlashToaster from '@/components/FlashToaster';
import useAdminAuthorization from '@/hooks/useAdminAuthorization';

export default function AdminLayout({ children, breadcrumbs = [] }: PropsWithChildren<{ breadcrumbs?: BreadcrumbItem[] }>) {
    // Make permission helper available globally for admin routes
    // Admin users have wildcard '*' permission which grants all access
    window.can = useAdminAuthorization().can;

    return (
        <>
            <FlashToaster />
            <AppShell variant="sidebar">
                <AppContent variant="sidebar" className="flex h-screen flex-col overflow-hidden">
                    {/* Main Content Area */}
                    <div className="flex flex-1 overflow-hidden transition-all duration-200">
                        <div className="hidden md:block">
                            <AdminSidebar />
                        </div>

                        {/* Right: header + page content */}
                        <div className="flex min-h-0 flex-1 flex-col bg-background">
                            {/* Header */}
                            <AdminHeader breadcrumbs={breadcrumbs} />

                            {/* Content area */}
                            <div className="flex flex-1 overflow-hidden border-t bg-background">
                                {/* Main content */}
                                <div className="relative w-full flex-1">
                                    <div className="no-scrollbar h-full overflow-y-auto">
                                        {children}
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </AppContent>
            </AppShell>
        </>
    );
}
