ivt
Version:
Ivt Components Library
440 lines (436 loc) • 20.7 kB
JavaScript
import * as React from 'react';
import React__default from 'react';
import { c as composeEventHandlers } from '../chunks/index-Bl-WJHvp.mjs';
import { c as composeRefs } from '../chunks/index-1tQVI0Jh.mjs';
import { c as createContextScope } from '../chunks/index-DT8WgpCS.mjs';
import { u as useControllableState } from '../chunks/index-D4FMFHi9.mjs';
import { P as Primitive } from '../chunks/index-DgKlJYZP.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 '../chunks/index-DWmrjIYv.mjs';
import { u as useId } from '../chunks/index-tkRL9Tft.mjs';
import { jsx } from 'react/jsx-runtime';
import { c as cn } from '../chunks/utils-05LlW3Cl.mjs';
import { C as Check } from '../chunks/check-BBGTedl-.mjs';
import { C as ChevronRight } from '../chunks/chevron-right-mC6NR8jW.mjs';
import '../chunks/index-DKOlG3mh.mjs';
import 'react-dom';
import '@radix-ui/react-slot';
import '../chunks/createLucideIcon-DLrNgMqk.mjs';
import '@radix-ui/react-collection';
import '../chunks/index-CGLjQEjG.mjs';
import '../chunks/index-DUpRrJTH.mjs';
import '../chunks/index-Cbm3--wc.mjs';
import '../chunks/index-DvCZGX3H.mjs';
import '../chunks/tslib.es6-DXUeYCTx.mjs';
import '../chunks/index-aLIsJMgt.mjs';
import '../chunks/index-DmY774z-.mjs';
import '../chunks/index-BTe1rv5Z.mjs';
import '../chunks/index-C6s8KI_8.mjs';
import '../chunks/index-BsG_UW8k.mjs';
import '../chunks/bundle-mjs-BYcyWisL.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, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
//# sourceMappingURL=index.mjs.map