import { useRouter } from "next/navigation"; import { Button, Menu, Transition } from "@headlessui/react"; import { t } from "@lingui/core/macro"; import { env } from "next-runtime-env"; import { Fragment, useMemo, useState } from "react"; import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2"; import { twMerge } from "tailwind-merge"; import { useKeyboardShortcut } from "~/providers/keyboard-shortcuts"; import { useLinguiContext } from "~/providers/lingui"; import { useModal } from "~/providers/modal"; import { useWorkspace } from "~/providers/workspace"; import { api } from "~/utils/api"; import CommandPallette from "./CommandPallette"; import { Tooltip } from "./Tooltip"; export default function WorkspaceMenu({ isCollapsed = false, }: { isCollapsed?: boolean; }) { const { workspace, isLoading, availableWorkspaces, switchWorkspace } = useWorkspace(); const { locale } = useLinguiContext(); const { openModal } = useModal(); const { data: hasPartnerSlot } = api.workspace.hasAvailablePartnerSlot.useQuery(); const router = useRouter(); const [isOpen, setIsOpen] = useState(false); const commandPaletteShortcut = useMemo( () => ({ type: "PRESS" as const, stroke: { key: "k", modifiers: ["META"] as ("META" | "CONTROL" | "ALT" | "SHIFT")[], }, action: () => setIsOpen(true), description: t`Open command menu`, group: "GENERAL" as const, }), [locale], ); const { tooltipContent: commandPaletteShortcutTooltipContent } = useKeyboardShortcut(commandPaletteShortcut); return ( <> setIsOpen(false)} />
{isLoading ? (
) : (
{workspace.name.charAt(0).toUpperCase()} {workspace.name} {workspace.plan === "pro" && ( Pro )}
)}
{availableWorkspaces.map((availableWorkspace) => (
))}
); }