import React from 'react'; import { useNavigate } from 'react-router-dom'; // No longer needs SECTORS - uses getTranslatedSectorName directly import { useTranslation } from '@/hooks/useI18n.tsx'; import { getTranslatedSectorName } from '@/lib/sector-mapper.ts'; import { getOrganizationSubtypeLabel } from '@/schemas/organizationSubtype.ts'; import type { Organization } from '@/types.ts'; import { Briefcase, MapPin, Building2 } from 'lucide-react'; import Badge from '@/components/ui/Badge.tsx'; import Button from '@/components/ui/Button.tsx'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card.tsx'; import VerifiedBadge from '@/components/ui/VerifiedBadge.tsx'; interface OrganizationCardProps { organization: Organization; showDetails?: boolean; onClick?: (organization: Organization) => void; } const OrganizationCard = ({ organization, showDetails = true, onClick }: OrganizationCardProps) => { const { t } = useTranslation(); const navigate = useNavigate(); // Sector display handled by getTranslatedSectorName const handleCardClick = () => { if (onClick) { onClick(organization); } else { navigate(`/organization/${organization.ID}`); } }; const handleViewDetails = (e: React.MouseEvent) => { e.stopPropagation(); navigate(`/organization/${organization.ID}`); }; return (
{organization.LogoURL ? ( {organization.Name} ) : ( )}
{organization.Name}
{getOrganizationSubtypeLabel(organization.Subtype)} {organization.Verified && }
{/* Sector and Location */}
{getTranslatedSectorName(organization.Sector)}
{organization.Address && (
{organization.Address}
)}
{/* Description */} {organization.Description && showDetails && (

{organization.Description}

)} {/* Key Stats */} {showDetails && (
{organization.ResourceFlows?.length || 0}
{t('organizationCard.resourceFlows')}
{organization.Matches?.length || 0}
{t('organizationCard.matches')}
{organization.Proposals?.length || 0}
{t('organizationCard.proposals')}
)} {/* Action Button */}
); }; export default React.memo(OrganizationCard);