import { Navigate } from 'react-router-dom'; import { selectIsOnboarded } from '../store/authSelectors'; import { useAppSelector } from '../store/hooks'; interface ProtectedRouteProps { children: React.ReactNode; requireAuth?: boolean; requireOnboarded?: boolean; redirectTo?: string; } /** * Protected route component that handles authentication and onboarding checks */ const ProtectedRoute = ({ children, requireAuth = true, requireOnboarded = false, redirectTo, }: ProtectedRouteProps) => { const token = useAppSelector(state => state.auth.token); const isOnboarded = useAppSelector(selectIsOnboarded); // If auth is required but user is not logged in if (requireAuth && !token) { return ; } // If onboarding is required but user is not onboarded if (requireOnboarded && !isOnboarded) { return ; } return <>{children}; }; export default ProtectedRoute;