import { Alert, List, Text, useMantineTheme } from '@mantine/core' import { useMediaQuery } from '@mantine/hooks' import { IconAlertTriangle } from '@tabler/icons-react' import { MaintenanceConfig, MonitorTarget } from '@/types/config' export default function MaintenanceAlert({ maintenance, style, }: { maintenance: Omit & { monitors?: MonitorTarget[] } style?: React.CSSProperties }) { const theme = useMantineTheme() const isDesktop = useMediaQuery(`(min-width: ${theme.breakpoints.sm})`) return ( } title={ {maintenance.title || 'Scheduled Maintenance'} } color={maintenance.color || 'yellow'} withCloseButton={false} style={{ position: 'relative', margin: '16px auto 0 auto', ...style }} > {/* Date range in top right (desktop) or inline (mobile) */}
From: {new Date(maintenance.start).toLocaleString()}
To:{' '} {maintenance.end ? new Date(maintenance.end).toLocaleString() : 'Until further notice'}
{maintenance.body} {maintenance.monitors && maintenance.monitors.length > 0 && ( <> Affected components: {maintenance.monitors.map((comp, compIdx) => ( {comp.name} ))} )}
) }