xtablo-source/ui/src/App.tsx
2025-03-27 08:50:24 +01:00

57 lines
2.1 KiB
TypeScript

import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import { LoginPage } from "./pages/login";
import { SignUpPage } from "./pages/signup";
import { ThemeProvider } from "./contexts/ThemeContext";
import { twMerge } from "tailwind-merge";
import { ResetPasswordPage } from "./pages/reset-password";
import { LandingPage } from "./pages/landing";
import { ProtectedRoute } from "./components/ProtectedRoute";
import { TabloPage } from "./pages/tablo";
import { SessionProvider } from "./contexts/SessionContext";
import { OAuthSigninPage } from "./pages/oauth-signin";
import { NotFoundPage } from "./pages/NotFoundPage";
export const App = () => {
return (
<ThemeProvider>
<SessionProvider>
<Router>
<div
className={twMerge(
"min-h-screen bg-gradient-to-br from-emerald-100 via-green-100 to-white",
"dark:bg-gradient-to-br dark:from-[#0a1f0a] dark:via-[#051505] dark:to-black"
)}
>
<Routes>
<Route
path="/"
element={
<ProtectedRoute>
<TabloPage />
</ProtectedRoute>
}
/>
<Route path="/login-with-oauth" element={<OAuthSigninPage />} />
<Route path="/landing" element={<LandingPage />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/signup" element={<SignUpPage />} />
<Route path="/reset-password" element={<ResetPasswordPage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
<style>
{`
@keyframes slide {
0% { transform: translateX(-100vw); }
100% { transform: translateX(100vw); }
}
.animate-slide {
animation: slide 24s linear infinite;
}
`}
</style>
</div>
</Router>
</SessionProvider>
</ThemeProvider>
);
};