"use client";
import { UserPlus, UserMinus, Mail, CircleSlash, Pencil } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Pill } from "@/components/mockup-ui";
import {
assignFunction,
unassignFunction,
markFunctionUnfilled,
inviteFunctionHolder,
} from "@/server/actions/onboarding-team";
import { Popup } from "./popup";
export interface HolderView {
id: string;
userName: string | null;
userEmail: string | null;
invitedEmail: string | null;
}
export interface FunctionCardData {
key: string;
label: string;
desc: string;
domain: string | null;
multi: boolean;
soll: string | null;
holders: HolderView[];
}
/**
* Bearbeiten einer ISMS-Funktion im Popup — Logik wie beim Risiken-Popup, nutzt die
* bestehenden M1-Server-Actions (`assignFunction`, `unassignFunction`,
* `markFunctionUnfilled`, `inviteFunctionHolder`). Auslöser ist der „Bearbeiten“-Button
* auf der Funktionskarte (siehe step.tsx).
*/
export function FunctionEditDialog({
fn,
users,
canUse,
canInvite,
}: {
fn: FunctionCardData;
users: { id: string; name: string; email: string }[];
canUse: boolean;
canInvite: boolean;
}) {
const filled = fn.holders.length > 0;
const canAssignMore = canUse && (fn.multi || !filled);
return (
{fn.desc}
{fn.soll && (Soll (zentral): {fn.soll}
)}Aktuelle Besetzung
{filled ? (Noch niemand zugewiesen.
)}Einladen neuer Accounts erfordert das Recht „Benutzerverwaltung“.
)} {!filled && ( )}Nur Lesezugriff — Änderungen erfordern das Recht „Onboarding nutzen“.
)}