feat: update payment status colors and add inline status switcher

- Pending: yellow → light red
- Paid: green → teal, label updated to "Paid in Full"
- Status badge for Pending/Partially Paid/Paid is now a styled inline
  dropdown to switch between the 3 statuses without opening a modal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-05-06 18:24:49 -04:00
parent 6f33e416c1
commit cf59de898b

View File

@@ -463,7 +463,7 @@ export default function PaymentsRecentTable({
case "PENDING": case "PENDING":
return { return {
label: "Pending", label: "Pending",
color: "bg-yellow-100 text-yellow-800", color: "bg-red-100 text-red-800",
icon: <Clock className="h-3 w-3 mr-1" />, icon: <Clock className="h-3 w-3 mr-1" />,
}; };
case "PARTIALLY_PAID": case "PARTIALLY_PAID":
@@ -474,8 +474,8 @@ export default function PaymentsRecentTable({
}; };
case "PAID": case "PAID":
return { return {
label: "Paid", label: "Paid in Full",
color: "bg-green-100 text-green-800", color: "bg-teal-100 text-teal-800",
icon: <CheckCircle className="h-3 w-3 mr-1" />, icon: <CheckCircle className="h-3 w-3 mr-1" />,
}; };
case "OVERPAID": case "OVERPAID":
@@ -708,6 +708,32 @@ export default function PaymentsRecentTable({
const { label, color, icon } = getStatusInfo( const { label, color, icon } = getStatusInfo(
payment.status payment.status
); );
const switchableStatuses: PaymentStatus[] = [
"PENDING",
"PARTIALLY_PAID",
"PAID",
];
const isSwitchable = switchableStatuses.includes(
payment.status as PaymentStatus
);
if (isSwitchable) {
return (
<select
value={payment.status ?? ""}
onChange={(e) =>
updatePaymentStatusMutation.mutate({
paymentId: payment.id,
status: e.target.value as PaymentStatus,
})
}
className={`px-2 py-1 text-xs font-medium rounded-full border-0 cursor-pointer focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-teal-400 ${color}`}
>
<option value="PENDING">Pending</option>
<option value="PARTIALLY_PAID">Partially Paid</option>
<option value="PAID">Paid in Full</option>
</select>
);
}
return ( return (
<span <span
className={`px-2 py-1 text-xs font-medium rounded-full ${color}`} className={`px-2 py-1 text-xs font-medium rounded-full ${color}`}