"use client" import { useCallback, useState } from "react" import { FileDiff, Folder, FolderPen, GitCommit } from "lucide-react" import { useTranslations } from "next-intl" import { useAuxPanelContext, type AuxPanelTab, } from "@/contexts/aux-panel-context" import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs" import { FileTreeTab } from "./aux-panel-file-tree-tab" import { GitChangesTab } from "./aux-panel-git-changes-tab" import { GitLogTab } from "./aux-panel-git-log-tab" import { SessionFilesTab } from "./aux-panel-session-files-tab" const LAZY_TABS: AuxPanelTab[] = ["file_tree", "changes", "git_log"] export function AuxPanel() { const t = useTranslations("Folder.auxPanel.tabs") const { isOpen, activeTab, setActiveTab } = useAuxPanelContext() const [mountedTabs, setMountedTabs] = useState>( () => new Set(LAZY_TABS.filter((tab) => tab === activeTab)) ) // Ensure the active tab is mounted (covers both user clicks and programmatic changes) if (isOpen && LAZY_TABS.includes(activeTab) && !mountedTabs.has(activeTab)) { setMountedTabs((prev) => new Set(prev).add(activeTab)) } const handleTabValueChange = useCallback( (value: string) => { setActiveTab(value as AuxPanelTab) }, [setActiveTab] ) if (!isOpen) return null return ( ) }