Files
PromptLab-Front-end/src/components/layout/MobileNav.tsx
T
gpt-engineer-app[bot] 64b4c39c92 Refactor agent and prompt management
Restructures the application to integrate prompt management directly into the agent details view. Removes the separate "Prompts" page and its associated components. Agents are now the root route, and clicking an agent navigates to a detail page where its system prompt, AI model, and version history can be managed.
2025-11-07 19:14:00 +00:00

74 lines
2.6 KiB
TypeScript

import { useState } from "react";
import { NavLink } from "react-router-dom";
import { Bot, TestTube, Menu, X } from "lucide-react";
import { Button } from "@/components/ui/button";
import { ThemeToggle } from "./ThemeToggle";
const menuItems = [
{ title: "Agentes", url: "/", icon: Bot },
{ title: "Testar Prompt", url: "/test", icon: TestTube },
];
export function MobileNav() {
const [isOpen, setIsOpen] = useState(false);
return (
<>
{/* Mobile Header */}
<header className="md:hidden fixed top-0 left-0 right-0 z-50 bg-background border-b border-border px-4 py-3 flex items-center justify-between">
<div className="flex items-center gap-2">
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-primary to-secondary flex items-center justify-center">
<span className="text-xs font-bold text-white">HX</span>
</div>
<h1 className="text-lg font-bold gradient-text">HGTX PromptLab</h1>
</div>
<div className="flex items-center gap-2">
<ThemeToggle />
<Button
variant="ghost"
size="icon"
onClick={() => setIsOpen(!isOpen)}
>
{isOpen ? <X className="h-5 w-5" /> : <Menu className="h-5 w-5" />}
</Button>
</div>
</header>
{/* Mobile Menu Overlay */}
{isOpen && (
<>
<div
className="md:hidden fixed inset-0 bg-background/80 backdrop-blur-sm z-40"
onClick={() => setIsOpen(false)}
/>
<nav className="md:hidden fixed top-[57px] left-0 right-0 bg-background border-b border-border z-40 animate-fade-in">
<div className="px-4 py-2 space-y-1">
{menuItems.map((item) => {
const Icon = item.icon;
return (
<NavLink
key={item.title}
to={item.url}
end
onClick={() => setIsOpen(false)}
className={({ isActive }) =>
`flex items-center gap-3 px-4 py-3 rounded-lg transition-all ${
isActive
? "bg-sidebar-accent text-sidebar-accent-foreground"
: "text-foreground hover:bg-accent"
}`
}
>
<Icon className="w-5 h-5" />
<span className="font-medium">{item.title}</span>
</NavLink>
);
})}
</div>
</nav>
</>
)}
</>
);
}