import { Search } from 'lucide-react'; import React from 'react'; import { useAuth } from '@/contexts/AuthContext'; import { useTranslation } from '@/hooks/useI18n'; import type { BackendResourceFlow } from '@/schemas/backend/resource-flow'; import Badge from '@/components/ui/Badge'; import Button from '@/components/ui/Button'; import { Card } from '@/components/ui/Card'; interface ResourceFlowCardProps { resourceFlow: BackendResourceFlow; onViewMatches?: (resourceId: string) => void; } const ResourceFlowCard: React.FC = ({ resourceFlow, onViewMatches }) => { const { t } = useTranslation(); const { isAuthenticated } = useAuth(); const formatQuantity = () => { const { amount, unit, temporal_unit } = resourceFlow.Quantity; let quantity = `${amount} ${unit}`; if (temporal_unit) { quantity += `/${temporal_unit}`; } return quantity; }; const getQualityInfo = () => { const quality = resourceFlow.Quality; const info: string[] = []; if (quality.temperature_celsius !== undefined) { info.push(`${quality.temperature_celsius}°C`); } if (quality.pressure_bar !== undefined) { info.push(`${quality.pressure_bar} bar`); } if (quality.physical_state) { info.push(quality.physical_state); } return info.join(' • '); }; 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()}

{formatQuantity()}

{getQualityInfo() && (

{getQualityInfo()}

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