"use client"; import { useActionState, useState } from "react"; import type { RikxRonde } from "../../lib/db"; import { createExpert, deleteExpert, resendInvite, type InviteState } from "./actions"; const inputClass = "h-10 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-3 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-rikx-orange"; const labelClass = "text-sm font-medium text-zinc-700 dark:text-zinc-300"; // Melding na het aanmaken of opnieuw uitnodigen; bij een link (geen SMTP) met kopieerknop export function InviteResult({ state }: { state: InviteState }) { const [copied, setCopied] = useState(false); if (state.status === "idle") return null; if (state.status === "error") return

{state.message}

; if (state.status === "sent") return

{state.message}

; return (

{state.message}

e.target.select()} className={`${inputClass} flex-1 min-w-0 font-mono text-xs`} />
); } export function RondeCheckboxes({ rondes, selected = [] }: { rondes: RikxRonde[]; selected?: number[] }) { if (rondes.length === 0) { return

Er zijn nog geen Rikx rondes.

; } return (
{rondes.map((r) => ( ))}
); } export function NewExpertForm({ rondes }: { rondes: RikxRonde[] }) { const [state, action, pending] = useActionState(createExpert, { status: "idle" } as InviteState); return (
Rikx rondes De expert ziet alleen projecten in waardebepaling uit deze rondes.
); } export function ResendInviteButton({ id, label }: { id: number; label: string }) { const [state, action, pending] = useActionState(resendInvite, { status: "idle" } as InviteState); return (
{state.status !== "idle" && (
)}
); } export function DeleteExpertButton({ id, name, aantalBeoordelingen }: { id: number; name: string; aantalBeoordelingen: number }) { return (
{ const extra = aantalBeoordelingen > 0 ? ` Ook ${aantalBeoordelingen === 1 ? "de beoordeling" : `de ${aantalBeoordelingen} beoordelingen`} van deze expert ${aantalBeoordelingen === 1 ? "wordt" : "worden"} verwijderd; dat verandert de Rikx calculatie van die projecten.` : ""; if (!confirm(`Weet je zeker dat je expert "${name}" wilt verwijderen?${extra}`)) e.preventDefault(); }} >
); }