WellNuo/app/profile/about.tsx
Sergei 48384f07c5 Full project sync - app updates and profile screens
Changes:
- Updated app.json, eas.json configurations
- Modified login, chat, profile, dashboard screens
- Added profile subpages (about, edit, help, language,
  notifications, privacy, subscription, support, terms)
- Updated BeneficiaryContext
- Updated API service and types
- Updated discussion questions scheme
- Added .history to gitignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-12 16:26:13 -08:00

359 lines
11 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from 'react';
import {
View,
Text,
StyleSheet,
ScrollView,
TouchableOpacity,
Linking,
Image,
} from 'react-native';
import { Ionicons } from '@expo/vector-icons';
import { SafeAreaView } from 'react-native-safe-area-context';
import { AppColors, BorderRadius, FontSizes, Spacing } from '@/constants/theme';
interface InfoRowProps {
label: string;
value: string;
}
function InfoRow({ label, value }: InfoRowProps) {
return (
<View style={styles.infoRow}>
<Text style={styles.infoLabel}>{label}</Text>
<Text style={styles.infoValue}>{value}</Text>
</View>
);
}
interface LinkRowProps {
icon: keyof typeof Ionicons.glyphMap;
title: string;
onPress: () => void;
}
function LinkRow({ icon, title, onPress }: LinkRowProps) {
return (
<TouchableOpacity style={styles.linkRow} onPress={onPress}>
<Ionicons name={icon} size={20} color={AppColors.primary} />
<Text style={styles.linkText}>{title}</Text>
<Ionicons name="open-outline" size={16} color={AppColors.textMuted} />
</TouchableOpacity>
);
}
export default function AboutScreen() {
const openURL = (url: string) => {
Linking.openURL(url).catch(() => {});
};
return (
<SafeAreaView style={styles.container} edges={['bottom']}>
<ScrollView showsVerticalScrollIndicator={false}>
{/* App Logo & Name */}
<View style={styles.heroSection}>
<View style={styles.logoContainer}>
<Ionicons name="heart" size={48} color={AppColors.white} />
</View>
<Text style={styles.appName}>WellNuo</Text>
<Text style={styles.appTagline}>Caring for Those Who Matter Most</Text>
</View>
{/* Version Info */}
<View style={styles.section}>
<Text style={styles.sectionTitle}>App Information</Text>
<View style={styles.card}>
<InfoRow label="Version" value="1.0.0" />
<View style={styles.infoDivider} />
<InfoRow label="Build" value="2024.12.001" />
<View style={styles.infoDivider} />
<InfoRow label="Platform" value="iOS / Android" />
<View style={styles.infoDivider} />
<InfoRow label="SDK" value="Expo SDK 54" />
<View style={styles.infoDivider} />
<InfoRow label="Last Updated" value="December 2024" />
</View>
</View>
{/* Description */}
<View style={styles.section}>
<Text style={styles.sectionTitle}>About</Text>
<View style={styles.card}>
<Text style={styles.description}>
WellNuo is a comprehensive elderly care monitoring application designed to help
families and caregivers stay connected with their loved ones. Using advanced
sensor technology and AI-powered analytics, WellNuo provides real-time insights
into daily activities, health patterns, and emergency situations.
</Text>
<Text style={styles.description}>
Our mission is to bring peace of mind to families while preserving the independence
and dignity of elderly individuals.
</Text>
</View>
</View>
{/* Features */}
<View style={styles.section}>
<Text style={styles.sectionTitle}>Key Features</Text>
<View style={styles.card}>
<View style={styles.featureItem}>
<View style={[styles.featureIcon, { backgroundColor: '#DBEAFE' }]}>
<Ionicons name="pulse" size={20} color="#3B82F6" />
</View>
<View style={styles.featureContent}>
<Text style={styles.featureTitle}>Real-time Monitoring</Text>
<Text style={styles.featureDescription}>24/7 activity and wellness tracking</Text>
</View>
</View>
<View style={styles.featureItem}>
<View style={[styles.featureIcon, { backgroundColor: '#FEE2E2' }]}>
<Ionicons name="warning" size={20} color="#EF4444" />
</View>
<View style={styles.featureContent}>
<Text style={styles.featureTitle}>Emergency Alerts</Text>
<Text style={styles.featureDescription}>Instant notifications for falls and emergencies</Text>
</View>
</View>
<View style={styles.featureItem}>
<View style={[styles.featureIcon, { backgroundColor: '#D1FAE5' }]}>
<Ionicons name="analytics" size={20} color="#10B981" />
</View>
<View style={styles.featureContent}>
<Text style={styles.featureTitle}>AI-Powered Insights</Text>
<Text style={styles.featureDescription}>Smart analysis of health patterns</Text>
</View>
</View>
<View style={styles.featureItem}>
<View style={[styles.featureIcon, { backgroundColor: '#FEF3C7' }]}>
<Ionicons name="people" size={20} color="#F59E0B" />
</View>
<View style={styles.featureContent}>
<Text style={styles.featureTitle}>Family Coordination</Text>
<Text style={styles.featureDescription}>Share care with multiple caregivers</Text>
</View>
</View>
</View>
</View>
{/* Links */}
<View style={styles.section}>
<Text style={styles.sectionTitle}>Resources</Text>
<View style={styles.card}>
<LinkRow
icon="globe-outline"
title="Visit Website"
onPress={() => openURL('https://wellnuo.com')}
/>
<View style={styles.linkDivider} />
<LinkRow
icon="document-text-outline"
title="Documentation"
onPress={() => openURL('https://docs.wellnuo.com')}
/>
<View style={styles.linkDivider} />
<LinkRow
icon="logo-twitter"
title="Follow on Twitter"
onPress={() => openURL('https://twitter.com/wellnuo')}
/>
<View style={styles.linkDivider} />
<LinkRow
icon="logo-github"
title="View on GitHub"
onPress={() => openURL('https://github.com/wellnuo')}
/>
</View>
</View>
{/* Acknowledgments */}
<View style={styles.section}>
<Text style={styles.sectionTitle}>Acknowledgments</Text>
<View style={styles.card}>
<Text style={styles.acknowledgment}>
WellNuo uses the following open-source software:
</Text>
<Text style={styles.license}> React Native (MIT License)</Text>
<Text style={styles.license}> Expo (MIT License)</Text>
<Text style={styles.license}> React Navigation (MIT License)</Text>
<Text style={styles.license}> And many other wonderful packages</Text>
<TouchableOpacity
style={styles.viewLicenses}
onPress={() => openURL('https://wellnuo.com/licenses')}
>
<Text style={styles.viewLicensesText}>View All Licenses</Text>
</TouchableOpacity>
</View>
</View>
{/* Footer */}
<View style={styles.footer}>
<Text style={styles.copyright}>© 2024 WellNuo Inc.</Text>
<Text style={styles.footerText}>All rights reserved.</Text>
<Text style={styles.madeWith}>
Made with for families worldwide
</Text>
</View>
</ScrollView>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: AppColors.surface,
},
heroSection: {
alignItems: 'center',
paddingVertical: Spacing.xl,
backgroundColor: AppColors.background,
},
logoContainer: {
width: 100,
height: 100,
borderRadius: 24,
backgroundColor: AppColors.primary,
justifyContent: 'center',
alignItems: 'center',
marginBottom: Spacing.md,
},
appName: {
fontSize: 32,
fontWeight: '700',
color: AppColors.textPrimary,
},
appTagline: {
fontSize: FontSizes.base,
color: AppColors.textSecondary,
marginTop: Spacing.xs,
},
section: {
marginTop: Spacing.md,
},
sectionTitle: {
fontSize: FontSizes.sm,
fontWeight: '600',
color: AppColors.textSecondary,
paddingHorizontal: Spacing.lg,
paddingVertical: Spacing.sm,
textTransform: 'uppercase',
},
card: {
backgroundColor: AppColors.background,
paddingVertical: Spacing.sm,
},
infoRow: {
flexDirection: 'row',
justifyContent: 'space-between',
paddingVertical: Spacing.sm,
paddingHorizontal: Spacing.lg,
},
infoLabel: {
fontSize: FontSizes.base,
color: AppColors.textSecondary,
},
infoValue: {
fontSize: FontSizes.base,
fontWeight: '500',
color: AppColors.textPrimary,
},
infoDivider: {
height: 1,
backgroundColor: AppColors.border,
marginHorizontal: Spacing.lg,
},
description: {
fontSize: FontSizes.sm,
color: AppColors.textSecondary,
lineHeight: 22,
paddingHorizontal: Spacing.lg,
paddingVertical: Spacing.sm,
},
featureItem: {
flexDirection: 'row',
alignItems: 'center',
paddingVertical: Spacing.sm,
paddingHorizontal: Spacing.lg,
},
featureIcon: {
width: 40,
height: 40,
borderRadius: BorderRadius.md,
justifyContent: 'center',
alignItems: 'center',
},
featureContent: {
flex: 1,
marginLeft: Spacing.md,
},
featureTitle: {
fontSize: FontSizes.base,
fontWeight: '500',
color: AppColors.textPrimary,
},
featureDescription: {
fontSize: FontSizes.xs,
color: AppColors.textMuted,
marginTop: 2,
},
linkRow: {
flexDirection: 'row',
alignItems: 'center',
paddingVertical: Spacing.md,
paddingHorizontal: Spacing.lg,
},
linkText: {
flex: 1,
fontSize: FontSizes.base,
color: AppColors.primary,
marginLeft: Spacing.md,
},
linkDivider: {
height: 1,
backgroundColor: AppColors.border,
marginLeft: Spacing.lg + 20 + Spacing.md,
},
acknowledgment: {
fontSize: FontSizes.sm,
color: AppColors.textSecondary,
paddingHorizontal: Spacing.lg,
paddingVertical: Spacing.sm,
},
license: {
fontSize: FontSizes.xs,
color: AppColors.textMuted,
paddingHorizontal: Spacing.lg,
paddingVertical: 2,
},
viewLicenses: {
marginTop: Spacing.md,
paddingVertical: Spacing.sm,
alignItems: 'center',
},
viewLicensesText: {
fontSize: FontSizes.sm,
color: AppColors.primary,
fontWeight: '500',
},
footer: {
alignItems: 'center',
paddingVertical: Spacing.xl,
paddingBottom: Spacing.xxl,
},
copyright: {
fontSize: FontSizes.sm,
fontWeight: '500',
color: AppColors.textPrimary,
},
footerText: {
fontSize: FontSizes.xs,
color: AppColors.textMuted,
marginTop: 2,
},
madeWith: {
fontSize: FontSizes.xs,
color: AppColors.textSecondary,
marginTop: Spacing.md,
},
});