EventBuzz_Website/src/App.tsx

78 lines
4.3 KiB
TypeScript

import { Navigate, Route, Routes } from "react-router-dom";
import { Questions } from "./pages/Questions";
import { EventLandingPage } from "./pages/EventLandingPage";
import { EventTrackPage } from "./pages/EventTrackPage";
import { EventTrackV2Page } from "./pages/EventTrackV2Page";
import { FeedbackPage } from "./pages/FeedbackPage";
import { LeaderboardPage } from "./pages/LeaderboardPage";
import { RatingsPage } from "./pages/RatingsPage";
import { Home } from "./pages/Home";
import { AuthCallbackPage } from "./pages/AuthCallbackPage";
import { CompleteProfilePage } from "./pages/CompleteProfilePage";
import { LoginPage } from "./pages/LoginPage";
import { PendingApprovalPage } from "./pages/PendingApprovalPage";
import { RegisterOtpPage } from "./pages/RegisterOtpPage";
import { RegisterPage } from "./pages/RegisterPage";
import { RewardsPage } from "./pages/RewardsPage";
import { SingleEventPage } from "./pages/SingleEventPage";
import { QuizPollTakePage } from "./pages/QuizPollTakePage";
import { QuizPollPresentPage } from "./pages/QuizPollPresentPage";
import { QuestionsPresentPage } from "./pages/QuestionsPresentPage";
import { PhotoWallUploadPage } from "./pages/PhotoWallUploadPage";
import { PhotoWallPresentPage } from "./pages/PhotoWallPresentPage";
import { PhotoSearchPage } from "./pages/PhotoSearchPage";
import { SocialSharePage } from "./pages/SocialSharePage";
import { AiAvatarPage } from "./pages/AiAvatarPage";
import { CodeEntryPage } from "./pages/CodeEntryPage";
import { PrivacyPolicyPage } from "./pages/PrivacyPolicyPage";
import { TermsOfServicePage } from "./pages/TermsOfServicePage";
import { MatchUpPage } from "./pages/MatchUpPage";
import { GameQuizPage } from "./pages/GameQuizPage";
import { useEventTheme } from "./hooks/useEventTheme";
import { ThemeGate } from "./components/ThemeGate";
export default function App() {
const { ready: themeReady } = useEventTheme();
return (
<ThemeGate ready={themeReady}>
<div className="flex min-h-dvh flex-1 flex-col">
<Routes>
<Route path="/" element={<Home />} />
<Route path="/code/:code" element={<CodeEntryPage />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/auth/callback" element={<AuthCallbackPage />} />
<Route path="/complete-profile" element={<CompleteProfilePage />} />
<Route path="/pending-approval" element={<PendingApprovalPage />} />
<Route path="/event" element={<EventLandingPage />} />
<Route path="/register" element={<RegisterPage />} />
<Route path="/register/otp" element={<RegisterOtpPage />} />
<Route path="/track" element={<EventTrackPage />} />
<Route path="/track-v2" element={<EventTrackV2Page />} />
<Route path="/session" element={<SingleEventPage />} />
<Route path="/quiz-poll" element={<QuizPollTakePage />} />
<Route path="/quiz-present/:token" element={<QuizPollPresentPage />} />
<Route path="/questions-present/:sessionId" element={<QuestionsPresentPage />} />
<Route path="/photo-wall/:uploadToken" element={<PhotoWallUploadPage />} />
<Route path="/photo-wall-present/:presentToken" element={<PhotoWallPresentPage />} />
<Route path="/spotlight-present/:presentToken" element={<PhotoWallPresentPage spotlightMode />} />
<Route path="/photo-search/:searchToken" element={<PhotoSearchPage />} />
<Route path="/social-share/:uploadToken" element={<SocialSharePage />} />
<Route path="/ai-avatar/:uploadToken" element={<AiAvatarPage />} />
<Route path="/match-up/:token" element={<MatchUpPage />} />
<Route path="/game-quiz/:token" element={<GameQuizPage />} />
<Route path="/questions" element={<Questions />} />
<Route path="/ask" element={<Navigate to="/questions" replace />} />
<Route path="/feedback" element={<FeedbackPage />} />
<Route path="/ratings" element={<RatingsPage />} />
<Route path="/rewards" element={<RewardsPage />} />
<Route path="/leaderboard" element={<LeaderboardPage />} />
<Route path="/privacy-policy" element={<PrivacyPolicyPage />} />
<Route path="/terms-of-service" element={<TermsOfServicePage />} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</div>
</ThemeGate>
);
}