53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { useEffect } from 'react';
|
|
import { RouterProvider } from 'react-router-dom';
|
|
import { Toaster } from 'react-hot-toast';
|
|
import { router } from './router';
|
|
import { useAuthStore, useUIStore } from './store';
|
|
|
|
function App() {
|
|
const { initialize } = useAuthStore();
|
|
const { resolvedTheme } = useUIStore();
|
|
|
|
// Initialize auth on mount
|
|
useEffect(() => {
|
|
initialize();
|
|
}, [initialize]);
|
|
|
|
// Apply theme class to document
|
|
useEffect(() => {
|
|
document.documentElement.classList.remove('light', 'dark');
|
|
document.documentElement.classList.add(resolvedTheme);
|
|
}, [resolvedTheme]);
|
|
|
|
return (
|
|
<>
|
|
<RouterProvider router={router} />
|
|
<Toaster
|
|
position="top-right"
|
|
toastOptions={{
|
|
className: '',
|
|
style: {
|
|
background: 'hsl(var(--card))',
|
|
color: 'hsl(var(--foreground))',
|
|
border: '1px solid hsl(var(--border))',
|
|
},
|
|
success: {
|
|
iconTheme: {
|
|
primary: 'hsl(142 71% 45%)',
|
|
secondary: 'hsl(var(--card))',
|
|
},
|
|
},
|
|
error: {
|
|
iconTheme: {
|
|
primary: 'hsl(0 84.2% 60.2%)',
|
|
secondary: 'hsl(var(--card))',
|
|
},
|
|
},
|
|
}}
|
|
/>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default App;
|