import { getClassNames } from '@websolutespa/bom-core'; import { FormState } from '@websolutespa/bom-mixer-forms'; import { forwardRef } from 'react'; import styled from 'styled-components'; import { UIComponentWithRef, UIStyledComponentProps } from '../../components/types'; import { getCssResponsive } from '../../components/utils'; import { getVariant, useVariants } from '../../variants'; import { IFieldVariants, fieldVariants } from './field.variants'; type Props = { state?: FormState; variant?: keyof typeof fieldVariants | (string & {}); variants?: IFieldVariants; }; export type FieldProps = UIStyledComponentProps; export type FieldComponent = UIComponentWithRef; const StyledField = styled.div` ${props => getVariant(props.variant, props.variants)} ${props => getCssResponsive(props)} `; export const Field: FieldComponent = forwardRef(({ className, state, variant = 'default', variants, ...props }, ref) => { const classNames = getClassNames('field', className, variant, state?.flags); const globalVariants = useVariants('field', fieldVariants); variants = variants || globalVariants; return ( ); }); Field.displayName = 'Field';