import * as React from "react"; import { createPortal } from "react-dom"; import { Separator } from "@/components/ui/separator"; import { Breadcrumb as BaseBreadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbPage, BreadcrumbList, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; import { Button } from "@/components/ui/button"; import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer"; import { useIsMobile } from "@/hooks/use-mobile"; import { Translate } from "ra-core"; /** * A breadcrumb navigation component with mobile drawer support. * * Renders breadcrumb navigation in the app header via portal. On mobile, shows a drawer with * ellipsis for long breadcrumb trails. Use Breadcrumb.Item and Breadcrumb.PageItem as children. * * CRUD pages already include a Breadcrumb by default; set `disableBreadcrumb` to hide the * breadcrumb and/or provide your own. * * @see {@link https://marmelab.com/shadcn-admin-kit/docs/breadcrumb/ Breadcrumb documentation} * @see {@link https://ui.shadcn.com/docs/components/breadcrumb Breadcrumb UI documentation} * * @example * import { Edit, Breadcrumb, SimpleForm } from "@/components/admin"; * import { RecordRepresentation } from 'ra-core'; * import { Link } from "react-router"; * * const PostEdit = () => ( * * * Home * Articles * * Edit Article "" * * * * ... * * * ); */ export const Breadcrumb = ({ children, ref }: BreadcrumbProps) => { const breadcrumbPortal = document.getElementById("breadcrumb"); const isMobile = useIsMobile(); const [open, setOpen] = React.useState(false); if (!breadcrumbPortal) return null; return createPortal( <> {isMobile && React.Children.count(children) > 2 ? ( Navigate to Select a page to navigate to.
    {React.Children.toArray(children) .slice(0, -1) .map((item) => item)}
{React.Children.toArray(children).slice(-1)}
) : ( React.Children.map( children, (child, index) => child && ( {child} {index < React.Children.count(children) - 1 ? ( ) : null} ), ) )}
, breadcrumbPortal, ); }; Breadcrumb.Item = BreadcrumbItem; Breadcrumb.PageItem = BreadcrumbPage; export { BreadcrumbItem, BreadcrumbPage }; export type BreadcrumbProps = React.ComponentProps<"nav">;