<?php

declare(strict_types=1);

/**
 * Visitenkarte für eine Person. Props:
 *   $person array{department, name, phone?, email?, image?, whatsapp?}
 *   $level  string — Überschriften-Ebene des NAMENS (Default 'h3'; der Name ist
 *           das Heading der Karte, die Abteilung nur eine Kicker-Zeile darüber).
 *           Eingebettet (z. B. in position-card unter einem h3) auf 'h4' setzen,
 *           damit die Heading-Outline nicht abflacht. Styling bleibt klassenbasiert.
 *   $hide_department bool — Kicker ausblenden, wenn der Kontext die Abteilung
 *           schon trägt (person-grid mit group_by_department).
 * Ohne image rendert ein Initialen-Avatar im Vereins-Look (dunkle Fläche,
 * große Initialen — dasselbe Fallback-Prinzip wie crest.php), kein generisches
 * Silhouetten-Bild.
 * Kontaktwege als Buttons (mobil sofort tippbar): phone → Anrufen (+ WhatsApp
 * bei whatsapp=true), sonst email → E-Mail. Nummer bzw. Adresse stehen
 * zusätzlich als Textzeile (ablesbar).
 * Es sind reine Icon-Knöpfe im globalen .btn--icon-Format (44px, rund) und sie
 * sitzen rechts NEBEN dem Text, nicht darunter — das spart pro Karte eine ganze
 * Button-Zeile Höhe. Weil das Label wegfällt, trägt jeder Knopf den
 * Personennamen im aria-label: im Ansprechpartner-Grid stünden sonst zwei
 * Dutzend Links namens „Anrufen" untereinander.
 */
$level = $level ?? 'h3';
if (!in_array($level, ['h2', 'h3', 'h4', 'h5'], true)) {
    $level = 'h3';
}
$hideDepartment = !empty($hide_department);
$image = $person['image'] ?? null;

$initials = '';
foreach (preg_split('/[\s.-]+/', trim((string) ($person['name'] ?? ''))) ?: [] as $word) {
    if ($word !== '') {
        $initials .= mb_substr($word, 0, 1);
    }
    if (mb_strlen($initials) >= 2) {
        break;
    }
}
$initials = mb_strtoupper($initials !== '' ? $initials : '?');

$telHref = !empty($person['phone']) ? 'tel:' . preg_replace('/[^+\d]/', '', $person['phone']) : null;
$mailHref = ($telHref === null && !empty($person['email'])) ? 'mailto:' . $person['email'] : null;
$waHref = (!empty($person['whatsapp']) && !empty($person['phone']))
    ? 'https://wa.me/' . preg_replace('/\D/', '', $person['phone'])
    : null;
$detail = $person['phone'] ?? $person['email'] ?? '';
?>
                    <article class="person-card">
<?php if ($image): ?>
                        <div class="person-card__media">
                            <img src="<?= e(asset($image)) ?>"
                                alt="<?= e($person['name']) ?>"
                                width="480" height="600" loading="lazy" decoding="async">
                        </div>
<?php else: ?>
                        <div class="person-card__media person-card__media--initials" aria-hidden="true">
                            <span class="person-card__initials"><?= e($initials) ?></span>
                        </div>
<?php endif; ?>
                        <div class="person-card__body">
                            <div class="person-card__text">
<?php if (!$hideDepartment): ?>
                                <p class="person-card__department"><?= e($person['department']) ?></p>
<?php endif; ?>
                                <<?= $level ?> class="person-card__name"><?= e($person['name']) ?></<?= $level ?>>
<?php if ($detail !== ''): ?>
                                <p class="person-card__detail"><?= e($detail) ?></p>
<?php endif; ?>
                            </div>
<?php if ($telHref !== null || $mailHref !== null): ?>
                            <div class="person-card__actions">
<?php if ($telHref !== null): ?>
                                <a class="btn btn--icon" href="<?= e($telHref) ?>" aria-label="<?= e($person['name']) ?> anrufen"><?= icon('telephone') ?></a>
<?php endif; ?>
<?php if ($waHref !== null): ?>
                                <a class="btn btn--outline btn--icon" href="<?= e($waHref) ?>" target="_blank" rel="noopener" aria-label="<?= e($person['name']) ?> per WhatsApp schreiben"><?= icon('whatsapp') ?></a>
<?php endif; ?>
<?php if ($mailHref !== null): ?>
                                <a class="btn btn--icon" href="<?= e($mailHref) ?>" aria-label="<?= e($person['name']) ?> eine E-Mail schreiben"><?= icon('envelope') ?></a>
<?php endif; ?>
                            </div>
<?php endif; ?>
                        </div>
                    </article>
