UNPKG

@carbon/react

Version:

React components for the Carbon Design System

94 lines (92 loc) 3.32 kB
/** * Copyright IBM Corp. 2016, 2026 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ const require_runtime = require("../../_virtual/_rolldown/runtime.js"); const require_usePrefix = require("../../internal/usePrefix.js"); const require_Text = require("../Text/Text.js"); const require_index = require("../Link/index.js"); let classnames = require("classnames"); classnames = require_runtime.__toESM(classnames); let react = require("react"); react = require_runtime.__toESM(react); let prop_types = require("prop-types"); prop_types = require_runtime.__toESM(prop_types); let react_jsx_runtime = require("react/jsx-runtime"); let _carbon_icons_react = require("@carbon/icons-react"); //#region src/components/Breadcrumb/BreadcrumbItem.tsx /** * Copyright IBM Corp. 2016, 2026 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ const BreadcrumbItem = (0, react.forwardRef)((props, ref) => { const { "aria-current": ariaCurrent, children, className: customClassName = "", href, isCurrentPage, ...rest } = props; const prefix = require_usePrefix.usePrefix(); const className = (0, classnames.default)({ [`${prefix}--breadcrumb-item`]: true, [`${prefix}--breadcrumb-item--current`]: isCurrentPage && ariaCurrent !== "page", [customClassName]: !!customClassName }); const child = (0, react.isValidElement)(children) ? children : null; const childType = child?.type; if (child && typeof child.type !== "string" && childType?.displayName?.includes("OverflowMenu")) { const horizontalOverflowIcon = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_carbon_icons_react.OverflowMenuHorizontal, { className: `${prefix}--overflow-menu__icon` }); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { className, ...rest, children: react.default.cloneElement(child, { menuOptionsClass: `${prefix}--breadcrumb-menu-options`, menuOffset: { top: 10, left: 59 }, renderIcon: () => horizontalOverflowIcon }) }); } if (typeof children === "string") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { className, ref, ...rest, children: href ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.default, { href, "aria-current": ariaCurrent || isCurrentPage, children }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Text.Text, { "aria-current": ariaCurrent || isCurrentPage, className: `${prefix}--link`, children }) }); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { className, ref, ...rest, children: child ? (0, react.cloneElement)(child, { "aria-current": ariaCurrent, className: (0, classnames.default)(`${prefix}--link`, child.props.className) }) : children }); }); BreadcrumbItem.displayName = "BreadcrumbItem"; BreadcrumbItem.propTypes = { "aria-current": prop_types.default.oneOfType([prop_types.default.bool, prop_types.default.oneOf([ "false", "true", "page", "step", "location", "date", "time" ])]), children: prop_types.default.node, className: prop_types.default.string, href: prop_types.default.string, isCurrentPage: prop_types.default.bool }; //#endregion exports.default = BreadcrumbItem;