// ErrorState supports two call shapes:
// 1. error-object form:
// 2. title+message form:
//
// The title/message form was added by Audit 2026-05-10 CRIT-4
// (BreakglassPage admin GUI) so pages can render a denied/disabled
// banner without manufacturing a synthetic Error. When `title` is
// supplied, it takes precedence over the default headline; when
// `message` is supplied, it takes precedence over `error.message`.
interface ErrorStateProps {
error?: Error;
onRetry?: () => void;
title?: string;
message?: string;
'data-testid'?: string;
}
export default function ErrorState({
error,
onRetry,
title,
message,
'data-testid': dataTestid,
}: ErrorStateProps) {
const headline = title ?? 'Failed to load data';
const detail = message ?? error?.message ?? '';
return (
{headline}
{detail &&
{detail}
}
{onRetry && (
)}
);
}