import { Link, NavLink, Outlet, useLocation, useNavigate } from 'react-router-dom' import { useTranslation } from 'react-i18next' import type { ReactElement } from 'react' import { Button } from '@/components/ui/Button' import { LangSwitcher } from '@/components/layout/LangSwitcher' import { useLogout, useMe } from '@/hooks/useAuth' type NavIconName = | 'month' | 'operations' | 'budget' | 'imports' | 'review' | 'analytics' | 'accounts' | 'settings' const NAV_ICONS: Record = { month: ( <> ), operations: ( <> ), budget: ( <> ), imports: ( <> ), review: ( <> ), analytics: ( <> ), accounts: ( <> ), settings: ( <> ), } function NavIcon({ name }: { name: NavIconName }) { return ( ) } const NAV_ITEMS = [ { to: '/', key: 'nav.month', end: true, icon: 'month' }, { to: '/operations', key: 'nav.operations', end: false, icon: 'operations' }, { to: '/budget', key: 'nav.budget', end: false, icon: 'budget' }, { to: '/imports', key: 'nav.imports', end: false, icon: 'imports' }, { to: '/review', key: 'nav.review', end: false, icon: 'review' }, { to: '/analytics', key: 'nav.analytics', end: false, icon: 'analytics' }, { to: '/accounts', key: 'nav.accounts', end: false, icon: 'accounts' }, { to: '/settings', key: 'nav.settings', end: false, icon: 'settings' }, ] as const const MOBILE_NAV_ROUTES: readonly string[] = ['/', '/operations', '/budget', '/imports', '/review', '/accounts'] const MOBILE_NAV_ITEMS = NAV_ITEMS.filter((item) => MOBILE_NAV_ROUTES.includes(item.to)) export function AppLayout() { const { t, i18n } = useTranslation() const me = useMe() const logout = useLogout() const navigate = useNavigate() const location = useLocation() const pageKey = location.pathname.split('/').filter(Boolean)[0] ?? 'overview' const handleLogout = () => logout.mutate(undefined, { onSettled: () => navigate('/login', { replace: true }), }) return (
{t('common.skipToContent')}
FINSPACE
) }