Initial commit: React frontend (SLP Software) + AIDLC workflow docs

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
2026-07-20 00:19:44 +02:00
co-authored by Junie
commit e299f1c745
73 changed files with 7275 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
import { Component } from 'react';
import type { ErrorInfo, ReactNode } from 'react';
interface ErrorBoundaryProps {
children: ReactNode;
}
interface ErrorBoundaryState {
hasError: boolean;
}
/**
* Top-level, on-brand error boundary (NFR Design resilience pattern; SECURITY-09/SECURITY-15).
* Shows a generic, themed fallback message — never technical details like stack traces.
*/
export class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
state: ErrorBoundaryState = { hasError: false };
static getDerivedStateFromError(): ErrorBoundaryState {
return { hasError: true };
}
componentDidCatch(error: Error, info: ErrorInfo): void {
console.error('Unexpected application error', error, info);
}
render(): ReactNode {
if (this.state.hasError) {
return (
<div
className="theme-red flex min-h-screen items-center justify-center bg-bg px-6 text-center text-text"
role="alert"
data-testid="error-boundary-fallback"
>
<p className="font-display text-lg">Er ging iets mis. Probeer de pagina te vernieuwen.</p>
</div>
);
}
return this.props.children;
}
}