// src/App.tsx import React, { lazy, Suspense } from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate, } from 'react-router-dom'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ToastContainer } from 'react-toastify'; import { I18nextProvider } from 'react-i18next'; import i18n from './i18n'; // Contexts import { AuthProvider, useAuth } from './contexts/AuthContext'; import { DateProvider } from './contexts/DateContext'; import { SelectionProvider } from './contexts/SelectionContext'; import { TutorialProvider } from './contexts/TutorialContext'; // Components import ProtectedRoute from './components/Auth/ProtectedRoute'; import ErrorBoundary from './components/common/ErrorBoundary'; import Layout from './components/Layout'; import useZoom from './hooks/useZoom'; import { DisplayConfigProvider } from './contexts/DisplayConfigContext'; import PrintReportEspaceH from './pages/PrintReportEspaceH'; // Lazy loaded pages const AuthPage = lazy(() => import('./pages/Auth')); const ConfirmPasswordReset = lazy(() => import('./pages/ConfirmPasswordReset')); const Synthesis = lazy(() => import('./pages/Synthesis')); const Planning = lazy(() => import('./pages/Planning')); const Targets = lazy(() => import('./pages/Targets')); const Revenue = lazy(() => import('./pages/Revenue')); const Hours = lazy(() => import('./pages/Hours')); const Productivity = lazy(() => import('./pages/Productivity')); const Rent = lazy(() => import('./pages/Rent')); const CommercialGestures = lazy(() => import('./pages/CommercialGestures')); const Parts = lazy(() => import('./pages/Parts')); const Crescendo = lazy(() => import('./pages/Crescendo')); const Entries = lazy(() => import('./pages/Entries')); const VideoCheck = lazy(() => import('./pages/VideoCheck')); const Quality = lazy(() => import('./pages/Quality')); const HistoricalResults = lazy(() => import('./pages/HistoricalResults')); const Admin = lazy(() => import('./pages/Admin')); const Help = lazy(() => import('./pages/Help')); const Profile = lazy(() => import('./pages/Profile')); const TutorielsVideo = lazy(() => import('./pages/TutorielsVideo')); const PrintReport = lazy(() => import('./pages/PrintReport')); const PrintAdditionalSalesReport = lazy(() => import('./pages/PrintAdditionalSalesReport')); const PrintProductivityReport = lazy(() => import('./pages/PrintProductivityReport')); const PrintQualityReport = lazy(() => import('./pages/PrintQualityReport')); // Configuration du client React Query const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 5 * 60 * 1000, refetchOnWindowFocus: true, }, }, }); const AppContent: React.FC = () => { const { user, loading } = useAuth(); const dateProviderKey = user && user.id ? `user-${user.id}` : 'logged-out'; const zoomLevel = useZoom(); if (loading) { return (
Chargement...