import React from 'react';
import { BlurView } from 'expo-blur';
import { View, StyleSheet, TouchableOpacity, Platform } from 'react-native';
import { useWindowDimensions } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { useRouter } from 'expo-router';
import Text from '../atoms/Text';
import Icon from '../atoms/Icon';
import { useDebugBorders } from '../../hooks/useDebugBorders';
import ManaCounter from './ManaCounter';
import HeaderMenu from './HeaderMenu';
interface CommonHeaderProps {
title: string;
showBackButton?: boolean;
showSettingsButton?: boolean;
showManaButton?: boolean;
onBack?: () => void;
onSettingsPress?: () => void;
onManaPress?: () => void;
rightComponent?: React.ReactNode;
level?: number;
showAppIcon?: boolean;
showLogo?: boolean;
}
export default function CommonHeader({
title,
showBackButton = true,
showSettingsButton = false,
showManaButton = false,
onBack,
onSettingsPress,
onManaPress,
rightComponent,
level,
showAppIcon = false,
showLogo = false,
}: CommonHeaderProps) {
const router = useRouter();
const { width: windowWidth } = useWindowDimensions();
const insets = useSafeAreaInsets();
const isWeb = Platform.OS === 'web';
const isWideScreen = windowWidth > 1000;
const isTablet = windowWidth >= 768;
// Responsive font size for title
const titleFontSize = isTablet ? 26 : 18;
const handleBack = () => {
if (onBack) {
onBack();
} else {
router.back();
}
};
const handleSettings = () => {
if (onSettingsPress) {
onSettingsPress();
} else {
router.push('/settings');
}
};
const handleMana = () => {
if (onManaPress) {
onManaPress();
} else {
router.push('/subscription');
}
};
// Verschiedene Debug-Borders für unterschiedliche Bereiche
const containerDebug = useDebugBorders('#00FF00', { borderStyle: 'dashed' });
const leftSectionDebug = useDebugBorders('#FF0000', { borderStyle: 'dashed' });
const titleDebug = useDebugBorders('#0000FF', { borderStyle: 'dashed' });
const blurDebug = useDebugBorders('#FF00FF', { borderStyle: 'dashed' });
const rightSectionDebug = useDebugBorders('#FF00FF');
const buttonDebug = useDebugBorders('#FFA500');
const headerContent = (
<>
{showBackButton && (
)}
{showManaButton && }
{showLogo && (
)}
{title}
{rightComponent}
{showSettingsButton && (
router.push('/archive')}
onHelpPress={() => router.push('/help')}
onManaPress={handleMana}
onFeedbackPress={() => router.push('/feedback')}
/>
)}
>
);
return (
{isWeb && isWideScreen ? (
{headerContent}
) : Platform.OS === 'android' ? (
{headerContent}
) : (
{headerContent}
)}
);
}
const styles = StyleSheet.create({
debug: {
borderWidth: 1,
borderStyle: 'dashed',
},
headerWrapper: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
zIndex: 1000,
...(Platform.OS === 'web'
? {
paddingTop: 0,
paddingHorizontal: 16,
}
: {}),
},
blurContainer: {
paddingVertical: 16,
paddingHorizontal: 16,
// paddingTop wird jetzt dynamisch über useSafeAreaInsets gesetzt
},
androidHeader: {
backgroundColor: 'rgba(24, 24, 24, 0.95)',
borderBottomWidth: 0.5,
borderBottomColor: 'rgba(255, 255, 255, 0.1)',
},
container: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
backgroundColor: 'transparent',
marginTop: Platform.OS === 'web' ? 0 : Platform.OS === 'android' ? 4 : 8,
alignSelf: 'center',
height: 48,
width: '100%',
maxWidth: 900,
paddingHorizontal: 0,
},
webContainer: {
marginTop: 0,
paddingTop: 8,
maxWidth: 1400,
width: '100%',
},
leftSection: {
flex: 0.8,
minWidth: 40,
height: '100%',
alignItems: 'center',
justifyContent: 'flex-start',
flexDirection: 'row',
gap: 8,
},
centerSection: {
flex: 2,
height: '100%',
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'row',
paddingHorizontal: 8,
},
rightSection: {
flex: 0.8,
minWidth: 40,
height: '100%',
alignItems: 'center',
justifyContent: 'flex-end',
flexDirection: 'row',
gap: 8,
},
titleContainer: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
},
title: {
...(Platform.OS === 'android'
? { fontFamily: 'Grandstander_700Bold', paddingTop: 0, lineHeight: 26 }
: { fontFamily: 'Grandstander_700Bold', fontWeight: '700' as const, paddingTop: 5 }),
color: '#FFFFFF',
textAlign: 'center',
letterSpacing: 0.5,
},
iconButton: {
width: 40,
height: 40,
alignItems: 'center',
justifyContent: 'center',
borderRadius: 20,
backgroundColor: 'rgba(255, 255, 255, 0.00)',
},
titleWithoutBack: {},
logoContainer: {
marginRight: 0,
},
});