diff --git a/src/components/DeadlineSuggester.tsx b/src/components/DeadlineSuggester.tsx index bdf939d..e101056 100644 --- a/src/components/DeadlineSuggester.tsx +++ b/src/components/DeadlineSuggester.tsx @@ -20,16 +20,20 @@ export default function DeadlineSuggester({ onUseSuggestion, }: Props) { const [suggestion, setSuggestion] = useState(null); + const [reason, setReason] = useState(""); + const [tooltipOpen, setTooltipOpen] = useState(false); useEffect(() => { if (!totalAmount || recipientCount === 0) { setSuggestion(null); + setReason(""); return; } const amount = parseFloat(totalAmount); if (isNaN(amount) || amount <= 0) { setSuggestion(null); + setReason(""); return; } @@ -38,6 +42,7 @@ export default function DeadlineSuggester({ const history: HistoricalInvoice[] = stored ? JSON.parse(stored) : []; let recommendedDays: number; + let recommendationReason: string; if (history.length > 0) { // Filter by similar amount bracket (within 50% to 150%) @@ -50,16 +55,26 @@ export default function DeadlineSuggester({ const avgTime = similar.reduce((sum, inv) => sum + inv.fundingTime, 0) / similar.length; recommendedDays = Math.ceil(avgTime * 1.2); // Add 20% buffer + recommendationReason = `Based on your average payment cycle of ${avgTime.toFixed( + 1 + )} days for ${similar.length} similar invoice${similar.length === 1 ? "" : "s"}, plus a 20% buffer.`; } else { // Use static rules as fallback recommendedDays = getStaticRecommendation(amount); + recommendationReason = `No similar past invoices found, so we used a standard recommendation for invoices around $${amount.toFixed( + 2 + )}.`; } } else { // No history, use static rules recommendedDays = getStaticRecommendation(amount); + recommendationReason = `You have no invoice history yet, so we used a standard recommendation for invoices around $${amount.toFixed( + 2 + )}.`; } setSuggestion(Math.max(1, Math.min(365, recommendedDays))); + setReason(recommendationReason); }, [totalAmount, recipientCount]); if (suggestion === null) { @@ -68,8 +83,31 @@ export default function DeadlineSuggester({ return (
-

+

Recommended: {suggestion} days + + + {tooltipOpen && ( + + {reason} + + )} +