"use client"; import * as React from "react"; import { useRouter } from "next/navigation"; import { Check, ChevronsUpDown, Plus } from "lucide-react"; import { cn } from "@/lib/utils"; import { useUserProfile } from "@/lib/user-profile"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Tooltip, TooltipTrigger, TooltipContent, } from "@/components/ui/tooltip"; type OrgListItem = { id: string; name: string; slug: string; type: string; role: string; }; export function OrgSwitcher({ collapsed }: { collapsed: boolean }) { const { orgId, orgName, switchOrg } = useUserProfile(); const router = useRouter(); const [orgs, setOrgs] = React.useState([]); const [loading, setLoading] = React.useState(false); const fetchOrgs = React.useCallback(async () => { try { const res = await fetch("/api/org/list"); if (res.ok) { const data = await res.json(); setOrgs(data.orgs ?? []); } } catch {} }, []); const initial = orgName ? orgName .split(/\s+/) .map((w: string) => w[0]) .join("") .slice(0, 2) .toUpperCase() : "?"; const trigger = (
{initial}
{!collapsed && ( <>

{orgName || "No workspace"}

)}
); return ( {collapsed ? ( }>{trigger} {orgName || "No workspace"} ) : ( trigger )} {orgs.map((org) => ( { if (org.id === orgId) return; setLoading(true); await switchOrg(org.id); setLoading(false); }} >
{org.name .split(/\s+/) .map((w) => w[0]) .join("") .slice(0, 2) .toUpperCase()}
{org.name} {org.id === orgId && ( )}
))} {orgs.length > 0 && } router.push("/onboarding")} >
Create new workspace
); }