From a6ff5eee45215effb3344cb5d631a27a7c0369aa Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 22 Sep 2023 19:34:01 +0200 Subject: refactor(components): rewrite form components --- src/components/atoms/forms/legend/index.ts | 1 + .../atoms/forms/legend/legend.module.scss | 6 +++++ .../atoms/forms/legend/legend.stories.tsx | 27 ++++++++++++++++++++++ src/components/atoms/forms/legend/legend.test.tsx | 17 ++++++++++++++ src/components/atoms/forms/legend/legend.tsx | 21 +++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 src/components/atoms/forms/legend/index.ts create mode 100644 src/components/atoms/forms/legend/legend.module.scss create mode 100644 src/components/atoms/forms/legend/legend.stories.tsx create mode 100644 src/components/atoms/forms/legend/legend.test.tsx create mode 100644 src/components/atoms/forms/legend/legend.tsx (limited to 'src/components/atoms/forms/legend') diff --git a/src/components/atoms/forms/legend/index.ts b/src/components/atoms/forms/legend/index.ts new file mode 100644 index 0000000..a0482ef --- /dev/null +++ b/src/components/atoms/forms/legend/index.ts @@ -0,0 +1 @@ +export * from './legend'; diff --git a/src/components/atoms/forms/legend/legend.module.scss b/src/components/atoms/forms/legend/legend.module.scss new file mode 100644 index 0000000..705e3fe --- /dev/null +++ b/src/components/atoms/forms/legend/legend.module.scss @@ -0,0 +1,6 @@ +.legend { + float: left; + font-size: var(--font-size-md); + font-weight: 600; + color: var(--color-primary-darker); +} diff --git a/src/components/atoms/forms/legend/legend.stories.tsx b/src/components/atoms/forms/legend/legend.stories.tsx new file mode 100644 index 0000000..cda7f09 --- /dev/null +++ b/src/components/atoms/forms/legend/legend.stories.tsx @@ -0,0 +1,27 @@ +import { ComponentMeta, ComponentStory } from '@storybook/react'; +import { Legend as LegendComponent } from './legend'; +import { Fieldset } from '../fieldset'; + +/** + * Legend - Storybook Meta + */ +export default { + title: 'Atoms/Forms', + component: LegendComponent, + args: {}, + argTypes: {}, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ( +
+ +
+); + +/** + * Legend Story + */ +export const Legend = Template.bind({}); +Legend.args = { + children: 'A fieldset legend', +}; diff --git a/src/components/atoms/forms/legend/legend.test.tsx b/src/components/atoms/forms/legend/legend.test.tsx new file mode 100644 index 0000000..7abb996 --- /dev/null +++ b/src/components/atoms/forms/legend/legend.test.tsx @@ -0,0 +1,17 @@ +import { render, screen } from '../../../../../tests/utils'; +import { Fieldset } from '../fieldset'; +import { Legend } from './legend'; + +describe('legend', () => { + it('renders the fieldset legend', () => { + const body = 'deserunt'; + + render( +
+ {body} +
+ ); + + expect(screen.getByRole('group')).toHaveTextContent(body); + }); +}); diff --git a/src/components/atoms/forms/legend/legend.tsx b/src/components/atoms/forms/legend/legend.tsx new file mode 100644 index 0000000..b517855 --- /dev/null +++ b/src/components/atoms/forms/legend/legend.tsx @@ -0,0 +1,21 @@ +import type { FC, HTMLAttributes } from 'react'; +import styles from './legend.module.scss'; + +export type LegendProps = HTMLAttributes; + +/** + * Legend component. + */ +export const Legend: FC = ({ + children, + className = '', + ...props +}) => { + const legendClass = `${styles.legend} ${className}`; + + return ( + + {children} + + ); +}; -- cgit v1.2.3