import { ThemedText } from "@/components/theme/themed-text"; import { ThemedTextInput } from "@/components/theme/themed-textinput"; import { ThemedView } from "@/components/theme/themed-view"; import Constants from "expo-constants"; //pour connaître la taille de la barre menu de l'OS en haut import { useLocalSearchParams, useRouter } from "expo-router"; import React, { useMemo, useState } from "react"; import { FlatList, Image, StyleSheet, Text, View } from "react-native"; import rawConcerts from "../../data/concerts.json"; import { useChantier } from "../ContextChantier"; import SelectChantier from "@/components/selectChantier"; type Concert = { group: string; date: string; nationality: string; location: string; price: number; ticketsLeft: number; Image: string; favorite: boolean; }; export default function GestionOuvrier() { const router = useRouter(); const { nom, prenom } = useLocalSearchParams(); // Recup data ecran precedent const [search, setSearch] = useState(""); const { chantier, setChantier } = useChantier(); const concertsData: Concert[] = Array.isArray(rawConcerts) ? (rawConcerts as Concert[]) : []; const filteredData = useMemo(() => { if (!Array.isArray(concertsData)) return []; const q = search.trim().toLowerCase(); if (!q) return concertsData; return concertsData.filter( (item) => !!item && (item.group ?? "").toLowerCase().includes(q) ); }, [concertsData, search]); const renderItem = ({ item, index }: { item?: Concert; index: number }) => { if (!item) { return null; } return ( {item.group} {item.date} {item.location} ); }; return ( index.toString()} contentContainerStyle={{ paddingBottom: 40 }} ListHeaderComponent={ } ListEmptyComponent={ Aucun résultat n'a été trouvé } /> ); } const styles = StyleSheet.create({ back:{ height:"100%", width:"100%", }, container: { flex: 1, marginTop: Constants.statusBarHeight, //pour la barre menu du haut //backgroundColor: '#00FFFF', }, header: { marginTop: 60, marginBottom: 10, alignItems: "center", paddingHorizontal: 20, }, text: { fontSize: 22, fontWeight: "bold", marginBottom: 10, }, inputBack: { width: "100%", borderRadius: 10, backgroundColor: "transparent", }, input: { width: "100%", //borderWidth: 1, //borderColor: '#ccc', borderRadius: 10, padding: 10, fontSize: 16, }, card: { flexDirection: "row", marginHorizontal: 20, marginBottom: 15, //borderWidth: 1, //borderColor: '#ddd', borderRadius: 10, padding: 10, //backgroundColor: '#fafafa', }, image: { width: 80, height: 80, borderRadius: 8, marginRight: 10, }, info: { flex: 1, justifyContent: "center", }, group: { fontWeight: "bold", fontSize: 16, marginBottom: 5, }, footer: { padding: 20, }, empty: { textAlign: "center", marginTop: 30, color: "#888", }, });