import { InputHTMLAttributes, ReactNode } from 'react'; import { AppTheme } from './styles/Theme'; /** * GLOBAL TYPES ACROSS COMPONENTS */ export declare type ContainerSizes = 'short' | 'medium' | 'long' | 'fullLength'; export interface InputStatus { /** * If set to true the border color would be green unless there's an error. */ isValid?: boolean; /** * If set to true the border color would be red */ hasError?: boolean; } export interface InputProps extends InputStatus, InputHTMLAttributes { /** * Attribute used for testing purposes */ 'data-automation'?: string; /** * Slot for an icon on the left */ startIcon?: ReactNode; /** * Slot for an icon on the right */ endIcon?: ReactNode; fontWeight?: keyof AppTheme['typography']['weights']; fontSize?: keyof AppTheme['typography']['text']['sizes']; } export interface SelectProps extends InputStatus, InputHTMLAttributes { /** * Attribute used for testing purposes */ 'data-automation'?: string; } export interface FieldProps { /** * The text to be shown on the label. If this is not set it doesn't render the label. */ label?: string | React.ReactNode; /** * Help text placed between the label and the input */ helpText?: string; /** * Error message. If set it shows an error message above the input. */ errorMessage?: string; /** * It passes isValid to InputText */ isValid?: boolean; /** * Input size */ inputSize?: ContainerSizes; } export interface GroupingControlsProps { /** * hide/show the control */ hideControl?: boolean; }