@trail-ui/react
Version:
41 lines (38 loc) • 1.11 kB
JavaScript
import {
Popover
} from "./chunk-4UQW3ENJ.mjs";
// src/menu/menu.tsx
import { clsx } from "@trail-ui/shared-utils";
import { menu } from "@trail-ui/theme";
import { createContext, useMemo } from "react";
import { Menu as AriaMenu } from "react-aria-components";
import { jsx } from "react/jsx-runtime";
var InternalMenuContext = createContext(
{}
);
function Menu(props) {
const {
children,
className,
classNames,
placement = "bottom",
itemClasses,
...otherProps
} = props;
const slots = useMemo(() => menu(), []);
const baseStyles = clsx(classNames == null ? void 0 : classNames.base, className);
return /* @__PURE__ */ jsx(
Popover,
{
isMenuPopover: true,
isNonModal: true,
placement,
className: slots.popover({ class: classNames == null ? void 0 : classNames.popover }),
children: /* @__PURE__ */ jsx(InternalMenuContext.Provider, { value: { itemClasses }, children: /* @__PURE__ */ jsx(AriaMenu, { className: slots.base({ class: baseStyles }), ...otherProps, children }) })
}
);
}
export {
InternalMenuContext,
Menu
};