import React from "react"; import { Alert, Box, Button, CircularProgress, Typography } from "@mui/material"; import type { ViewResourceError } from "../hooks/useViewResource"; import { useI18n } from "../i18n/I18nProvider"; type Props = { loading?: boolean; error?: ViewResourceError | null; title: string; description?: string; retryLabel?: string; onRetry?: () => void | Promise; compact?: boolean; }; export default function ViewStateNotice({ loading = false, error = null, title, description, retryLabel, onRetry, compact = false }: Props) { const { t } = useI18n(); const resolvedRetryLabel = retryLabel ?? t("retry"); if (loading) { return ( ); } if (!error) return null; const severity = error.kind === "unauthorized" ? "warning" : error.kind === "unavailable" ? "error" : "error"; const detail = error.message !== title && error.message !== description ? error.message : null; return ( void onRetry()}>{resolvedRetryLabel} : undefined} > {title} {description ? {description} : null} {detail ? {detail} : null} ); }