// Smart App City — Zones Screen import React from 'react'; import { View, Text, ScrollView, TouchableOpacity, StyleSheet } from 'react-native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { Colors, Typography, Spacing, BorderRadius, Shadows } from '../../../../src/theme/colors'; import { useIoTStore } from '../../../stores/iotStore'; type Props = { navigation: NativeStackNavigationProp }; export default function ZonesScreen({ navigation }: Props) { const zones = useIoTStore((s) => s.zones); const sensors = useIoTStore((s) => s.sensors); return ( navigation.goBack()}> ← Retour Zones {zones.length} {zones.map((zone) => { const zoneSensors = sensors.filter((s) => s.zoneId === zone.id); return ( {zone.name} {zone.description} {zoneSensors.length} Capteurs 0 ? Colors.danger : Colors.success }]}> {zone.alertCount} Alertes {(zone.radius / 1000).toFixed(1)}km Rayon ); })} ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: Colors.neutral50 }, header: { flexDirection: 'row', alignItems: 'center', backgroundColor: Colors.primary[500], paddingTop: 50, paddingBottom: Spacing.base, paddingHorizontal: Spacing.base, gap: Spacing.base, }, backText: { color: Colors.white, fontSize: Typography.sizes.base }, title: { flex: 1, fontSize: Typography.sizes.lg, fontWeight: Typography.weights.bold, color: Colors.white }, count: { color: 'rgba(255,255,255,0.8)', fontSize: Typography.sizes.base }, list: { flex: 1, padding: Spacing.base }, zoneCard: { flexDirection: 'row', backgroundColor: Colors.white, borderRadius: BorderRadius.lg, marginBottom: Spacing.sm, ...Shadows.sm, overflow: 'hidden', }, zoneColorBar: { width: 4 }, zoneContent: { flex: 1, padding: Spacing.base }, zoneName: { fontSize: Typography.sizes.md, fontWeight: Typography.weights.bold, color: Colors.neutral900 }, zoneDesc: { fontSize: Typography.sizes.sm, color: Colors.neutral500, marginTop: 2, marginBottom: Spacing.sm }, zoneStats: { flexDirection: 'row', gap: Spacing.base }, zoneStat: { alignItems: 'center' }, zoneStatValue: { fontSize: Typography.sizes.lg, fontWeight: Typography.weights.bold, color: Colors.primary[500] }, zoneStatLabel: { fontSize: Typography.sizes.xs, color: Colors.neutral400, marginTop: 2 }, });