UNPKG

ivt

Version:

Ivt Components Library

440 lines (436 loc) 20.7 kB
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