Spaces:
Running
Running
| import { useAuth } from "@/hooks/use-auth"; | |
| import { Loader2 } from "lucide-react"; | |
| import { Redirect, Route } from "wouter"; | |
| export function ProtectedRoute({ | |
| path, | |
| component: Component, | |
| }: { | |
| path: string; | |
| component: () => React.JSX.Element; | |
| }) { | |
| const { user, isLoading } = useAuth(); | |
| if (isLoading) { | |
| return ( | |
| <Route path={path}> | |
| <div className="flex items-center justify-center min-h-screen"> | |
| <Loader2 className="h-8 w-8 animate-spin text-primary" /> | |
| </div> | |
| </Route> | |
| ); | |
| } | |
| if (!user) { | |
| return ( | |
| <Route path={path}> | |
| <Redirect to="/auth" /> | |
| </Route> | |
| ); | |
| } | |
| return <Route path={path} component={Component} />; | |
| } |