import React, { useMemo } from 'react'; import { AlertCircle, CheckCircle2, Circle, Clock3, Loader2, SkipForward } from 'lucide-react'; import { cn } from '@/lib/utils'; import { STATUS_META, isPaidStatus } from '@/lib/trackerUtils'; import type { TrackerStatus } from '@/types'; interface StatusBadgeProps { status: TrackerStatus; clickable?: boolean; onClick?: () => void; loading?: boolean; } export const StatusBadge = React.memo(function StatusBadge({ status, clickable, onClick, loading }: StatusBadgeProps) { const meta = useMemo(() => STATUS_META[status] || STATUS_META.upcoming, [status]); const StatusIcon = useMemo(() => { switch (status) { case 'paid': case 'autodraft': return CheckCircle2; case 'late': case 'missed': return AlertCircle; case 'due_soon': return Clock3; case 'skipped': return SkipForward; default: return Circle; } }, [status]); const isSkipped = status === 'skipped'; const canClick = clickable && !isSkipped && !loading; return ( ); });