@veracity/vui
Version:
Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.
45 lines (43 loc) • 1.87 kB
JavaScript
import { isJsx, isReactText, isString } from "../utils/assertion.js";
import { cs } from "../utils/styles.js";
import { useStyleConfig } from "../core/theme.js";
import vui from "../core/vui.js";
import { Box } from "../box/box.js";
import { useDialogContext } from "./context.js";
import { DialogCloseButton } from "./dialogCloseButton.js";
import { DialogIcon } from "./dialogIcon.js";
import { DialogTitle } from "./dialogTitle.js";
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
//#region src/dialog/dialogHeader.tsx
/** Shows title, status icon and close button above the Dialog Body. */
const DialogHeader = vui((props, ref) => {
const { children, className, closeButton, icon: iconProp, title: titleProp, ...rest } = props;
const { onClose, status } = useDialogContext() ?? {};
const styles = useStyleConfig("Dialog", useDialogContext());
const icon = isString(iconProp) ? { name: iconProp } : iconProp;
const showCloseButton = Boolean(closeButton !== void 0 ? closeButton : onClose);
const showIcon = Boolean(icon || status);
const title = isReactText(titleProp) ? { text: titleProp } : titleProp;
return /* @__PURE__ */ jsx(Box, {
className: cs("vui-dialogHeader", className),
icon,
pb: "16px",
pl: "16px",
position: "relative",
pr: "64px",
pt: "20px",
ref,
...styles.header,
...rest,
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
isJsx(icon) ? icon : showIcon && /* @__PURE__ */ jsx(DialogIcon, { ...icon }),
isJsx(title) ? title : !!title && /* @__PURE__ */ jsx(DialogTitle, { ...title }),
isJsx(closeButton) ? closeButton : showCloseButton && /* @__PURE__ */ jsx(DialogCloseButton, {})
] })
});
});
DialogHeader.displayName = "DialogHeader";
//#endregion
export { DialogHeader, DialogHeader as default };
globalThis.__vuiVersion__ = "5.3.1"
//# sourceMappingURL=dialogHeader.js.map