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">;