ivt
Version:
Ivt Components Library
422 lines (418 loc) • 20.1 kB
JavaScript
import * as React from 'react';
import React__default from 'react';
import { P as Primitive, c as composeEventHandlers } from './index-Dsw02Eup.mjs';
import { c as createContextScope, b as composeRefs } from './index-D4jPaBZ2.mjs';
import { u as useControllableState } from './index-1toTCGyr.mjs';
import { c as createMenuScope, R as Root3, P as Portal, A as Anchor2, C as Content2$1, G as Group, L as Label, I as Item2$1, a as CheckboxItem, b as ItemIndicator, h as RadioGroup, d as RadioItem, S as Separator, e as Sub, g as SubTrigger, f as SubContent, i as Arrow2, j as Circle } from './index-zIaBOKQ3.mjs';
import { u as useId } from './index-gX0V59dZ.mjs';
import { jsx } from 'react/jsx-runtime';
import { c as cn } from './utils-BDcRwQMd.mjs';
import { C as Check } from './check-Ds358kZc.mjs';
import { C as ChevronRight } from './chevron-right-Dq6zFe5E.mjs';
var DROPDOWN_MENU_NAME = "DropdownMenu";
var [createDropdownMenuContext] = createContextScope(DROPDOWN_MENU_NAME, [
createMenuScope
]);
var useMenuScope = createMenuScope();
var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
var DropdownMenu$1 = (props)=>{
const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
const triggerRef = React.useRef(null);
const [open, setOpen] = useControllableState({
prop: openProp,
defaultProp: defaultOpen ?? false,
onChange: onOpenChange,
caller: DROPDOWN_MENU_NAME
});
return /* @__PURE__ */ jsx(DropdownMenuProvider, {
scope: __scopeDropdownMenu,
triggerId: useId(),
triggerRef,
contentId: useId(),
open,
onOpenChange: setOpen,
onOpenToggle: React.useCallback(()=>setOpen((prevOpen)=>!prevOpen), [
setOpen
]),
modal,
children: /* @__PURE__ */ jsx(Root3, {
...menuScope,
open,
onOpenChange: setOpen,
dir,
modal,
children
})
});
};
DropdownMenu$1.displayName = DROPDOWN_MENU_NAME;
var TRIGGER_NAME = "DropdownMenuTrigger";
var DropdownMenuTrigger$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Anchor2, {
asChild: true,
...menuScope,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
id: context.triggerId,
"aria-haspopup": "menu",
"aria-expanded": context.open,
"aria-controls": context.open ? context.contentId : void 0,
"data-state": context.open ? "open" : "closed",
"data-disabled": disabled ? "" : void 0,
disabled,
...triggerProps,
ref: composeRefs(forwardedRef, context.triggerRef),
onPointerDown: composeEventHandlers(props.onPointerDown, (event)=>{
if (!disabled && event.button === 0 && event.ctrlKey === false) {
context.onOpenToggle();
if (!context.open) event.preventDefault();
}
}),
onKeyDown: composeEventHandlers(props.onKeyDown, (event)=>{
if (disabled) return;
if ([
"Enter",
" "
].includes(event.key)) context.onOpenToggle();
if (event.key === "ArrowDown") context.onOpenChange(true);
if ([
"Enter",
" ",
"ArrowDown"
].includes(event.key)) event.preventDefault();
})
})
});
});
DropdownMenuTrigger$1.displayName = TRIGGER_NAME;
var PORTAL_NAME = "DropdownMenuPortal";
var DropdownMenuPortal$1 = (props)=>{
const { __scopeDropdownMenu, ...portalProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Portal, {
...menuScope,
...portalProps
});
};
DropdownMenuPortal$1.displayName = PORTAL_NAME;
var CONTENT_NAME = "DropdownMenuContent";
var DropdownMenuContent$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...contentProps } = props;
const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
const menuScope = useMenuScope(__scopeDropdownMenu);
const hasInteractedOutsideRef = React.useRef(false);
return /* @__PURE__ */ jsx(Content2$1, {
id: context.contentId,
"aria-labelledby": context.triggerId,
...menuScope,
...contentProps,
ref: forwardedRef,
onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event)=>{
if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
hasInteractedOutsideRef.current = false;
event.preventDefault();
}),
onInteractOutside: composeEventHandlers(props.onInteractOutside, (event)=>{
const originalEvent = event.detail.originalEvent;
const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;
}),
style: {
...props.style,
// re-namespace exposed content custom properties
...{
"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
}
});
});
DropdownMenuContent$1.displayName = CONTENT_NAME;
var GROUP_NAME = "DropdownMenuGroup";
var DropdownMenuGroup$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...groupProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Group, {
...menuScope,
...groupProps,
ref: forwardedRef
});
});
DropdownMenuGroup$1.displayName = GROUP_NAME;
var LABEL_NAME = "DropdownMenuLabel";
var DropdownMenuLabel$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...labelProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Label, {
...menuScope,
...labelProps,
ref: forwardedRef
});
});
DropdownMenuLabel$1.displayName = LABEL_NAME;
var ITEM_NAME = "DropdownMenuItem";
var DropdownMenuItem$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...itemProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Item2$1, {
...menuScope,
...itemProps,
ref: forwardedRef
});
});
DropdownMenuItem$1.displayName = ITEM_NAME;
var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
var DropdownMenuCheckboxItem$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...checkboxItemProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(CheckboxItem, {
...menuScope,
...checkboxItemProps,
ref: forwardedRef
});
});
DropdownMenuCheckboxItem$1.displayName = CHECKBOX_ITEM_NAME;
var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
var DropdownMenuRadioGroup$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...radioGroupProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(RadioGroup, {
...menuScope,
...radioGroupProps,
ref: forwardedRef
});
});
DropdownMenuRadioGroup$1.displayName = RADIO_GROUP_NAME;
var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
var DropdownMenuRadioItem$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...radioItemProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(RadioItem, {
...menuScope,
...radioItemProps,
ref: forwardedRef
});
});
DropdownMenuRadioItem$1.displayName = RADIO_ITEM_NAME;
var INDICATOR_NAME = "DropdownMenuItemIndicator";
var DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(ItemIndicator, {
...menuScope,
...itemIndicatorProps,
ref: forwardedRef
});
});
DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
var SEPARATOR_NAME = "DropdownMenuSeparator";
var DropdownMenuSeparator$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...separatorProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Separator, {
...menuScope,
...separatorProps,
ref: forwardedRef
});
});
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME;
var ARROW_NAME = "DropdownMenuArrow";
var DropdownMenuArrow = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...arrowProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(Arrow2, {
...menuScope,
...arrowProps,
ref: forwardedRef
});
});
DropdownMenuArrow.displayName = ARROW_NAME;
var DropdownMenuSub$1 = (props)=>{
const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
const [open, setOpen] = useControllableState({
prop: openProp,
defaultProp: defaultOpen ?? false,
onChange: onOpenChange,
caller: "DropdownMenuSub"
});
return /* @__PURE__ */ jsx(Sub, {
...menuScope,
open,
onOpenChange: setOpen,
children
});
};
var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
var DropdownMenuSubTrigger$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...subTriggerProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(SubTrigger, {
...menuScope,
...subTriggerProps,
ref: forwardedRef
});
});
DropdownMenuSubTrigger$1.displayName = SUB_TRIGGER_NAME;
var SUB_CONTENT_NAME = "DropdownMenuSubContent";
var DropdownMenuSubContent$1 = React.forwardRef((props, forwardedRef)=>{
const { __scopeDropdownMenu, ...subContentProps } = props;
const menuScope = useMenuScope(__scopeDropdownMenu);
return /* @__PURE__ */ jsx(SubContent, {
...menuScope,
...subContentProps,
ref: forwardedRef,
style: {
...props.style,
// re-namespace exposed content custom properties
...{
"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
}
});
});
DropdownMenuSubContent$1.displayName = SUB_CONTENT_NAME;
var Root2 = DropdownMenu$1;
var Trigger = DropdownMenuTrigger$1;
var Portal2 = DropdownMenuPortal$1;
var Content2 = DropdownMenuContent$1;
var Group2 = DropdownMenuGroup$1;
var Label2 = DropdownMenuLabel$1;
var Item2 = DropdownMenuItem$1;
var CheckboxItem2 = DropdownMenuCheckboxItem$1;
var RadioGroup2 = DropdownMenuRadioGroup$1;
var RadioItem2 = DropdownMenuRadioItem$1;
var ItemIndicator2 = DropdownMenuItemIndicator;
var Separator2 = DropdownMenuSeparator$1;
var Sub2 = DropdownMenuSub$1;
var SubTrigger2 = DropdownMenuSubTrigger$1;
var SubContent2 = DropdownMenuSubContent$1;
function DropdownMenu({ ...props }) {
return /*#__PURE__*/ React__default.createElement(Root2, {
"data-slot": "dropdown-menu",
...props
});
}
function DropdownMenuPortal({ ...props }) {
return /*#__PURE__*/ React__default.createElement(Portal2, {
"data-slot": "dropdown-menu-portal",
...props
});
}
function DropdownMenuTrigger({ ...props }) {
return /*#__PURE__*/ React__default.createElement(Trigger, {
"data-slot": "dropdown-menu-trigger",
...props
});
}
function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
return /*#__PURE__*/ React__default.createElement(Portal2, null, /*#__PURE__*/ React__default.createElement(Content2, {
"data-slot": "dropdown-menu-content",
sideOffset: sideOffset,
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:font-lato z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
...props
}));
}
function DropdownMenuGroup({ ...props }) {
return /*#__PURE__*/ React__default.createElement(Group2, {
"data-slot": "dropdown-menu-group",
...props
});
}
function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
return /*#__PURE__*/ React__default.createElement(Item2, {
"data-slot": "dropdown-menu-item",
"data-inset": inset,
"data-variant": variant,
className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:bg-destructive/10 data-[variant=destructive]:text-foreground data-[variant=destructive]:focus:bg-destructive/90 dark:data-[variant=destructive]:focus:bg-destructive/90 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*='text-'])]:text-muted-foreground *:font-lato relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
...props
});
}
function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
return /*#__PURE__*/ React__default.createElement(CheckboxItem2, {
"data-slot": "dropdown-menu-checkbox-item",
className: cn("focus:bg-accent focus:text-accent-foreground *:font-lato relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
checked: checked,
...props
}, /*#__PURE__*/ React__default.createElement("span", {
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"
}, /*#__PURE__*/ React__default.createElement(ItemIndicator2, null, /*#__PURE__*/ React__default.createElement(Check, {
className: "size-4"
}))), children);
}
function DropdownMenuRadioGroup({ ...props }) {
return /*#__PURE__*/ React__default.createElement(RadioGroup2, {
"data-slot": "dropdown-menu-radio-group",
...props
});
}
function DropdownMenuRadioItem({ className, children, ...props }) {
return /*#__PURE__*/ React__default.createElement(RadioItem2, {
"data-slot": "dropdown-menu-radio-item",
className: cn("focus:bg-accent focus:text-accent-foreground *:font-lato relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
...props
}, /*#__PURE__*/ React__default.createElement("span", {
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"
}, /*#__PURE__*/ React__default.createElement(ItemIndicator2, null, /*#__PURE__*/ React__default.createElement(Circle, {
className: "size-2 fill-current"
}))), children);
}
function DropdownMenuLabel({ className, inset, ...props }) {
return /*#__PURE__*/ React__default.createElement(Label2, {
"data-slot": "dropdown-menu-label",
"data-inset": inset,
className: cn("*:font-lato px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
...props
});
}
function DropdownMenuSeparator({ className, ...props }) {
return /*#__PURE__*/ React__default.createElement(Separator2, {
"data-slot": "dropdown-menu-separator",
className: cn("bg-border *:font-lato -mx-1 my-1 h-px", className),
...props
});
}
function DropdownMenuShortcut({ className, ...props }) {
return /*#__PURE__*/ React__default.createElement("span", {
"data-slot": "dropdown-menu-shortcut",
className: cn("text-muted-foreground *:font-lato ml-auto text-xs tracking-widest", className),
...props
});
}
function DropdownMenuSub({ ...props }) {
return /*#__PURE__*/ React__default.createElement(Sub2, {
"data-slot": "dropdown-menu-sub",
...props
});
}
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
return /*#__PURE__*/ React__default.createElement(SubTrigger2, {
"data-slot": "dropdown-menu-sub-trigger",
"data-inset": inset,
className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground *:font-lato flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className),
...props
}, children, /*#__PURE__*/ React__default.createElement(ChevronRight, {
className: "ml-auto size-4"
}));
}
function DropdownMenuSubContent({ className, ...props }) {
return /*#__PURE__*/ React__default.createElement(SubContent2, {
"data-slot": "dropdown-menu-sub-content",
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:font-lato z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
...props
});
}
export { DropdownMenu as D, DropdownMenuPortal as a, DropdownMenuTrigger as b, DropdownMenuContent as c, DropdownMenuGroup as d, DropdownMenuLabel as e, DropdownMenuItem as f, DropdownMenuCheckboxItem as g, DropdownMenuRadioGroup as h, DropdownMenuRadioItem as i, DropdownMenuSeparator as j, DropdownMenuShortcut as k, DropdownMenuSub as l, DropdownMenuSubTrigger as m, DropdownMenuSubContent as n };
//# sourceMappingURL=dropdown-menu-DnPBut1Q.mjs.map