import Badge from '@/components/ui/Badge'; import Button from '@/components/ui/Button'; import { Card } from '@/components/ui/Card'; import { useAuth } from '@/contexts/AuthContext'; import { useTranslation } from '@/hooks/useI18n'; import type { BackendResourceFlow } from '@/schemas/backend/resource-flow'; import { Search } from 'lucide-react'; import React from 'react'; import { formatQualityInfo, formatQuantity } from './utils'; interface ResourceFlowCardProps { resourceFlow: BackendResourceFlow; onViewMatches?: (resourceId: string) => void; } const ResourceFlowCard: React.FC = ({ resourceFlow, onViewMatches }) => { const { t } = useTranslation(); const { isAuthenticated } = useAuth(); // use shared format helpers const formattedQuantity = formatQuantity(resourceFlow.Quantity); const formattedQuality = formatQualityInfo(resourceFlow.Quality); const getTypeLabel = () => { return t(`resourceTypes.${resourceFlow.Type}`) || resourceFlow.Type; }; return (
{resourceFlow.Direction === 'input' ? t('resourceFlows.input') : t('resourceFlows.output')} {getTypeLabel()} {resourceFlow.PrecisionLevel && ( {resourceFlow.PrecisionLevel} )}

{getTypeLabel()}

{formattedQuantity}

{formattedQuality && (

{formattedQuality}

)} {resourceFlow.EconomicData && (
{resourceFlow.EconomicData.cost_out !== undefined && ( Cost: €{resourceFlow.EconomicData.cost_out.toFixed(2)} )}
)}
{onViewMatches && resourceFlow.Direction === 'output' && isAuthenticated && (
)}
); }; export default React.memo(ResourceFlowCard);