import { Listbox, ListboxButton, ListboxOption, ListboxOptions, } from "@headlessui/react"; import { t } from "@lingui/core/macro"; import { HiArrowDownTray, HiChevronDown, HiOutlinePlusSmall } from "react-icons/hi2"; import { useState } from "react"; import Button from "~/components/Button"; import FeedbackModal from "~/components/FeedbackModal"; import Modal from "~/components/modal"; import { NewWorkspaceForm } from "~/components/NewWorkspaceForm"; import { PageHead } from "~/components/PageHead"; import { Tooltip } from "~/components/Tooltip"; import { usePermissions } from "~/hooks/usePermissions"; import { useKeyboardShortcut } from "~/providers/keyboard-shortcuts"; import { useModal } from "~/providers/modal"; import { useWorkspace } from "~/providers/workspace"; import { BoardsList } from "./components/BoardsList"; import { ImportBoardsForm } from "./components/ImportBoardsForm"; import { NewBoardForm } from "./components/NewBoardForm"; const boardsTabs = [ { key: "boards" as const, label: t`Active` }, { key: "archived" as const, label: t`Archived` }, ]; export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) { const { openModal, modalContentType, isOpen } = useModal(); const { workspace } = useWorkspace(); const [activeTab, setActiveTab] = useState<"boards" | "archived">("boards"); const { canCreateBoard } = usePermissions(); const { tooltipContent: createModalShortcutTooltipContent } = useKeyboardShortcut({ type: "PRESS", stroke: { key: "C" }, action: () => canCreateBoard && openModal("NEW_BOARD"), description: t`Create new ${isTemplate ? "template" : "board"}`, group: "ACTIONS", }); return ( <>

{t`${isTemplate ? "Templates" : "Boards"}`}

{!isTemplate && ( )}
<> {!isTemplate ? (
setActiveTab(tab)} >
{boardsTabs.find((tab) => tab.key === activeTab)?.label ?? "Select a tab"} {boardsTabs.map((tab) => ( `relative cursor-pointer select-none py-2 pl-3 pr-9 ${selected ? "font-bold text-light-1000 dark:text-dark-1000" : "font-normal text-light-1000 dark:text-dark-1000" }` } > {tab.label} ))}
{activeTab === "boards" && ( )} {activeTab === "archived" && ( )}
) : (
)}
); }