UNPKG

@carbon/react

Version:

React components for the Carbon Design System

78 lines (76 loc) 2.39 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_index = require("../Button/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/ChatButton/ChatButton.tsx /** * Copyright IBM Corp. 2024, 2025 * * 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 ChatButton = react.default.forwardRef(function ChatButton({ className, children, disabled, isQuickAction, isSelected, kind, renderIcon, size, ...other }, ref) { const prefix = require_usePrefix.usePrefix(); const classNames = (0, classnames.default)(className, { [`${prefix}--chat-btn`]: true, [`${prefix}--chat-btn--with-icon`]: renderIcon, [`${prefix}--chat-btn--quick-action`]: isQuickAction, [`${prefix}--chat-btn--quick-action--selected`]: isSelected }); const allowedSizes = [ "sm", "md", "lg" ]; if (isQuickAction) { kind = "ghost"; size = "sm"; } else if (size && !allowedSizes.includes(size)) { console.error(`Invalid size "${size}" provided to ChatButton. Size must be one of: ${allowedSizes.join(", ")}. Defaulting to "lg".`); size = "lg"; } return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.default, { disabled, className: classNames, kind, ref, size, renderIcon, ...other, children }); }); ChatButton.propTypes = { children: prop_types.default.node, className: prop_types.default.string, disabled: prop_types.default.bool, isQuickAction: prop_types.default.bool, isSelected: prop_types.default.bool, kind: prop_types.default.oneOf([ "primary", "secondary", "danger", "ghost", "tertiary" ]), renderIcon: prop_types.default.oneOfType([prop_types.default.func, prop_types.default.object]), size: prop_types.default.oneOf([ "sm", "md", "lg" ]) }; //#endregion exports.default = ChatButton;