'use client' import React from 'react' interface ModalShellProps { title: string onClose: () => void children: React.ReactNode footer: React.ReactNode } function ModalShell({ title, onClose, children, footer }: ModalShellProps) { return (

{title}

{children}
{footer}
) } // ---- Contact Modal ---- export function ContactModal({ newContact, setNewContact, onClose, onCreate, saving, }: { newContact: { name: string; role: string; email: string; phone: string; is_primary: boolean; available_24h: boolean } setNewContact: React.Dispatch> onClose: () => void onCreate: () => void saving: boolean }) { return ( } >
setNewContact(p => ({ ...p, name: e.target.value }))} placeholder="Vollstaendiger Name" className="w-full border rounded px-3 py-2 text-sm" />
setNewContact(p => ({ ...p, role: e.target.value }))} placeholder="z.B. Datenschutzbeauftragter" className="w-full border rounded px-3 py-2 text-sm" />
setNewContact(p => ({ ...p, email: e.target.value }))} placeholder="email@example.com" className="w-full border rounded px-3 py-2 text-sm" />
setNewContact(p => ({ ...p, phone: e.target.value }))} placeholder="+49..." className="w-full border rounded px-3 py-2 text-sm" />
) } // ---- Exercise Modal ---- export function ExerciseModal({ newExercise, setNewExercise, onClose, onCreate, saving, }: { newExercise: { title: string; exercise_type: string; exercise_date: string; notes: string } setNewExercise: React.Dispatch> onClose: () => void onCreate: () => void saving: boolean }) { return ( } >
setNewExercise(p => ({ ...p, title: e.target.value }))} placeholder="z.B. Tabletop-Uebung Ransomware" className="w-full border rounded px-3 py-2 text-sm" />
setNewExercise(p => ({ ...p, exercise_date: e.target.value }))} className="w-full border rounded px-3 py-2 text-sm" />