From 2b51960da1bd907f5855869d3eee53565ca7cbfc Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Thu, 21 Apr 2022 16:53:26 +0200 Subject: chore: add a PageFooter component --- .../molecules/layout/page-footer.stories.tsx | 52 ++++++++++++++++++++++ .../molecules/layout/page-footer.test.tsx | 9 ++++ src/components/molecules/layout/page-footer.tsx | 26 +++++++++++ 3 files changed, 87 insertions(+) create mode 100644 src/components/molecules/layout/page-footer.stories.tsx create mode 100644 src/components/molecules/layout/page-footer.test.tsx create mode 100644 src/components/molecules/layout/page-footer.tsx (limited to 'src/components/molecules/layout') diff --git a/src/components/molecules/layout/page-footer.stories.tsx b/src/components/molecules/layout/page-footer.stories.tsx new file mode 100644 index 0000000..da0a3fa --- /dev/null +++ b/src/components/molecules/layout/page-footer.stories.tsx @@ -0,0 +1,52 @@ +import { ComponentMeta, ComponentStory } from '@storybook/react'; +import PageFooterComponent from './page-footer'; + +/** + * Page Footer - Storybook Meta + */ +export default { + title: 'Molecules/Layout', + component: PageFooterComponent, + argTypes: { + className: { + control: { + type: 'text', + }, + description: 'Set additional classnames to the footer element.', + table: { + category: 'Styles', + }, + type: { + name: 'string', + required: false, + }, + }, + meta: { + description: 'The page meta.', + table: { + category: 'Options', + }, + type: { + name: 'object', + required: false, + value: {}, + }, + }, + }, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ( + +); + +const meta = { + topics: { name: 'More posts about:', value: Topic name }, +}; + +/** + * Page Footer Stories - With meta + */ +export const PageFooter = Template.bind({}); +PageFooter.args = { + meta, +}; diff --git a/src/components/molecules/layout/page-footer.test.tsx b/src/components/molecules/layout/page-footer.test.tsx new file mode 100644 index 0000000..2e95625 --- /dev/null +++ b/src/components/molecules/layout/page-footer.test.tsx @@ -0,0 +1,9 @@ +import { render, screen } from '@test-utils'; +import PageFooter from './page-footer'; + +describe('PageFooter', () => { + it('renders a footer element', () => { + render(); + expect(screen.getByRole('contentinfo')).toBeInTheDocument(); + }); +}); diff --git a/src/components/molecules/layout/page-footer.tsx b/src/components/molecules/layout/page-footer.tsx new file mode 100644 index 0000000..f522482 --- /dev/null +++ b/src/components/molecules/layout/page-footer.tsx @@ -0,0 +1,26 @@ +import { FC } from 'react'; +import Meta, { type MetaMap } from './meta'; + +export type PageFooterProps = { + /** + * Set additional classnames to the footer element. + */ + className?: string; + /** + * The footer metadata. + */ + meta?: MetaMap; +}; + +/** + * PageFooter component + * + * Render a footer element to display page meta. + */ +const PageFooter: FC = ({ meta, ...props }) => { + return ( + + ); +}; + +export default PageFooter; -- cgit v1.2.3