import { ChevronDown } from 'lucide-react';
import { cn } from '@/lib/utils';
import { Label } from '@/components/ui/label';
import { Input } from '@/components/ui/input';
// Collapsible Debt / Snowball fields (interest rate, current balance, minimum
// payment, snowball visibility). State lives in the parent BillModal (the save
// action reads these values); this is a presentational extraction.
export default function DebtDetailsSection({
inp,
errors, setErrors,
showDebtSection, setShowDebtSection,
isSnowballCategory, showOnSnowball,
interestRate, setInterestRate,
currentBalance, setCurrentBalance,
minimumPayment, setMinimumPayment,
validateInterestRate, validateCurrentBalance, validateMinimumPayment,
handleBlur,
onSnowballVisibilityChange,
}) {
return (
{showDebtSection && (
{/* Interest Rate */}
{
setInterestRate(e.target.value);
setTimeout(() => setErrors(prev => ({ ...prev, interestRate: validateInterestRate(e.target.value) })), 300);
}}
onBlur={() => handleBlur('interestRate', interestRate, validateInterestRate)}
/>
{errors.interestRate && (
{errors.interestRate}
)}
Enter 29.99 for 29.99%.
{/* Current Balance */}
{
setCurrentBalance(e.target.value);
setTimeout(() => setErrors(prev => ({ ...prev, currentBalance: validateCurrentBalance(e.target.value) })), 300);
}}
onBlur={() => handleBlur('currentBalance', currentBalance, validateCurrentBalance)}
/>
{errors.currentBalance && (
{errors.currentBalance}
)}
Outstanding debt balance.
{/* Minimum Payment */}
{
setMinimumPayment(e.target.value);
setTimeout(() => setErrors(prev => ({ ...prev, minimumPayment: validateMinimumPayment(e.target.value) })), 300);
}}
onBlur={() => handleBlur('minimumPayment', minimumPayment, validateMinimumPayment)}
/>
{errors.minimumPayment && (
{errors.minimumPayment}
)}
Required minimum monthly payment.
{/* Include in Snowball */}
)}
);
}