From f861e6a269ba9f62700776d3cd13b644a9e836d4 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Wed, 20 Sep 2023 16:38:54 +0200 Subject: refactor: use named export for everything except pages Next expect a default export for pages so only those components should use default exports. Everything else should use named exports to reduce the number of import statements. --- .../molecules/buttons/back-to-top.stories.tsx | 2 +- .../molecules/buttons/back-to-top.test.tsx | 2 +- src/components/molecules/buttons/back-to-top.tsx | 9 ++----- .../molecules/buttons/heading-button.stories.tsx | 2 +- .../molecules/buttons/heading-button.test.tsx | 2 +- .../molecules/buttons/heading-button.tsx | 9 +++---- .../molecules/buttons/help-button.stories.tsx | 2 +- .../molecules/buttons/help-button.test.tsx | 2 +- src/components/molecules/buttons/help-button.tsx | 16 ++++++------ src/components/molecules/buttons/index.ts | 3 +++ .../molecules/forms/ackee-toggle.stories.tsx | 10 ++++---- .../molecules/forms/ackee-toggle.test.tsx | 2 +- src/components/molecules/forms/ackee-toggle.tsx | 20 +++++++-------- .../molecules/forms/fieldset.stories.tsx | 2 +- src/components/molecules/forms/fieldset.test.tsx | 2 +- src/components/molecules/forms/fieldset.tsx | 23 ++++++----------- .../molecules/forms/flipping-label.stories.tsx | 4 +-- .../molecules/forms/flipping-label.test.tsx | 2 +- src/components/molecules/forms/flipping-label.tsx | 9 +++---- src/components/molecules/forms/index.ts | 10 ++++++++ .../forms/labelled-boolean-field.stories.tsx | 2 +- .../forms/labelled-boolean-field.test.tsx | 2 +- .../molecules/forms/labelled-boolean-field.tsx | 29 ++++++++-------------- .../molecules/forms/labelled-field.stories.tsx | 2 +- .../molecules/forms/labelled-field.test.tsx | 2 +- src/components/molecules/forms/labelled-field.tsx | 17 ++++++------- .../molecules/forms/labelled-select.stories.tsx | 2 +- .../molecules/forms/labelled-select.test.tsx | 2 +- src/components/molecules/forms/labelled-select.tsx | 13 ++++------ .../molecules/forms/motion-toggle.stories.tsx | 10 ++++---- .../molecules/forms/motion-toggle.test.tsx | 2 +- src/components/molecules/forms/motion-toggle.tsx | 12 ++++----- .../molecules/forms/prism-theme-toggle.stories.tsx | 2 +- .../molecules/forms/prism-theme-toggle.test.tsx | 2 +- .../molecules/forms/prism-theme-toggle.tsx | 12 ++++----- .../molecules/forms/radio-group.stories.tsx | 2 +- .../molecules/forms/radio-group.test.tsx | 2 +- src/components/molecules/forms/radio-group.tsx | 18 +++++++------- .../molecules/forms/theme-toggle.stories.tsx | 2 +- .../molecules/forms/theme-toggle.test.tsx | 2 +- src/components/molecules/forms/theme-toggle.tsx | 12 ++++----- .../molecules/images/flipping-logo.stories.tsx | 2 +- .../molecules/images/flipping-logo.test.tsx | 2 +- src/components/molecules/images/flipping-logo.tsx | 22 ++++++++-------- src/components/molecules/images/index.ts | 2 ++ .../molecules/images/responsive-image.stories.tsx | 2 +- .../molecules/images/responsive-image.test.tsx | 2 +- .../molecules/images/responsive-image.tsx | 16 +++++------- src/components/molecules/index.ts | 6 +++++ .../molecules/layout/branding.stories.tsx | 2 +- src/components/molecules/layout/branding.test.tsx | 2 +- src/components/molecules/layout/branding.tsx | 18 ++++++-------- src/components/molecules/layout/card.stories.tsx | 2 +- src/components/molecules/layout/card.test.tsx | 2 +- src/components/molecules/layout/card.tsx | 15 +++++------ src/components/molecules/layout/code.stories.tsx | 10 +++----- src/components/molecules/layout/code.test.tsx | 2 +- src/components/molecules/layout/code.tsx | 15 ++++++----- .../molecules/layout/columns.stories.tsx | 4 +-- src/components/molecules/layout/columns.test.tsx | 4 +-- src/components/molecules/layout/columns.tsx | 15 +++-------- src/components/molecules/layout/index.ts | 8 ++++++ src/components/molecules/layout/meta.stories.tsx | 4 +-- src/components/molecules/layout/meta.test.tsx | 4 +-- src/components/molecules/layout/meta.tsx | 16 +++++------- .../molecules/layout/page-footer.stories.tsx | 2 +- .../molecules/layout/page-footer.test.tsx | 2 +- src/components/molecules/layout/page-footer.tsx | 6 ++--- .../molecules/layout/page-header.stories.tsx | 2 +- .../molecules/layout/page-header.test.tsx | 2 +- src/components/molecules/layout/page-header.tsx | 8 +++--- src/components/molecules/layout/widget.stories.tsx | 2 +- src/components/molecules/layout/widget.test.tsx | 2 +- src/components/molecules/layout/widget.tsx | 13 +++------- src/components/molecules/modals/index.ts | 2 ++ src/components/molecules/modals/modal.stories.tsx | 2 +- src/components/molecules/modals/modal.test.tsx | 2 +- src/components/molecules/modals/modal.tsx | 27 ++++++++++++-------- .../molecules/modals/tooltip.stories.tsx | 2 +- src/components/molecules/modals/tooltip.test.tsx | 2 +- src/components/molecules/modals/tooltip.tsx | 16 ++++++------ .../molecules/nav/breadcrumb.stories.tsx | 2 +- src/components/molecules/nav/breadcrumb.test.tsx | 2 +- src/components/molecules/nav/breadcrumb.tsx | 8 +++--- src/components/molecules/nav/index.ts | 3 +++ src/components/molecules/nav/nav.stories.tsx | 13 ++++------ src/components/molecules/nav/nav.test.tsx | 5 ++-- src/components/molecules/nav/nav.tsx | 9 +++---- .../molecules/nav/pagination.stories.tsx | 10 ++++---- src/components/molecules/nav/pagination.test.tsx | 2 +- src/components/molecules/nav/pagination.tsx | 8 +++--- 91 files changed, 288 insertions(+), 325 deletions(-) create mode 100644 src/components/molecules/buttons/index.ts create mode 100644 src/components/molecules/forms/index.ts create mode 100644 src/components/molecules/images/index.ts create mode 100644 src/components/molecules/index.ts create mode 100644 src/components/molecules/layout/index.ts create mode 100644 src/components/molecules/modals/index.ts create mode 100644 src/components/molecules/nav/index.ts (limited to 'src/components/molecules') diff --git a/src/components/molecules/buttons/back-to-top.stories.tsx b/src/components/molecules/buttons/back-to-top.stories.tsx index a338b8b..5de12d4 100644 --- a/src/components/molecules/buttons/back-to-top.stories.tsx +++ b/src/components/molecules/buttons/back-to-top.stories.tsx @@ -1,5 +1,5 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; -import BackToTopComponent from './back-to-top'; +import { BackToTop as BackToTopComponent } from './back-to-top'; /** * BackToTop - Storybook Meta diff --git a/src/components/molecules/buttons/back-to-top.test.tsx b/src/components/molecules/buttons/back-to-top.test.tsx index c03ccb2..b39a377 100644 --- a/src/components/molecules/buttons/back-to-top.test.tsx +++ b/src/components/molecules/buttons/back-to-top.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import BackToTop from './back-to-top'; +import { BackToTop } from './back-to-top'; describe('BackToTop', () => { it('renders a BackToTop link', () => { diff --git a/src/components/molecules/buttons/back-to-top.tsx b/src/components/molecules/buttons/back-to-top.tsx index f422444..d28d6c1 100644 --- a/src/components/molecules/buttons/back-to-top.tsx +++ b/src/components/molecules/buttons/back-to-top.tsx @@ -1,9 +1,6 @@ import { FC } from 'react'; import { useIntl } from 'react-intl'; -import ButtonLink, { - type ButtonLinkProps, -} from '../../atoms/buttons/button-link'; -import Arrow from '../../atoms/icons/arrow'; +import { Arrow, ButtonLink, type ButtonLinkProps } from '../../atoms'; import styles from './back-to-top.module.scss'; export type BackToTopProps = Pick & { @@ -18,7 +15,7 @@ export type BackToTopProps = Pick & { * * Render a back to top link. */ -const BackToTop: FC = ({ className = '', target }) => { +export const BackToTop: FC = ({ className = '', target }) => { const intl = useIntl(); const linkName = intl.formatMessage({ defaultMessage: 'Back to top', @@ -39,5 +36,3 @@ const BackToTop: FC = ({ className = '', target }) => { ); }; - -export default BackToTop; diff --git a/src/components/molecules/buttons/heading-button.stories.tsx b/src/components/molecules/buttons/heading-button.stories.tsx index d1b5ed4..9beda2b 100644 --- a/src/components/molecules/buttons/heading-button.stories.tsx +++ b/src/components/molecules/buttons/heading-button.stories.tsx @@ -1,6 +1,6 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; import { useState } from 'react'; -import HeadingButtonComponent from './heading-button'; +import { HeadingButton as HeadingButtonComponent } from './heading-button'; /** * HeadingButton - Storybook Meta diff --git a/src/components/molecules/buttons/heading-button.test.tsx b/src/components/molecules/buttons/heading-button.test.tsx index 5dcc4cc..d64283a 100644 --- a/src/components/molecules/buttons/heading-button.test.tsx +++ b/src/components/molecules/buttons/heading-button.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import HeadingButton from './heading-button'; +import { HeadingButton } from './heading-button'; describe('HeadingButton', () => { it('renders a button to collapse.', () => { diff --git a/src/components/molecules/buttons/heading-button.tsx b/src/components/molecules/buttons/heading-button.tsx index cefd179..93ccdbe 100644 --- a/src/components/molecules/buttons/heading-button.tsx +++ b/src/components/molecules/buttons/heading-button.tsx @@ -1,7 +1,6 @@ import { FC, SetStateAction } from 'react'; import { useIntl } from 'react-intl'; -import Heading, { type HeadingProps } from '../../atoms/headings/heading'; -import PlusMinus from '../../atoms/icons/plus-minus'; +import { Heading, type HeadingProps, PlusMinus } from '../../atoms'; import styles from './heading-button.module.scss'; export type HeadingButtonProps = Pick & { @@ -28,7 +27,7 @@ export type HeadingButtonProps = Pick & { * * Render a button as accordion title to toggle body. */ -const HeadingButton: FC = ({ +export const HeadingButton: FC = ({ className = '', expanded, level, @@ -51,9 +50,9 @@ const HeadingButton: FC = ({ return ( ); }; - -export default HeadingButton; diff --git a/src/components/molecules/buttons/help-button.stories.tsx b/src/components/molecules/buttons/help-button.stories.tsx index 4968b27..176888c 100644 --- a/src/components/molecules/buttons/help-button.stories.tsx +++ b/src/components/molecules/buttons/help-button.stories.tsx @@ -1,5 +1,5 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; -import HelpButtonComponent from './help-button'; +import { HelpButton as HelpButtonComponent } from './help-button'; /** * HelpButton - Storybook Meta diff --git a/src/components/molecules/buttons/help-button.test.tsx b/src/components/molecules/buttons/help-button.test.tsx index 67472f1..486ed4b 100644 --- a/src/components/molecules/buttons/help-button.test.tsx +++ b/src/components/molecules/buttons/help-button.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import HelpButton from './help-button'; +import { HelpButton } from './help-button'; describe('Help', () => { it('renders a help button', () => { diff --git a/src/components/molecules/buttons/help-button.tsx b/src/components/molecules/buttons/help-button.tsx index 6178317..1234835 100644 --- a/src/components/molecules/buttons/help-button.tsx +++ b/src/components/molecules/buttons/help-button.tsx @@ -1,6 +1,6 @@ import { forwardRef, ForwardRefRenderFunction } from 'react'; import { useIntl } from 'react-intl'; -import Button, { type ButtonProps } from '../../atoms/buttons/button'; +import { Button, type ButtonProps } from '../../atoms'; import styles from './help-button.module.scss'; export type HelpButtonProps = Pick< @@ -8,12 +8,7 @@ export type HelpButtonProps = Pick< 'aria-pressed' | 'className' | 'onClick' >; -/** - * HelpButton component - * - * Render a button with an interrogation mark icon. - */ -const HelpButton: ForwardRefRenderFunction< +const HelpButtonWithRef: ForwardRefRenderFunction< HTMLButtonElement, HelpButtonProps > = ({ className = '', ...props }, ref) => { @@ -37,4 +32,9 @@ const HelpButton: ForwardRefRenderFunction< ); }; -export default forwardRef(HelpButton); +/** + * HelpButton component + * + * Render a button with an interrogation mark icon. + */ +export const HelpButton = forwardRef(HelpButtonWithRef); diff --git a/src/components/molecules/buttons/index.ts b/src/components/molecules/buttons/index.ts new file mode 100644 index 0000000..e0a10c1 --- /dev/null +++ b/src/components/molecules/buttons/index.ts @@ -0,0 +1,3 @@ +export * from './back-to-top'; +export * from './heading-button'; +export * from './help-button'; diff --git a/src/components/molecules/forms/ackee-toggle.stories.tsx b/src/components/molecules/forms/ackee-toggle.stories.tsx index 3f3f11e..779f49d 100644 --- a/src/components/molecules/forms/ackee-toggle.stories.tsx +++ b/src/components/molecules/forms/ackee-toggle.stories.tsx @@ -1,5 +1,5 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; -import AckeeToggleComponent from './ackee-toggle'; +import { AckeeToggle } from './ackee-toggle'; import { storageKey } from './ackee-toggle.fixture'; /** @@ -7,7 +7,7 @@ import { storageKey } from './ackee-toggle.fixture'; */ export default { title: 'Molecules/Forms/Toggle', - component: AckeeToggleComponent, + component: AckeeToggle, argTypes: { bodyClassName: { control: { @@ -109,10 +109,10 @@ export default { }, }, }, -} as ComponentMeta; +} as ComponentMeta; -const Template: ComponentStory = (args) => ( - +const Template: ComponentStory = (args) => ( + ); /** diff --git a/src/components/molecules/forms/ackee-toggle.test.tsx b/src/components/molecules/forms/ackee-toggle.test.tsx index a4d36b3..97ebbe5 100644 --- a/src/components/molecules/forms/ackee-toggle.test.tsx +++ b/src/components/molecules/forms/ackee-toggle.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import AckeeToggle from './ackee-toggle'; +import { AckeeToggle } from './ackee-toggle'; import { storageKey } from './ackee-toggle.fixture'; describe('AckeeToggle', () => { diff --git a/src/components/molecules/forms/ackee-toggle.tsx b/src/components/molecules/forms/ackee-toggle.tsx index ba77c10..32949b2 100644 --- a/src/components/molecules/forms/ackee-toggle.tsx +++ b/src/components/molecules/forms/ackee-toggle.tsx @@ -1,16 +1,18 @@ import { FC } from 'react'; import { useIntl } from 'react-intl'; -import useLocalStorage from '../../../utils/hooks/use-local-storage'; -import useUpdateAckeeOptions, { +import { type AckeeOptions, -} from '../../../utils/hooks/use-update-ackee-options'; -import RadioGroup, { + useLocalStorage, + useUpdateAckeeOptions, +} from '../../../utils/hooks'; +import { + RadioGroup, type RadioGroupCallback, type RadioGroupCallbackProps, type RadioGroupOption, type RadioGroupProps, } from './radio-group'; -import Tooltip, { type TooltipProps } from '../modals/tooltip'; +import { Tooltip, type TooltipProps } from '../modals/tooltip'; export type AckeeToggleProps = Pick< RadioGroupProps, @@ -43,7 +45,7 @@ export type AckeeToggleProps = Pick< * * Render a Toggle component to set reduce motion. */ -const AckeeToggle: FC = ({ +export const AckeeToggle: FC = ({ defaultValue, storageKey, tooltipClassName, @@ -126,8 +128,9 @@ const AckeeToggle: FC = ({ return ( = ({ className={tooltipClassName} /> } - {...props} /> ); }; - -export default AckeeToggle; diff --git a/src/components/molecules/forms/fieldset.stories.tsx b/src/components/molecules/forms/fieldset.stories.tsx index 85aeb7f..d53a21a 100644 --- a/src/components/molecules/forms/fieldset.stories.tsx +++ b/src/components/molecules/forms/fieldset.stories.tsx @@ -1,5 +1,5 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; -import FieldsetComponent from './fieldset'; +import { Fieldset as FieldsetComponent } from './fieldset'; import { body, legend, Tooltip } from './fieldset.fixture'; /** diff --git a/src/components/molecules/forms/fieldset.test.tsx b/src/components/molecules/forms/fieldset.test.tsx index aec7a51..f397bcd 100644 --- a/src/components/molecules/forms/fieldset.test.tsx +++ b/src/components/molecules/forms/fieldset.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import Fieldset from './fieldset'; +import { Fieldset } from './fieldset'; import { body, legend, Tooltip } from './fieldset.fixture'; describe('Fieldset', () => { diff --git a/src/components/molecules/forms/fieldset.tsx b/src/components/molecules/forms/fieldset.tsx index 4cbf71d..7564d14 100644 --- a/src/components/molecules/forms/fieldset.tsx +++ b/src/components/molecules/forms/fieldset.tsx @@ -6,9 +6,9 @@ import { useRef, useState, } from 'react'; -import useOnClickOutside from '../../../utils/hooks/use-on-click-outside'; -import HelpButton from '../buttons/help-button'; -import Tooltip from '../modals/tooltip'; +import { useOnClickOutside } from '../../../utils/hooks'; +import { HelpButton } from '../buttons'; +import { Tooltip } from '../modals'; import styles from './fieldset.module.scss'; export type FieldsetProps = { @@ -59,7 +59,7 @@ export type FieldsetProps = { * * Render a fieldset with a legend. */ -const Fieldset: FC = ({ +export const Fieldset: FC = ({ bodyClassName = '', buttonClassName = '', children, @@ -92,17 +92,12 @@ const Fieldset: FC = ({ }; const tooltipRef = useOnClickOutside(closeTooltip); + const fieldsetClass = `${styles.wrapper} ${styles[wrapperModifier]} ${className}`; + const legendClass = `${styles.legend} ${styles[legendModifier]} ${legendClassName}`; return ( -
- - {legend} - +
+ {legend} {TooltipComponent && ( <> = ({
); }; - -export default Fieldset; diff --git a/src/components/molecules/forms/flipping-label.stories.tsx b/src/components/molecules/forms/flipping-label.stories.tsx index 9391fd2..7dad3cb 100644 --- a/src/components/molecules/forms/flipping-label.stories.tsx +++ b/src/components/molecules/forms/flipping-label.stories.tsx @@ -1,7 +1,7 @@ import { ComponentMeta, ComponentStory } from '@storybook/react'; import { useState } from 'react'; -import MagnifyingGlass from '../../atoms/icons/magnifying-glass'; -import FlippingLabel from './flipping-label'; +import { MagnifyingGlass } from '../../atoms'; +import { FlippingLabel } from './flipping-label'; export default { title: 'Organisms/Forms/FlippingLabel', diff --git a/src/components/molecules/forms/flipping-label.test.tsx b/src/components/molecules/forms/flipping-label.test.tsx index 61864fd..0f5dd30 100644 --- a/src/components/molecules/forms/flipping-label.test.tsx +++ b/src/components/molecules/forms/flipping-label.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '../../../../tests/utils'; -import FlippingLabel from './flipping-label'; +import { FlippingLabel } from './flipping-label'; describe('FlippingLabel', () => { it('renders a label', () => { diff --git a/src/components/molecules/forms/flipping-label.tsx b/src/components/molecules/forms/flipping-label.tsx index ca83c6d..c85642b 100644 --- a/src/components/molecules/forms/flipping-label.tsx +++ b/src/components/molecules/forms/flipping-label.tsx @@ -1,6 +1,5 @@ import { FC } from 'react'; -import Label, { LabelProps } from '../../atoms/forms/label'; -import Close from '../../atoms/icons/close'; +import { Close, Label, type LabelProps } from '../../atoms'; import styles from './flipping-label.module.scss'; export type FlippingLabelProps = Pick< @@ -17,7 +16,7 @@ export type FlippingLabelProps = Pick< isActive: boolean; }; -const FlippingLabel: FC = ({ +export const FlippingLabel: FC = ({ children, className = '', isActive, @@ -26,7 +25,7 @@ const FlippingLabel: FC = ({ const wrapperModifier = isActive ? 'wrapper--active' : 'wrapper--inactive'; return ( -