import { Account, db } from '@/db' import { CustomFlowbiteTheme, Flowbite, Sidebar } from 'flowbite-react' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import { useIntl } from 'react-intl' type LayoutProps = { children: React.ReactNode } const customTheme: CustomFlowbiteTheme = { sidebar: { root: { inner: 'h-full overflow-y-auto overflow-x-hidden bg-blue-950 py-4 px-3 dark:bg-blue-950' }, item: { base: 'flex items-center justify-center rounded-lg p-2 text-base font-normal text-blue-200 hover:bg-blue-900 dark:text-blue-200 dark:hover:bg-blue-900 cursor-pointer', active: 'bg-blue-400 text-gray-800 hover:bg-blue-300' } } } export default function Layout({ children }: LayoutProps) { const router = useRouter() const { formatMessage } = useIntl() const [account, setAccount] = useState(null) useEffect(() => { if (router.query.id) { const f = async () => { const acct = await db.accounts.get(parseInt(router.query.id as string)) if (!acct) return setAccount(acct) } f() } }, [router.query.id]) const pages = [ { id: 'home', title: formatMessage({ id: 'timeline.home' }), path: `/accounts/${router.query.id}/home` }, { id: 'notifications', title: formatMessage({ id: 'timeline.notifications' }), path: `/accounts/${router.query.id}/notifications` }, { id: 'local', title: formatMessage({ id: 'timeline.local' }), path: `/accounts/${router.query.id}/local` }, { id: 'public', title: formatMessage({ id: 'timeline.public' }), path: `/accounts/${router.query.id}/public` } ] return (

{account?.username}

@{account?.domain}

{pages.map(page => ( router.push(page.path)}> {page.title} ))}
{children}
) }