/**
* TabBarActions - Right-side action buttons for the tab bar row.
* Extracted from TabBar to render once (not per-pane).
* Reads focused pane data from root store selectors (auto-synced via syncRootState).
*/
import { useMemo, useState } from 'react';
import { isElectronMode } from '@renderer/api';
import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip';
import { useStore } from '@renderer/store';
import { Bell, PanelRight } from 'lucide-react';
import { useShallow } from 'zustand/react/shallow';
import { MoreMenu } from './MoreMenu';
export const TabBarActions = (): React.JSX.Element => {
const {
unreadCount,
openNotificationsTab,
activeTabId,
openTabs,
tabSessionData,
sidebarCollapsed,
toggleSidebar,
updateStatus,
openUpdateDialog,
} = useStore(
useShallow((s) => ({
unreadCount: s.unreadCount,
openNotificationsTab: s.openNotificationsTab,
activeTabId: s.activeTabId,
openTabs: s.openTabs,
tabSessionData: s.tabSessionData,
sidebarCollapsed: s.sidebarCollapsed,
toggleSidebar: s.toggleSidebar,
updateStatus: s.updateStatus,
openUpdateDialog: s.openUpdateDialog,
}))
);
// Hover states for buttons
const [notificationsHover, setNotificationsHover] = useState(false);
const [githubHover, setGithubHover] = useState(false);
const [discordHover, setDiscordHover] = useState(false);
const [expandHover, setExpandHover] = useState(false);
const [updateHover, setUpdateHover] = useState(false);
// Derive active tab and session detail for MoreMenu
const activeTab = useMemo(
() => openTabs.find((t) => t.id === activeTabId),
[openTabs, activeTabId]
);
const activeTabSessionDetail = activeTabId
? (tabSessionData[activeTabId]?.sessionDetail ?? null)
: null;
return (
{/* Update app button — only visible when update available or downloaded */}
{(updateStatus === 'available' || updateStatus === 'downloaded') && (
{updateStatus === 'downloaded'
? 'Update downloaded, restart to apply'
: 'New version available'}
)}
{/* Notifications bell icon */}
Notifications
{/* GitHub link */}
GitHub
{/* Discord link */}
Discord
{/* More menu (Teams, Settings, Extensions, Search, Schedules, Docs, Export, Analyze) */}
{/* Expand sidebar — rightmost, only when collapsed */}
{sidebarCollapsed && (
Expand sidebar
)}
);
};