import type { ReactNode } from 'react'; import { ActionIcon, AppShell, Button, Group, Tabs, Text } from '@mantine/core'; import { useComputedColorScheme } from '@mantine/core'; import { StatusIndicator } from '../../atoms/StatusIndicator/StatusIndicator'; export interface ConnectedLayoutProps { serverName: string; status: 'connected' | 'connecting' | 'failed'; latencyMs?: number; activeTab: string; availableTabs: string[]; onTabChange: (tab: string) => void; onDisconnect: () => void; onToggleTheme: () => void; children: ReactNode; } const ServerName = Text.withProps({ fw: 600, size: 'lg', }); export function ConnectedLayout({ serverName, status, latencyMs, activeTab, availableTabs, onTabChange, onDisconnect, onToggleTheme, children, }: ConnectedLayoutProps) { const colorScheme = useComputedColorScheme(); return ( {serverName} value && onTabChange(value)} variant="default" > {availableTabs.map((tab) => ( {tab} ))} {colorScheme === 'dark' ? '\u2600' : '\u263E'} {children} ); }