UNPKG

@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
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