diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/molecules/layout/page-footer.stories.tsx | 52 | ||||
| -rw-r--r-- | src/components/molecules/layout/page-footer.test.tsx | 9 | ||||
| -rw-r--r-- | src/components/molecules/layout/page-footer.tsx | 26 | 
3 files changed, 87 insertions, 0 deletions
| 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<typeof PageFooterComponent>; + +const Template: ComponentStory<typeof PageFooterComponent> = (args) => ( +  <PageFooterComponent {...args} /> +); + +const meta = { +  topics: { name: 'More posts about:', value: <a href="#">Topic name</a> }, +}; + +/** + * 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(<PageFooter />); +    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<PageFooterProps> = ({ meta, ...props }) => { +  return ( +    <footer {...props}>{meta && <Meta data={meta} layout="column" />}</footer> +  ); +}; + +export default PageFooter; | 
