feat(ui): planlı işlemler sayfası, kural formu ve vadesi geçmiş uyarısı

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-05 10:55:05 +03:00
parent 04a17d2775
commit cfc2b2c974
8 changed files with 1187 additions and 5 deletions
@@ -0,0 +1,32 @@
import { TriangleAlert } from "lucide-react";
import Link from "next/link";
import { Button } from "@/components/ui/button";
import { tr } from "@/i18n/tr";
import { countOverdue, ensureHorizon } from "../service";
import { toObjectId } from "@/lib/object-id";
/** Dashboard: vadesi geçmiş onaylanmamış planlı işlemler uyarısı (Bölüm 6.7). */
export async function OverdueBanner({
userId,
householdId,
}: {
userId: string;
householdId: string;
}) {
const hid = toObjectId(householdId);
if (hid) await ensureHorizon(hid);
const n = await countOverdue(userId, householdId);
if (!n) return null;
return (
<div
role="status"
className="flex flex-wrap items-center gap-3 rounded-xl border border-expense/30 bg-expense/10 p-3 text-sm"
>
<TriangleAlert className="size-4 shrink-0 text-expense" aria-hidden />
<span className="flex-1">{tr.recurring.overdueBanner(n)}</span>
<Button asChild size="sm" variant="outline">
<Link href="/planli">{tr.recurring.overdueLink}</Link>
</Button>
</div>
);
}