import { useEffect, useState } from "react"; import { Route, Routes } from "react-router-dom"; import { Sidebar } from "@/components/layout/Sidebar"; import { Topbar } from "@/components/layout/Topbar"; import { useLocalStorageState } from "@/hooks/useLocalStorageState"; import { useAppSettings } from "@/hooks/useSettings"; import { setCurrency } from "@/lib/i18n"; import { AccountsPage } from "@/pages/AccountsPage"; import { AdvicePage } from "@/pages/AdvicePage"; import { BudgetPage } from "@/pages/BudgetPage"; import { CashFlowPage } from "@/pages/CashFlowPage"; import { DashboardPage } from "@/pages/DashboardPage"; import { GoalsPage } from "@/pages/GoalsPage"; import { NetWorthPage } from "@/pages/NetWorthPage"; import { RecurringPage } from "@/pages/RecurringPage"; import { ReportsPage } from "@/pages/ReportsPage"; import { RoiPage } from "@/pages/RoiPage"; import { SettingsPage } from "@/pages/SettingsPage"; import { TransactionsPage } from "@/pages/TransactionsPage"; export default function App() { const [collapsed, setCollapsed] = useLocalStorageState("aurum:sidebar-collapsed", false); const [mobileNavOpen, setMobileNavOpen] = useState(false); // Primary currency is server-persisted, unlike language — sync the // client-side reactive mirror (lib/i18n's getCurrency/formatCurrency) // once the setting loads, so it's not stuck on the "USD" fallback default. const { data: settings } = useAppSettings(); useEffect(() => { if (settings) setCurrency(settings.currency); }, [settings]); return (