diff options
Diffstat (limited to 'src/components/molecules')
| -rw-r--r-- | src/components/molecules/buttons/back-to-top.stories.tsx | 7 | ||||
| -rw-r--r-- | src/components/molecules/buttons/back-to-top.tsx | 12 | ||||
| -rw-r--r-- | src/components/molecules/buttons/help-button.stories.tsx | 4 | ||||
| -rw-r--r-- | src/components/molecules/buttons/help-button.tsx | 10 | ||||
| -rw-r--r-- | src/components/molecules/images/responsive-image.tsx | 6 | ||||
| -rw-r--r-- | src/components/molecules/layout/branding.tsx | 10 | ||||
| -rw-r--r-- | src/components/molecules/layout/flipping-logo.stories.tsx | 23 | ||||
| -rw-r--r-- | src/components/molecules/layout/flipping-logo.tsx | 12 | ||||
| -rw-r--r-- | src/components/molecules/modals/modal.stories.tsx | 13 | ||||
| -rw-r--r-- | src/components/molecules/modals/modal.tsx | 22 | ||||
| -rw-r--r-- | src/components/molecules/modals/tooltip.stories.tsx | 23 | ||||
| -rw-r--r-- | src/components/molecules/modals/tooltip.tsx | 15 | 
12 files changed, 113 insertions, 44 deletions
| diff --git a/src/components/molecules/buttons/back-to-top.stories.tsx b/src/components/molecules/buttons/back-to-top.stories.tsx index f1a36e5..fe58293 100644 --- a/src/components/molecules/buttons/back-to-top.stories.tsx +++ b/src/components/molecules/buttons/back-to-top.stories.tsx @@ -6,11 +6,14 @@ export default {    title: 'Molecules/Buttons',    component: BackToTopComponent,    argTypes: { -    additionalClasses: { +    className: {        control: {          type: 'text',        }, -      description: 'Add additional classes to the button wrapper.', +      description: 'Set additional classnames to the button wrapper.', +      table: { +        category: 'Styles', +      },        type: {          name: 'string',          required: false, diff --git a/src/components/molecules/buttons/back-to-top.tsx b/src/components/molecules/buttons/back-to-top.tsx index f25d3e9..56c5247 100644 --- a/src/components/molecules/buttons/back-to-top.tsx +++ b/src/components/molecules/buttons/back-to-top.tsx @@ -1,14 +1,14 @@  import ButtonLink from '@components/atoms/buttons/button-link';  import Arrow from '@components/atoms/icons/arrow'; -import { FC } from 'react'; +import { VFC } from 'react';  import { useIntl } from 'react-intl';  import styles from './back-to-top.module.scss'; -type BackToTopProps = { +export type BackToTopProps = {    /** -   * Add additional classes to the button wrapper. +   * Set additional classnames to the button wrapper.     */ -  additionalClasses?: string; +  className?: string;    /**     * An element id (without hashtag) to use as anchor.     */ @@ -20,7 +20,7 @@ type BackToTopProps = {   *   * Render a back to top link.   */ -const BackToTop: FC<BackToTopProps> = ({ additionalClasses, target }) => { +const BackToTop: VFC<BackToTopProps> = ({ className = '', target }) => {    const intl = useIntl();    const linkName = intl.formatMessage({      defaultMessage: 'Back to top', @@ -29,7 +29,7 @@ const BackToTop: FC<BackToTopProps> = ({ additionalClasses, target }) => {    });    return ( -    <div className={`${styles.wrapper} ${additionalClasses}`}> +    <div className={`${styles.wrapper} ${className}`}>        <ButtonLink shape="square" target={`#${target}`} aria-label={linkName}>          <Arrow direction="top" />        </ButtonLink> diff --git a/src/components/molecules/buttons/help-button.stories.tsx b/src/components/molecules/buttons/help-button.stories.tsx index 7ed953e..cfc1b0b 100644 --- a/src/components/molecules/buttons/help-button.stories.tsx +++ b/src/components/molecules/buttons/help-button.stories.tsx @@ -6,11 +6,11 @@ export default {    title: 'Molecules/Buttons',    component: HelpButtonComponent,    argTypes: { -    classes: { +    className: {        control: {          type: 'text',        }, -      description: 'Set additional classes to the button.', +      description: 'Set additional classnames to the button wrapper.',        table: {          category: 'Options',        }, diff --git a/src/components/molecules/buttons/help-button.tsx b/src/components/molecules/buttons/help-button.tsx index d933829..aeb84ec 100644 --- a/src/components/molecules/buttons/help-button.tsx +++ b/src/components/molecules/buttons/help-button.tsx @@ -1,13 +1,13 @@  import Button, { ButtonProps } from '@components/atoms/buttons/button'; -import { FC } from 'react'; +import { VFC } from 'react';  import { useIntl } from 'react-intl';  import styles from './help-button.module.scss';  export type HelpButtonProps = Pick<ButtonProps, 'onClick'> & {    /** -   * Set additional classes to the button. +   * Set additional classnames to the button wrapper.     */ -  classes?: string; +  className?: string;  };  /** @@ -15,7 +15,7 @@ export type HelpButtonProps = Pick<ButtonProps, 'onClick'> & {   *   * Render a button with an interrogation mark icon.   */ -const HelpButton: FC<HelpButtonProps> = ({ classes = '', onClick }) => { +const HelpButton: VFC<HelpButtonProps> = ({ className = '', onClick }) => {    const intl = useIntl();    const text = intl.formatMessage({      defaultMessage: 'Help', @@ -26,7 +26,7 @@ const HelpButton: FC<HelpButtonProps> = ({ classes = '', onClick }) => {    return (      <Button        shape="circle" -      additionalClasses={`${styles.btn} ${classes}`} +      className={`${styles.btn} ${className}`}        onClick={onClick}      >        <span className="screen-reader-text">{text}</span> diff --git a/src/components/molecules/images/responsive-image.tsx b/src/components/molecules/images/responsive-image.tsx index db2f5ab..9f96f18 100644 --- a/src/components/molecules/images/responsive-image.tsx +++ b/src/components/molecules/images/responsive-image.tsx @@ -1,6 +1,6 @@  import Link from '@components/atoms/links/link';  import Image, { ImageProps } from 'next/image'; -import { FC } from 'react'; +import { VFC } from 'react';  import styles from './responsive-image.module.scss';  type ResponsiveImageProps = Omit<ImageProps, 'alt' | 'width' | 'height'> & { @@ -31,7 +31,7 @@ type ResponsiveImageProps = Omit<ImageProps, 'alt' | 'width' | 'height'> & {   *   * Render a responsive image wrapped in a figure element.   */ -const ResponsiveImage: FC<ResponsiveImageProps> = ({ +const ResponsiveImage: VFC<ResponsiveImageProps> = ({    alt,    caption,    layout, @@ -42,7 +42,7 @@ const ResponsiveImage: FC<ResponsiveImageProps> = ({    return (      <figure className={styles.wrapper}>        {target ? ( -        <Link href={target} classes={styles.link}> +        <Link href={target} className={styles.link}>            <Image alt={alt} layout={layout || 'intrinsic'} {...props} />            {caption && (              <figcaption className={styles.caption}>{caption}</figcaption> diff --git a/src/components/molecules/layout/branding.tsx b/src/components/molecules/layout/branding.tsx index efb2e34..9f564bf 100644 --- a/src/components/molecules/layout/branding.tsx +++ b/src/components/molecules/layout/branding.tsx @@ -1,6 +1,6 @@  import Heading from '@components/atoms/headings/heading';  import Link from 'next/link'; -import { FC } from 'react'; +import { VFC } from 'react';  import { useIntl } from 'react-intl';  import styles from './branding.module.scss';  import FlippingLogo from './flipping-logo'; @@ -33,7 +33,7 @@ type BrandingProps = {   *   * Render the branding logo, title and optional baseline.   */ -const Branding: FC<BrandingProps> = ({ +const Branding: VFC<BrandingProps> = ({    baseline,    isHome = false,    photo, @@ -61,7 +61,7 @@ const Branding: FC<BrandingProps> = ({    return (      <div className={styles.wrapper}>        <FlippingLogo -        additionalClasses={styles.logo} +        className={styles.logo}          altText={altText}          logoTitle={logoTitle}          photo={photo} @@ -70,7 +70,7 @@ const Branding: FC<BrandingProps> = ({          isFake={!isHome}          level={1}          withMargin={false} -        additionalClasses={styles.title} +        className={styles.title}        >          {withLink ? (            <Link href="/"> @@ -85,7 +85,7 @@ const Branding: FC<BrandingProps> = ({            isFake={true}            level={4}            withMargin={false} -          additionalClasses={styles.baseline} +          className={styles.baseline}          >            {baseline}          </Heading> diff --git a/src/components/molecules/layout/flipping-logo.stories.tsx b/src/components/molecules/layout/flipping-logo.stories.tsx index 1508269..1ac8de8 100644 --- a/src/components/molecules/layout/flipping-logo.stories.tsx +++ b/src/components/molecules/layout/flipping-logo.stories.tsx @@ -5,11 +5,21 @@ export default {    title: 'Molecules/Layout',    component: FlippingLogoComponent,    argTypes: { -    additionalClasses: { +    altText: { +      control: { +        type: 'text', +      }, +      description: 'Photo alternative text.', +      type: { +        name: 'string', +        required: true, +      }, +    }, +    className: {        control: {          type: 'text',        }, -      description: 'Adds additional classes to the logo wrapper.', +      description: 'Set additional classnames to the logo wrapper.',        table: {          category: 'Options',        }, @@ -18,14 +28,17 @@ export default {          required: false,        },      }, -    altText: { +    logoTitle: {        control: {          type: 'text',        }, -      description: 'Photo alternative text.', +      description: 'An accessible name for the logo.', +      table: { +        category: 'Accessibility', +      },        type: {          name: 'string', -        required: true, +        required: false,        },      },      photo: { diff --git a/src/components/molecules/layout/flipping-logo.tsx b/src/components/molecules/layout/flipping-logo.tsx index 7bb7afc..6f7645f 100644 --- a/src/components/molecules/layout/flipping-logo.tsx +++ b/src/components/molecules/layout/flipping-logo.tsx @@ -1,13 +1,13 @@  import Logo from '@components/atoms/images/logo';  import Image from 'next/image'; -import { FC } from 'react'; +import { VFC } from 'react';  import styles from './flipping-logo.module.scss';  type FlippingLogoProps = {    /** -   * Adds additional classes to the logo wrapper. +   * Set additional classnames to the logo wrapper.     */ -  additionalClasses?: string; +  className?: string;    /**     * Photo alternative text.     */ @@ -27,14 +27,14 @@ type FlippingLogoProps = {   *   * Render a logo and a photo with a flipping effect.   */ -const FlippingLogo: FC<FlippingLogoProps> = ({ -  additionalClasses, +const FlippingLogo: VFC<FlippingLogoProps> = ({ +  className = '',    altText,    logoTitle,    photo,  }) => {    return ( -    <div className={`${styles.logo} ${additionalClasses}`}> +    <div className={`${styles.logo} ${className}`}>        <div className={styles.logo__front}>          <Image src={photo} alt={altText} layout="fill" objectFit="cover" />        </div> diff --git a/src/components/molecules/modals/modal.stories.tsx b/src/components/molecules/modals/modal.stories.tsx index b68a24b..bd7d9f4 100644 --- a/src/components/molecules/modals/modal.stories.tsx +++ b/src/components/molecules/modals/modal.stories.tsx @@ -15,6 +15,19 @@ export default {          required: true,        },      }, +    className: { +      control: { +        type: 'text', +      }, +      description: 'Set additional classnames to the modal.', +      table: { +        category: 'Styles', +      }, +      type: { +        name: 'string', +        required: false, +      }, +    },      icon: {        control: {          type: 'select', diff --git a/src/components/molecules/modals/modal.tsx b/src/components/molecules/modals/modal.tsx index 4dc3b0a..ce12e7a 100644 --- a/src/components/molecules/modals/modal.tsx +++ b/src/components/molecules/modals/modal.tsx @@ -1,17 +1,29 @@  import Heading from '@components/atoms/headings/heading'; +import { CogProps } from '@components/atoms/icons/cog'; +import { MagnifyingGlassProps } from '@components/atoms/icons/magnifying-glass';  import dynamic from 'next/dynamic'; -import { FC, ReactNode } from 'react'; +import { FC } from 'react';  import styles from './modal.module.scss';  export type Icons = 'cogs' | 'search';  export type ModalProps = { +  /** +   * Set additional classnames. +   */ +  className?: string; +  /** +   * A icon to illustrate the modal. +   */    icon?: Icons; +  /** +   * The modal title. +   */    title?: string;  }; -const CogIcon = dynamic<ReactNode>(() => import('@components/atoms/icons/cog')); -const SearchIcon = dynamic<ReactNode>( +const CogIcon = dynamic<CogProps>(() => import('@components/atoms/icons/cog')); +const SearchIcon = dynamic<MagnifyingGlassProps>(    () => import('@components/atoms/icons/magnifying-glass')  ); @@ -20,7 +32,7 @@ const SearchIcon = dynamic<ReactNode>(   *   * Render a modal component with an optional title and icon.   */ -const Modal: FC<ModalProps> = ({ children, icon, title }) => { +const Modal: FC<ModalProps> = ({ children, className = '', icon, title }) => {    const getIcon = (id: Icons) => {      switch (id) {        case 'cogs': @@ -33,7 +45,7 @@ const Modal: FC<ModalProps> = ({ children, icon, title }) => {    };    return ( -    <div className={styles.wrapper}> +    <div className={`${styles.wrapper} ${className}`}>        {title && (          <Heading isFake={true} level={3}>            {icon && <span className={styles.icon}>{getIcon(icon)}</span>} diff --git a/src/components/molecules/modals/tooltip.stories.tsx b/src/components/molecules/modals/tooltip.stories.tsx index a57cf34..63fc71d 100644 --- a/src/components/molecules/modals/tooltip.stories.tsx +++ b/src/components/molecules/modals/tooltip.stories.tsx @@ -5,6 +5,19 @@ export default {    title: 'Molecules/Modals',    component: TooltipComponent,    argTypes: { +    className: { +      control: { +        type: 'text', +      }, +      description: 'Set additional classnames to the tooltip.', +      table: { +        category: 'Styles', +      }, +      type: { +        name: 'string', +        required: false, +      }, +    },      content: {        control: {          type: 'text', @@ -15,6 +28,16 @@ export default {          required: true,        },      }, +    icon: { +      control: { +        type: 'text', +      }, +      description: 'The tooltip icon.', +      type: { +        name: 'string', +        required: true, +      }, +    },      title: {        control: {          type: 'text', diff --git a/src/components/molecules/modals/tooltip.tsx b/src/components/molecules/modals/tooltip.tsx index ceb0b14..73f36e7 100644 --- a/src/components/molecules/modals/tooltip.tsx +++ b/src/components/molecules/modals/tooltip.tsx @@ -1,12 +1,12 @@  import List, { type ListItem } from '@components/atoms/lists/list'; -import { FC, ReactNode } from 'react'; +import { ReactNode, VFC } from 'react';  import styles from './tooltip.module.scss';  export type TooltipProps = {    /** -   * Set additional classes to the tooltip wrapper. +   * Set additional classnames to the tooltip wrapper.     */ -  classes?: string; +  className?: string;    /**     * The tooltip body.     */ @@ -26,7 +26,12 @@ export type TooltipProps = {   *   * Render a tooltip modal.   */ -const Tooltip: FC<TooltipProps> = ({ classes = '', content, icon, title }) => { +const Tooltip: VFC<TooltipProps> = ({ +  className = '', +  content, +  icon, +  title, +}) => {    /**     * Format an array of strings to an array of object with id and value.     * @@ -40,7 +45,7 @@ const Tooltip: FC<TooltipProps> = ({ classes = '', content, icon, title }) => {    };    return ( -    <div className={`${styles.wrapper} ${classes}`}> +    <div className={`${styles.wrapper} ${className}`}>        <div className={styles.title}>          <span className={styles.icon}>{icon}</span>          {title} | 
