import { HiPlus, HiXMark } from "react-icons/hi2"; import CircularProgress from "~/components/CircularProgress"; import { useModal } from "~/providers/modal"; import ChecklistItemRow from "./ChecklistItemRow"; import ChecklistNameInput from "./ChecklistNameInput"; import NewChecklistItemForm from "./NewChecklistItemForm"; interface ChecklistItem { publicId: string; title: string; completed: boolean; } interface Checklist { publicId: string; name: string; items: ChecklistItem[]; } interface ChecklistsProps { checklists: Checklist[]; cardPublicId: string; activeChecklistForm?: string | null; setActiveChecklistForm?: (id: string | null) => void; viewOnly?: boolean; } export default function Checklists({ checklists, cardPublicId, activeChecklistForm, setActiveChecklistForm, viewOnly = false, }: ChecklistsProps) { const { openModal } = useModal(); if (!checklists || checklists.length === 0) return null; return (
{checklists.map((checklist) => { const completedItems = checklist.items.filter( (item) => item.completed, ); const progress = checklist.items.length > 0 && completedItems.length > 0 ? (completedItems.length / checklist.items.length) * 100 : 2; return (
{!viewOnly && (
{completedItems.length}/{checklist.items.length}
)} {viewOnly && (
{completedItems.length}/{checklist.items.length}
)}
{checklist.items.map((item) => ( ))}
{activeChecklistForm === checklist.publicId && !viewOnly && (
setActiveChecklistForm?.(null)} readOnly={viewOnly} />
)}
); })}
); }