UNPKG

@carbon/react

Version:

React components for the Carbon Design System

132 lines (130 loc) 4.24 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_useId = require("../../internal/useId.js"); const require_deprecateValuesWithin = require("../../prop-types/deprecateValuesWithin.js"); const require_mapPopoverAlign = require("../../tools/mapPopoverAlign.js"); const require_Tooltip = require("../Tooltip/Tooltip.js"); const require_ButtonBase = require("../Button/ButtonBase.js"); const require_index = require("../BadgeIndicator/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"); //#region src/components/IconButton/index.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 IconButtonKinds = [ "primary", "secondary", "ghost", "tertiary" ]; const IconButton = (0, react.forwardRef)(({ align, autoAlign = false, badgeCount, children, className, closeOnActivation = true, defaultOpen = false, disabled, dropShadow = false, enterDelayMs = 100, highContrast = true, kind, label, leaveDelayMs = 100, wrapperClasses, size, isSelected, ...rest }, ref) => { const prefix = require_usePrefix.usePrefix(); const tooltipClasses = (0, classnames.default)(wrapperClasses, `${prefix}--icon-tooltip`, { [`${prefix}--icon-tooltip--disabled`]: disabled }); if (badgeCount && (kind !== "ghost" || size !== "lg")) console.warn("The prop BadgeCount must be used with hasIconOnly=true, kind='ghost' and size='lg'"); const badgeId = require_useId.useId("badge-indicator"); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Tooltip.Tooltip, { align, autoAlign, closeOnActivation, className: tooltipClasses, defaultOpen, dropShadow, enterDelayMs, highContrast, label, leaveDelayMs, children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_ButtonBase.default, { ...rest, disabled, kind, ref, size, isSelected, hasIconOnly: true, className, "aria-describedby": rest["aria-describedby"] || badgeCount && badgeId, children: [children, !disabled && badgeCount !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.default, { id: badgeId, count: badgeCount > 0 ? badgeCount : void 0 })] }) }); }); IconButton.propTypes = { align: require_deprecateValuesWithin.deprecateValuesWithin(prop_types.default.oneOf([ "top", "top-left", "top-right", "bottom", "bottom-left", "bottom-right", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top-start", "top-end", "bottom-start", "bottom-end", "left-end", "left-start", "right-end", "right-start" ]), [ "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end", "right", "right-start", "right-end" ], require_mapPopoverAlign.mapPopoverAlign), autoAlign: prop_types.default.bool, badgeCount: prop_types.default.number, href: prop_types.default.string, children: prop_types.default.node, className: prop_types.default.string, closeOnActivation: prop_types.default.bool, defaultOpen: prop_types.default.bool, dropShadow: prop_types.default.bool, disabled: prop_types.default.bool, enterDelayMs: prop_types.default.number, isSelected: prop_types.default.bool, highContrast: prop_types.default.bool, kind: prop_types.default.oneOf(IconButtonKinds), label: prop_types.default.node.isRequired, leaveDelayMs: prop_types.default.number, rel: prop_types.default.string, size: prop_types.default.oneOf([ "sm", "md", "lg" ]), target: prop_types.default.string, wrapperClasses: prop_types.default.string }; //#endregion exports.IconButton = IconButton; exports.IconButtonKinds = IconButtonKinds;