TIFNJK_E41222887/resources/js/layouts/app/app-sidebar-layout.tsx

36 lines
1.2 KiB
TypeScript

import { AppContent } from '@/components/app-content';
import { AppShell } from '@/components/app-shell';
import { AppSidebar } from '@/components/app-sidebar';
import { AppSidebarHeader } from '@/components/app-sidebar-header';
import type { AppLayoutProps } from '@/types';
import { usePage } from '@inertiajs/react';
import { useEffect } from 'react';
import { Toaster, toast } from 'sonner';
/** Auto-show Laravel flash messages as Sonner toasts on every page visit */
function FlashToast() {
const { flash } = usePage<{ flash?: { success?: string; error?: string } }>().props;
useEffect(() => {
if (flash?.success) toast.success(flash.success);
if (flash?.error) toast.error(flash.error);
}, [flash]);
return null;
}
export default function AppSidebarLayout({
children,
breadcrumbs = [],
}: AppLayoutProps) {
return (
<AppShell variant="sidebar">
<AppSidebar />
<AppContent variant="sidebar" className="overflow-x-hidden">
<AppSidebarHeader breadcrumbs={breadcrumbs} />
<FlashToast />
{children}
</AppContent>
<Toaster richColors position="top-right" />
</AppShell>
);
}