UNPKG

@carbon/ibm-products

Version:
96 lines (94 loc) 4.6 kB
/** * Copyright IBM Corp. 2020, 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_index = require("../../node_modules/classnames/index.js"); const require_devtools = require("../../global/js/utils/devtools.js"); const require_context = require("./context.js"); let react = require("react"); react = require_runtime.__toESM(react); let prop_types = require("prop-types"); prop_types = require_runtime.__toESM(prop_types); let _carbon_react = require("@carbon/react"); //#region src/components/InterstitialScreen/InterstitialScreenHeader.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. */ var import_classnames = /* @__PURE__ */ require_runtime.__toESM(require_index.default); const InterstitialScreenHeader = react.default.forwardRef((props, ref) => { const { className = "", headerTitle, headerSubTitle, closeIconDescription, hideProgressIndicator, children, ...rest } = props; const { bodyChildrenData, isFullScreen, progStep, handleClose, stepCount } = react.default.useContext(require_context.InterstitialScreenContext); const headerBlockClass = `${require_context.blockClass}--internal-header`; const carbonPrefix = (0, _carbon_react.usePrefix)(); const headerContent = () => { return /* @__PURE__ */ react.default.createElement(react.default.Fragment, null, (headerTitle || headerSubTitle) && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}--titleContainer` }, headerTitle && /* @__PURE__ */ react.default.createElement("h1", null, headerTitle), headerSubTitle && /* @__PURE__ */ react.default.createElement("h2", null, headerSubTitle)), children, !hideProgressIndicator && bodyChildrenData && Array.isArray(bodyChildrenData) && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}--progress` }, /* @__PURE__ */ react.default.createElement(_carbon_react.ProgressIndicator, { vertical: false, currentIndex: progStep }, bodyChildrenData?.map((child, idx) => { if (react.default.isValidElement(child)) { const stepKey = `${child.props?.stepTitle?.replace(/\s+/g, "") || "step"}-${idx}`; return /* @__PURE__ */ react.default.createElement(_carbon_react.ProgressStep, { key: stepKey, label: child.props.stepTitle ?? `Step ${idx + 1}`, translateWithId: child.props.translateWithId }); } })), /* @__PURE__ */ react.default.createElement("div", { "aria-live": "polite", "aria-atomic": "true", className: `${carbonPrefix}--visually-hidden` }, "Step ", progStep + 1, " of ", stepCount))); }; const closeModal = () => { handleClose?.("close"); }; return isFullScreen ? /* @__PURE__ */ react.default.createElement("header", { ref, role: "presentation", className: (0, import_classnames.default)(headerBlockClass, className, { [`${headerBlockClass}--has-title`]: headerTitle || headerSubTitle || children }), ...require_devtools.getDevtoolsProps("InterstitialScreenHeader"), ...rest }, headerContent()) : /* @__PURE__ */ react.default.createElement(_carbon_react.ModalHeader, { ref, className: (0, import_classnames.default)(headerBlockClass, className, { [`${headerBlockClass}--has-title`]: headerTitle || headerSubTitle || children }), closeModal, iconDescription: closeIconDescription, ...require_devtools.getDevtoolsProps("InterstitialScreenHeader"), ...rest }, headerContent()); }); InterstitialScreenHeader.propTypes = { /** * Provide the optional content for header section and will be render after header titles and before progress indicator. * People can make use of this if they want to have custom header. */ children: prop_types.default.node, /** * Provide an optional class to be applied to the containing node. */ className: prop_types.default.string, /** * Tooltip text and aria label for the Close button icon. */ closeIconDescription: prop_types.default.string, /** * Provide an optional sub title to be applied to the header >. */ headerSubTitle: prop_types.default.string, /** * Provide an optional title to be applied to the header >. */ headerTitle: prop_types.default.string, /** * Optional parameter to hide the progress indicator when multiple steps are used. */ hideProgressIndicator: prop_types.default.bool }; //#endregion exports.default = InterstitialScreenHeader;