import Link from 'next/link' import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from './ui/breadcrumb' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from './ui/dropdown-menu' import { Fragment } from 'react' import NaviagteBackButton from './NavigateBackButton' export type Route = { href: string label: string } type RouteGroups = { mostRecent: Route[] inBetween: Route[] root: Route } const groupBreadCrumbHistory = (routes: Route[]) => { const mostRecent = routes.length >= 3 ? [routes[routes.length - 2], routes[routes.length - 1]] : [routes[routes.length - 1]] const inBetween = routes.length >= 3 ? routes.splice(1, routes.length - 3) : [] const groups: RouteGroups = { root: routes[0], mostRecent, inBetween, } return groups } type Props = { routes: Route[] } export function PageBreadCrumb(props: Props) { const { routes } = props const groups = groupBreadCrumbHistory(routes) return (
{groups.root.label} {!!groups.inBetween.length && ( <> Toggle menu {groups.inBetween.map((r) => ( {r.label} ))} )} {groups.mostRecent.map((r, index) => { if (index != groups.mostRecent.length - 1) return ( {r.label} ) else return ( {r.label} ) })}
) }