import React, { Suspense } from 'react'; import { Routes, Route, Navigate } from 'react-router-dom'; import { accessErrorPage, clusterPath, errorPage, getNonExactPath, clusterNewConfigPath, } from 'lib/paths'; import PageLoader from 'components/common/PageLoader/PageLoader'; import Dashboard from 'components/Dashboard/Dashboard'; import ClusterPage from 'components/ClusterPage/ClusterPage'; import { ThemeProvider } from 'styled-components'; import { theme, darkTheme } from 'theme/theme'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { showServerError } from 'lib/errorHandling'; import { Toaster } from 'react-hot-toast'; import GlobalCSS from 'components/globalCss'; import * as S from 'components/App.styled'; import ClusterConfigForm from 'widgets/ClusterConfigForm'; import ConfirmationModal from './common/ConfirmationModal/ConfirmationModal'; import { ConfirmContextProvider } from './contexts/ConfirmContext'; import { GlobalSettingsProvider } from './contexts/GlobalSettingsContext'; import ErrorPage from './ErrorPage/ErrorPage'; import { UserInfoRolesAccessProvider } from './contexts/UserInfoRolesAccessContext'; import PageContainer from './PageContainer/PageContainer'; const queryClient = new QueryClient({ defaultOptions: { queries: { suspense: true, onError(error) { showServerError(error as Response); }, }, mutations: { onError(error) { showServerError(error as Response); }, }, }, }); const App: React.FC = () => { const [isDarkMode, setDarkMode] = React.useState(false); return ( }> {['/', '/ui', '/ui/clusters'].map((path) => ( } /> ))} } /> } /> } /> } /> } /> ); }; export default App;