import React, { Suspense } from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { HelmetProvider } from 'react-helmet-async'; import * as Sentry from "@sentry/react"; import { Login } from './pages/admin/Login'; // Lazy load admin components for better performance import { lazy } from 'react'; const Dashboard = lazy(() => import('./pages/admin/Dashboard').then(module => ({ default: module.Dashboard }))); const Reservaciones = lazy(() => import('./pages/admin/Reservaciones').then(module => ({ default: module.Reservaciones }))); const Calendario = lazy(() => import('./pages/admin/Calendario').then(module => ({ default: module.Calendario }))); const Clientes = lazy(() => import('./pages/admin/Clientes').then(module => ({ default: module.Clientes }))); const Cabanas = lazy(() => import('./pages/admin/Cabanas').then(module => ({ default: module.Cabanas }))); const MenuAdmin = lazy(() => import('./pages/admin/MenuAdmin').then(module => ({ default: module.MenuAdmin }))); const Reviews = lazy(() => import('./pages/admin/Reviews').then(module => ({ default: module.Reviews }))); const Settings = lazy(() => import('./pages/admin/Settings').then(module => ({ default: module.Settings }))); import { AdminLayout } from './components/AdminLayout'; import { ProtectedRoute } from './components/ProtectedRoute'; // Error Boundary Component class ErrorBoundary extends React.Component< { children: React.ReactNode }, { hasError: boolean; error?: Error } > { constructor(props: { children: React.ReactNode }) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error: Error) { return { hasError: true, error }; } componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { console.error('Error Boundary caught an error:', error, errorInfo); } render() { if (this.state.hasError) { return (
Ha ocurrido un error inesperado. Por favor, intenta de nuevo.