import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import type { PanelProps } from './types'; import { CloseButton } from './controls/CloseButton'; import { MinimizeButton } from './controls/MinimizeButton'; import { MaximizeButton } from './controls/MaximizeButton'; import { SplitDownButton } from './controls/SplitDown'; import { SplitRightButton } from './controls/SplitRightButton'; export interface PanelHeaderProps extends Pick< PanelProps, | 'title' | 'isMinimized' | 'isMaximized' | 'onClose' | 'onMinimize' | 'onRestore' | 'onMaximize' | 'onSplit' | 'headerControlsPosition' > { style?: PanelProps['headerStyle']; } export const PanelHeader: React.FC = ({ title, isMinimized, isMaximized, onClose, onMinimize, onRestore, onMaximize, onSplit, headerControlsPosition = 'right', style, }) => { const ControlsCluster = ( onSplit?.('down')} /> onSplit?.('right')} /> (isMinimized ? onRestore?.() : onMinimize?.())} /> (isMaximized ? onRestore?.() : onMaximize?.())} /> ); return ( {headerControlsPosition === 'left' && ControlsCluster} {title ?? ''} {headerControlsPosition === 'right' && ControlsCluster} ); }; const styles = StyleSheet.create({ container: { height: 40, paddingHorizontal: 8, backgroundColor: '#2a2a2a', borderBottomWidth: StyleSheet.hairlineWidth, borderBottomColor: '#3a3a3a', flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', }, title: { color: '#fff', fontSize: 14, flexShrink: 1, marginHorizontal: 8, }, controls: { flexDirection: 'row', alignItems: 'center', gap: 8, }, });