From ae384aec5084b9fb9f02166890686a37d1260ef2 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Mon, 30 May 2022 19:39:20 +0200 Subject: chore: add a Fieldset component --- src/components/atoms/forms/fieldset.tsx | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/components/atoms/forms/fieldset.tsx (limited to 'src/components/atoms/forms/fieldset.tsx') diff --git a/src/components/atoms/forms/fieldset.tsx b/src/components/atoms/forms/fieldset.tsx new file mode 100644 index 0000000..99d31e7 --- /dev/null +++ b/src/components/atoms/forms/fieldset.tsx @@ -0,0 +1,59 @@ +import { FC, ReactNode } from 'react'; +import styles from './fieldset.module.scss'; + +export type FieldsetProps = { + /** + * The fieldset body. + */ + children: ReactNode | ReactNode[]; + /** + * Set additional classnames to the fieldset wrapper. + */ + className?: string; + /** + * The fieldset legend. + */ + legend: string; + /** + * Set additional classnames to the legend. + */ + legendClassName?: string; + /** + * The legend position. Default: stacked. + */ + legendPosition?: 'inline' | 'stacked'; + /** + * An accessible role. Default: group. + */ + role?: 'group' | 'radiogroup' | 'presentation' | 'none'; +}; + +/** + * Fieldset component + * + * Render a fieldset with a legend. + */ +const Fieldset: FC = ({ + children, + className = '', + legend, + legendClassName = '', + legendPosition = 'stacked', + ...props +}) => { + const wrapperModifier = `wrapper--${legendPosition}`; + + return ( +
+ + {legend} + + {children} +
+ ); +}; + +export default Fieldset; -- cgit v1.2.3