Files
family_wishlist/apps/frontend/src/components/Layout/ProtectedRoute.tsx

18 lines
574 B
TypeScript

import { Navigate, useLocation } from 'react-router-dom';
import type { ReactNode } from 'react';
import { useAuthStore } from '@/features/auth/authStore';
export function ProtectedRoute({ children }: { children: ReactNode }) {
const { user, status } = useAuthStore();
const location = useLocation();
if (status !== 'ready') {
return (
<div className="flex min-h-[50vh] items-center justify-center text-muted">Loading...</div>
);
}
if (!user) {
return <Navigate to="/login" replace state={{ from: location }} />;
}
return <>{children}</>;
}