flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
52 lines (48 loc) • 2.21 kB
JavaScript
'use client';
;
var jsxRuntime = require('react/jsx-runtime');
var React = require('react');
var get = require('../../helpers/get.cjs');
var resolveProps = require('../../helpers/resolve-props.cjs');
var resolveTheme = require('../../helpers/resolve-theme.cjs');
var tailwindMerge = require('../../helpers/tailwind-merge.cjs');
var outlineXIcon = require('../../icons/outline-x-icon.cjs');
var provider = require('../../theme/provider.cjs');
var ModalContext = require('./ModalContext.cjs');
var theme = require('./theme.cjs');
const ModalHeader = React.forwardRef((props, ref) => {
const {
theme: rootTheme,
clearTheme: rootClearTheme,
applyTheme: rootApplyTheme,
popup,
onClose,
setHeaderId
} = ModalContext.useModalContext();
const provider$1 = provider.useThemeProvider();
const theme$1 = resolveTheme.useResolveTheme(
[theme.modalTheme.header, provider$1.theme?.modal?.header, rootTheme?.header, props.theme],
[get.get(provider$1.clearTheme, "modal.header"), get.get(rootClearTheme, "header"), props.clearTheme],
[get.get(provider$1.applyTheme, "modal.header"), get.get(rootApplyTheme, "header"), props.applyTheme]
);
const {
as: Component = "h3",
children,
className,
id,
...restProps
} = resolveProps.resolveProps(props, provider$1.props?.modalHeader);
const innerHeaderId = React.useId();
const headerId = id || innerHeaderId;
React.useLayoutEffect(() => {
setHeaderId(headerId);
return () => setHeaderId(void 0);
}, [headerId, setHeaderId]);
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: tailwindMerge.twMerge(theme$1.base, popup && theme$1.popup, className), ...restProps, children: [
/* @__PURE__ */ jsxRuntime.jsx(Component, { id: headerId, className: theme$1.title, children }),
/* @__PURE__ */ jsxRuntime.jsx("button", { "aria-label": "Close", className: theme$1.close.base, type: "button", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(outlineXIcon.OutlineXIcon, { "aria-hidden": true, className: theme$1.close.icon }) })
] });
});
ModalHeader.displayName = "ModalHeader";
exports.ModalHeader = ModalHeader;
//# sourceMappingURL=ModalHeader.cjs.map