UNPKG

@trail-ui/react

Version:
30 lines (27 loc) 1.12 kB
import { InternalModalContext } from "./chunk-66DN4CGG.mjs"; // src/drawer/drawer.tsx import { clsx } from "@trail-ui/shared-utils"; import { drawer } from "@trail-ui/theme"; import { forwardRef, useMemo } from "react"; import { Modal as AriaModal, ModalOverlay } from "react-aria-components"; import { jsx } from "react/jsx-runtime"; function Drawer(props, ref) { const { children, classNames, className, placement, backdrop = "opaque", ...otherProps } = props; const slots = useMemo(() => drawer({ placement, backdrop }), [backdrop, placement]); const baseStyles = clsx(classNames == null ? void 0 : classNames.base, className); return /* @__PURE__ */ jsx(ModalOverlay, { ...otherProps, className: slots.backdrop({ class: classNames == null ? void 0 : classNames.backdrop }), children: /* @__PURE__ */ jsx(InternalModalContext.Provider, { value: { slots, classNames }, children: /* @__PURE__ */ jsx( AriaModal, { ref, className: slots.base({ class: baseStyles }), "data-placement": placement, children } ) }) }); } var _Drawer = forwardRef(Drawer); export { _Drawer };