import type { TextInputProps } from 'react-native'; import { StyleSheet, TextInput } from 'react-native'; import React, { useState } from 'react'; import { getContainerStyle } from './text-field.style'; import { useTheme } from 'react-native-nucleus-ui'; import { useExtendCallback } from '../../utils/use-extend-callback'; interface TextFieldComponentProps extends TextInputProps { error?: boolean; } const TextFieldComponent = React.forwardRef( (props, ref) => { const { style, editable = true, error, onFocus, onBlur, ...textInputProps } = props; const theme = useTheme(); const [isFocused, setFocused] = useState(false); const setFocus = useExtendCallback(() => setFocused(true), onFocus); const setBlur = useExtendCallback(() => setFocused(false), onBlur); const textInputStyle = getContainerStyle({ theme, isFocused, isDisabled: !editable, isError: !!error, }); return ( ); } ); export const TextField = React.memo(TextFieldComponent);