import React, {HTMLAttributes, ReactElement, ReactNode} from 'react'; import clsx from 'clsx'; import {ChevronRightIcon} from '../../icons/material/ChevronRight'; import type {BreadcrumbSizeStyle} from './breadcrumb'; export interface BreadcrumbItemProps { sizeStyle?: BreadcrumbSizeStyle; isMenuTrigger?: boolean; isMenuItem?: boolean; children: ReactNode | ((state: {isMenuItem?: boolean}) => ReactNode); isCurrent?: boolean; onSelected?: () => void; isClickable?: boolean; isDisabled?: boolean; className?: string; isLink?: boolean; } export function BreadcrumbItem(props: BreadcrumbItemProps) { const { isCurrent, sizeStyle, isMenuTrigger, isClickable, isDisabled, onSelected, className, isMenuItem, isLink, } = props; const children = typeof props.children === 'function' ? props.children({isMenuItem}) : props.children; if (isMenuItem) { return children as ReactElement; } const domProps: HTMLAttributes = isMenuTrigger ? {} : { tabIndex: isLink && !isDisabled ? 0 : undefined, role: isLink ? 'link' : undefined, 'aria-disabled': isLink ? isDisabled : undefined, 'aria-current': isCurrent && isLink ? 'page' : undefined, onClick: () => onSelected?.(), }; return (
  • {children}
    {isCurrent === false && ( )}
  • ); }