"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { format, parseISO } from "date-fns"; import { de } from "date-fns/locale"; interface Period { start: string; end: string; nights: number; } function formatRange(start: string, end: string) { const s = parseISO(start); const e = parseISO(end); return { startLabel: format(s, "EEE, d. MMM", { locale: de }), endLabel: format(e, "EEE, d. MMM yyyy", { locale: de }), }; } export function AvailablePeriods({ slug }: { slug: string }) { const [periods, setPeriods] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { let cancelled = false; fetch(`/api/available-periods/${slug}`) .then((r) => r.json()) .then((data) => { if (!cancelled) setPeriods(data.periods ?? []); }) .catch(() => { if (!cancelled) setPeriods([]); }) .finally(() => { if (!cancelled) setLoading(false); }); return () => { cancelled = true; }; }, [slug]); if (loading) { return (
Mögliche Reisen
Wird geladen…
); } if (periods.length === 0) { return (
Mögliche Reisen

Im Moment keine vorberechneten Zeiträume verfügbar. Bitte direkt anfragen.

); } return (
Mögliche Reisen

Diese Zeiträume sind noch frei.

Alle Vorschläge sind 7 Nächte — klicken Sie auf einen, um das Anfrageformular direkt mit diesem Zeitraum zu befüllen.

); }