import { Route, Routes } from 'react-router-dom'; import { RequireAnonymous, RequireAuth, RequireSiteAdmin } from './auth/guards'; import { AppLayout } from './layout/AppLayout'; import { AdminSettingsPage } from './pages/AdminSettingsPage'; import { HomePage } from './pages/HomePage'; import { NotFoundPage } from './pages/NotFoundPage'; import { PageEditorPage } from './pages/PageEditorPage'; import { PondHomePage } from './pages/PondHomePage'; import { PondSettingsPage } from './pages/PondSettingsPage'; import { PublicPageView } from './pages/PublicPageView'; import { SettingsPage } from './pages/SettingsPage'; import { TrashPage } from './pages/TrashPage'; import { ForgotPasswordPage } from './pages/auth/ForgotPasswordPage'; import { LoginPage } from './pages/auth/LoginPage'; import { ResetPasswordPage } from './pages/auth/ResetPasswordPage'; import { SignupPage } from './pages/auth/SignupPage'; import { VerifyEmailPage } from './pages/auth/VerifyEmailPage'; export function App(): React.JSX.Element { return ( }> } /> }> } /> } /> } /> {/* Verify/reset work regardless of session state (mail links). */} } /> } /> {/* Public read-only page view — reachable without a session (issue #56). */} } /> }> } /> } /> {/* Static segment "trash" wins react-router's ranking over the dynamic :pageSlug sibling below — a page slugged "trash" would be unreachable via direct URL, an accepted v1 gap. */} } /> {/* Static "settings" wins over :pageSlug, like "trash" above. */} } /> } /> }> } /> } /> ); }