"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { createBrowserSupabaseClient } from "@/lib/supabase"; import type { User } from "@supabase/supabase-js"; interface Anfrage { id: string; created_at: string; status: string; name: string; betreff: string; nachricht: string | null; email: string; } function formatDatum(iso: string) { return new Date(iso).toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric", }); } function StatusBadge({ status }: { status: string }) { const styles: Record = { offen: "bg-amber-500/10 text-amber-400 border border-amber-500/20", in_bearbeitung: "bg-blue-500/10 text-blue-400 border border-blue-500/20", abgeschlossen: "bg-green-500/10 text-green-400 border border-green-500/20", }; const labels: Record = { offen: "Offen", in_bearbeitung: "In Bearbeitung", abgeschlossen: "Abgeschlossen", }; return ( {labels[status] ?? status} ); } export default function KundenDashboardPage() { const router = useRouter(); const [user, setUser] = useState(null); const [anfragen, setAnfragen] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const supabase = createBrowserSupabaseClient(); async function init() { const { data: { session }, } = await supabase.auth.getSession(); if (!session) { router.push("/kunden/login"); return; } setUser(session.user); const res = await fetch("/api/kunden/anfragen", { headers: { Authorization: `Bearer ${session.access_token}` }, }); if (res.ok) { const json = await res.json(); setAnfragen(json.anfragen ?? []); } setLoading(false); } init(); }, [router]); async function handleLogout() { const supabase = createBrowserSupabaseClient(); await supabase.auth.signOut(); router.push("/kunden/login"); } if (loading) { return (

Wird geladen…

); } return (

Mein Bereich

{user?.email}


Meine IT-Anfragen

+ Neue Anfrage
{anfragen.length === 0 ? (

Noch keine Anfragen vorhanden

Kontaktieren Sie uns über das Kontaktformular auf der Startseite.

Zum Kontaktformular
) : (
{anfragen.map((anfrage) => (
{formatDatum(anfrage.created_at)}
#{anfrage.id.slice(0, 8)}

{anfrage.betreff}

{anfrage.nachricht && (

{anfrage.nachricht}

)}
))}
)}
); }