@teamsparta/stack-custom-modal
Version:
stack custom modal
63 lines (60 loc) • 1.66 kB
JavaScript
import {
CustomModalProvider
} from "./chunk-VHPHVMAP.mjs";
import {
__objRest,
__spreadProps,
__spreadValues
} from "./chunk-FUJQIYOF.mjs";
// src/compounds/CustomModalRoot.tsx
import * as Dialog from "@radix-ui/react-dialog";
import { useThemeContext } from "@teamsparta/stack-core";
import { useControllableState } from "@teamsparta/stack-utils";
import { useState } from "react";
import { jsx } from "@emotion/react/jsx-runtime";
var CustomModalRoot = (_a) => {
var _b = _a, {
children,
open: openFromProps,
onOpenChange: onOpenChangeFromProps,
defaultOpen: defaultOpenFromProps,
closeOnInteractOutside = true,
size = "md",
theme: themeFromProps,
hideCloseButton = false
} = _b, restProps = __objRest(_b, [
"children",
"open",
"onOpenChange",
"defaultOpen",
"closeOnInteractOutside",
"size",
"theme",
"hideCloseButton"
]);
const [hasScroll, setHasScroll] = useState(false);
const [open = false, onOpenChange] = useControllableState({
prop: openFromProps,
defaultProp: defaultOpenFromProps,
onChange: onOpenChangeFromProps
});
const { theme: themeFromContext } = useThemeContext("CustomModal");
const theme = themeFromProps != null ? themeFromProps : themeFromContext;
return /* @__PURE__ */ jsx(
CustomModalProvider,
{
open,
onOpenChange,
closeOnInteractOutside,
size,
theme,
hasScroll,
setHasScroll,
hideCloseButton,
children: /* @__PURE__ */ jsx(Dialog.Root, __spreadProps(__spreadValues({ open, onOpenChange }, restProps), { children }))
}
);
};
export {
CustomModalRoot
};