@defikitdotnet/x-ai-combat
Version:
XCombatAI - Social Media Engagement Template for the Agent Framework
33 lines • 3.78 kB
JavaScript
;
'use client';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const link_1 = __importDefault(require("next/link"));
const AuthContext_1 = require("../contexts/AuthContext");
/**
* Navbar component with user info and navigation
* Styled with Twitter-inspired light blue theme
*/
const Navbar = ({ agentId }) => {
const { user, logout, isLoading } = (0, AuthContext_1.useAuth)();
const handleLogout = async (e) => {
e.preventDefault();
await logout();
};
const handleConnectX = () => {
// Sử dụng URL tuyệt đối và giá trị testAgentId này
const backendUrl = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:3005';
const callbackUrl = `${window.location.origin}/auth/callback`;
let loginPath = `/xaicombat/api/auth/twitter/login?callback=${encodeURIComponent(callbackUrl)}`;
if (agentId) {
loginPath += `&agentId=${encodeURIComponent(agentId)}`;
}
window.location.href = `${backendUrl}${loginPath}`;
};
return ((0, jsx_runtime_1.jsx)("nav", { className: "bg-brand-500 dark:bg-brand-600 text-text-dark shadow-md sticky top-0 z-50", children: (0, jsx_runtime_1.jsx)("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between h-16", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-shrink-0 flex items-center", children: (0, jsx_runtime_1.jsxs)(link_1.default, { href: "#", className: "text-xl font-bold flex items-center", children: [(0, jsx_runtime_1.jsx)("svg", { className: "h-8 w-8 mr-2", fill: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }) }), (0, jsx_runtime_1.jsx)("span", { className: "font-extrabold tracking-tight", children: "X-AI Combat" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-center", children: user ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center mr-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-shrink-0 h-8 w-8 rounded-full bg-text-dark flex items-center justify-center mr-2", children: (0, jsx_runtime_1.jsx)("span", { className: "text-sm font-bold text-brand-500", children: user.username.charAt(0).toUpperCase() }) }), (0, jsx_runtime_1.jsxs)("span", { className: "font-medium hidden sm:inline", children: ["@", user.username] })] }), (0, jsx_runtime_1.jsx)("button", { onClick: handleLogout, className: "inline-flex items-center px-3 py-1 border border-transparent text-sm font-medium rounded-full bg-text-dark/20 hover:bg-text-dark/30 text-text-dark transition-colors duration-150", children: "Sign out" })] })) : ((0, jsx_runtime_1.jsxs)("button", { onClick: handleConnectX, className: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-full text-white bg-black hover:bg-gray-800 transition-colors duration-150 shadow-sm", children: [(0, jsx_runtime_1.jsx)("svg", { className: "w-5 h-5 mr-2", fill: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }) }), "Connect X"] })) })] }) }) }));
};
exports.default = Navbar;
//# sourceMappingURL=Navbar.js.map