summaryrefslogtreecommitdiffstats
path: root/src/components/molecules
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/molecules')
-rw-r--r--src/components/molecules/buttons/back-to-top.tsx14
-rw-r--r--src/components/molecules/buttons/heading-button.tsx4
-rw-r--r--src/components/molecules/buttons/help-button.tsx6
-rw-r--r--src/components/molecules/forms/ackee-select.test.tsx16
-rw-r--r--src/components/molecules/forms/ackee-select.tsx6
-rw-r--r--src/components/molecules/forms/labelled-field.tsx4
-rw-r--r--src/components/molecules/forms/labelled-select.tsx15
-rw-r--r--src/components/molecules/forms/motion-toggle.tsx8
-rw-r--r--src/components/molecules/forms/prism-theme-toggle.tsx8
-rw-r--r--src/components/molecules/forms/select-with-tooltip.tsx10
-rw-r--r--src/components/molecules/forms/theme-toggle.tsx8
-rw-r--r--src/components/molecules/forms/toggle.tsx18
-rw-r--r--src/components/molecules/images/responsive-image.tsx10
-rw-r--r--src/components/molecules/layout/branding.tsx12
-rw-r--r--src/components/molecules/layout/card.tsx8
-rw-r--r--src/components/molecules/layout/flipping-logo.tsx10
-rw-r--r--src/components/molecules/layout/meta.tsx4
-rw-r--r--src/components/molecules/layout/widget.tsx10
-rw-r--r--src/components/molecules/modals/modal.test.tsx13
-rw-r--r--src/components/molecules/modals/modal.tsx14
-rw-r--r--src/components/molecules/modals/tooltip.tsx4
-rw-r--r--src/components/molecules/nav/breadcrumb.tsx4
-rw-r--r--src/components/molecules/nav/nav.tsx4
23 files changed, 109 insertions, 101 deletions
diff --git a/src/components/molecules/buttons/back-to-top.tsx b/src/components/molecules/buttons/back-to-top.tsx
index 8a52231..bd1925a 100644
--- a/src/components/molecules/buttons/back-to-top.tsx
+++ b/src/components/molecules/buttons/back-to-top.tsx
@@ -1,18 +1,16 @@
-import ButtonLink from '@components/atoms/buttons/button-link';
+import ButtonLink, {
+ type ButtonLinkProps,
+} from '@components/atoms/buttons/button-link';
import Arrow from '@components/atoms/icons/arrow';
-import { VFC } from 'react';
+import { FC } from 'react';
import { useIntl } from 'react-intl';
import styles from './back-to-top.module.scss';
-export type BackToTopProps = {
+export type BackToTopProps = Pick<ButtonLinkProps, 'target'> & {
/**
* Set additional classnames to the button wrapper.
*/
className?: string;
- /**
- * An element id (without hashtag) to use as anchor.
- */
- target: string;
};
/**
@@ -20,7 +18,7 @@ export type BackToTopProps = {
*
* Render a back to top link.
*/
-const BackToTop: VFC<BackToTopProps> = ({ className = '', target }) => {
+const BackToTop: FC<BackToTopProps> = ({ className = '', target }) => {
const intl = useIntl();
const linkName = intl.formatMessage({
defaultMessage: 'Back to top',
diff --git a/src/components/molecules/buttons/heading-button.tsx b/src/components/molecules/buttons/heading-button.tsx
index fc79749..0ed9a76 100644
--- a/src/components/molecules/buttons/heading-button.tsx
+++ b/src/components/molecules/buttons/heading-button.tsx
@@ -1,6 +1,6 @@
import Heading, { type HeadingProps } from '@components/atoms/headings/heading';
import PlusMinus from '@components/atoms/icons/plus-minus';
-import { SetStateAction, VFC } from 'react';
+import { FC, SetStateAction } from 'react';
import { useIntl } from 'react-intl';
import styles from './heading-button.module.scss';
@@ -28,7 +28,7 @@ export type HeadingButtonProps = Pick<HeadingProps, 'level'> & {
*
* Render a button as accordion title to toggle body.
*/
-const HeadingButton: VFC<HeadingButtonProps> = ({
+const HeadingButton: FC<HeadingButtonProps> = ({
className = '',
expanded,
level,
diff --git a/src/components/molecules/buttons/help-button.tsx b/src/components/molecules/buttons/help-button.tsx
index aeb84ec..f19322f 100644
--- a/src/components/molecules/buttons/help-button.tsx
+++ b/src/components/molecules/buttons/help-button.tsx
@@ -1,5 +1,5 @@
-import Button, { ButtonProps } from '@components/atoms/buttons/button';
-import { VFC } from 'react';
+import Button, { type ButtonProps } from '@components/atoms/buttons/button';
+import { FC } from 'react';
import { useIntl } from 'react-intl';
import styles from './help-button.module.scss';
@@ -15,7 +15,7 @@ export type HelpButtonProps = Pick<ButtonProps, 'onClick'> & {
*
* Render a button with an interrogation mark icon.
*/
-const HelpButton: VFC<HelpButtonProps> = ({ className = '', onClick }) => {
+const HelpButton: FC<HelpButtonProps> = ({ className = '', onClick }) => {
const intl = useIntl();
const text = intl.formatMessage({
defaultMessage: 'Help',
diff --git a/src/components/molecules/forms/ackee-select.test.tsx b/src/components/molecules/forms/ackee-select.test.tsx
index e1e6b2d..ec27922 100644
--- a/src/components/molecules/forms/ackee-select.test.tsx
+++ b/src/components/molecules/forms/ackee-select.test.tsx
@@ -1,5 +1,5 @@
-import userEvent from '@testing-library/user-event';
-import { render, screen } from '@test-utils';
+import user from '@testing-library/user-event';
+import { act, render, screen } from '@test-utils';
import AckeeSelect from './ackee-select';
describe('Select', () => {
@@ -9,13 +9,15 @@ describe('Select', () => {
expect(screen.queryByRole('combobox')).not.toHaveValue('partial');
});
- it('should correctly change value when user choose another option', () => {
+ it('should correctly change value when user choose another option', async () => {
render(<AckeeSelect initialValue="full" />);
- userEvent.selectOptions(
- screen.getByRole('combobox'),
- screen.getByRole('option', { name: 'Partial' })
- );
+ await act(async () => {
+ await user.selectOptions(
+ screen.getByRole('combobox'),
+ screen.getByRole('option', { name: 'Partial' })
+ );
+ });
expect(screen.getByRole('combobox')).toHaveValue('partial');
expect(screen.queryByRole('combobox')).not.toHaveValue('full');
diff --git a/src/components/molecules/forms/ackee-select.tsx b/src/components/molecules/forms/ackee-select.tsx
index 4a8410c..101e5b5 100644
--- a/src/components/molecules/forms/ackee-select.tsx
+++ b/src/components/molecules/forms/ackee-select.tsx
@@ -1,8 +1,8 @@
import { SelectOptions } from '@components/atoms/forms/select';
-import { Dispatch, SetStateAction, useState, VFC } from 'react';
+import { Dispatch, FC, SetStateAction, useState } from 'react';
import { useIntl } from 'react-intl';
import SelectWithTooltip, {
- SelectWithTooltipProps,
+ type SelectWithTooltipProps,
} from './select-with-tooltip';
export type AckeeOptions = 'full' | 'partial';
@@ -22,7 +22,7 @@ export type AckeeSelectProps = Pick<
*
* Render a select to set Ackee settings.
*/
-const AckeeSelect: VFC<AckeeSelectProps> = ({ initialValue, ...props }) => {
+const AckeeSelect: FC<AckeeSelectProps> = ({ initialValue, ...props }) => {
const intl = useIntl();
const [value, setValue] = useState<AckeeOptions>(initialValue);
diff --git a/src/components/molecules/forms/labelled-field.tsx b/src/components/molecules/forms/labelled-field.tsx
index 08d0126..ecc9255 100644
--- a/src/components/molecules/forms/labelled-field.tsx
+++ b/src/components/molecules/forms/labelled-field.tsx
@@ -1,6 +1,6 @@
import Field, { type FieldProps } from '@components/atoms/forms/field';
import Label from '@components/atoms/forms/label';
-import { VFC } from 'react';
+import { FC } from 'react';
import styles from './labelled-field.module.scss';
export type LabelledFieldProps = FieldProps & {
@@ -23,7 +23,7 @@ export type LabelledFieldProps = FieldProps & {
*
* Render a field tied to a label.
*/
-const LabelledField: VFC<LabelledFieldProps> = ({
+const LabelledField: FC<LabelledFieldProps> = ({
hideLabel = false,
id,
label,
diff --git a/src/components/molecules/forms/labelled-select.tsx b/src/components/molecules/forms/labelled-select.tsx
index 7d4237a..23057d0 100644
--- a/src/components/molecules/forms/labelled-select.tsx
+++ b/src/components/molecules/forms/labelled-select.tsx
@@ -1,6 +1,6 @@
-import Label, { LabelProps } from '@components/atoms/forms/label';
+import Label, { type LabelProps } from '@components/atoms/forms/label';
import Select, { type SelectProps } from '@components/atoms/forms/select';
-import { VFC } from 'react';
+import { FC } from 'react';
import styles from './labelled-select.module.scss';
export type LabelledSelectProps = Omit<
@@ -14,7 +14,7 @@ export type LabelledSelectProps = Omit<
/**
* Set additional classnames to the label.
*/
- labelClassName?: string;
+ labelClassName?: LabelProps['className'];
/**
* The label position. Default: top.
*/
@@ -26,10 +26,15 @@ export type LabelledSelectProps = Omit<
/**
* Set additional classnames to the select field.
*/
- selectClassName?: string;
+ selectClassName?: SelectProps['className'];
};
-const LabelledSelect: VFC<LabelledSelectProps> = ({
+/**
+ * LabelledSelect component
+ *
+ * Render a select with a label.
+ */
+const LabelledSelect: FC<LabelledSelectProps> = ({
id,
label,
labelClassName = '',
diff --git a/src/components/molecules/forms/motion-toggle.tsx b/src/components/molecules/forms/motion-toggle.tsx
index 9f30b42..24b54ae 100644
--- a/src/components/molecules/forms/motion-toggle.tsx
+++ b/src/components/molecules/forms/motion-toggle.tsx
@@ -1,8 +1,8 @@
import Toggle, {
- ToggleChoices,
- ToggleProps,
+ type ToggleChoices,
+ type ToggleProps,
} from '@components/molecules/forms/toggle';
-import { useState, VFC } from 'react';
+import { FC, useState } from 'react';
import { useIntl } from 'react-intl';
export type MotionToggleProps = Pick<ToggleProps, 'labelClassName' | 'value'>;
@@ -12,7 +12,7 @@ export type MotionToggleProps = Pick<ToggleProps, 'labelClassName' | 'value'>;
*
* Render a Toggle component to set reduce motion.
*/
-const MotionToggle: VFC<MotionToggleProps> = ({ value, ...props }) => {
+const MotionToggle: FC<MotionToggleProps> = ({ value, ...props }) => {
const intl = useIntl();
const [isDeactivated, setIsDeactivated] = useState<boolean>(value);
const reduceMotionLabel = intl.formatMessage({
diff --git a/src/components/molecules/forms/prism-theme-toggle.tsx b/src/components/molecules/forms/prism-theme-toggle.tsx
index daee6bd..0b9c447 100644
--- a/src/components/molecules/forms/prism-theme-toggle.tsx
+++ b/src/components/molecules/forms/prism-theme-toggle.tsx
@@ -1,10 +1,10 @@
import Moon from '@components/atoms/icons/moon';
import Sun from '@components/atoms/icons/sun';
import Toggle, {
- ToggleChoices,
- ToggleProps,
+ type ToggleChoices,
+ type ToggleProps,
} from '@components/molecules/forms/toggle';
-import { useState, VFC } from 'react';
+import { FC, useState } from 'react';
import { useIntl } from 'react-intl';
export type PrismThemeToggleProps = Pick<
@@ -17,7 +17,7 @@ export type PrismThemeToggleProps = Pick<
*
* Render a Toggle component to set code blocks theme.
*/
-const PrismThemeToggle: VFC<PrismThemeToggleProps> = ({ value, ...props }) => {
+const PrismThemeToggle: FC<PrismThemeToggleProps> = ({ value, ...props }) => {
const intl = useIntl();
const [isDarkTheme, setIsDarkTheme] = useState<boolean>(value);
const themeLabel = intl.formatMessage({
diff --git a/src/components/molecules/forms/select-with-tooltip.tsx b/src/components/molecules/forms/select-with-tooltip.tsx
index f537e1e..cf7b041 100644
--- a/src/components/molecules/forms/select-with-tooltip.tsx
+++ b/src/components/molecules/forms/select-with-tooltip.tsx
@@ -1,4 +1,4 @@
-import { useState, VFC } from 'react';
+import { FC, useState } from 'react';
import HelpButton from '../buttons/help-button';
import Tooltip, { type TooltipProps } from '../modals/tooltip';
import LabelledSelect, { type LabelledSelectProps } from './labelled-select';
@@ -10,13 +10,9 @@ export type SelectWithTooltipProps = Omit<
> &
Pick<TooltipProps, 'title' | 'content'> & {
/**
- * The select label.
- */
- label: string;
- /**
* Set additional classnames to the tooltip wrapper.
*/
- tooltipClassName?: string;
+ tooltipClassName?: TooltipProps['className'];
};
/**
@@ -24,7 +20,7 @@ export type SelectWithTooltipProps = Omit<
*
* Render a select with a button to display a tooltip about options.
*/
-const SelectWithTooltip: VFC<SelectWithTooltipProps> = ({
+const SelectWithTooltip: FC<SelectWithTooltipProps> = ({
title,
content,
id,
diff --git a/src/components/molecules/forms/theme-toggle.tsx b/src/components/molecules/forms/theme-toggle.tsx
index eb56ce9..10c6c47 100644
--- a/src/components/molecules/forms/theme-toggle.tsx
+++ b/src/components/molecules/forms/theme-toggle.tsx
@@ -1,10 +1,10 @@
import Moon from '@components/atoms/icons/moon';
import Sun from '@components/atoms/icons/sun';
import Toggle, {
- ToggleChoices,
- ToggleProps,
+ type ToggleChoices,
+ type ToggleProps,
} from '@components/molecules/forms/toggle';
-import { useState, VFC } from 'react';
+import { FC, useState } from 'react';
import { useIntl } from 'react-intl';
export type ThemeToggleProps = Pick<ToggleProps, 'labelClassName' | 'value'>;
@@ -14,7 +14,7 @@ export type ThemeToggleProps = Pick<ToggleProps, 'labelClassName' | 'value'>;
*
* Render a Toggle component to set theme.
*/
-const ThemeToggle: VFC<ThemeToggleProps> = ({ value, ...props }) => {
+const ThemeToggle: FC<ThemeToggleProps> = ({ value, ...props }) => {
const intl = useIntl();
const [isDarkTheme, setIsDarkTheme] = useState<boolean>(value);
const themeLabel = intl.formatMessage({
diff --git a/src/components/molecules/forms/toggle.tsx b/src/components/molecules/forms/toggle.tsx
index dff2d2d..288062d 100644
--- a/src/components/molecules/forms/toggle.tsx
+++ b/src/components/molecules/forms/toggle.tsx
@@ -1,6 +1,6 @@
-import Checkbox from '@components/atoms/forms/checkbox';
+import Checkbox, { type CheckboxProps } from '@components/atoms/forms/checkbox';
import Label, { type LabelProps } from '@components/atoms/forms/label';
-import { ReactNode, VFC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './toggle.module.scss';
export type ToggleChoices = {
@@ -14,32 +14,24 @@ export type ToggleChoices = {
right: ReactNode;
};
-export type ToggleProps = {
+export type ToggleProps = Pick<CheckboxProps, 'id' | 'name'> & {
/**
* The toggle choices.
*/
choices: ToggleChoices;
/**
- * The input id.
- */
- id: string;
- /**
* The toggle label.
*/
label: string;
/**
* Set additional classnames to the label.
*/
- labelClassName?: string;
+ labelClassName?: LabelProps['className'];
/**
* The label size.
*/
labelSize?: LabelProps['size'];
/**
- * The input name.
- */
- name: string;
- /**
* The toggle value. True if checked.
*/
value: boolean;
@@ -54,7 +46,7 @@ export type ToggleProps = {
*
* Render a toggle with a label and two choices.
*/
-const Toggle: VFC<ToggleProps> = ({
+const Toggle: FC<ToggleProps> = ({
choices,
id,
label,
diff --git a/src/components/molecules/images/responsive-image.tsx b/src/components/molecules/images/responsive-image.tsx
index 1d8787e..31cbcd1 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 { VFC } from 'react';
+import Link, { type LinkProps } from '@components/atoms/links/link';
+import Image, { type ImageProps } from 'next/image';
+import { FC } from 'react';
import styles from './responsive-image.module.scss';
export type ResponsiveImageProps = Omit<
@@ -26,7 +26,7 @@ export type ResponsiveImageProps = Omit<
/**
* A link target.
*/
- target?: string;
+ target?: LinkProps['href'];
/**
* The image width.
*/
@@ -38,7 +38,7 @@ export type ResponsiveImageProps = Omit<
*
* Render a responsive image wrapped in a figure element.
*/
-const ResponsiveImage: VFC<ResponsiveImageProps> = ({
+const ResponsiveImage: FC<ResponsiveImageProps> = ({
alt,
caption,
className = '',
diff --git a/src/components/molecules/layout/branding.tsx b/src/components/molecules/layout/branding.tsx
index 9f564bf..9fe89e7 100644
--- a/src/components/molecules/layout/branding.tsx
+++ b/src/components/molecules/layout/branding.tsx
@@ -1,11 +1,11 @@
import Heading from '@components/atoms/headings/heading';
import Link from 'next/link';
-import { VFC } from 'react';
+import { FC } from 'react';
import { useIntl } from 'react-intl';
import styles from './branding.module.scss';
-import FlippingLogo from './flipping-logo';
+import FlippingLogo, { type FlippingLogoProps } from './flipping-logo';
-type BrandingProps = {
+export type BrandingProps = Pick<FlippingLogoProps, 'photo'> & {
/**
* The Branding baseline.
*/
@@ -15,10 +15,6 @@ type BrandingProps = {
*/
isHome?: boolean;
/**
- * A photography URL.
- */
- photo: string;
- /**
* The Branding title;
*/
title: string;
@@ -33,7 +29,7 @@ type BrandingProps = {
*
* Render the branding logo, title and optional baseline.
*/
-const Branding: VFC<BrandingProps> = ({
+const Branding: FC<BrandingProps> = ({
baseline,
isHome = false,
photo,
diff --git a/src/components/molecules/layout/card.tsx b/src/components/molecules/layout/card.tsx
index 23a0e54..89f100e 100644
--- a/src/components/molecules/layout/card.tsx
+++ b/src/components/molecules/layout/card.tsx
@@ -1,11 +1,11 @@
import ButtonLink from '@components/atoms/buttons/button-link';
import Heading, { type HeadingLevel } from '@components/atoms/headings/heading';
import DescriptionList, {
- DescriptionListItem,
+ type DescriptionListItem,
} from '@components/atoms/lists/description-list';
-import { VFC } from 'react';
+import { FC } from 'react';
import ResponsiveImage, {
- ResponsiveImageProps,
+ type ResponsiveImageProps,
} from '../images/responsive-image';
import styles from './card.module.scss';
@@ -68,7 +68,7 @@ export type CardProps = {
*
* Render a link with minimal information about its content.
*/
-const Card: VFC<CardProps> = ({
+const Card: FC<CardProps> = ({
className = '',
cover,
coverFit = 'cover',
diff --git a/src/components/molecules/layout/flipping-logo.tsx b/src/components/molecules/layout/flipping-logo.tsx
index 6f7645f..4a216ef 100644
--- a/src/components/molecules/layout/flipping-logo.tsx
+++ b/src/components/molecules/layout/flipping-logo.tsx
@@ -1,9 +1,9 @@
-import Logo from '@components/atoms/images/logo';
+import Logo, { type LogoProps } from '@components/atoms/images/logo';
import Image from 'next/image';
-import { VFC } from 'react';
+import { FC } from 'react';
import styles from './flipping-logo.module.scss';
-type FlippingLogoProps = {
+export type FlippingLogoProps = {
/**
* Set additional classnames to the logo wrapper.
*/
@@ -15,7 +15,7 @@ type FlippingLogoProps = {
/**
* Logo image title.
*/
- logoTitle?: string;
+ logoTitle?: LogoProps['title'];
/**
* Photo url.
*/
@@ -27,7 +27,7 @@ type FlippingLogoProps = {
*
* Render a logo and a photo with a flipping effect.
*/
-const FlippingLogo: VFC<FlippingLogoProps> = ({
+const FlippingLogo: FC<FlippingLogoProps> = ({
className = '',
altText,
logoTitle,
diff --git a/src/components/molecules/layout/meta.tsx b/src/components/molecules/layout/meta.tsx
index 218ebd9..fcce473 100644
--- a/src/components/molecules/layout/meta.tsx
+++ b/src/components/molecules/layout/meta.tsx
@@ -2,7 +2,7 @@ import DescriptionList, {
type DescriptionListProps,
type DescriptionListItem,
} from '@components/atoms/lists/description-list';
-import { ReactNode, VFC } from 'react';
+import { FC, ReactNode } from 'react';
export type MetaItem = {
/**
@@ -43,7 +43,7 @@ export type MetaProps = {
*
* Renders the page metadata.
*/
-const Meta: VFC<MetaProps> = ({ data, ...props }) => {
+const Meta: FC<MetaProps> = ({ data, ...props }) => {
/**
* Transform the metadata to description list item format.
*
diff --git a/src/components/molecules/layout/widget.tsx b/src/components/molecules/layout/widget.tsx
index c04362a..feb2add 100644
--- a/src/components/molecules/layout/widget.tsx
+++ b/src/components/molecules/layout/widget.tsx
@@ -1,5 +1,7 @@
-import { FC, useState } from 'react';
-import HeadingButton, { HeadingButtonProps } from '../buttons/heading-button';
+import { FC, ReactNode, useState } from 'react';
+import HeadingButton, {
+ type HeadingButtonProps,
+} from '../buttons/heading-button';
import styles from './widget.module.scss';
export type WidgetProps = Pick<
@@ -7,6 +9,10 @@ export type WidgetProps = Pick<
'expanded' | 'level' | 'title'
> & {
/**
+ * The widget body.
+ */
+ children: ReactNode;
+ /**
* Set additional classnames to the widget wrapper.
*/
className?: string;
diff --git a/src/components/molecules/modals/modal.test.tsx b/src/components/molecules/modals/modal.test.tsx
index 14fb224..9a0e237 100644
--- a/src/components/molecules/modals/modal.test.tsx
+++ b/src/components/molecules/modals/modal.test.tsx
@@ -1,9 +1,18 @@
import { render, screen } from '@test-utils';
import Modal from './modal';
+const title = 'A custom title';
+const children =
+ 'Labore ullam delectus sit modi quam dolores. Ratione id sint aliquid facilis ipsum. Unde necessitatibus provident minus.';
+
describe('Modal', () => {
it('renders a title', () => {
- render(<Modal title="A custom title" />);
- expect(screen.getByText('A custom title')).toBeInTheDocument();
+ render(<Modal title={title}>{children}</Modal>);
+ expect(screen.getByText(title)).toBeInTheDocument();
+ });
+
+ it('renders the modal body', () => {
+ render(<Modal title={title}>{children}</Modal>);
+ expect(screen.getByText(children)).toBeInTheDocument();
});
});
diff --git a/src/components/molecules/modals/modal.tsx b/src/components/molecules/modals/modal.tsx
index 52ada57..58f5fa0 100644
--- a/src/components/molecules/modals/modal.tsx
+++ b/src/components/molecules/modals/modal.tsx
@@ -1,21 +1,25 @@
-import Heading from '@components/atoms/headings/heading';
-import { CogProps } from '@components/atoms/icons/cog';
-import { MagnifyingGlassProps } from '@components/atoms/icons/magnifying-glass';
+import Heading, { type HeadingProps } from '@components/atoms/headings/heading';
+import { type CogProps } from '@components/atoms/icons/cog';
+import { type MagnifyingGlassProps } from '@components/atoms/icons/magnifying-glass';
import dynamic from 'next/dynamic';
-import { FC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './modal.module.scss';
export type Icons = 'cogs' | 'search';
export type ModalProps = {
/**
+ * The modal body.
+ */
+ children: ReactNode;
+ /**
* Set additional classnames.
*/
className?: string;
/**
* Set additional classnames to the heading.
*/
- headingClassName?: string;
+ headingClassName?: HeadingProps['className'];
/**
* A icon to illustrate the modal.
*/
diff --git a/src/components/molecules/modals/tooltip.tsx b/src/components/molecules/modals/tooltip.tsx
index 73f36e7..80721f3 100644
--- a/src/components/molecules/modals/tooltip.tsx
+++ b/src/components/molecules/modals/tooltip.tsx
@@ -1,5 +1,5 @@
import List, { type ListItem } from '@components/atoms/lists/list';
-import { ReactNode, VFC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './tooltip.module.scss';
export type TooltipProps = {
@@ -26,7 +26,7 @@ export type TooltipProps = {
*
* Render a tooltip modal.
*/
-const Tooltip: VFC<TooltipProps> = ({
+const Tooltip: FC<TooltipProps> = ({
className = '',
content,
icon,
diff --git a/src/components/molecules/nav/breadcrumb.tsx b/src/components/molecules/nav/breadcrumb.tsx
index 33af735..6dc86a0 100644
--- a/src/components/molecules/nav/breadcrumb.tsx
+++ b/src/components/molecules/nav/breadcrumb.tsx
@@ -1,7 +1,7 @@
import Link from '@components/atoms/links/link';
import { settings } from '@utils/config';
import Script from 'next/script';
-import { VFC } from 'react';
+import { FC } from 'react';
import { useIntl } from 'react-intl';
import { BreadcrumbList, ListItem, WithContext } from 'schema-dts';
import styles from './breadcrumb.module.scss';
@@ -37,7 +37,7 @@ export type BreadcrumbProps = {
*
* Render a breadcrumb navigation.
*/
-const Breadcrumb: VFC<BreadcrumbProps> = ({ items, ...props }) => {
+const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {
const intl = useIntl();
/**
diff --git a/src/components/molecules/nav/nav.tsx b/src/components/molecules/nav/nav.tsx
index 6ef9158..2666ea2 100644
--- a/src/components/molecules/nav/nav.tsx
+++ b/src/components/molecules/nav/nav.tsx
@@ -1,6 +1,6 @@
import Link from '@components/atoms/links/link';
import NavLink from '@components/atoms/links/nav-link';
-import { ReactNode, VFC } from 'react';
+import { FC, ReactNode } from 'react';
import styles from './nav.module.scss';
export type NavItem = {
@@ -46,7 +46,7 @@ export type NavProps = {
*
* Render the nav links.
*/
-const Nav: VFC<NavProps> = ({
+const Nav: FC<NavProps> = ({
className = '',
items,
kind,