'use client' import { resolveBreadcrumbs } from '~/lib/breadcrumbs' import { useBreakpoint } from 'common' import Link from 'next/link' import { usePathname, useSearchParams } from 'next/navigation' import React, { Fragment, Suspense } from 'react' import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, cn, Drawer, DrawerClose, DrawerContent, DrawerFooter, DrawerTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' interface BreadcrumbsProps extends React.HTMLAttributes { minLength?: number forceDisplayOnMobile?: boolean } export default function Breadcrumbs(props: BreadcrumbsProps) { return ( ) } const BreadcrumbsInternal = ({ className, minLength = 2, forceDisplayOnMobile = false, }: BreadcrumbsProps) => { const breadcrumbs = useBreadcrumbs() const [open, setOpen] = React.useState(false) const isMobile = useBreakpoint('md') const ITEMS_TO_DISPLAY = isMobile ? 4 : 3 if (!breadcrumbs?.length || breadcrumbs?.length < minLength) return null const appendedBreadcrumbs = breadcrumbs?.slice( -ITEMS_TO_DISPLAY + 1, isMobile && !forceDisplayOnMobile ? -1 : undefined ) return ( {breadcrumbs.length >= ITEMS_TO_DISPLAY && ( <> {breadcrumbs[0].url ? ( {breadcrumbs[0].title || breadcrumbs[0].name} ) : ( {breadcrumbs[0].title || breadcrumbs[0].name} )} )} {breadcrumbs.length > ITEMS_TO_DISPLAY && ( <> {!isMobile ? ( {breadcrumbs.slice(1, -2).map((crumb, index) => ( {crumb.url ? ( {crumb.title || crumb.name} ) : ( crumb.title || crumb.name )} ))} ) : (
{breadcrumbs.slice(1, -2).map((crumb, index) => crumb.url ? ( {crumb.title || crumb.name} ) : ( crumb.title || crumb.name ) )}
)}
)} {appendedBreadcrumbs?.map((crumb, index) => ( {crumb.url ? ( {crumb.title || crumb.name} ) : ( {crumb.title || crumb.name} )} ))}
) } function useBreadcrumbs() { const pathname = usePathname() return resolveBreadcrumbs(pathname) }