import React, { useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; // Styles import './styles/design-system.css'; import './styles/index.css'; // Stores import { useAuthStore } from './stores/authStore'; import { useFinanceStore } from './stores/financeStore'; // Layout import { AppLayout } from './components/layout/AppLayout'; import { AuthGuard, GuestGuard } from './components/layout/AuthGuard'; import { ErrorBoundary } from './components/ErrorBoundary'; import { PWAPrompt, OfflineIndicator } from './components/PWAPrompt'; import { CommandPalette, useCommandPalette } from './components/CommandPalette'; // Pages import { LandingPage } from './pages/LandingPage'; import { LoginPage } from './pages/LoginPage'; import { RegisterPage } from './pages/RegisterPage'; import { DashboardPage } from './pages/DashboardPage'; import { TransactionsPage } from './pages/TransactionsPage'; import { BudgetPage } from './pages/BudgetPage'; import { AccountsPage } from './pages/AccountsPage'; import { AnalyticsPage } from './pages/AnalyticsPage'; import CalendarPage from './pages/CalendarPage'; import { RulesPage } from './pages/RulesPage'; import { ForgotPasswordPage } from './pages/ForgotPasswordPage'; import { ResetPasswordPage } from './pages/ResetPasswordPage'; import { SettingsPage } from './pages/SettingsPage'; import { GoalsPage } from './pages/GoalsPage'; import { BillRemindersPage } from './pages/BillRemindersPage'; // App Component const App: React.FC = () => { const { checkAuth, isLoading } = useAuthStore(); const { initializeData } = useFinanceStore(); const { isOpen: isCommandPaletteOpen, close: closeCommandPalette } = useCommandPalette(); useEffect(() => { checkAuth(); }, [checkAuth]); useEffect(() => { initializeData(); }, [initializeData]); if (isLoading) { return (

Loading Pace...

); } return ( {/* Public routes */} } /> {/* Auth routes (redirect if already authenticated) */} } /> } /> } /> } /> {/* Protected routes */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Fallback */} } /> ); }; // Mount the app const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); root.render( );