- web/retention-admin: eigenstaendige Next.js/React/TypeScript-App (kein Backend-Annex), auf web/shl (SHL-01) aufbauend - classes: Aufbewahrungsklasse anlegen/aendern/deaktivieren (AC1) - preview: Vorschauliste 30 Tage, nutzt denselben Endpunkt wie der periodische Job (AC2) - lib/api.ts: ForbiddenError bei 403, getrennt behandelt, keine eigene Autorisierungslogik im Frontend (RBAC-Entscheidung liegt bei RET-08/RBAC-06) - expliziter 403-Nachweis (nicht nur der 200-Fall): lib/api.test.ts, ClassesPage/PreviewPage zeigen 'Zugriff verweigert' statt leerer Seite - lokal getestet: tsc clean, next build clean, vitest 3/3 gruen Pruefungen siehe archive/docs/RET-06-PRUEFPROTOKOLL.md
31 lines
720 B
TypeScript
31 lines
720 B
TypeScript
import { ThemeProvider, I18nProvider, ToastProvider, typography } from "@nexarch/shl";
|
|
|
|
export const metadata = {
|
|
title: "NEXARCH Aufbewahrungsfristen",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html lang="de">
|
|
<body
|
|
style={{
|
|
fontFamily: typography.fontFamily,
|
|
margin: 0,
|
|
background: "var(--shl-color-background, #ffffff)",
|
|
color: "var(--shl-color-text-primary, #14181f)",
|
|
}}
|
|
>
|
|
<ThemeProvider>
|
|
<I18nProvider initialLocale="de">
|
|
<ToastProvider>{children}</ToastProvider>
|
|
</I18nProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|