import React, { Suspense, useCallback } from 'react'; import { Routes, Route, useLocation } from 'react-router-dom'; import { GIT_TAG, GIT_COMMIT } from 'lib/constants'; import { clusterPath, getNonExactPath } from 'lib/paths'; import Nav from 'components/Nav/Nav'; import PageLoader from 'components/common/PageLoader/PageLoader'; import Dashboard from 'components/Dashboard/Dashboard'; import ClusterPage from 'components/Cluster/Cluster'; import Version from 'components/Version/Version'; import { ThemeProvider } from 'styled-components'; import theme 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/global.css'; import * as S from 'components/App.styled'; import Logo from 'components/common/Logo/Logo'; import GitIcon from 'components/common/Icons/GitIcon'; import DiscordIcon from 'components/common/Icons/DiscordIcon'; import { ConfirmContextProvider } from './contexts/ConfirmContext'; import ConfirmationModal from './common/ConfirmationModal/ConfirmationModal'; const queryClient = new QueryClient({ defaultOptions: { queries: { suspense: true, }, mutations: { onError(error) { showServerError(error as Response); }, }, }, }); const App: React.FC = () => { const [isSidebarVisible, setIsSidebarVisible] = React.useState(false); const onBurgerClick = () => setIsSidebarVisible(!isSidebarVisible); const closeSidebar = useCallback(() => setIsSidebarVisible(false), []); const location = useLocation(); React.useEffect(() => { closeSidebar(); }, [location, closeSidebar]); return ( UI for Apache Kafka {GIT_TAG && } Log out }>