Harshith Mullapudi 5dca80b4de Feat: logs ui
2025-07-15 22:02:41 +05:30

74 lines
2.4 KiB
TypeScript

import { useLocation, useNavigate } from "@remix-run/react";
import { Button } from "./button";
import { Plus } from "lucide-react";
import { SidebarTrigger } from "./sidebar";
const PAGE_TITLES: Record<string, string> = {
"/home/dashboard": "Memory graph",
"/home/conversation": "Conversation",
"/home/integrations": "Integrations",
"/home/logs": "Logs",
};
function getHeaderTitle(pathname: string): string {
// Try to match the most specific path first
for (const key of Object.keys(PAGE_TITLES)) {
if (pathname.startsWith(key)) {
return PAGE_TITLES[key];
}
}
// Default fallback
return "Documents";
}
function isConversationDetail(pathname: string): boolean {
// Matches /home/conversation/<something> but not /home/conversation exactly
return /^\/home\/conversation\/[^/]+$/.test(pathname);
}
function isIntegrationsPage(pathname: string): boolean {
return pathname === "/home/integrations";
}
export function SiteHeader() {
const location = useLocation();
const navigate = useNavigate();
const title = getHeaderTitle(location.pathname);
const showNewConversationButton = isConversationDetail(location.pathname);
const showRequestIntegrationButton = isIntegrationsPage(location.pathname);
return (
<header className="flex h-(--header-height) shrink-0 items-center gap-2 border-b border-gray-300 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)">
<div className="flex w-full items-center justify-between gap-1 px-4 pr-2 lg:gap-2">
<div className="flex items-center gap-1">
<SidebarTrigger className="-ml-1" />
<h1 className="text-base">{title}</h1>
</div>
<div>
{showNewConversationButton && (
<Button
onClick={() => navigate("/home/conversation")}
variant="secondary"
className="gap-2"
>
<Plus size={14} />
New conversation
</Button>
)}
{showRequestIntegrationButton && (
<Button
onClick={() => window.open("https://github.com/redplanethq/core/issues/new", "_blank")}
variant="secondary"
className="gap-2"
>
<Plus size={14} />
Request New Integration
</Button>
)}
</div>
</div>
</header>
);
}