import React from "react";
import {
BrowserRouter,
Routes,
Route,
Navigate,
useNavigate,
useLocation,
} from "react-router-dom";
import { Navbar } from "./components/Navbar";
import { Home } from "./pages/Home";
import { Dashboard } from "./pages/Dashboard";
import { Login } from "./pages/Login";
import { Register } from "./pages/Register";
import { ProfessionalRegister } from "./pages/ProfessionalRegister";
import { TeamPage } from "./pages/Team";
import EventDetails from "./pages/EventDetails";
import Finance from "./pages/Finance";
import PhotographerFinance from "./pages/PhotographerFinance";
import { SettingsPage } from "./pages/Settings";
import { CourseManagement } from "./pages/CourseManagement";
import { InspirationPage } from "./pages/Inspiration";
import { UserApproval } from "./pages/UserApproval";
import { AccessCodeManagement } from "./pages/AccessCodeManagement";
import { PrivacyPolicy } from "./pages/PrivacyPolicy";
import { TermsOfUse } from "./pages/TermsOfUse";
import { LGPD } from "./pages/LGPD";
import { AuthProvider, useAuth } from "./contexts/AuthContext";
import { DataProvider } from "./contexts/DataContext";
import { UserRole } from "./types";
import { ShieldAlert } from "lucide-react";
// Componente de acesso negado
const AccessDenied: React.FC = () => {
const navigate = useNavigate();
return (
Acesso Negado
Você não tem permissão para acessar esta página.
);
};
// Componente de rota protegida
interface ProtectedRouteProps {
children: React.ReactNode;
allowedRoles?: UserRole[];
}
const ProtectedRoute: React.FC = ({
children,
allowedRoles,
}) => {
const { user } = useAuth();
if (!user) {
return ;
}
if (
allowedRoles &&
allowedRoles.length > 0 &&
!allowedRoles.includes(user.role)
) {
return ;
}
return <>{children}>;
};
// Wrapper para páginas que usam o sistema antigo de navegação
const PageWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const navigate = useNavigate();
const location = useLocation();
const handleNavigate = (page: string) => {
navigate(`/${page}`);
};
const getCurrentPage = () => {
const path = location.pathname.substring(1) || "home";
return path;
};
return (
{children}
);
};
// Navbar simplificada apenas para Home
const SimpleNavbar: React.FC = () => {
return (
);
};
// Componente Home com roteamento (com Navbar simplificada)
const HomeWithRouter: React.FC = () => {
const navigate = useNavigate();
const { user } = useAuth();
return (
navigate(user ? "/painel" : "/entrar")} />
);
};
// Componente de Login com redirecionamento
const LoginWithRouter: React.FC = () => {
const navigate = useNavigate();
const { user } = useAuth();
if (user) {
return ;
}
return (
navigate(`/${page}`)} />
);
};
// Componente de Registro com redirecionamento
const RegisterWithRouter: React.FC = () => {
const navigate = useNavigate();
const { user } = useAuth();
if (user) {
return ;
}
return (
navigate(`/${page}`)} />
);
};
// Componente de Cadastro de Profissional com redirecionamento
const ProfessionalRegisterWithRouter: React.FC = () => {
const navigate = useNavigate();
const { user } = useAuth();
if (user) {
return ;
}
return (
navigate(`/${page}`)} />
);
};
// Footer component
const Footer: React.FC = () => {
const navigate = useNavigate();
return (
);
};
const AppContent: React.FC = () => {
const location = useLocation();
const showFooter = location.pathname === "/";
return (
<>
{/* Rotas Públicas */}
} />
} />
} />
}
/>
(window.location.href = `/${page}`)}
/>
}
/>
(window.location.href = `/${page}`)}
/>
}
/>
(window.location.href = `/${page}`)}
/>
}
/>
{/* Rotas Protegidas - Todos os usuários autenticados */}
}
/>
}
/>
}
/>
}
/>
{/* Rota de solicitação de evento - Clientes e Administradores */}
}
/>
{/* Rotas Administrativas - Apenas gestão */}
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
{ }} />
}
/>
{/* Rota padrão - redireciona para home */}
} />
>
);
};
function App() {
return (
);
}
export default App;