57 lines
2.1 KiB
TypeScript
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>
|
|
);
|
|
};
|