diff --git a/web/dashboard/src/app/[locale]/(fullscreen)/layout.tsx b/web/dashboard/src/app/[locale]/(fullscreen)/layout.tsx index 359a336..a99ed03 100644 --- a/web/dashboard/src/app/[locale]/(fullscreen)/layout.tsx +++ b/web/dashboard/src/app/[locale]/(fullscreen)/layout.tsx @@ -6,6 +6,7 @@ import { Loader2 } from "lucide-react"; import { useRouter } from "@/i18n/routing"; import { useAuthStore } from "@/lib/stores/auth.store"; import { RouteGuard } from "@/components/auth/route-guard"; +import { useOrderAlerts } from "@/lib/realtime/use-order-alerts"; /** Full-viewport routes (POS, queue TV display) — auth only, no dashboard chrome. */ export default function FullscreenLayout({ children }: { children: React.ReactNode }) { @@ -15,6 +16,10 @@ export default function FullscreenLayout({ children }: { children: React.ReactNo const hasHydrated = useAuthStore((s) => s._hasHydrated); const dir = locale === "en" ? "ltr" : "rtl"; + // Surface café notifications (waiter calls, new guest orders) on the POS / + // queue-display too — during service staff are here, not on the dashboard. + useOrderAlerts(); + useEffect(() => { // Only redirect AFTER the persisted auth has rehydrated from localStorage — // otherwise a page refresh sees the empty initial state and bounces an