From edea15c845b33848b7b4f63616841e675b74d572 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 15 Apr 2022 22:20:09 +0200 Subject: chore: add an Overview component --- .../organisms/layout/overview.module.scss | 12 ++++++ .../organisms/layout/overview.stories.tsx | 50 ++++++++++++++++++++++ src/components/organisms/layout/overview.test.tsx | 29 +++++++++++++ src/components/organisms/layout/overview.tsx | 33 ++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 src/components/organisms/layout/overview.module.scss create mode 100644 src/components/organisms/layout/overview.stories.tsx create mode 100644 src/components/organisms/layout/overview.test.tsx create mode 100644 src/components/organisms/layout/overview.tsx (limited to 'src/components/organisms/layout') diff --git a/src/components/organisms/layout/overview.module.scss b/src/components/organisms/layout/overview.module.scss new file mode 100644 index 0000000..4d50ad1 --- /dev/null +++ b/src/components/organisms/layout/overview.module.scss @@ -0,0 +1,12 @@ +@use "@styles/abstracts/functions" as fun; + +.wrapper { + padding: var(--spacing-sm) var(--spacing-md); + border: fun.convert-px(1) solid var(--color-border); +} + +.cover { + max-height: fun.convert-px(150); + margin: 0 auto var(--spacing-md); + border: fun.convert-px(1) solid var(--color-border); +} diff --git a/src/components/organisms/layout/overview.stories.tsx b/src/components/organisms/layout/overview.stories.tsx new file mode 100644 index 0000000..61d8b35 --- /dev/null +++ b/src/components/organisms/layout/overview.stories.tsx @@ -0,0 +1,50 @@ +import { ComponentMeta, ComponentStory } from '@storybook/react'; +import OverviewComponent from './overview'; + +export default { + title: 'Organisms/Layout', + component: OverviewComponent, + argTypes: { + cover: { + description: 'The overview cover.', + type: { + name: 'object', + required: true, + value: {}, + }, + }, + meta: { + description: 'The overview metadata.', + type: { + name: 'object', + required: true, + value: {}, + }, + }, + }, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ( + +); + +const cover = { + alt: 'picture', + height: 480, + src: 'http://placeimg.com/640/480/cats', + width: 640, +}; + +const meta = { + publication: { name: 'Illo ut odio:', value: 'Sequi et excepturi' }, + update: { + name: 'Perspiciatis vel laudantium:', + value: 'Dignissimos ratione veritatis', + }, +}; + +export const Overview = Template.bind({}); +Overview.args = { + cover, + meta, +}; diff --git a/src/components/organisms/layout/overview.test.tsx b/src/components/organisms/layout/overview.test.tsx new file mode 100644 index 0000000..0738d3f --- /dev/null +++ b/src/components/organisms/layout/overview.test.tsx @@ -0,0 +1,29 @@ +import { render, screen } from '@test-utils'; +import Overview from './overview'; + +const cover = { + alt: 'Incidunt unde quam', + height: 480, + src: 'http://placeimg.com/640/480/cats', + width: 640, +}; + +const meta = { + publication: { name: 'Illo ut odio:', value: 'Sequi et excepturi' }, + update: { + name: 'Perspiciatis vel laudantium:', + value: 'Dignissimos ratione veritatis', + }, +}; + +describe('Overview', () => { + it('renders some meta', () => { + render(); + expect(screen.getByText(meta['publication'].name)).toBeInTheDocument(); + }); + + it('renders a cover', () => { + render(); + expect(screen.getByRole('img', { name: cover.alt })).toBeInTheDocument(); + }); +}); diff --git a/src/components/organisms/layout/overview.tsx b/src/components/organisms/layout/overview.tsx new file mode 100644 index 0000000..3f83342 --- /dev/null +++ b/src/components/organisms/layout/overview.tsx @@ -0,0 +1,33 @@ +import ResponsiveImage, { + type ResponsiveImageProps, +} from '@components/molecules/images/responsive-image'; +import Meta, { type MetaMap } from '@components/molecules/layout/meta'; +import { VFC } from 'react'; +import styles from './overview.module.scss'; + +export type OverviewProps = { + cover?: Pick; + meta: MetaMap; +}; + +/** + * Overview component + * + * Render an overview. + */ +const Overview: VFC = ({ cover, meta }) => { + return ( +
+ {cover && ( + + )} + +
+ ); +}; + +export default Overview; -- cgit v1.2.3