@defikitdotnet/x-ai-combat
Version:
XCombatAI - Social Media Engagement Template for the Agent Framework
23 lines • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_router_dom_1 = require("react-router-dom");
const AuthContext_1 = require("../contexts/AuthContext");
/**
* Protected route component that redirects to login if user is not authenticated
*/
const ProtectedRoute = ({ redirectPath = '/login', children }) => {
const { isAuthenticated, isLoading } = (0, AuthContext_1.useAuth)();
// Show loading spinner while checking auth status
if (isLoading) {
return ((0, jsx_runtime_1.jsx)("div", { className: "flex justify-center items-center h-screen", children: (0, jsx_runtime_1.jsx)("div", { className: "animate-spin rounded-full h-12 w-12 border-b-2 border-gray-900" }) }));
}
// Redirect to login if not authenticated
if (!isAuthenticated) {
return (0, jsx_runtime_1.jsx)(react_router_dom_1.Navigate, { to: redirectPath, replace: true });
}
// Render children or outlet (for nested routes)
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children || (0, jsx_runtime_1.jsx)(react_router_dom_1.Outlet, {}) });
};
exports.default = ProtectedRoute;
//# sourceMappingURL=ProtectedRoute.js.map