Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import Link from 'next/link'
|
|
import { requireUser } from '@/lib/auth/current'
|
|
import { de } from '@/lib/i18n/de'
|
|
import { adminSections } from './sections'
|
|
|
|
export const metadata: Metadata = { title: de.admin.heading }
|
|
export const dynamic = 'force-dynamic'
|
|
|
|
/**
|
|
* Die Startseite der Verwaltung: was es gibt und wofür es da ist.
|
|
*
|
|
* Kein Weiterleiten auf den ersten Bereich. Wer die Verwaltung öffnet, weiss
|
|
* nicht immer, wo das Gesuchte liegt - eine Liste mit einem Satz je Bereich
|
|
* beantwortet das schneller als das Durchklicken der Leiste.
|
|
*/
|
|
export default async function AdminIndexPage() {
|
|
const user = await requireUser()
|
|
const bereiche = adminSections(user.permissions)
|
|
|
|
return (
|
|
<ul className="border-t border-line">
|
|
{bereiche.map((bereich) => (
|
|
<li key={bereich.key} className="border-b border-line">
|
|
<Link href={bereich.href} className="block py-3 no-underline">
|
|
<span className="font-condensed text-text">{bereich.label}</span>
|
|
<span className="mt-0.5 block text-2xs text-text-dim">{bereich.description}</span>
|
|
</Link>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
)
|
|
}
|