morethanadiagnosis-hub/mobile/app/(tabs)/community.tsx
admin 7eaacb08e1 feat: initialize React Native mobile app with Expo
Core features implemented:
- Expo cross-platform setup (iOS, Android, Web)
- Bottom tab navigation (Home, Resources, Community, Profile)
- Home screen with all major sections:
  * Hero section with mission statement
  * Happy Mail integration
  * Connect/Support section
  * Podcast information
  * Features grid
  * Wings of Remembrance
- Resources screen with curated support materials
- Community screen with support groups and circles
- Profile screen with user account management
- Auth layout structure (login, signup, forgot password)

Ready for:
- Authentication integration with FastAPI backend
- API integration for community features
- Database connectivity
- Testing on iOS, Android, and Web
2025-11-18 18:44:04 +00:00

161 lines
4.2 KiB
TypeScript

import React from 'react';
import {
View,
ScrollView,
Text,
StyleSheet,
SafeAreaView,
TouchableOpacity,
} from 'react-native';
import { Ionicons } from '@expo/vector-icons';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f5f5f5',
},
header: {
backgroundColor: '#fff',
padding: 16,
borderBottomWidth: 1,
borderBottomColor: '#e0e0e0',
},
headerTitle: {
fontSize: 24,
fontWeight: '700',
color: '#000',
marginBottom: 8,
},
section: {
paddingHorizontal: 16,
marginTop: 16,
},
communityCard: {
backgroundColor: '#fff',
borderRadius: 12,
padding: 16,
marginBottom: 12,
},
communityCardHeader: {
flexDirection: 'row',
alignItems: 'center',
marginBottom: 12,
},
communityIcon: {
width: 40,
height: 40,
borderRadius: 20,
backgroundColor: '#f0f0f0',
justifyContent: 'center',
alignItems: 'center',
marginRight: 12,
},
communityTitle: {
fontSize: 16,
fontWeight: '600',
color: '#000',
},
communityDescription: {
fontSize: 13,
color: '#666',
lineHeight: 20,
marginBottom: 12,
},
memberCount: {
fontSize: 12,
color: '#999',
marginBottom: 10,
},
joinButton: {
backgroundColor: '#0066cc',
paddingVertical: 10,
paddingHorizontal: 16,
borderRadius: 6,
alignItems: 'center',
},
joinButtonText: {
color: '#fff',
fontSize: 13,
fontWeight: '600',
},
sectionTitle: {
fontSize: 18,
fontWeight: '700',
color: '#000',
marginBottom: 12,
},
});
export default function CommunityScreen() {
const communities = [
{
title: 'Support Group',
description: 'Join our growing community of folks navigating chronic illness and cancer. Connect, share, and find strength together.',
members: '2,341 members',
icon: '👥',
},
{
title: 'The Living Room',
description: 'Exclusive support circle for members. A safe space to share your journey, connect with others, and find support.',
members: '856 members',
icon: '🛋️',
},
{
title: 'The Journal',
description: 'Read inspiring stories from our community members as they navigate their journeys. Share your own story.',
members: '1,203 stories',
icon: '📖',
},
{
title: 'Podcast Community',
description: 'Discuss episodes of our podcast and connect with listeners who share your experiences.',
members: '432 members',
icon: '🎙️',
},
];
return (
<SafeAreaView style={styles.container}>
<ScrollView showsVerticalScrollIndicator={false}>
<View style={styles.header}>
<Text style={styles.headerTitle}>Community</Text>
</View>
<View style={styles.section}>
<Text style={styles.sectionTitle}>Join Our Communities</Text>
</View>
{communities.map((community, index) => (
<View key={index} style={styles.section}>
<View style={styles.communityCard}>
<View style={styles.communityCardHeader}>
<View style={styles.communityIcon}>
<Text style={{ fontSize: 20 }}>{community.icon}</Text>
</View>
<Text style={styles.communityTitle}>{community.title}</Text>
</View>
<Text style={styles.communityDescription}>{community.description}</Text>
<Text style={styles.memberCount}>{community.members}</Text>
<TouchableOpacity style={styles.joinButton}>
<Text style={styles.joinButtonText}>Join Community</Text>
</TouchableOpacity>
</View>
</View>
))}
<View style={[styles.section, { marginBottom: 40 }]}>
<View style={styles.communityCard}>
<Text style={styles.communityTitle}>Community Guidelines</Text>
<Text style={[styles.communityDescription, { marginTop: 8 }]}>
Be respectful and supportive{'\n'}
Share your authentic story{'\n'}
Respect others' privacy{'\n'}
• No medical advice{'\n'}
Check in, not out
</Text>
</View>
</View>
</ScrollView>
</SafeAreaView>
);
}