Files
tracksteel_app/src/main.tsx
T

53 lines
1.7 KiB
TypeScript

import React from 'react'
import ReactDOM from 'react-dom/client'
import { BrowserRouter } from 'react-router-dom'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { ThemeProvider } from '@/hooks/useTheme'
import { Toaster } from '@/components/ui/sonner'
import { AuthProvider } from './hooks/useAuth'
import { IconStyleProvider } from './hooks/useIconStyle'
import { ErrorBoundary } from './components/ErrorBoundary'
import { AppRoutes } from './components/AppRoutes'
import './index.css'
// ============================================================================
// Configuração do React Query com retry inteligente
// ============================================================================
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 3,
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
staleTime: 1000 * 60 * 5, // 5 minutos
gcTime: 1000 * 60 * 10, // 10 minutos de garbage collection
refetchOnWindowFocus: false,
},
},
})
// ============================================================================
// Render da aplicação
// ============================================================================
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<ErrorBoundary>
<QueryClientProvider client={queryClient}>
<AuthProvider>
<IconStyleProvider>
<ThemeProvider defaultTheme="system">
<BrowserRouter>
<AppRoutes />
</BrowserRouter>
<Toaster />
</ThemeProvider>
</IconStyleProvider>
</AuthProvider>
</QueryClientProvider>
</ErrorBoundary>
</React.StrictMode>,
)