/** * External dependencies */ import classnames from 'classnames'; import { forwardRef, useState } from '@wordpress/element'; import type { InputHTMLAttributes } from 'react'; /** * Internal dependencies */ import Label from '../label'; import './style.scss'; interface TextInputProps extends Omit< InputHTMLAttributes< HTMLInputElement >, 'onChange' | 'onBlur' > { id: string; ariaLabel?: string; label?: string | undefined; ariaDescribedBy?: string | undefined; screenReaderLabel?: string; help?: string; feedback?: boolean | JSX.Element; autoComplete?: string | undefined; onChange: ( newValue: string ) => void; onBlur?: ( newValue: string ) => void; } const TextInput = forwardRef< HTMLInputElement, TextInputProps >( ( { className, id, type = 'text', ariaLabel, ariaDescribedBy, label, screenReaderLabel, disabled, help, autoCapitalize = 'off', autoComplete = 'off', value = '', onChange, required = false, onBlur = () => { /* Do nothing */ }, feedback, ...rest }, ref ) => { const [ isActive, setIsActive ] = useState( false ); return (
{ help }
) } { feedback }