import Logo from "@/assets/icons/checkmate-icon.svg?react"; import Stack from "@mui/material/Stack"; import Box from "@mui/material/Box"; import Alert from "@mui/material/Alert"; import Link from "@mui/material/Link"; import { ErrorFallback, EmptyFallback, EmptyMonitorFallback, BaseFallback, } from "@/Components/design-elements/Fallback"; import { Breadcrumb } from "@/Components/design-elements/Breadcrumb"; import CircularProgress from "@mui/material/CircularProgress"; import { HeaderAuthControls } from "@/Pages/Auth/components/HeaderAuthControls"; import type { StackProps } from "@mui/material/Stack"; import { useTheme } from "@mui/material/styles"; import { Trans, useTranslation } from "react-i18next"; import { Link as RouterLink } from "react-router-dom"; import { Typography } from "@mui/material"; export const PageSpeedKeyPriorityFallback = () => { return ( ), }} /> ); }; interface BasePageProps extends StackProps { loading?: boolean; error?: boolean; children: React.ReactNode; breadcrumbOverride?: string[]; } export const BasePage = ({ loading, error, children, breadcrumbOverride, ...props }: BasePageProps) => { const theme = useTheme(); if (loading) { return ( ); } if (error) { return ( ); } return ( {children} ); }; interface BasePageWithStatesProps extends StackProps { loading: boolean; error: any; totalCount: number; bullets: string[] | unknown; page: string; actionButtonText: string; actionLink: string; children: React.ReactNode; } export const BasePageWithStates = ({ loading, error, totalCount, page, bullets, actionButtonText, actionLink, children, ...props }: BasePageWithStatesProps) => { const showLoading = loading && totalCount === 0; if (!loading && totalCount === 0) { return ( ); } return ( {children} ); }; interface MonitorBasePageWithStatesProps extends StackProps { loading: boolean; error: any; totalCount: number; page: string; actionLink?: string; children: React.ReactNode; priorityFallback?: React.ReactNode; } export const MonitorBasePageWithStates = ({ loading, error, totalCount, page, actionLink, children, priorityFallback, ...props }: MonitorBasePageWithStatesProps) => { const { t } = useTranslation(); const showLoading = loading && totalCount === 0; if (priorityFallback) { return ( {priorityFallback} ); } if (!loading && totalCount === 0) { return ( ); } return ( {children} ); }; interface BaseAuthPageProps extends React.PropsWithChildren, StackProps { title: string; subtitle: string; } export const BaseAuthPage = ({ title, subtitle, children, ...props }: BaseAuthPageProps) => { const theme = useTheme(); return ( {title} {subtitle} {children} ); };