"use client"; import { useState } from "react"; import { Building2, Check, Plus } from "lucide-react"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { CreateWorkspaceDialog } from "@/components/workspaces/create-workspace-dialog"; import { useWorkspaceStore } from "@/lib/stores/workspace-store"; import { api } from "@/lib/trpc"; import { cn } from "@/lib/utils"; export function WorkspaceSwitcher({ collapsed, className, }: { collapsed?: boolean; className?: string; }) { const router = useRouter(); const current = useWorkspaceStore((s) => s.currentWorkspace); const { data: workspaces } = api.workspaces.listForUser.useQuery(); const [createOpen, setCreateOpen] = useState(false); const displayName = current?.name ?? "Select workspace..."; const trigger = ( ); return (
{collapsed ? ( {trigger} {displayName} ) : ( {trigger} )} Workspaces {(workspaces ?? []).map((ws) => { const selected = current?.id === ws.id; return ( { router.push(`/${ws.slug}`); }} > {ws.name} {selected ? ( ) : null} ); })} { e.preventDefault(); setCreateOpen(true); }} > Create Workspace
); }