diff --git a/client/src/Components/design-elements/OfflineBanner.tsx b/client/src/Components/design-elements/OfflineBanner.tsx index 062b1ca0d..33b26ae53 100644 --- a/client/src/Components/design-elements/OfflineBanner.tsx +++ b/client/src/Components/design-elements/OfflineBanner.tsx @@ -37,8 +37,14 @@ export const OfflineBanner = ({ visible }: OfflineBannerProps) => { left: 0, right: 0, zIndex: theme.zIndex.snackbar, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText, + // `error.dark` rather than `main`: in dark mode `main` is light + // enough that MUI derives near-black contrastText, which reads as + // a warning rather than an outage on the one surface where + // urgency matters. `dark` keeps a solid red bar with white text + // in both modes, and leaves `main` alone for the ~30 places that + // use it as text or a chart mark on a dark ground. + backgroundColor: theme.palette.error.dark, + color: "#FFFFFF", px: theme.spacing(8), py: theme.spacing(4), transition: "top 1s ease-in-out", diff --git a/client/src/Pages/Incidents/Components/CardSummary.tsx b/client/src/Pages/Incidents/Components/CardSummary.tsx index 60dadaa74..fa4db83e6 100644 --- a/client/src/Pages/Incidents/Components/CardSummary.tsx +++ b/client/src/Pages/Incidents/Components/CardSummary.tsx @@ -30,6 +30,10 @@ const SummaryItem = ({ icon, label, value }: SummaryItemProps) => { direction="row" alignItems="center" gap={theme.spacing(2)} + // The icons are supporting marks beside the label, not content, + // so they take secondary ink rather than lucide's currentColor + // default, which renders them heavier than the text. + sx={{ "& svg": { color: theme.palette.text.secondary } }} > {icon} {label} @@ -143,7 +147,11 @@ const SummaryIncidentItem = ({ incident }: { incident: IncidentSummaryItem }) => gap: theme.spacing(2), }} > - + { return ( } + icon={ + + } label={t("pages.incidents.summaryCard.incidentStats.totalIncidents")} value={summary?.total || 0} /> } + icon={ + + } label={t("pages.incidents.summaryCard.incidentStats.mostAffectedMonitor")} value={mostAffected} /> } + icon={ + + } label={t("pages.incidents.summaryCard.incidentStats.avgResolutionTime")} value={ summary.total > 0