import React from 'react'; import { Link } from 'react-router-dom'; import { EllipsisVerticalIcon } from '@heroicons/react/24/solid'; import { PencilSquareIcon, TrashIcon } from '@heroicons/react/24/outline'; import { Project } from '../../entities/Project'; import { useTranslation } from 'react-i18next'; interface ProjectItemProps { project: Project; viewMode: 'cards' | 'list'; getCompletionPercentage: () => number; activeDropdown: number | null; setActiveDropdown: React.Dispatch>; handleEditProject: (project: Project) => void; setProjectToDelete: React.Dispatch>; setIsConfirmDialogOpen: React.Dispatch>; } const getProjectInitials = (name: string, maxLetters?: number) => { const words = name .trim() .split(' ') .filter((word) => word.length > 0); if (words.length === 1) { const singleWord = name.toUpperCase(); return maxLetters ? singleWord.substring(0, maxLetters) : singleWord; } const initials = words.map((word) => word[0].toUpperCase()).join(''); return maxLetters ? initials.substring(0, maxLetters) : initials; }; const ProjectItem: React.FC = ({ project, viewMode, getCompletionPercentage, activeDropdown, setActiveDropdown, handleEditProject, setProjectToDelete, setIsConfirmDialogOpen, }) => { const { t } = useTranslation(); return (
{viewMode === 'cards' && (
{project.image_url ? ( {project.name} ) : ( {getProjectInitials(project.name)} )}
)} {viewMode === 'list' && ( {project.image_url ? ( {project.name} ) : (
{getProjectInitials(project.name, 2)}
)} )}
{project.name}
{viewMode === 'cards' ? ( <> {project.id !== undefined && activeDropdown === project.id && (
)} ) : (
)}
{viewMode === 'cards' && (
)}
); }; export default ProjectItem;