vitest 2.0.5 -> 5.0.1 in allen betroffenen Apps (dms-browser, dms-upload, kennzahlen-dashboard, mail-search, retention-admin, pdf-viewer) sowie shl (CI-Matrix). pdf-viewer zusaetzlich jsdom 24 -> 29 (entfernt canvas/tar-Kette). @types/node auf 22 gehoben (vitest-5-Peer-Dependency), @testing-library/jest-dom auf 7.0.1 (vitest-5-Typaugmentierung), esbuild.jsx-Workaround in vitest.config.ts entfernt (von Vite/esbuild-Option-Konflikt, ueberfluessig seit tsconfig jsx bereits react-jsx setzt). Neue vitest.d.ts in dms-browser/pdf-viewer fuer jest-axe-Matcher-Typisierung (@types/jest-axe augmentiert Jest-Namespace, nicht Vitest 5s Assertion-Interface). 0 verbleibende npm-audit-Funde in allen 7 Paketen (vorher 4-10 je App). Nur Entwicklungsabhaengigkeiten betroffen, kein Produktionsrisiko. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@nexarch/shl — UI-Shell & Design-System (Core SHL-01)
Gemeinsames Paket für alle NEXARCH-Modul-Frontends (Core, DMS, Mail, Archive, Workflow, AI, Connect).
Ein Modul-Frontend importiert ausschließlich über index.ts, kopiert keine Komponenten oder Tokens lokal.
Enthält
- Design-Tokens (
tokens/tokens.ts) — Farbe (Hell/Dunkel), Abstand, Typografie. Kontrastwerte gegen WCAG 2.1 AA geprüft (siehe__tests__/tokens.test.ts). - Theming (
theme/ThemeProvider.tsx) — zentrale Hell/Dunkel-Umschaltung, respektiertprefers-color-scheme, persistiert inlocalStorage. - i18n-Rahmen (
i18n/i18n.tsx) — Umschaltmechanismus Deutsch/Englisch. Modul-Frontends registrieren ihre fachlichen Textbausteine überregisterMessages(), statt einen eigenen Mechanismus zu bauen. - Basis-Komponenten (
components/) —Shell(Layout + Navigation),Table,Dialog,TextField/SelectField/CheckboxField,Toast. Alle mit WCAG-2.1-AA-Grundlage (Tastaturbedienung, ARIA-Attribute, Fokus-Management).
Verwendung in einem Modul-Frontend
import { ThemeProvider, I18nProvider, ToastProvider, Shell } from "@nexarch/shl";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<ThemeProvider>
<I18nProvider initialLocale="de">
<ToastProvider>
<Shell modules={[]} tenantLabel="Mandant XY">
{children}
</Shell>
</ToastProvider>
</I18nProvider>
</ThemeProvider>
);
}
Bekannter offener Punkt
Die vier bereits gebauten Core-Frontends (TEN-05, LIC-04, AUD-04, OPS-02) sind vor diesem Paket entstanden und binden es noch nicht ein — Retrofit ist der nächste Schritt, siehe nexarch-state.json.
Tests
Ausführung auf dem Test-Host (nicht lokal, siehe Projekt-Testinfrastruktur):
npm install
npm test
npm run typecheck