import React, { JSX, useId, useMemo } from 'react'; import classNames from 'classnames'; import WarningIcon from '@moda/icons/warning-16'; import { TextInput, TextInputProps } from '../TextInput'; import { Select } from '../Select'; import { FormControlContext } from './FormControlContext'; import './Field.scss'; export type FieldProps = TextInputProps & { children?: JSX.Element; showErrorIcon?: boolean; }; export const Field = React.forwardRef( ( { className, children, error, label, placeholder, showErrorIcon = true, ...rest }: FieldProps, ref: React.Ref ) => { const id = useId(); const errorId = `${id}-error`; const fieldContextValue = useMemo(() => ({ displaysError: Boolean(error) }), [error]); // Combine any existing aria-describedby with our error ID const ariaDescribedBy = [rest['aria-describedby'], error ? errorId : null].filter(Boolean).join(' ') || undefined; return ( ); } ); Field.displayName = 'Field';