import { useParams, Link, useNavigate } from 'react-router-dom'; import { useCard } from '../hooks/useCard'; import { useCardDetailMutations } from '../hooks/useCardDetailMutations'; import { useModal } from '../context/modals/useModal'; import { CardSidebar } from '../components/CardSidebar'; import { CardComments } from '../components/CardComments'; import { EditCardModal } from '../components/EditCardModal'; import { DeleteCardModal } from '../components/DeleteCardModal'; import CheckSquareIcon from '../components/icons/CheckSquareIcon'; import TagIcon from '../components/icons/TagIcon'; import Trash2Icon from '../components/icons/Trash2Icon'; import ArrowLeftIcon from '../components/icons/ArrowLeftIcon'; import Edit2Icon from '../components/icons/Edit2Icon'; export function CardDetail() { const { id: boardId, cardId } = useParams<{ id: string; cardId: string }>(); const navigate = useNavigate(); const { card, fetchCard } = useCard(parseInt(cardId || '0')); const { updateCardNameAndDescription, deleteCardWithConfirmation, addComment, editComment, deleteCommentWithConfirmation, } = useCardDetailMutations(parseInt(cardId || '0'), card, fetchCard); const { openModal } = useModal(); const handleEditCard = () => { if (!card) return; openModal((props) => ( { return await updateCardNameAndDescription(name, description); }} onClose={props.onClose} /> )); }; const handleDeleteCard = () => { if (!card) return; openModal((props) => ( { deleteCardWithConfirmation(() => { props.onClose(); navigate(`/boards/${boardId}`); }); }} onClose={props.onClose} /> )); }; if (!card) { return null; } const formatDate = (dateString: string) => { return new Date(dateString).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', }); }; return (
Back to Board

{card.name}

In list • Created {formatDate(card.created_at)}

{/* Description Section */}

Description

{card.description || 'No description added yet.'}

{/* Labels Section */} {card.labels && card.labels.length > 0 && (

Labels

{card.labels.map((label: any) => ( {label.name} ))}
)} {/* Checklists Section */} {card.checklists && card.checklists.length > 0 && (

Checklists

{card.checklists.map((checklist: any) => (

{checklist.name}

{checklist.items && checklist.items.length > 0 ? ( checklist.items.map((item: any) => (
{item.name}
)) ) : (

No items yet

)}
))}
)}
); }