import React, { useState } from 'react'; import { View, Text, TouchableOpacity, Modal, FlatList, TextInput, SafeAreaView, Platform, StatusBar, } from 'react-native'; import Icon from 'react-native-vector-icons/Ionicons'; import { useTheme } from '@theme'; import { getStyles } from './formPicker.styles'; import { FormPickerProps, FormPickerOption } from './formPicker.props'; export const FormPicker: React.FC = ({ label, value, onValueChange, options, required = false, placeholder = 'Select...', searchable = false, }) => { const { theme: colors } = useTheme(); const styles = getStyles(colors); const [modalVisible, setModalVisible] = useState(false); const [query, setQuery] = useState(''); const selectedOption = options.find(opt => opt.value === value); const filtered = searchable ? options.filter(opt => opt.label.toLowerCase().includes(query.toLowerCase()), ) : options; const handleSelect = (opt: FormPickerOption) => { onValueChange(opt.value); setModalVisible(false); setQuery(''); }; return ( {label} {required && *} setModalVisible(true)}> {selectedOption?.label || placeholder} setModalVisible(false)}> setModalVisible(false)} /> {/* Header */} {label} setModalVisible(false)}> {/* Search */} {searchable && ( )} {/* Options */} item.value} ItemSeparatorComponent={() => } renderItem={({ item }) => { const isSelected = item.value === value; return ( handleSelect(item)}> {item.label} {isSelected && ( )} ); }} /> ); };