2026-01-25 20:12:33 +08:00
|
|
|
import { RouterProvider } from 'react-router-dom';
|
|
|
|
|
import { router } from './router';
|
|
|
|
|
|
|
|
|
|
|
2026-01-27 00:27:41 +08:00
|
|
|
import { ThemeProvider, PrivacyProvider, NotificationProvider, GuideProvider, useAutoTokenRefresh } from './hooks';
|
2026-01-30 15:40:59 +08:00
|
|
|
import { SettingsProvider } from './contexts/SettingsContext';
|
2026-02-01 19:50:26 +08:00
|
|
|
import { Toaster } from 'react-hot-toast';
|
2026-01-26 01:45:39 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* App Content Component
|
|
|
|
|
* Wrapped by providers, uses hooks
|
|
|
|
|
*/
|
|
|
|
|
function AppContent() {
|
|
|
|
|
// Enable automatic token refresh
|
|
|
|
|
useAutoTokenRefresh();
|
|
|
|
|
|
|
|
|
|
return <RouterProvider router={router} />;
|
|
|
|
|
}
|
2026-01-25 20:12:33 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Main Application Component
|
|
|
|
|
* Local-first accounting application
|
|
|
|
|
*/
|
|
|
|
|
function App() {
|
|
|
|
|
return (
|
|
|
|
|
<ThemeProvider>
|
2026-01-27 00:27:41 +08:00
|
|
|
<PrivacyProvider>
|
|
|
|
|
<NotificationProvider>
|
|
|
|
|
<GuideProvider>
|
2026-01-30 15:40:59 +08:00
|
|
|
<SettingsProvider>
|
|
|
|
|
<AppContent />
|
2026-02-01 19:50:26 +08:00
|
|
|
<Toaster position="top-center" reverseOrder={false} />
|
2026-01-30 15:40:59 +08:00
|
|
|
</SettingsProvider>
|
2026-01-27 00:27:41 +08:00
|
|
|
</GuideProvider>
|
|
|
|
|
</NotificationProvider>
|
|
|
|
|
</PrivacyProvider>
|
2026-01-25 20:12:33 +08:00
|
|
|
</ThemeProvider>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default App;
|