import Link from "next/link"; import { t } from "@lingui/core/macro"; import { HiOutlineRectangleStack, HiOutlineStar, HiStar } from "react-icons/hi2"; import { motion } from "framer-motion"; import Button from "~/components/Button"; import PatternedBackground from "~/components/PatternedBackground"; import { Tooltip } from "~/components/Tooltip"; import { usePermissions } from "~/hooks/usePermissions"; import { useModal } from "~/providers/modal"; import { useWorkspace } from "~/providers/workspace"; import { api } from "~/utils/api"; export function BoardsList({ isTemplate, archived = false }: { isTemplate?: boolean; archived?: boolean }) { const { workspace } = useWorkspace(); const { openModal } = useModal(); const { canCreateBoard } = usePermissions(); const utils = api.useUtils(); const updateBoard = api.board.update.useMutation({ onSuccess: () => { void utils.board.all.invalidate(); }, }); const { data, isLoading } = api.board.all.useQuery( { workspacePublicId: workspace.publicId, type: isTemplate ? "template" : "regular", archived: archived, }, { enabled: workspace.publicId ? true : false }, ); const handleToggleFavorite = ( e: React.MouseEvent, boardPublicId: string, currentFavorite: boolean | undefined ) => { e.preventDefault(); e.stopPropagation(); updateBoard.mutate({ boardPublicId, favorite: !currentFavorite, }); }; if (isLoading) return (
); if (data?.length === 0) return (

{archived ? t`No archived boards` : t`No ${isTemplate ? "templates" : "boards"}`}

{archived ? t`Boards you archive will appear here.` : t`Get started by creating a new ${isTemplate ? "template" : "board"}`}

); return ( {data?.map((board) => (

{board.name}

))}
); }