52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import { Rocket } from "lucide-react";
|
||
import { SchnellstartPflege } from "@/components/schnellstart-pflege";
|
||
import { sitzungErforderlich } from "@/server/auth/sitzungspflicht";
|
||
import { schnellstartPflege } from "@/server/queries/schnellstart";
|
||
|
||
/**
|
||
* Schnellstart je Gerätetyp (#022).
|
||
*
|
||
* Welche Vorlagen auf der Geräteseite als Kachel erscheinen, stand bisher nur im
|
||
* Seed. Wer eine eigene Vorlage dort haben wollte, kam nicht heran.
|
||
*
|
||
* `verwaltung`, wie bei den Abteilungen: die Zuordnung gilt global und bestimmt,
|
||
* was jeder Techniker an jedem Gerät als erstes sieht.
|
||
*/
|
||
|
||
export default async function SchnellstartSeite() {
|
||
// Jede Seite prüft selbst – das Admin-Layout darüber ist das zweite Netz,
|
||
// nicht das erste (siehe CLAUDE.md).
|
||
await sitzungErforderlich("verwaltung", "/admin/schnellstart");
|
||
const { typen, auswahl } = await schnellstartPflege();
|
||
|
||
return (
|
||
<>
|
||
<h1 className="flex items-center gap-2 text-2xl font-bold">
|
||
<Rocket className="size-6 text-nebentext" strokeWidth={1.75} aria-hidden="true" />
|
||
Schnellstart
|
||
</h1>
|
||
<p className="mt-2 max-w-prose text-nebentext">
|
||
Auf der Seite eines Geräts stehen oben die Vorlagen, die dort am häufigsten gebraucht werden — ein
|
||
Klick, und der Lauf steht. Hier wird festgelegt, welche das je Gerätetyp sind und in welcher
|
||
Reihenfolge sie erscheinen.
|
||
</p>
|
||
<p className="mt-2 max-w-prose text-sm text-nebentext">
|
||
Zur Auswahl stehen nur veröffentlichte, nicht archivierte Vorlagen. Wird eine Vorlage später
|
||
archiviert, verschwindet sie von selbst aus dem Schnellstart — niemand muss hier aufräumen. Eine
|
||
Vorlage, die nur für einen Kunden gilt, erscheint auch nur bei dessen Geräten.
|
||
</p>
|
||
|
||
<div className="mt-6 flex flex-col gap-4">
|
||
{typen.map((eintrag) => (
|
||
<SchnellstartPflege
|
||
key={eintrag.typ}
|
||
typ={eintrag.typ}
|
||
zugewiesen={eintrag.zugewiesen}
|
||
auswahl={auswahl}
|
||
/>
|
||
))}
|
||
</div>
|
||
</>
|
||
);
|
||
}
|