From e7eb43462c7dc1cf53020e3388fb4b92619ec73c Mon Sep 17 00:00:00 2001 From: "t.indorf" Date: Wed, 20 May 2026 23:09:59 +0200 Subject: [PATCH] Fix server/client component boundary issue with reasonColor/reasonLabel helper functions by moving them to shared utils --- src/app/dashboard/absence-card.tsx | 11 +---------- .../dashboard/admin/abwesenheiten/absence-table.tsx | 11 +---------- src/app/dashboard/admin/abwesenheiten/page.tsx | 3 +-- src/lib/absence-utils.ts | 13 +++++++++++++ 4 files changed, 16 insertions(+), 22 deletions(-) create mode 100644 src/lib/absence-utils.ts diff --git a/src/app/dashboard/absence-card.tsx b/src/app/dashboard/absence-card.tsx index 274fcfb..a1e9615 100644 --- a/src/app/dashboard/absence-card.tsx +++ b/src/app/dashboard/absence-card.tsx @@ -4,6 +4,7 @@ import Link from "next/link"; import { useMemo, useTransition } from "react"; import { AbsenceReason } from "@prisma/client"; import { Baby, CalendarX2, Check, ChevronRight, Loader2 } from "lucide-react"; +import { reasonColor, reasonLabel } from "@/lib/absence-utils"; import { toast } from "sonner"; import { reportAbsence } from "@/actions/absences"; @@ -331,14 +332,4 @@ function AbsenceRow({ absence }: { absence: AbsenceListItem }) { ); } -function reasonLabel(reason: AbsenceReason) { - if (reason === AbsenceReason.ILLNESS) return "Krank"; - if (reason === AbsenceReason.VACATION) return "Urlaub"; - return "Sonstiges"; -} -function reasonColor(reason: AbsenceReason) { - if (reason === AbsenceReason.ILLNESS) return "var(--danger)"; - if (reason === AbsenceReason.VACATION) return "var(--warn)"; - return "var(--accent)"; -} diff --git a/src/app/dashboard/admin/abwesenheiten/absence-table.tsx b/src/app/dashboard/admin/abwesenheiten/absence-table.tsx index 91eec1a..b0f1b06 100644 --- a/src/app/dashboard/admin/abwesenheiten/absence-table.tsx +++ b/src/app/dashboard/admin/abwesenheiten/absence-table.tsx @@ -3,6 +3,7 @@ import { useState } from "react"; import { AbsenceReason } from "@prisma/client"; import { CalendarDays, Circle, MessageSquareText, UserRound } from "lucide-react"; +import { reasonColor, reasonLabel } from "@/lib/absence-utils"; import { Badge } from "@/components/ui/badge"; import { @@ -176,17 +177,7 @@ function getInitials(name: string) { .toUpperCase(); } -export function reasonLabel(reason: AbsenceReason) { - if (reason === AbsenceReason.ILLNESS) return "Krank"; - if (reason === AbsenceReason.VACATION) return "Urlaub"; - return "Sonstiges"; -} -export function reasonColor(reason: AbsenceReason) { - if (reason === AbsenceReason.ILLNESS) return "var(--danger)"; - if (reason === AbsenceReason.VACATION) return "var(--warn)"; - return "var(--accent)"; -} export function formatDateRange(startDate: string, endDate: string) { const start = new Date(`${startDate}T00:00:00`); diff --git a/src/app/dashboard/admin/abwesenheiten/page.tsx b/src/app/dashboard/admin/abwesenheiten/page.tsx index 3ae274f..2dc7cdc 100644 --- a/src/app/dashboard/admin/abwesenheiten/page.tsx +++ b/src/app/dashboard/admin/abwesenheiten/page.tsx @@ -21,10 +21,9 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { AbsenceTable, - reasonColor, - reasonLabel, type AbsenceTableItem, } from "./absence-table"; +import { reasonColor, reasonLabel } from "@/lib/absence-utils"; export const metadata = { title: "Abwesenheiten ยท Kita-Planer" }; diff --git a/src/lib/absence-utils.ts b/src/lib/absence-utils.ts new file mode 100644 index 0000000..41b353e --- /dev/null +++ b/src/lib/absence-utils.ts @@ -0,0 +1,13 @@ +import { AbsenceReason } from "@prisma/client"; + +export function reasonLabel(reason: AbsenceReason) { + if (reason === AbsenceReason.ILLNESS) return "Krank"; + if (reason === AbsenceReason.VACATION) return "Urlaub"; + return "Sonstiges"; +} + +export function reasonColor(reason: AbsenceReason) { + if (reason === AbsenceReason.ILLNESS) return "var(--danger)"; + if (reason === AbsenceReason.VACATION) return "var(--warn)"; + return "var(--accent)"; +}