UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

55 lines (54 loc) • 1.6 kB
"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