feat: verschlüsselte Integrationseinstellungen, Haushaltsmitglieder mit Ersteller, Backup-Download

This commit is contained in:
opencode committed 2026-10-18 14:19:03 +02:00
1 parent a1195223e0
commit 267f4fcf70
21 files changed
+724 -30

No files matched your search

+5 -1
View File
@@ -51,6 +51,7 @@ async function VoucherList({ filter }: { filter: string }) {
if (filter === "aktiv") return s === "aktiv";
return true;
});
const withLogos = await Promise.all(filtered.map(withLogoUrl));
if (filtered.length === 0) {
return (
<div className="rounded-card border border-line bg-white p-10 text-center">
@@ -66,7 +67,7 @@ async function VoucherList({ filter }: { filter: string }) {
}
return (
<ul className="grid gap-3">
{filtered.map(withLogoUrl).map((v) => {
{withLogos.map((v) => {
const s = getVoucherStatus(v);
return (
<li key={v.id} className="rounded-card border border-line bg-white p-5 transition-shadow hover:shadow-[0_8px_24px_rgba(32,55,39,0.08)]">
@@ -81,6 +82,9 @@ async function VoucherList({ filter }: { filter: string }) {
{v.anbieter} · {formatEuro(v.restCents)} von {formatEuro(v.wertCents)}
{v.ablaufdatum ? ` · bis ${v.ablaufdatum.toLocaleDateString("de-DE")}` : ""}
</p>
<p className="mt-0.5 text-[13px] text-muted">
{v.createdBy ? `Angelegt von ${v.createdBy}` : "Ersteller nicht erfasst"}
</p>
</div>
<span className={`shrink-0 rounded-full px-2.5 py-1 text-xs font-semibold ${STATUS_STYLE[s]}`}>
{statusLabel(s)}