/** * TabBarRow - Full-width tab bar row rendered above the sidebar + content area. * Renders pane-specific TabBars proportionally + new tab button on the right. * Handles window drag region and focus indicator for multi-pane layouts. */ import { Fragment, useState } from 'react'; import { isElectronMode } from '@renderer/api'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { HEADER_ROW1_HEIGHT } from '@renderer/constants/layout'; import { useStore } from '@renderer/store'; import { Plus } from 'lucide-react'; import { useShallow } from 'zustand/react/shallow'; import { TabBar } from './TabBar'; import { TabBarActions } from './TabBarActions'; export const TabBarRow = (): React.JSX.Element => { const { panes, focusedPaneId, openDashboard } = useStore( useShallow((s) => ({ panes: s.paneLayout.panes, focusedPaneId: s.paneLayout.focusedPaneId, openDashboard: s.openDashboard, })) ); const [newTabHover, setNewTabHover] = useState(false); const isMacElectron = isElectronMode() && window.navigator.userAgent.toLowerCase().includes('mac'); return (
{/* Pane TabBars — proportional width, side by side */}
{panes.map((pane, i) => ( {/* Separator between pane TabBars */} {i > 0 && (
)} {/* Pane TabBar segment with focus indicator */}
1 ? '2px solid var(--color-accent, #6366f1)' : '2px solid transparent', }} >
))} {/* New tab button — right after last tab */} New tab (Dashboard)
{/* Action buttons — right side */}
); };