import type React from 'react'; import { useState } from 'react'; import { ErrorBoundary } from 'react-error-boundary'; import { FiMessageCircle, FiSettings } from 'react-icons/fi'; import { RiRoadMapLine } from 'react-icons/ri'; import { VscExtensions } from 'react-icons/vsc'; import { ErrorFallback } from '@components/ErrorFallback'; import { IconButton } from '@components/generic/button/IconButton'; import { Sidebar } from '@components/layout/Sidebar'; import type { TabProps } from '@components/Tab'; import { Tabs } from '@components/Tabs'; import { routes, useRoute } from '@core/router'; export interface LayoutProps { title: string; icon: React.ReactNode; sidebarContents: React.ReactNode; children: React.ReactNode; } export const Layout = ({ title, icon, sidebarContents, children, }: LayoutProps): JSX.Element => { const [settingsOpen, setSettingsOpen] = useState(false); const route = useRoute(); const tabs: Omit[] = [ { title: 'Messages', icon: , link: routes.messages().link, active: route.name === 'messages', }, { title: 'Map', icon: , link: routes.map().link, active: route.name === 'map', }, { title: 'Extensions', icon: , link: routes.extensions().link, active: route.name === 'extensions', }, ]; return (
{title}
{sidebarContents}
} onClick={(): void => { setSettingsOpen(!settingsOpen); }} active={settingsOpen} />
{children}
); };