import React, { forwardRef } from 'react'; import classnames from 'classnames'; import { TextVariant, TextColor, } from '../../../helpers/constants/design-system'; import { Text } from '../text'; import type { PolymorphicRef } from '../box'; import type { TextProps } from '../text'; import type { HelpTextProps, HelpTextComponent } from './help-text.types'; import { HelpTextSeverity } from '.'; export const HelpText: HelpTextComponent = forwardRef( <C extends React.ElementType = 'p'>( { severity, color = TextColor.textDefault, className, children, ...props }: HelpTextProps<C>, ref?: PolymorphicRef<C>, ) => { const severityColor = () => { switch (severity) { case HelpTextSeverity.Danger: return TextColor.errorDefault; case HelpTextSeverity.Warning: return TextColor.warningDefault; case HelpTextSeverity.Success: return TextColor.successDefault; case HelpTextSeverity.Info: return TextColor.infoDefault; // Defaults to HelpTextSeverity.Info default: return TextColor.textDefault; } }; return ( <Text className={classnames('mm-help-text', className ?? '')} ref={ref} as={children && typeof children === 'object' ? 'div' : 'p'} variant={TextVariant.bodyXs} color={severity ? severityColor() : color} {...(props as TextProps<C>)} > {children} </Text> ); }, );