Files
AfiS-Aktensystem/web/components/Pending.tsx
T
Harlekin 319ef6a997
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
README erklärt das Projekt, Zusicherungen unter Nummern
Die README beschrieb das Vorgehen statt der Anwendung. Sie erklärt jetzt, was
das System kann, wie es aufgebaut ist und wie man es lokal und im Betrieb
fährt.

Dazu tragen die acht Zusicherungen dort ihre Nummern — Berechtigungsprüfung in
der Abfrage, kein DELETE im Verlauf, Protokollpflicht ab Stufe 3, Magic Bytes
statt Dateiendungen, Skelette statt Spinner, Existenz als Information, keine
Geheimnisse im Repository, keine Einmal-Container. Achtzehn Dateien verwiesen
für ebendiese Regeln auf eine Datei, die nicht mehr mitverfolgt wird; sie
zeigen jetzt auf die README.

Arbeitsunterlagen bleiben auf der Platte, werden aber nicht mehr verfolgt. Die
Ausschlussregel steht in .git/info/exclude statt in .gitignore, damit sie nicht
selbst im Repository steht.
2026-09-04 08:42:07 +02:00

25 lines
875 B
TypeScript

'use client'
import { useLinkStatus } from 'next/link'
/**
* Der Ladepunkt in einem Link, solange der Wechsel läuft.
*
* Ein Wechsel kann einen Moment dauern, und ohne Rückmeldung sieht es aus, als
* sei der Klick nicht angekommen — man klickt ein zweites Mal. Der Punkt sitzt
* **im geklickten Link**, damit sichtbar bleibt, wohin es geht.
*
* Das ist kein Blockade-Spinner im Sinn von Zusicherung 5 der README: er ersetzt
* keinen Inhalt und hält nichts auf. Die Zielseite bringt ihr Skelett mit, das
* ist die eigentliche Antwort auf das Warten — hier geht es nur darum, den
* Klick zu quittieren.
*
* `useLinkStatus` funktioniert nur als Kind eines `next/link`, deshalb die
* eigene Komponente.
*/
export function Pending() {
const { pending } = useLinkStatus()
if (!pending) return null
return <span aria-hidden className="pending-dot" />
}