o134's picture
feat: add Forgot Password & Reset Password pages
efb2fe9 verified
Raw
History Blame Contribute Delete
2.88 kB
import { Switch, Route, Router as WouterRouter, useLocation } from "wouter";
import { AuthProvider, useAuth } from "@/context/AuthContext";
import Login from "@/pages/Login";
import Signup from "@/pages/Signup";
import ForgotPassword from "@/pages/ForgotPassword";
import ResetPassword from "@/pages/ResetPassword";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { Toaster } from "@/components/ui/toaster";
import { Toaster as SonnerToaster } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { ThemeProvider } from "@/components/theme-provider";
import { Layout } from "@/components/layout";
import NotFound from "@/pages/not-found";
import Dashboard from "@/pages/dashboard";
import Projects from "@/pages/projects";
import ProjectDetail from "@/pages/project-detail";
import Clients from "@/pages/clients";
import Briefs from "@/pages/briefs";
import Kanban from "@/pages/kanban";
const queryClient = new QueryClient();
function ProtectedRoute({ component: Component, ...rest }: any) {
const { session, isLoading } = useAuth();
const [, setLocation] = useLocation();
if (isLoading) {
return <div className="min-h-screen flex items-center justify-center">Loading...</div>;
}
if (!session) {
setLocation("/login");
return null;
}
return (
<Layout>
<Component {...rest} />
</Layout>
);
}
function Router() {
return (
<Switch>
<Route path="/login" component={Login} />
<Route path="/signup" component={Signup} />
<Route path="/forgot-password" component={ForgotPassword} />
<Route path="/reset-password" component={ResetPassword} />
<Route path="/">
<ProtectedRoute component={Dashboard} />
</Route>
<Route path="/kanban">
<ProtectedRoute component={Kanban} />
</Route>
<Route path="/projects">
<ProtectedRoute component={Projects} />
</Route>
<Route path="/projects/:id">
<ProtectedRoute component={ProjectDetail} />
</Route>
<Route path="/clients">
<ProtectedRoute component={Clients} />
</Route>
<Route path="/briefs">
<ProtectedRoute component={Briefs} />
</Route>
<Route>
<Layout>
<NotFound />
</Layout>
</Route>
</Switch>
);
}
function App() {
return (
<ThemeProvider defaultTheme="dark" storageKey="design-studio-theme">
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<AuthProvider>
<WouterRouter base={import.meta.env.BASE_URL.replace(/\/$/, "")}>
<Router />
</WouterRouter>
<Toaster />
<SonnerToaster />
</AuthProvider>
</TooltipProvider>
</QueryClientProvider>
</ThemeProvider>
);
}
export default App;