"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import type { Page } from "../../lib/cms"; import { DEFAULT_LANG, LANGS, LANG_LABELS, type Lang } from "../../lib/i18n"; import { createPageAction, deletePageAction, movePageNavAction } from "./actions"; import { Modal } from "./Modal"; import { errorClass, hintClass, inputClass, labelClass, primaryButton, secondaryButton } from "./ui"; type PageRow = Page & { langs: Lang[] }; export function LangDot({ filled }: { filled: boolean }) { return ; } export function PagesOverview({ pages }: { pages: PageRow[] }) { const router = useRouter(); const [createOpen, setCreateOpen] = useState(false); const [busySlug, setBusySlug] = useState(null); const navPages = pages.filter((p) => p.nav_label).sort((a, b) => a.nav_order - b.nav_order || a.slug.localeCompare(b.slug)); async function handleDelete(slug: string) { if (!confirm(`Pagina "${slug}" definitief verwijderen, met alle blokken en vertalingen?`)) return; setBusySlug(slug); try { const result = await deletePageAction(slug); if (result.error) alert(result.error); else router.refresh(); } finally { setBusySlug(null); } } async function handleMove(slug: string, direction: "up" | "down") { setBusySlug(slug); try { await movePageNavAction(slug, direction); router.refresh(); } finally { setBusySlug(null); } } return (
{pages.length === 0 ? (

Nog geen pagina's aangemaakt.

) : (
{pages.map((p) => { const navIndex = navPages.findIndex((np) => np.slug === p.slug); const busy = busySlug === p.slug; return ( ); })}
Pagina Meta-titel In menu Talen
{p.nav_label || p.meta_title || p.slug}
/{p.slug}
{p.meta_title || "—"} {p.nav_label ? ( {navIndex + 1}. {p.nav_label} ) : ( Niet in menu )} {LANGS.map((l) => { const filled = l === DEFAULT_LANG || p.langs.includes(l); return ( {l.toUpperCase()} ); })} Bewerken
)} {createOpen && setCreateOpen(false)} onCreated={(slug) => router.push(`/website/${slug}`)} />}
); } function CreatePageModal({ onClose, onCreated }: { onClose: () => void; onCreated: (slug: string) => void }) { const [slug, setSlug] = useState(""); const [title, setTitle] = useState(""); const [error, setError] = useState(null); const [saving, setSaving] = useState(false); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setSaving(true); setError(null); try { const result = await createPageAction(slug, title); if (result.error) setError(result.error); else if (result.slug) onCreated(result.slug); } finally { setSaving(false); } } return (
{error &&

{error}

}
); }