UNPKG

@crossed/ui

Version:

A universal & performant styling library for React Native, Next.js & React

46 lines (45 loc) 1.48 kB
import { jsx, jsxs } from "react/jsx-runtime"; import { composeStyles, createStyles, inlineStyle } from "@crossed/styled"; import { Box } from "../../layout/Box"; import { CloseButton } from "../../buttons/CloseButton"; import { useContext } from "react"; import { localContext } from "./context"; import { ModalTrigger } from "./Trigger"; const styles = createStyles(() => ({ header: { media: { xs: { flexDirection: "column-reverse", alignItems: "flex-start" }, md: { flexDirection: "row" } } } })); const ModalHeader = ({ children, style, ...props }) => { const { showSheet, closable } = useContext(localContext); const isClosable = typeof closable === "boolean" ? closable : true; return /* @__PURE__ */ jsxs(Box, { ...props, style: composeStyles(styles.header, style), children: [ /* @__PURE__ */ jsx( Box, { style: inlineStyle(() => ({ base: { flexGrow: 1, flexShrink: 1 } })), children } ), showSheet || !isClosable ? null : /* @__PURE__ */ jsx(ModalTrigger, { asChild: true, children: /* @__PURE__ */ jsx( CloseButton, { style: composeStyles( children ? inlineStyle(() => ({ base: { position: "absolute", right: 0 } })) : inlineStyle(() => ({ base: { alignSelf: "flex-end" } })) ) } ) }) ] }); }; ModalHeader.displayName = "Modal.Header"; export { ModalHeader }; //# sourceMappingURL=Header.js.map