"use client"; import { useEffect } from "react"; import type { ReactNode } from "react"; import { SignedIn, useUser } from "@/auth/clerk"; import { BrandMark } from "@/components/atoms/BrandMark"; import { OrgSwitcher } from "@/components/organisms/OrgSwitcher"; import { UserMenu } from "@/components/organisms/UserMenu"; export function DashboardShell({ children }: { children: ReactNode }) { const { user } = useUser(); const displayName = user?.fullName ?? user?.firstName ?? user?.username ?? "Operator"; useEffect(() => { if (typeof window === "undefined") return; const handleStorage = (event: StorageEvent) => { if (event.key !== "openclaw_org_switch" || !event.newValue) return; window.location.reload(); }; window.addEventListener("storage", handleStorage); let channel: BroadcastChannel | null = null; if ("BroadcastChannel" in window) { channel = new BroadcastChannel("org-switch"); channel.onmessage = () => { window.location.reload(); }; } return () => { window.removeEventListener("storage", handleStorage); channel?.close(); }; }, []); return (

{displayName}

Operator

{children}
); }