@trail-ui/react
Version:
30 lines (27 loc) • 1.12 kB
JavaScript
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
};