import { Suspense } from "react"; import { Routes, Route, useParams } from "react-router-dom"; import { AppProviders } from "@app/components/AppProviders"; import { AppLayout } from "@app/components/AppLayout"; import { LoadingFallback } from "@app/components/shared/LoadingFallback"; import { PreferencesProvider } from "@app/contexts/PreferencesContext"; import { RainbowThemeProvider } from "@app/components/shared/RainbowThemeProvider"; import Landing from "@app/routes/Landing"; import Login from "@app/routes/Login"; import Signup from "@app/routes/Signup"; import AuthCallback from "@app/routes/AuthCallback"; import InviteAccept from "@app/routes/InviteAccept"; import ShareLinkPage from "@app/routes/ShareLinkPage"; import ParticipantView from "@app/components/workflow/ParticipantView"; import MobileScannerPage from "@app/pages/MobileScannerPage"; import Onboarding from "@app/components/onboarding/Onboarding"; // Import global styles import "@app/styles/tailwind.css"; import "@app/styles/cookieconsent.css"; import "@app/styles/index.css"; import "@app/styles/auth-theme.css"; // Import file ID debugging helpers (development only) import "@app/utils/fileIdSafety"; // Minimal providers for mobile scanner - no API calls, no authentication function MobileScannerProviders({ children }: { children: React.ReactNode }) { return ( {children} ); } // Participant signing page — token-gated, no login required function ParticipantViewPage() { const { token } = useParams<{ token: string }>(); if (!token) return null; return ; } export default function App() { return ( }> {/* Mobile scanner route - no backend needed, pure P2P WebRTC */} } /> {/* Participant signing — public, token-gated, no auth required */} } /> {/* All other routes need AppProviders for backend integration */} } /> } /> } /> } /> } /> {/* Main app routes - Landing handles auth logic */} } /> } /> ); }