import { type ReactNode } from "react"; import { TouchableOpacity } from "react-native"; import { isArrayOfStrings } from "../helpers/is-array-of-strings"; import { Modal, useModal } from "../modal"; import { Text } from "../text"; type Options = { onDismiss?: () => void; cancelable?: boolean; }; export const select = ( title: string, data: | string[] | { values: T[]; renderItem: (item: T, key: React.Key) => ReactNode }, onSelect: (item: T | string) => void, options?: Options ) => { const onPressItem = (item: T | string) => { useModal.getState().hideModal(); onSelect(item); }; const ModalContent = () => { return ( {isArrayOfStrings(data) ? data.map((item, index) => ( onPressItem(item)}> {item} )) : data.values.map((item, index) => ( onPressItem(item)}> {data.renderItem(item, index)} ))} ); }; useModal.getState().showModal(, { onDismiss: options?.onDismiss, closeable: options?.cancelable ?? true, }); };