import * as React from 'react'; import { KeyboardTypeOptions, NativeSyntheticEvent, Text, TextInputFocusEventData, View } from 'react-native'; import { SvgXml } from 'react-native-svg'; import { TailwindFn } from 'twrnc'; import { Style } from 'twrnc/dist/esm/types'; import InputMask from '../masks/InputMask'; import type { MaskInputProps } from '../masks/InputMask.types'; type Props = { tw: TailwindFn; label?: string; placeholder?: string; helper?: string; style?: Style; labelStyle?: Style; inputStyle?: Style; iconStyle?: Style; helperStyle?: Style; onChangeText: ((text: string) => void); value: string; inputType?: 'primary' | 'secondary'; helperType?: 'primary' | 'secondary'; error?: string; errorStyle?: Style; icon?: string; keyboardType?: KeyboardTypeOptions; onBlur?: (e: NativeSyntheticEvent) => void; } & MaskInputProps; const InputNumber = ({ tw, label, placeholder, helper, style, labelStyle, inputStyle, iconStyle, helperStyle, onChangeText, value, inputType, helperType, error, errorStyle, icon, keyboardType = 'numeric', mask, showObfuscatedValue, placeholderFillCharacter, obfuscationCharacter, onBlur, }: Props): JSX.Element => { const defaultLabelStyle = tw.style('text-sm font-medium text-gray-700'); const defaultInputStyle = tw.style( 'text-sm font-normal text-gray-500 bg-white p-3 rounded-md border-gray-300 border w-full', ); const defaultIconStyle = tw.style( 'justify-center absolute top-0 right-0 h-full w-8', ); const defaultHelperStyle = tw.style('text-xs font-normal text-gray-500 pt-1'); const defaultErrorStyle = tw.style('text-xs font-normal text-red-500 pt-1'); const typeInputStyle = inputType ? tw`border-${inputType}-700 ${ inputType === 'primary' ? 'border-2' : 'border' }` : tw``; const typeHelperStyle = helperType ? tw`text-${helperType}-700` : tw``; return ( {label && ( {label} )} {icon && ( )} {helper && !error && ( {helper} )} {error && ( {error} )} ); }; export default InputNumber;