import React, { useMemo } from 'react'; import type { Karung, ManualInput } from '../../types/api.ts'; import { formatNumber } from '../../utils/format.ts'; const StatItem: React.FC<{ icon: React.ReactNode; label: string; value: number | null; colorOverride?: string; }> = ({ icon, label, value, colorOverride }) => (
{icon}

{label}

{value == null ? 'N/A' : formatNumber(value)}

karung

); interface FeedStatsProps { latest: Karung | null; latestManual: ManualInput | null; cycleStartDate: string; displayDate: string; } const FeedStats: React.FC = ({ latest, latestManual, cycleStartDate, displayDate, }) => { const formatDisplayDate = (iso: string) => new Intl.DateTimeFormat('id-ID', { day: 'numeric', month: 'long', year: 'numeric', }).format(new Date(`${iso}T00:00:00`)); const todayLabel = useMemo(() => formatDisplayDate(displayDate), [displayDate]); const totalCycleLabel = useMemo(() => { const start = new Intl.DateTimeFormat('id-ID', { day: 'numeric', month: 'short', }).format(new Date(`${cycleStartDate}T00:00:00`)); const end = new Intl.DateTimeFormat('id-ID', { day: 'numeric', month: 'short', }).format(new Date(`${displayDate}T00:00:00`)); return `Total (${start} - ${end})`; }, [cycleStartDate, displayDate]); const columns = useMemo( () => [ { key: 'masuk', title: 'Karung Masuk', color: '#2563eb', icon: , iotToday: latest?.in_today ?? null, iotTotal: latest?.in_total ?? null, manualToday: latestManual?.feed_in_manual ?? null, manualTotal: latestManual?.feed_in_manual_total ?? null, }, { key: 'dituang', title: 'Karung Dituang', color: '#ea580c', icon: , iotToday: latest?.feed_use_today ?? null, iotTotal: latest?.feed_use_total ?? null, manualToday: latestManual?.feed_use_manual ?? null, manualTotal: latestManual?.feed_use_manual_total ?? null, }, { key: 'keluar', title: 'Karung Keluar', color: '#dc2626', icon: , iotToday: latest?.out_today ?? null, iotTotal: latest?.out_total ?? null, manualToday: latestManual?.feed_out_manual ?? null, manualTotal: latestManual?.feed_out_manual_total ?? null, }, ], [latest, latestManual] ); return (
{columns.map((col) => (

{col.title}

} label={`IOT · ${todayLabel}`} value={col.iotToday} colorOverride={col.color} /> } label={`IOT · ${totalCycleLabel}`} value={col.iotTotal} colorOverride={col.color} />
} label={`Manual · ${todayLabel}`} value={col.manualToday} colorOverride="#6b7280" /> } label={`Manual · ${totalCycleLabel}`} value={col.manualTotal} colorOverride="#6b7280" />
))}
); }; export default FeedStats;