import { useEffect } from "react"; import { useLocation, useNavigate } from "react-router"; import { X } from "lucide-react"; import { cn } from "@/lib/utils"; import { useProjectTabsStore } from "@/store/project-tabs-store"; export function ProjectTabsBar() { const tabs = useProjectTabsStore((state) => state.tabs); const activeTabId = useProjectTabsStore((state) => state.activeTabId); const activateTab = useProjectTabsStore((state) => state.activateTab); const activateHome = useProjectTabsStore((state) => state.activateHome); const closeTab = useProjectTabsStore((state) => state.closeTab); const location = useLocation(); const navigate = useNavigate(); useEffect(() => { const active = tabs.find((tab) => tab.id === activeTabId); if (!active) return; const targetPath = active.kind === "home" ? "/" : `/editor/${active.projectId}`; if (location.pathname === targetPath) return; navigate(targetPath); }, [activeTabId, tabs, location.pathname, navigate]); function handleSelect(tabId: string, kind: "home" | "project") { if (kind === "home") activateHome(); else activateTab(tabId); } function handleClose(tabId: string) { closeTab(tabId); } return (
{tabs.map((tab) => { const isActive = tab.id === activeTabId; return ( )} ); })}
); }