From 0f936ec0e7606cb79434d94096b6e113a7ce78eb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 15 Dec 2023 18:35:16 +0100 Subject: refactor(stories): migrate stories to CSF3 format --- .../atoms/buttons/button-link/button-link.mdx | 71 ++++ .../buttons/button-link/button-link.stories.ts | 99 +++++ .../buttons/button-link/button-link.stories.tsx | 114 ------ src/components/atoms/buttons/button/button.mdx | 80 ++++ .../atoms/buttons/button/button.stories.ts | 112 +++++ .../atoms/buttons/button/button.stories.tsx | 172 -------- src/components/atoms/figure/figure.stories.tsx | 95 ++--- src/components/atoms/flip/flip.stories.tsx | 98 ++--- .../fields/boolean-field/boolean-field.stories.ts | 31 ++ .../fields/boolean-field/boolean-field.stories.tsx | 172 -------- .../forms/fields/checkbox/checkbox.stories.ts | 20 + .../atoms/forms/fields/input/input.stories.tsx | 454 ++++++++++----------- .../atoms/forms/fields/radio/radio.stories.ts | 20 + .../atoms/forms/fields/select/select.stories.tsx | 210 ++++------ .../forms/fields/text-area/text-area.stories.tsx | 200 ++++----- .../atoms/forms/fieldset/fieldset.stories.tsx | 96 ++--- src/components/atoms/forms/label/label.stories.ts | 48 +++ src/components/atoms/forms/label/label.stories.tsx | 119 ------ .../atoms/forms/legend/legend.stories.tsx | 38 +- src/components/atoms/heading/heading.stories.ts | 69 ++++ src/components/atoms/heading/heading.stories.tsx | 106 ----- src/components/atoms/images/icons/icon.stories.ts | 135 ++++++ src/components/atoms/images/icons/icon.stories.tsx | 210 ---------- src/components/atoms/images/logo/logo.stories.ts | 15 + src/components/atoms/images/logo/logo.stories.tsx | 34 -- .../atoms/layout/article/article.stories.ts | 17 + .../atoms/layout/article/article.stories.tsx | 34 -- src/components/atoms/layout/aside/aside.stories.ts | 17 + .../atoms/layout/aside/aside.stories.tsx | 34 -- .../atoms/layout/footer/footer.stories.ts | 17 + .../atoms/layout/footer/footer.stories.tsx | 34 -- .../atoms/layout/header/header.stories.ts | 17 + .../atoms/layout/header/header.stories.tsx | 34 -- src/components/atoms/layout/main/main.stories.ts | 17 + src/components/atoms/layout/main/main.stories.tsx | 57 --- src/components/atoms/layout/nav/nav.stories.ts | 17 + src/components/atoms/layout/nav/nav.stories.tsx | 34 -- .../atoms/layout/section/section.stories.ts | 17 + .../atoms/layout/section/section.stories.tsx | 37 -- src/components/atoms/layout/time/time.stories.ts | 17 + src/components/atoms/layout/time/time.stories.tsx | 32 -- src/components/atoms/links/link/link.stories.tsx | 222 +++------- .../links/sharing-link/sharing-link.stories.ts | 59 +++ .../links/sharing-link/sharing-link.stories.tsx | 114 ------ .../atoms/links/social-link/social-link.stories.ts | 43 ++ .../links/social-link/social-link.stories.tsx | 66 --- .../description-list/description-list.stories.tsx | 400 +++++++++++------- src/components/atoms/lists/list/list.stories.tsx | 290 ++++++------- .../loaders/progress-bar/progress-bar.stories.ts | 23 ++ .../loaders/progress-bar/progress-bar.stories.tsx | 60 --- .../atoms/loaders/spinner/spinner.stories.ts | 45 ++ .../atoms/loaders/spinner/spinner.stories.tsx | 37 -- src/components/atoms/notice/notice.stories.ts | 39 ++ src/components/atoms/notice/notice.stories.tsx | 86 ---- src/components/atoms/overlay/overlay.stories.tsx | 96 ++--- src/components/atoms/sidebar/sidebar.stories.ts | 17 + src/components/atoms/sidebar/sidebar.stories.tsx | 60 --- .../visually-hidden/visually-hidden.stories.tsx | 62 +-- 58 files changed, 2086 insertions(+), 2883 deletions(-) create mode 100644 src/components/atoms/buttons/button-link/button-link.mdx create mode 100644 src/components/atoms/buttons/button-link/button-link.stories.ts delete mode 100644 src/components/atoms/buttons/button-link/button-link.stories.tsx create mode 100644 src/components/atoms/buttons/button/button.mdx create mode 100644 src/components/atoms/buttons/button/button.stories.ts delete mode 100644 src/components/atoms/buttons/button/button.stories.tsx create mode 100644 src/components/atoms/forms/fields/boolean-field/boolean-field.stories.ts delete mode 100644 src/components/atoms/forms/fields/boolean-field/boolean-field.stories.tsx create mode 100644 src/components/atoms/forms/fields/checkbox/checkbox.stories.ts create mode 100644 src/components/atoms/forms/fields/radio/radio.stories.ts create mode 100644 src/components/atoms/forms/label/label.stories.ts delete mode 100644 src/components/atoms/forms/label/label.stories.tsx create mode 100644 src/components/atoms/heading/heading.stories.ts delete mode 100644 src/components/atoms/heading/heading.stories.tsx create mode 100644 src/components/atoms/images/icons/icon.stories.ts delete mode 100644 src/components/atoms/images/icons/icon.stories.tsx create mode 100644 src/components/atoms/images/logo/logo.stories.ts delete mode 100644 src/components/atoms/images/logo/logo.stories.tsx create mode 100644 src/components/atoms/layout/article/article.stories.ts delete mode 100644 src/components/atoms/layout/article/article.stories.tsx create mode 100644 src/components/atoms/layout/aside/aside.stories.ts delete mode 100644 src/components/atoms/layout/aside/aside.stories.tsx create mode 100644 src/components/atoms/layout/footer/footer.stories.ts delete mode 100644 src/components/atoms/layout/footer/footer.stories.tsx create mode 100644 src/components/atoms/layout/header/header.stories.ts delete mode 100644 src/components/atoms/layout/header/header.stories.tsx create mode 100644 src/components/atoms/layout/main/main.stories.ts delete mode 100644 src/components/atoms/layout/main/main.stories.tsx create mode 100644 src/components/atoms/layout/nav/nav.stories.ts delete mode 100644 src/components/atoms/layout/nav/nav.stories.tsx create mode 100644 src/components/atoms/layout/section/section.stories.ts delete mode 100644 src/components/atoms/layout/section/section.stories.tsx create mode 100644 src/components/atoms/layout/time/time.stories.ts delete mode 100644 src/components/atoms/layout/time/time.stories.tsx create mode 100644 src/components/atoms/links/sharing-link/sharing-link.stories.ts delete mode 100644 src/components/atoms/links/sharing-link/sharing-link.stories.tsx create mode 100644 src/components/atoms/links/social-link/social-link.stories.ts delete mode 100644 src/components/atoms/links/social-link/social-link.stories.tsx create mode 100644 src/components/atoms/loaders/progress-bar/progress-bar.stories.ts delete mode 100644 src/components/atoms/loaders/progress-bar/progress-bar.stories.tsx create mode 100644 src/components/atoms/loaders/spinner/spinner.stories.ts delete mode 100644 src/components/atoms/loaders/spinner/spinner.stories.tsx create mode 100644 src/components/atoms/notice/notice.stories.ts delete mode 100644 src/components/atoms/notice/notice.stories.tsx create mode 100644 src/components/atoms/sidebar/sidebar.stories.ts delete mode 100644 src/components/atoms/sidebar/sidebar.stories.tsx (limited to 'src/components/atoms') diff --git a/src/components/atoms/buttons/button-link/button-link.mdx b/src/components/atoms/buttons/button-link/button-link.mdx new file mode 100644 index 0000000..e22471e --- /dev/null +++ b/src/components/atoms/buttons/button-link/button-link.mdx @@ -0,0 +1,71 @@ +import { ArgTypes, Canvas, Meta, Primary } from '@storybook/blocks'; +import * as ButtonLinkStories from './button-link.stories'; + + + +# Button + + + +## Kind + +The button appearance can change depending on its kind. + +### Primary + + + +### Secondary (default) + + + +### Tertiary + + + +## States + +It can be: +* enabled, +* disabled +* external. + +### Enabled (default) + + + +### Disabled + + + +### External + + + +## Shapes + +It can either: +* be a circle, +* be a rectangle +* be a square, +* or have an automatic shape. + +### Circle + + + +### Rectangle (default) + + + +### Square + + + +### Auto + + + +## Props + + diff --git a/src/components/atoms/buttons/button-link/button-link.stories.ts b/src/components/atoms/buttons/button-link/button-link.stories.ts new file mode 100644 index 0000000..bbf940c --- /dev/null +++ b/src/components/atoms/buttons/button-link/button-link.stories.ts @@ -0,0 +1,99 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { ButtonLink } from './button-link'; + +const meta = { + component: ButtonLink, + title: 'Atoms/Buttons/ButtonLink', +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + children: 'Button Link', + isDisabled: false, + to: '#', + }, +}; + +export const Primary: Story = { + name: 'Kind: Primary', + args: { + ...Default.args, + kind: 'primary', + }, +}; + +export const Secondary: Story = { + name: 'Kind: Secondary', + args: { + ...Default.args, + kind: 'secondary', + }, +}; + +export const Tertiary: Story = { + name: 'Kind: Tertiary', + args: { + ...Default.args, + kind: 'tertiary', + }, +}; + +export const Enabled: Story = { + name: 'State: Enabled', + args: { + ...Default.args, + isDisabled: false, + }, +}; + +export const Disabled: Story = { + name: 'State: Disabled', + args: { + ...Default.args, + isDisabled: true, + }, +}; + +export const ExternalLink: Story = { + name: 'State: External', + args: { + ...Default.args, + isExternal: true, + }, +}; + +export const Circle: Story = { + name: 'Shape: Circle', + args: { + ...Default.args, + shape: 'circle', + }, +}; + +export const Rectangle: Story = { + name: 'Shape: Rectangle', + args: { + ...Default.args, + shape: 'rectangle', + }, +}; + +export const Square: Story = { + name: 'Shape: Square', + args: { + ...Default.args, + shape: 'square', + }, +}; + +export const Auto: Story = { + name: 'Shape: Auto', + args: { + ...Default.args, + shape: 'auto', + }, +}; diff --git a/src/components/atoms/buttons/button-link/button-link.stories.tsx b/src/components/atoms/buttons/button-link/button-link.stories.tsx deleted file mode 100644 index f048ce9..0000000 --- a/src/components/atoms/buttons/button-link/button-link.stories.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import { ButtonLink } from './button-link'; - -/** - * ButtonLink - Storybook Meta - */ -export default { - title: 'Atoms/Buttons/ButtonLink', - component: ButtonLink, - args: { - isExternal: false, - shape: 'rectangle', - }, - argTypes: { - children: { - control: { - type: 'text', - }, - description: 'The link body.', - type: { - name: 'string', - required: true, - }, - }, - isExternal: { - control: { - type: 'boolean', - }, - description: 'Determine if the link is an external link.', - table: { - category: 'Options', - defaultValue: { summary: false }, - }, - type: { - name: 'boolean', - required: false, - }, - }, - kind: { - control: { - type: 'select', - }, - description: 'The link kind.', - options: ['primary', 'secondary', 'tertiary'], - table: { - category: 'Options', - defaultValue: { summary: 'secondary' }, - }, - type: { - name: 'string', - required: false, - }, - }, - shape: { - control: { - type: 'select', - }, - description: 'The link shape.', - options: ['circle', 'rectangle', 'square'], - table: { - category: 'Options', - defaultValue: { summary: 'rectangle' }, - }, - type: { - name: 'string', - required: false, - }, - }, - to: { - control: { - type: 'text', - }, - description: 'The link target.', - type: { - name: 'string', - required: true, - }, - }, - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ( - -); - -/** - * ButtonLink Story - Primary - */ -export const Primary = Template.bind({}); -Primary.args = { - children: 'Link', - kind: 'primary', - to: '#', -}; - -/** - * ButtonLink Story - Secondary - */ -export const Secondary = Template.bind({}); -Secondary.args = { - children: 'Link', - kind: 'secondary', - to: '#', -}; - -/** - * ButtonLink Story - Tertiary - */ -export const Tertiary = Template.bind({}); -Tertiary.args = { - children: 'Link', - kind: 'tertiary', - to: '#', -}; diff --git a/src/components/atoms/buttons/button/button.mdx b/src/components/atoms/buttons/button/button.mdx new file mode 100644 index 0000000..d90156e --- /dev/null +++ b/src/components/atoms/buttons/button/button.mdx @@ -0,0 +1,80 @@ +import { ArgTypes, Canvas, Meta, Primary } from '@storybook/blocks'; +import * as ButtonStories from './button.stories'; + + + +# Button + + + +## Kind + +The button appearance can change depending on its kind. + +### Primary + + + +### Secondary (default) + + + +### Tertiary + + + +### Neutral + + + +## States + +It can either: +* be enabled, +* be disabled +* indicate a loading state, +* indicate a pressed state. + +### Enabled (default) + + + +### Disabled + + + +### Loading + + + +### Pressed + + + +## Shapes + +It can either: +* be a circle, +* be a rectangle +* be a square, +* or conserves its initial shape. + +### Circle + + + +### Rectangle (default) + + + +### Square + + + +### Initial + + + +## Props + + diff --git a/src/components/atoms/buttons/button/button.stories.ts b/src/components/atoms/buttons/button/button.stories.ts new file mode 100644 index 0000000..25fb9f8 --- /dev/null +++ b/src/components/atoms/buttons/button/button.stories.ts @@ -0,0 +1,112 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { Button } from './button'; + +const meta = { + component: Button, + title: 'Atoms/Buttons/Button', +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + children: 'Button', + }, +}; + +export const Primary: Story = { + name: 'Kind: Primary', + args: { + ...Default.args, + kind: 'primary', + }, +}; + +export const Secondary: Story = { + name: 'Kind: Secondary', + args: { + ...Default.args, + kind: 'secondary', + }, +}; + +export const Tertiary: Story = { + name: 'Kind: Tertiary', + args: { + ...Default.args, + kind: 'tertiary', + }, +}; + +export const Neutral: Story = { + name: 'Kind: Neutral', + args: { + ...Default.args, + kind: 'neutral', + }, +}; + +export const Enabled: Story = { + name: 'State: Enabled', + args: { + ...Default.args, + }, +}; + +export const Disabled: Story = { + name: 'State: Disabled', + args: { + ...Default.args, + isDisabled: true, + }, +}; + +export const Loading: Story = { + name: 'State: Loading', + args: { + ...Default.args, + isLoading: true, + }, +}; + +export const Pressed: Story = { + name: 'State: Pressed', + args: { + ...Default.args, + isPressed: true, + }, +}; + +export const Circle: Story = { + name: 'Shape: Circle', + args: { + ...Default.args, + shape: 'circle', + }, +}; + +export const Rectangle: Story = { + name: 'Shape: Rectangle', + args: { + ...Default.args, + shape: 'rectangle', + }, +}; + +export const Square: Story = { + name: 'Shape: Square', + args: { + ...Default.args, + shape: 'square', + }, +}; + +export const Initial: Story = { + name: 'Shape: Initial', + args: { + ...Default.args, + shape: 'initial', + }, +}; diff --git a/src/components/atoms/buttons/button/button.stories.tsx b/src/components/atoms/buttons/button/button.stories.tsx deleted file mode 100644 index 5ce28fb..0000000 --- a/src/components/atoms/buttons/button/button.stories.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import { Button } from './button'; - -/** - * Button - Storybook Meta - */ -export default { - title: 'Atoms/Buttons/Button', - component: Button, - args: { - type: 'button', - }, - argTypes: { - children: { - control: { - type: 'text', - }, - description: 'The button body.', - type: { - name: 'string', - required: true, - }, - }, - isDisabled: { - control: { - type: 'boolean', - }, - description: 'Should the button be disabled?', - table: { - category: 'Options', - defaultValue: { summary: false }, - }, - type: { - name: 'boolean', - required: false, - }, - }, - isLoading: { - control: { - type: 'boolean', - }, - description: - 'Should the button be disabled because it is loading something?', - table: { - category: 'Options', - defaultValue: { summary: false }, - }, - type: { - name: 'boolean', - required: false, - }, - }, - isPressed: { - control: { - type: 'boolean', - }, - description: 'Define if the button is currently pressed.', - table: { - category: 'Options', - defaultValue: { summary: false }, - }, - type: { - name: 'boolean', - required: false, - }, - }, - kind: { - control: { - type: 'select', - }, - description: 'Button kind.', - options: ['primary', 'secondary', 'tertiary', 'neutral'], - table: { - category: 'Options', - defaultValue: { summary: 'secondary' }, - }, - type: { - name: 'string', - required: false, - }, - }, - onClick: { - control: { - type: null, - }, - description: 'A callback function to handle click.', - table: { - category: 'Events', - }, - type: { - name: 'function', - required: false, - }, - }, - shape: { - control: { - type: 'select', - }, - description: 'The link shape.', - options: ['circle', 'rectangle', 'square', 'initial'], - table: { - category: 'Options', - defaultValue: { summary: 'rectangle' }, - }, - type: { - name: 'string', - required: false, - }, - }, - type: { - control: { - type: 'select', - }, - description: 'Button type attribute.', - options: ['button', 'reset', 'submit'], - table: { - category: 'Options', - defaultValue: { summary: 'button' }, - }, - type: { - name: 'string', - required: false, - }, - }, - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) =>