codeverse / components /workspace /WorkspaceHeader.tsx
shubhjn's picture
fix idx loop
2e54937
"use client";
import { Sparkles } from "lucide-react";
import Link from "next/link";
import type { Session } from "next-auth";
interface WorkspaceHeaderProps {
workspaceId: string;
session: Session | null;
isAiOpen: boolean;
onAiToggle: () => void;
onRebuild: () => void;
}
export function WorkspaceHeader({ workspaceId, session, isAiOpen, onAiToggle, onRebuild }: WorkspaceHeaderProps) {
return (
<div className="h-10 flex items-center justify-between px-4 bg-(--activity-bar) border-b border-(--border-subtle) shrink-0 z-40">
<div className="flex items-center gap-3">
<Link href="/" className="text-(--accent) font-bold text-sm tracking-wide hover:opacity-80 transition-opacity flex items-center gap-1.5">
<div className="w-5 h-5 rounded bg-(--accent) flex items-center justify-center text-white text-[10px]"></div>
CodeVerse
</Link>
<div className="h-4 w-px bg-(--border) mx-1" />
<span className="text-xs text-(--text-muted) font-mono">Workspace: {workspaceId}</span>
</div>
<div className="flex items-center gap-2">
{session?.user && (
<div className="hidden md:flex items-center gap-2 mr-2 px-2 py-0.5 bg-(--border) rounded-full border border-(--border-subtle)">
<div className="w-4 h-4 rounded-full bg-(--accent) flex items-center justify-center text-[10px] text-white font-bold">
{session.user.name?.[0] || session.user.email?.[0] || "?"}
</div>
<span className="text-[10px] text-(--text-muted) font-medium max-w-[100px] truncate">
{session.user.name || session.user.email}
</span>
</div>
)}
<button
onClick={onAiToggle}
className={`flex items-center gap-1.5 px-3 py-1 text-xs font-bold rounded-md transition-all border ${
isAiOpen
? "bg-(--accent) text-white border-(--accent) shadow-lg shadow-(--accent)/20"
: "bg-(--border) hover:bg-(--border-subtle) text-(--text) border-(--border-subtle)"
}`}
>
<Sparkles className={`w-3.5 h-3.5 ${isAiOpen ? "animate-pulse" : ""}`} />
{isAiOpen ? "AI Active" : "AI Studio"}
</button>
<div className="w-px h-4 bg-(--border) mx-1" />
<button
onClick={onRebuild}
className="px-3 py-1 text-xs font-semibold bg-(--border) hover:bg-(--border-subtle) text-(--text) rounded-md transition-colors border border-(--border-subtle) shadow-sm"
title="Apply codeverse.json changes and restart container"
>
↻ Rebuild
</button>
</div>
</div>
);
}