<?php

declare(strict_types=1);

/**
 * Übersicht aller Veranstaltungen mit eigener Detailseite (Sportfest,
 * Jubiläum, …) — Quelle data/veranstaltungen.json, geladen über
 * veranstaltungen_load() (filtert Entwürfe, sortiert neueste zuerst).
 *
 * Zwei Abschnitte statt einer gemischten Liste: oben was ansteht (der nächste
 * Termin als große Karte mit Plakat), unten das Archiv. Auch in der Sommerpause
 * ohne anstehendes Fest ist die Seite damit gefüllt.
 *
 * Abgrenzung zu /termine: dort steht der vollständige Kalender (Spiele +
 * Vereins-Termine + Veranstaltungen), hier nur das, was eine eigene Seite hat.
 */
$today = date('Y-m-d');
$alle = veranstaltungen_load();

$kommend = array_values(array_filter($alle, static fn (array $v): bool => termin_is_upcoming($v, $today)));
// veranstaltungen_load() sortiert absteigend (fürs Archiv richtig) — was
// ansteht, gehört aufsteigend sortiert: das Nächste zuerst.
usort($kommend, static fn (array $a, array $b): int => (string) $a['date_start'] <=> (string) $b['date_start']);

$vergangen = array_values(array_filter($alle, static fn (array $v): bool => !termin_is_upcoming($v, $today)));

$meta = [
    'title'       => 'Veranstaltungen',
    'description' => 'Unsere Feste und Veranstaltungen: Sportfest, Frühschoppen und alles, was wir im Katzbachtal auf die Beine stellen.',
    'schema'      => array_merge(
        page_schema([
            ['name' => 'Startseite', 'slug' => ''],
            ['name' => 'Der Verein', 'slug' => 'verein'],
            ['name' => 'Veranstaltungen', 'slug' => 'veranstaltungen'],
        ]),
        // Nur die anstehenden als Event-Knoten: ein vergangenes Fest ist für
        // Suchmaschinen kein Termin mehr, den man sich vormerken kann. Mit Slug,
        // damit es derselbe Knoten ist wie auf /termine und der Detailseite.
        array_values(array_filter(array_map(
            static fn (array $v): ?array => event_schema($v, 'veranstaltungen/' . (string) ($v['slug'] ?? '')),
            $kommend
        )))
    ),
];

component('hero', ['hero' => [
    'compact' => true,
    'align'   => 'center',
    'title'   => 'Veranstaltungen',
    'text'    => 'Sportfest, Frühschoppen, Feiern: hier findest du alles zu unseren Festen, vorher das Programm und hinterher die Bilder.',
    'image'   => [
        'base'   => 'img/pages/vereinsgelaende',
        'widths' => [640, 1000, 1600],
        'alt'    => '',
    ],
]]);
?>
        <section class="section">
            <div class="container">
                <h2>Was ansteht</h2>
<?php component('veranstaltungen-cards', [
    'items'      => $kommend,
    'cta'        => 'Zum Programm',
    'empty_text' => 'Gerade ist kein Fest geplant. Sobald der nächste Termin steht, findest du ihn hier.',
]); ?>
            </div>
        </section>
        <section class="section section--sunken">
            <div class="container">
                <h2>Rückblick</h2>
<?php component('veranstaltungen-cards', [
    'items'      => $vergangen,
    'cta'        => 'Bilder ansehen',
    'empty_text' => 'Noch kein Fest im Rückblick. Nach unserem nächsten Sportfest findest du hier die Bilder.',
]); ?>
            </div>
        </section>
