import React from "react"; import type { KeyboardTypeOptions } from "react-native"; import { Description, FieldError, Input, type InputProps, Label, TextArea, type TextAreaProps, TextField, type TextFieldRootProps, cn, } from "heroui-native"; export interface NInputProps extends Omit { value?: string; onChange?: (text: string) => void; placeholder?: string; keyboardType?: KeyboardTypeOptions; secureTextEntry?: boolean; label?: string; description?: string; /** Alias of `description`, as the React package names it. */ helperText?: string; errorMessage?: string; /** Alias of `errorMessage`. */ error?: string; /** Alias of `isDisabled`. */ disabled?: boolean; multiline?: boolean; inputProps?: InputProps; textAreaProps?: TextAreaProps; containerClassName?: string; labelClassName?: string; descriptionClassName?: string; errorClassName?: string; } export const NInput = React.memo( ({ value, onChange, placeholder, keyboardType, secureTextEntry, label, description, helperText, error, disabled, errorMessage, multiline = false, inputProps, textAreaProps, className, containerClassName, labelClassName, descriptionClassName, errorClassName, ...props }) => { const help = description ?? helperText; const errorText = errorMessage ?? error; const sharedInputProps = { value, onChangeText: onChange, placeholder, keyboardType, secureTextEntry, editable: disabled ? false : undefined, }; return ( {label && } {multiline ? (