"use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { addEmployeeNote, completeEmployeeNote } from "@/actions/employees"; import { Button } from "@/components/ui/Button"; import { SelectField, TextField, TextareaField } from "@/components/ui/Field"; import { useToast } from "@/components/ui/Toast"; import { NOTE_CATEGORY_STYLES } from "@/lib/colors"; import { fmtDate } from "@/lib/format"; import type { Database, NoteCategory } from "@/lib/supabase/types"; type Note = Database["public"]["Tables"]["employee_notes"]["Row"]; const CATEGORIES: NoteCategory[] = ["Allgemein", "Vertraulich", "Personalgespräch", "Wiedervorlage", "Lob / Anerkennung"]; export function NotizenTab({ employeeId, notes }: { employeeId: string; notes: Note[] }) { const { showToast } = useToast(); const router = useRouter(); const [category, setCategory] = useState("Allgemein"); const [noteText, setNoteText] = useState(""); const [dueDate, setDueDate] = useState(""); const [pending, setPending] = useState(false); const [completingId, setCompletingId] = useState(null); async function handleSubmit() { if (!noteText.trim()) { showToast("Bitte einen Notiztext eingeben.", "error"); return; } setPending(true); const result = await addEmployeeNote({ employee_id: employeeId, category, note_text: noteText.trim(), due_date: dueDate || undefined, }); setPending(false); if (result.success) { showToast("Notiz hinzugefügt."); setNoteText(""); setDueDate(""); setCategory("Allgemein"); router.refresh(); } else { showToast(result.error ?? "Fehler beim Speichern.", "error"); } } async function handleComplete(noteId: string) { setCompletingId(noteId); const result = await completeEmployeeNote({ note_id: noteId, employee_id: employeeId }); setCompletingId(null); if (result.success) { showToast("Notiz erledigt."); router.refresh(); } else { showToast(result.error ?? "Fehler beim Speichern.", "error"); } } return (
🔒 Interne HR-Notizen – nur für die Personalabteilung sichtbar. Jede Notiz wird mit Verfasser:in und Datum protokolliert.

Neue Notiz erfassen

setCategory(v as NoteCategory)} options={CATEGORIES.map((c) => ({ value: c, label: c }))} />
{notes.length === 0 ? (

Keine Notizen vorhanden.

) : (
    {notes.map((n) => (
  • {n.category} {n.author_name} {fmtDate(n.created_at)} {n.done ? ( Erledigt ) : ( Offen )}

    {n.note_text}

    {n.due_date && !n.done &&

    🔔 fällig {fmtDate(n.due_date)}

    } {!n.done && ( )}
  • ))}
)}
); }