@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
55 lines (54 loc) • 1.6 kB
JavaScript
"use client";
import { styles } from "./style.mjs";
import { jsx, jsxs } from "react/jsx-runtime";
//#region src/dashboard/Breadcrumb/Breadcrumb.tsx
function CrumbLink({ className, item, renderLink }) {
const href = item.href ?? "#";
if (renderLink && item.href) return renderLink({
children: item.label,
className,
href: item.href,
onClick: item.onClick
});
return /* @__PURE__ */ jsx("a", {
className,
href,
onClick: (event) => {
if (!item.onClick) return;
event.preventDefault();
item.onClick();
},
children: item.label
});
}
function Breadcrumb({ items, label = "Breadcrumb", renderLink }) {
return /* @__PURE__ */ jsx("nav", {
"aria-label": label,
className: styles.root,
children: items.map((item, index) => {
const last = index === items.length - 1;
const linked = Boolean(item.href) && !last;
return /* @__PURE__ */ jsxs("span", {
className: item.optional ? styles.optional : void 0,
children: [linked ? /* @__PURE__ */ jsx(CrumbLink, {
className: styles.link,
item,
renderLink
}) : /* @__PURE__ */ jsx("span", {
"aria-current": last ? "page" : void 0,
className: last ? styles.page : styles.ancestor,
title: typeof item.label === "string" ? item.label : void 0,
children: item.label
}), index < items.length - 1 ? /* @__PURE__ */ jsx("span", {
"aria-hidden": true,
className: styles.separator,
children: "/"
}) : null]
}, `${index}`);
})
});
}
Breadcrumb.displayName = "Breadcrumb";
//#endregion
export { Breadcrumb as default };
//# sourceMappingURL=Breadcrumb.mjs.map