import { faBars as burgerIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import classNames from 'classnames'; import type { FC } from 'react'; import { useEffect } from 'react'; import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { AsideMenu } from '../src/common/AsideMenu'; import { NotFound } from '../src/common/NotFound'; import { useSwipeable, useToggle } from '../src/utils/helpers/hooks'; import { useFeature } from './utils/features'; import { useRoutesPrefix } from './utils/routesPrefix'; type MainProps = { loadMercureInfo: () => void; }; export const Main = ( TagsList: FC, ShortUrlsList: FC, CreateShortUrl: FC, ShortUrlVisits: FC, TagVisits: FC, DomainVisits: FC, OrphanVisits: FC, NonOrphanVisits: FC, Overview: FC, EditShortUrl: FC, ManageDomains: FC, ): FC => ({ loadMercureInfo }) => { const location = useLocation(); const routesPrefix = useRoutesPrefix(); const [sidebarVisible, toggleSidebar, showSidebar, hideSidebar] = useToggle(); useEffect(() => hideSidebar(), [location]); // FIXME Re-load mercure info every time server changes // useEffect(() => { // loadMercureInfo(); // }, []); const addDomainVisitsRoute = useFeature('domainVisits'); const burgerClasses = classNames('menu-layout__burger-icon', { 'menu-layout__burger-icon--active': sidebarVisible }); const swipeableProps = useSwipeable(showSidebar, hideSidebar); // TODO Check if this is already wrapped by a router, and wrap otherwise return ( <>
hideSidebar()}>
} /> } /> } /> } /> } /> } /> } /> {addDomainVisitsRoute && } />} } /> } /> } /> } /> List short URLs} />
); };