import React from 'react'; import { View, Text, StyleSheet, ScrollView, TouchableOpacity, Alert, } from 'react-native'; import { router } from 'expo-router'; import { Ionicons } from '@expo/vector-icons'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useAuth } from '@/contexts/AuthContext'; import { AppColors, BorderRadius, FontSizes, Spacing } from '@/constants/theme'; interface MenuItemProps { icon: keyof typeof Ionicons.glyphMap; iconColor?: string; iconBgColor?: string; title: string; subtitle?: string; onPress?: () => void; showChevron?: boolean; } function MenuItem({ icon, iconColor = AppColors.primary, iconBgColor = '#DBEAFE', title, subtitle, onPress, showChevron = true, }: MenuItemProps) { return ( {title} {subtitle && {subtitle}} {showChevron && ( )} ); } export default function ProfileScreen() { const { user, logout } = useAuth(); const openTerms = () => { router.push('/terms'); }; const openPrivacy = () => { router.push('/privacy'); }; const handleLogout = () => { Alert.alert( 'Logout', 'Are you sure you want to logout?', [ { text: 'Cancel', style: 'cancel' }, { text: 'Logout', style: 'destructive', onPress: async () => { await logout(); router.replace('/(auth)/login'); }, }, ], { cancelable: true } ); }; return ( {/* Header */} Profile {/* User Info */} {user?.user_name?.charAt(0).toUpperCase() || 'U'} {user?.user_name || 'User'} {/* Legal - Required for App Store */} Legal {/* Logout Button */} Logout {/* Version */} WellNuo v1.0.0 ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: AppColors.surface, }, header: { paddingHorizontal: Spacing.lg, paddingVertical: Spacing.md, backgroundColor: AppColors.background, borderBottomWidth: 1, borderBottomColor: AppColors.border, }, headerTitle: { fontSize: FontSizes.xl, fontWeight: '700', color: AppColors.textPrimary, }, userCard: { flexDirection: 'row', alignItems: 'center', backgroundColor: AppColors.background, padding: Spacing.lg, marginBottom: Spacing.md, }, avatarContainer: { width: 64, height: 64, borderRadius: BorderRadius.full, backgroundColor: AppColors.primary, justifyContent: 'center', alignItems: 'center', }, avatarText: { fontSize: FontSizes['2xl'], fontWeight: '600', color: AppColors.white, }, userInfo: { flex: 1, marginLeft: Spacing.md, }, userName: { fontSize: FontSizes.lg, fontWeight: '600', color: AppColors.textPrimary, }, editButton: { width: 40, height: 40, borderRadius: BorderRadius.full, backgroundColor: AppColors.surface, justifyContent: 'center', alignItems: 'center', }, section: { marginBottom: Spacing.md, }, sectionTitle: { fontSize: FontSizes.sm, fontWeight: '600', color: AppColors.textSecondary, paddingHorizontal: Spacing.lg, paddingVertical: Spacing.sm, textTransform: 'uppercase', }, menuCard: { backgroundColor: AppColors.background, }, menuItem: { flexDirection: 'row', alignItems: 'center', paddingVertical: Spacing.md, paddingHorizontal: Spacing.lg, }, menuIconContainer: { width: 36, height: 36, borderRadius: BorderRadius.md, justifyContent: 'center', alignItems: 'center', }, menuTextContainer: { flex: 1, marginLeft: Spacing.md, }, menuTitle: { fontSize: FontSizes.base, fontWeight: '500', color: AppColors.textPrimary, }, menuSubtitle: { fontSize: FontSizes.xs, color: AppColors.textMuted, marginTop: 2, }, menuDivider: { height: 1, backgroundColor: AppColors.border, marginLeft: Spacing.lg + 36 + Spacing.md, }, logoutButton: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', backgroundColor: AppColors.background, paddingVertical: Spacing.md, marginHorizontal: Spacing.lg, borderRadius: BorderRadius.lg, }, logoutText: { fontSize: FontSizes.base, fontWeight: '600', color: AppColors.error, marginLeft: Spacing.sm, }, version: { textAlign: 'center', fontSize: FontSizes.xs, color: AppColors.textMuted, paddingVertical: Spacing.xl, }, });