From 73e12fe8ae059ef70bbdf8716af421cb72aec76c Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 24 Oct 2023 19:26:47 +0200 Subject: refactor(components): rewrite Breadcrumbs component --- src/components/molecules/nav/breadcrumb.tsx | 130 ---------------------------- 1 file changed, 130 deletions(-) delete mode 100644 src/components/molecules/nav/breadcrumb.tsx (limited to 'src/components/molecules/nav/breadcrumb.tsx') diff --git a/src/components/molecules/nav/breadcrumb.tsx b/src/components/molecules/nav/breadcrumb.tsx deleted file mode 100644 index 51f4633..0000000 --- a/src/components/molecules/nav/breadcrumb.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import Script from 'next/script'; -import type { FC } from 'react'; -import { useIntl } from 'react-intl'; -import type { - BreadcrumbList, - ListItem as ListItemType, - WithContext, -} from 'schema-dts'; -import { settings } from '../../../utils/config'; -import { Link, List, ListItem } from '../../atoms'; -import styles from './breadcrumb.module.scss'; - -export type BreadcrumbItem = { - /** - * The item id. - */ - id: string; - /** - * The item URL. - */ - url: string; - /** - * The item name. - */ - name: string; -}; - -export type BreadcrumbProps = { - /** - * Set additional classnames to the nav element. - */ - className?: string; - /** - * Set additional classnames to the breadcrumb items. - */ - itemClassName?: string; - /** - * The breadcrumb items - */ - items: BreadcrumbItem[]; -}; - -/** - * Breadcrumb component - * - * Render a breadcrumb navigation. - */ -export const Breadcrumb: FC = ({ - itemClassName = '', - items, - ...props -}) => { - const intl = useIntl(); - - const ariaLabel = intl.formatMessage({ - defaultMessage: 'Breadcrumb', - description: 'Breadcrumb: an accessible name for the breadcrumb nav.', - id: '28nnDY', - }); - - /** - * Retrieve the breadcrumb list items. - * - * @param {BreadcrumbItem[]} list - The breadcrumb items. - * @returns {JSX.Element[]} The list items. - */ - const getListItems = (list: BreadcrumbItem[]): JSX.Element[] => - list.map((item, index) => { - const isLastItem = index === list.length - 1; - const itemStyles = isLastItem - ? `${styles.item} screen-reader-text` - : styles.item; - - return ( - - {isLastItem ? item.name : {item.name}} - - ); - }); - - /** - * Retrieve the breadcrumb list items with Schema.org format. - * - * @param {BreadcrumbItem[]} list - The breadcrumb items. - * @returns {ListItemType[]} An array of list items using Schema.org format. - */ - const getSchemaItems = (list: BreadcrumbItem[]): ListItemType[] => { - const schemaItems: ListItemType[] = []; - - list.forEach((item, index) => { - schemaItems.push({ - '@type': 'ListItem', - position: index + 1, - name: item.name, - item: item.url, - }); - }); - - return schemaItems; - }; - - const schemaJsonLd: WithContext = { - '@context': 'https://schema.org', - '@type': 'BreadcrumbList', - '@id': `${settings.url}/#breadcrumb`, - itemListElement: getSchemaItems(items), - }; - - return ( - <> -