import { createElement, forwardRef, HTMLAttributes, RefForwardingComponent } from 'rax'; import { StyledComponentProps, useStyles } from '@rax-ui/styles'; import Context, { FormContextProps } from './context'; import View from 'rax-view'; import StyleProvider from './style'; export interface FormProps extends HTMLAttributes, StyledComponentProps { align: 'left' | 'right'; labelType: 'inner' | 'upper'; labelWidth: string | number; } const Form: RefForwardingComponent = (props, ref) => { const { children, align, labelType = 'upper', labelWidth, style, ...others } = props; const styles = useStyles(StyleProvider, others, (classNames) => { return { form: classNames('form'), subHeader: classNames('form__sub-header'), footer: classNames('form__footer'), content: classNames('form__content'), item: classNames('form__item'), itemContainer: classNames('form__item-container'), itemLabelContainer: classNames('form__item-label-container'), itemLabelInnerContainer: classNames('form__item-label-inner-container'), itemLabel: classNames('form__item-label'), itemInnerContainer: classNames('form--inner__item-container'), itemInnerLabel: classNames('form--inner__item-label'), itemInput: classNames('form__item-input'), itemHelp: classNames('form__item-help'), itemHelpText: classNames('form__item-help-text'), itemErrorText: classNames('form__item-error-text'), itemRequiredText: classNames('form__item-required-text'), itemInnerRequiredText: classNames('form__item-required-text__inner'), }; }); return ( {children} ); }; export default forwardRef(Form);