import AppLayoutTemplate from '@/layouts/app/app-sidebar-layout';
import { type BreadcrumbItem } from '@/types';
import { type ReactNode } from 'react';
import FlashToaster from '@/components/FlashToaster';
import { usePage } from "@inertiajs/react";
import useAuthorization, { type CanFunction } from '@/hooks/useAuthorization';
import useTranslation, { type TranslateFunction } from '@/hooks/useTranslation';
import { SocketProviderBridge } from '@/components/SocketProviderBridge';
import useTenantAccess, { type TenantAccessFunction } from '@/hooks/useTenantAccess';
import { AddOnProvider } from '@/hooks/use-addons';

interface PageProps {
    translations: Record<string, string>;
    current_locale: string;
    [key: string]: any;
}

declare global {
    interface Window {
        can: CanFunction;
        tenantAccess: TenantAccessFunction;
        __: TranslateFunction;
    }
}

interface AppLayoutProps {
    children: ReactNode;
    breadcrumbs?: BreadcrumbItem[];
    title?: string;
}

export default function AppLayout({ children, breadcrumbs, ...props }: AppLayoutProps) {
    const { can } = useAuthorization();
    const { __ } = useTranslation();
    const { tenantAccess } = useTenantAccess();

    // Set up global functions for use in non-React code
    if (typeof window !== 'undefined') {
        window.can = can;
        window.__ = __;
        window.tenantAccess = tenantAccess;
    }

    return (
        // <AddOnProvider>
        //     <SocketProviderBridge>
        //         <FlashToaster />
        //         <AppLayoutTemplate breadcrumbs={breadcrumbs} {...props}>
        //             {children}
        //         </AppLayoutTemplate>
        //     </SocketProviderBridge>
        // </AddOnProvider>

        <AddOnProvider>
            {/* <SocketProviderBridge> */}
            <FlashToaster />
            <AppLayoutTemplate breadcrumbs={breadcrumbs} {...props}>
                {children}
            </AppLayoutTemplate>
            {/* </SocketProviderBridge> */}
        </AddOnProvider>
    );
}
