aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/nav
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-25 12:57:12 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-25 12:57:12 +0200
commit8a6f09b564d5d2f02d0a2605f6b52070a910aaa3 (patch)
treecd9e2b6ae6be75f4595b9823e67ebb6bc76df8e8 /src/components/molecules/nav
parent782a5a1e794a9a8ef6b0b892cd3f386ed583c680 (diff)
chore: add a PageLayout component
Diffstat (limited to 'src/components/molecules/nav')
-rw-r--r--src/components/molecules/nav/breadcrumb.stories.tsx13
-rw-r--r--src/components/molecules/nav/breadcrumb.tsx22
2 files changed, 31 insertions, 4 deletions
diff --git a/src/components/molecules/nav/breadcrumb.stories.tsx b/src/components/molecules/nav/breadcrumb.stories.tsx
index 500ae6c..e26b480 100644
--- a/src/components/molecules/nav/breadcrumb.stories.tsx
+++ b/src/components/molecules/nav/breadcrumb.stories.tsx
@@ -22,6 +22,19 @@ export default {
required: false,
},
},
+ itemClassName: {
+ control: {
+ type: 'text',
+ },
+ table: {
+ category: 'Styles',
+ },
+ description: 'Set additional classnames to the breadcrumb items.',
+ type: {
+ name: 'string',
+ required: false,
+ },
+ },
items: {
description: 'The breadcrumb items.',
type: {
diff --git a/src/components/molecules/nav/breadcrumb.tsx b/src/components/molecules/nav/breadcrumb.tsx
index 6dc86a0..d184d65 100644
--- a/src/components/molecules/nav/breadcrumb.tsx
+++ b/src/components/molecules/nav/breadcrumb.tsx
@@ -27,6 +27,10 @@ export type BreadcrumbProps = {
*/
className?: string;
/**
+ * Set additional classnames to the breadcrumb items.
+ */
+ itemClassName?: string;
+ /**
* The breadcrumb items
*/
items: BreadcrumbItem[];
@@ -37,9 +41,19 @@ export type BreadcrumbProps = {
*
* Render a breadcrumb navigation.
*/
-const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {
+const Breadcrumb: FC<BreadcrumbProps> = ({
+ 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.
*
@@ -49,12 +63,12 @@ const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {
const getListItems = (list: BreadcrumbItem[]): JSX.Element[] => {
return list.map((item, index) => {
const isLastItem = index === list.length - 1;
- const itemClassnames = isLastItem
+ const itemStyles = isLastItem
? `${styles.item} screen-reader-text`
: styles.item;
return (
- <li key={item.id} className={itemClassnames}>
+ <li key={item.id} className={`${itemStyles} ${itemClassName}`}>
{isLastItem ? item.name : <Link href={item.url}>{item.name}</Link>}
</li>
);
@@ -96,7 +110,7 @@ const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }}
/>
- <nav {...props}>
+ <nav aria-label={ariaLabel} {...props}>
<span className="screen-reader-text">
{intl.formatMessage({
defaultMessage: 'You are here:',