ivt
Version:
Ivt Components Library
1 lines • 70 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../node_modules/@radix-ui/react-navigation-menu/dist/index.mjs","../../src/components/ui/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\n// src/navigation-menu.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { composeRefs, useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar NAVIGATION_MENU_NAME = \"NavigationMenu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [FocusGroupCollection, useFocusGroupCollection, createFocusGroupCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [createNavigationMenuContext, createNavigationMenuScope] = createContextScope(\n NAVIGATION_MENU_NAME,\n [createCollectionScope, createFocusGroupCollectionScope]\n);\nvar [NavigationMenuProviderImpl, useNavigationMenuContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar [ViewportContentProvider, useViewportContentContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar NavigationMenu = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n delayDuration = 200,\n skipDelayDuration = 300,\n orientation = \"horizontal\",\n dir,\n ...NavigationMenuProps\n } = props;\n const [navigationMenu, setNavigationMenu] = React.useState(null);\n const composedRef = useComposedRefs(forwardedRef, (node) => setNavigationMenu(node));\n const direction = useDirection(dir);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const skipDelayTimerRef = React.useRef(0);\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: (value2) => {\n const isOpen = value2 !== \"\";\n const hasSkipDelayDuration = skipDelayDuration > 0;\n if (isOpen) {\n window.clearTimeout(skipDelayTimerRef.current);\n if (hasSkipDelayDuration) setIsOpenDelayed(false);\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }\n onValueChange?.(value2);\n },\n defaultProp: defaultValue ?? \"\",\n caller: NAVIGATION_MENU_NAME\n });\n const startCloseTimer = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setValue(\"\"), 150);\n }, [setValue]);\n const handleOpen = React.useCallback(\n (itemValue) => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n },\n [setValue]\n );\n const handleDelayedOpen = React.useCallback(\n (itemValue) => {\n const isOpenItem = value === itemValue;\n if (isOpenItem) {\n window.clearTimeout(closeTimerRef.current);\n } else {\n openTimerRef.current = window.setTimeout(() => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n }, delayDuration);\n }\n },\n [value, setValue, delayDuration]\n );\n React.useEffect(() => {\n return () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n window.clearTimeout(skipDelayTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: true,\n value,\n dir: direction,\n orientation,\n rootNavigationMenu: navigationMenu,\n onTriggerEnter: (itemValue) => {\n window.clearTimeout(openTimerRef.current);\n if (isOpenDelayed) handleDelayedOpen(itemValue);\n else handleOpen(itemValue);\n },\n onTriggerLeave: () => {\n window.clearTimeout(openTimerRef.current);\n startCloseTimer();\n },\n onContentEnter: () => window.clearTimeout(closeTimerRef.current),\n onContentLeave: startCloseTimer,\n onItemSelect: (itemValue) => {\n setValue((prevValue) => prevValue === itemValue ? \"\" : itemValue);\n },\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(\n Primitive.nav,\n {\n \"aria-label\": \"Main\",\n \"data-orientation\": orientation,\n dir: direction,\n ...NavigationMenuProps,\n ref: composedRef\n }\n )\n }\n );\n }\n);\nNavigationMenu.displayName = NAVIGATION_MENU_NAME;\nvar SUB_NAME = \"NavigationMenuSub\";\nvar NavigationMenuSub = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n ...subProps\n } = props;\n const context = useNavigationMenuContext(SUB_NAME, __scopeNavigationMenu);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: SUB_NAME\n });\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: false,\n value,\n dir: context.dir,\n orientation,\n rootNavigationMenu: context.rootNavigationMenu,\n onTriggerEnter: (itemValue) => setValue(itemValue),\n onItemSelect: (itemValue) => setValue(itemValue),\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(Primitive.div, { \"data-orientation\": orientation, ...subProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuSub.displayName = SUB_NAME;\nvar NavigationMenuProvider = (props) => {\n const {\n scope,\n isRootMenu,\n rootNavigationMenu,\n dir,\n orientation,\n children,\n value,\n onItemSelect,\n onItemDismiss,\n onTriggerEnter,\n onTriggerLeave,\n onContentEnter,\n onContentLeave\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [viewportContent, setViewportContent] = React.useState(/* @__PURE__ */ new Map());\n const [indicatorTrack, setIndicatorTrack] = React.useState(null);\n return /* @__PURE__ */ jsx(\n NavigationMenuProviderImpl,\n {\n scope,\n isRootMenu,\n rootNavigationMenu,\n value,\n previousValue: usePrevious(value),\n baseId: useId(),\n dir,\n orientation,\n viewport,\n onViewportChange: setViewport,\n indicatorTrack,\n onIndicatorTrackChange: setIndicatorTrack,\n onTriggerEnter: useCallbackRef(onTriggerEnter),\n onTriggerLeave: useCallbackRef(onTriggerLeave),\n onContentEnter: useCallbackRef(onContentEnter),\n onContentLeave: useCallbackRef(onContentLeave),\n onItemSelect: useCallbackRef(onItemSelect),\n onItemDismiss: useCallbackRef(onItemDismiss),\n onViewportContentChange: React.useCallback((contentValue, contentData) => {\n setViewportContent((prevContent) => {\n prevContent.set(contentValue, contentData);\n return new Map(prevContent);\n });\n }, []),\n onViewportContentRemove: React.useCallback((contentValue) => {\n setViewportContent((prevContent) => {\n if (!prevContent.has(contentValue)) return prevContent;\n prevContent.delete(contentValue);\n return new Map(prevContent);\n });\n }, []),\n children: /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(ViewportContentProvider, { scope, items: viewportContent, children }) })\n }\n );\n};\nvar LIST_NAME = \"NavigationMenuList\";\nvar NavigationMenuList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...listProps } = props;\n const context = useNavigationMenuContext(LIST_NAME, __scopeNavigationMenu);\n const list = /* @__PURE__ */ jsx(Primitive.ul, { \"data-orientation\": context.orientation, ...listProps, ref: forwardedRef });\n return /* @__PURE__ */ jsx(Primitive.div, { style: { position: \"relative\" }, ref: context.onIndicatorTrackChange, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeNavigationMenu, children: context.isRootMenu ? /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: list }) : list }) });\n }\n);\nNavigationMenuList.displayName = LIST_NAME;\nvar ITEM_NAME = \"NavigationMenuItem\";\nvar [NavigationMenuItemContextProvider, useNavigationMenuItemContext] = createNavigationMenuContext(ITEM_NAME);\nvar NavigationMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, value: valueProp, ...itemProps } = props;\n const autoValue = useId();\n const value = valueProp || autoValue || \"LEGACY_REACT_AUTO_VALUE\";\n const contentRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const focusProxyRef = React.useRef(null);\n const restoreContentTabOrderRef = React.useRef(() => {\n });\n const wasEscapeCloseRef = React.useRef(false);\n const handleContentEntry = React.useCallback((side = \"start\") => {\n if (contentRef.current) {\n restoreContentTabOrderRef.current();\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) focusFirst(side === \"start\" ? candidates : candidates.reverse());\n }\n }, []);\n const handleContentExit = React.useCallback(() => {\n if (contentRef.current) {\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) restoreContentTabOrderRef.current = removeFromTabOrder(candidates);\n }\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuItemContextProvider,\n {\n scope: __scopeNavigationMenu,\n value,\n triggerRef,\n contentRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onRootContentClose: handleContentExit,\n onContentFocusOutside: handleContentExit,\n children: /* @__PURE__ */ jsx(Primitive.li, { ...itemProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuItem.displayName = ITEM_NAME;\nvar TRIGGER_NAME = \"NavigationMenuTrigger\";\nvar NavigationMenuTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, disabled, ...triggerProps } = props;\n const context = useNavigationMenuContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, itemContext.triggerRef, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, itemContext.value);\n const contentId = makeContentId(context.baseId, itemContext.value);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const wasClickCloseRef = React.useRef(false);\n const open = itemContext.value === context.value;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeNavigationMenu, value: itemContext.value, children: /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n id: triggerId,\n disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n \"data-state\": getOpenState(open),\n \"aria-expanded\": open,\n \"aria-controls\": contentId,\n ...triggerProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => {\n wasClickCloseRef.current = false;\n itemContext.wasEscapeCloseRef.current = false;\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse(() => {\n if (disabled || wasClickCloseRef.current || itemContext.wasEscapeCloseRef.current || hasPointerMoveOpenedRef.current)\n return;\n context.onTriggerEnter(itemContext.value);\n hasPointerMoveOpenedRef.current = true;\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(() => {\n if (disabled) return;\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })\n ),\n onClick: composeEventHandlers(props.onClick, () => {\n context.onItemSelect(itemContext.value);\n wasClickCloseRef.current = open;\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const verticalEntryKey = context.dir === \"rtl\" ? \"ArrowLeft\" : \"ArrowRight\";\n const entryKey = { horizontal: \"ArrowDown\", vertical: verticalEntryKey }[context.orientation];\n if (open && event.key === entryKey) {\n itemContext.onEntryKeyDown();\n event.preventDefault();\n }\n })\n }\n ) }) }),\n open && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n VisuallyHiddenPrimitive.Root,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ref: itemContext.focusProxyRef,\n onFocus: (event) => {\n const content = itemContext.contentRef.current;\n const prevFocusedElement = event.relatedTarget;\n const wasTriggerFocused = prevFocusedElement === ref.current;\n const wasFocusFromContent = content?.contains(prevFocusedElement);\n if (wasTriggerFocused || !wasFocusFromContent) {\n itemContext.onFocusProxyEnter(wasTriggerFocused ? \"start\" : \"end\");\n }\n }\n }\n ),\n context.viewport && /* @__PURE__ */ jsx(\"span\", { \"aria-owns\": contentId })\n ] })\n ] });\n});\nNavigationMenuTrigger.displayName = TRIGGER_NAME;\nvar LINK_NAME = \"NavigationMenuLink\";\nvar LINK_SELECT = \"navigationMenu.linkSelect\";\nvar NavigationMenuLink = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, active, onSelect, ...linkProps } = props;\n return /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-active\": active ? \"\" : void 0,\n \"aria-current\": active ? \"page\" : void 0,\n ...linkProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(\n props.onClick,\n (event) => {\n const target = event.target;\n const linkSelectEvent = new CustomEvent(LINK_SELECT, {\n bubbles: true,\n cancelable: true\n });\n target.addEventListener(LINK_SELECT, (event2) => onSelect?.(event2), { once: true });\n dispatchDiscreteCustomEvent(target, linkSelectEvent);\n if (!linkSelectEvent.defaultPrevented && !event.metaKey) {\n const rootContentDismissEvent = new CustomEvent(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n dispatchDiscreteCustomEvent(target, rootContentDismissEvent);\n }\n },\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nNavigationMenuLink.displayName = LINK_NAME;\nvar INDICATOR_NAME = \"NavigationMenuIndicator\";\nvar NavigationMenuIndicator = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, props.__scopeNavigationMenu);\n const isVisible = Boolean(context.value);\n return context.indicatorTrack ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Presence, { present: forceMount || isVisible, children: /* @__PURE__ */ jsx(NavigationMenuIndicatorImpl, { ...indicatorProps, ref: forwardedRef }) }),\n context.indicatorTrack\n ) : null;\n});\nNavigationMenuIndicator.displayName = INDICATOR_NAME;\nvar NavigationMenuIndicatorImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, __scopeNavigationMenu);\n const getItems = useCollection(__scopeNavigationMenu);\n const [activeTrigger, setActiveTrigger] = React.useState(\n null\n );\n const [position, setPosition] = React.useState(null);\n const isHorizontal = context.orientation === \"horizontal\";\n const isVisible = Boolean(context.value);\n React.useEffect(() => {\n const items = getItems();\n const triggerNode = items.find((item) => item.value === context.value)?.ref.current;\n if (triggerNode) setActiveTrigger(triggerNode);\n }, [getItems, context.value]);\n const handlePositionChange = () => {\n if (activeTrigger) {\n setPosition({\n size: isHorizontal ? activeTrigger.offsetWidth : activeTrigger.offsetHeight,\n offset: isHorizontal ? activeTrigger.offsetLeft : activeTrigger.offsetTop\n });\n }\n };\n useResizeObserver(activeTrigger, handlePositionChange);\n useResizeObserver(context.indicatorTrack, handlePositionChange);\n return position ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n \"data-state\": isVisible ? \"visible\" : \"hidden\",\n \"data-orientation\": context.orientation,\n ...indicatorProps,\n ref: forwardedRef,\n style: {\n position: \"absolute\",\n ...isHorizontal ? {\n left: 0,\n width: position.size + \"px\",\n transform: `translateX(${position.offset}px)`\n } : {\n top: 0,\n height: position.size + \"px\",\n transform: `translateY(${position.offset}px)`\n },\n ...indicatorProps.style\n }\n }\n ) : null;\n});\nvar CONTENT_NAME = \"NavigationMenuContent\";\nvar NavigationMenuContent = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const composedRefs = useComposedRefs(itemContext.contentRef, forwardedRef);\n const open = itemContext.value === context.value;\n const commonProps = {\n value: itemContext.value,\n triggerRef: itemContext.triggerRef,\n focusProxyRef: itemContext.focusProxyRef,\n wasEscapeCloseRef: itemContext.wasEscapeCloseRef,\n onContentFocusOutside: itemContext.onContentFocusOutside,\n onRootContentClose: itemContext.onRootContentClose,\n ...contentProps\n };\n return !context.viewport ? /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n \"data-state\": getOpenState(open),\n ...commonProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(context.onContentLeave)\n ),\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n ...commonProps.style\n }\n }\n ) }) : /* @__PURE__ */ jsx(ViewportContentMounter, { forceMount, ...commonProps, ref: composedRefs });\n});\nNavigationMenuContent.displayName = CONTENT_NAME;\nvar ViewportContentMounter = React.forwardRef((props, forwardedRef) => {\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const { onViewportContentChange, onViewportContentRemove } = context;\n useLayoutEffect(() => {\n onViewportContentChange(props.value, {\n ref: forwardedRef,\n ...props\n });\n }, [props, forwardedRef, onViewportContentChange]);\n useLayoutEffect(() => {\n return () => onViewportContentRemove(props.value);\n }, [props.value, onViewportContentRemove]);\n return null;\n});\nvar ROOT_CONTENT_DISMISS = \"navigationMenu.rootContentDismiss\";\nvar NavigationMenuContentImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onRootContentClose,\n onContentFocusOutside,\n ...contentProps\n } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, __scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const getItems = useCollection(__scopeNavigationMenu);\n const prevMotionAttributeRef = React.useRef(null);\n const { onItemDismiss } = context;\n React.useEffect(() => {\n const content = ref.current;\n if (context.isRootMenu && content) {\n const handleClose = () => {\n onItemDismiss();\n onRootContentClose();\n if (content.contains(document.activeElement)) triggerRef.current?.focus();\n };\n content.addEventListener(ROOT_CONTENT_DISMISS, handleClose);\n return () => content.removeEventListener(ROOT_CONTENT_DISMISS, handleClose);\n }\n }, [context.isRootMenu, props.value, triggerRef, onItemDismiss, onRootContentClose]);\n const motionAttribute = React.useMemo(() => {\n const items = getItems();\n const values = items.map((item) => item.value);\n if (context.dir === \"rtl\") values.reverse();\n const index = values.indexOf(context.value);\n const prevIndex = values.indexOf(context.previousValue);\n const isSelected = value === context.value;\n const wasSelected = prevIndex === values.indexOf(value);\n if (!isSelected && !wasSelected) return prevMotionAttributeRef.current;\n const attribute = (() => {\n if (index !== prevIndex) {\n if (isSelected && prevIndex !== -1) return index > prevIndex ? \"from-end\" : \"from-start\";\n if (wasSelected && index !== -1) return index > prevIndex ? \"to-start\" : \"to-end\";\n }\n return null;\n })();\n prevMotionAttributeRef.current = attribute;\n return attribute;\n }, [context.previousValue, context.value, context.dir, getItems, value]);\n return /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n id: contentId,\n \"aria-labelledby\": triggerId,\n \"data-motion\": motionAttribute,\n \"data-orientation\": context.orientation,\n ...contentProps,\n ref: composedRefs,\n disableOutsidePointerEvents: false,\n onDismiss: () => {\n const rootContentDismissEvent = new Event(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n ref.current?.dispatchEvent(rootContentDismissEvent);\n },\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n onContentFocusOutside();\n const target = event.target;\n if (context.rootNavigationMenu?.contains(target)) event.preventDefault();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const target = event.target;\n const isTrigger = getItems().some((item) => item.ref.current?.contains(target));\n const isRootViewport = context.isRootMenu && context.viewport?.contains(target);\n if (isTrigger || isRootViewport || !context.isRootMenu) event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const candidates = getTabbableCandidates(event.currentTarget);\n const focusedElement = document.activeElement;\n const index = candidates.findIndex((candidate) => candidate === focusedElement);\n const isMovingBackwards = event.shiftKey;\n const nextCandidates = isMovingBackwards ? candidates.slice(0, index).reverse() : candidates.slice(index + 1, candidates.length);\n if (focusFirst(nextCandidates)) {\n event.preventDefault();\n } else {\n focusProxyRef.current?.focus();\n }\n }\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (_event) => {\n wasEscapeCloseRef.current = true;\n })\n }\n ) });\n});\nvar VIEWPORT_NAME = \"NavigationMenuViewport\";\nvar NavigationMenuViewport = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...viewportProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, props.__scopeNavigationMenu);\n const open = Boolean(context.value);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(NavigationMenuViewportImpl, { ...viewportProps, ref: forwardedRef }) });\n});\nNavigationMenuViewport.displayName = VIEWPORT_NAME;\nvar NavigationMenuViewportImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, children, ...viewportImplProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, __scopeNavigationMenu);\n const composedRefs = useComposedRefs(forwardedRef, context.onViewportChange);\n const viewportContentContext = useViewportContentContext(\n CONTENT_NAME,\n props.__scopeNavigationMenu\n );\n const [size, setSize] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const viewportWidth = size ? size?.width + \"px\" : void 0;\n const viewportHeight = size ? size?.height + \"px\" : void 0;\n const open = Boolean(context.value);\n const activeContentValue = open ? context.value : context.previousValue;\n const handleSizeChange = () => {\n if (content) setSize({ width: content.offsetWidth, height: content.offsetHeight });\n };\n useResizeObserver(content, handleSizeChange);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getOpenState(open),\n \"data-orientation\": context.orientation,\n ...viewportImplProps,\n ref: composedRefs,\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n [\"--radix-navigation-menu-viewport-width\"]: viewportWidth,\n [\"--radix-navigation-menu-viewport-height\"]: viewportHeight,\n ...viewportImplProps.style\n },\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, whenMouse(context.onContentLeave)),\n children: Array.from(viewportContentContext.items).map(([value, { ref, forceMount, ...props2 }]) => {\n const isActive = activeContentValue === value;\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isActive, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n ...props2,\n ref: composeRefs(ref, (node) => {\n if (isActive && node) setContent(node);\n })\n }\n ) }, value);\n })\n }\n );\n});\nvar FOCUS_GROUP_NAME = \"FocusGroup\";\nvar FocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const context = useNavigationMenuContext(FOCUS_GROUP_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.Provider, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(FocusGroupCollection.Slot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(Primitive.div, { dir: context.dir, ...groupProps, ref: forwardedRef }) }) });\n }\n);\nvar ARROW_KEYS = [\"ArrowRight\", \"ArrowLeft\", \"ArrowUp\", \"ArrowDown\"];\nvar FOCUS_GROUP_ITEM_NAME = \"FocusGroupItem\";\nvar FocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const getItems = useFocusGroupCollection(__scopeNavigationMenu);\n const context = useNavigationMenuContext(FOCUS_GROUP_ITEM_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.ItemSlot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n ...groupProps,\n ref: forwardedRef,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isFocusNavigationKey = [\"Home\", \"End\", ...ARROW_KEYS].includes(event.key);\n if (isFocusNavigationKey) {\n let candidateNodes = getItems().map((item) => item.ref.current);\n const prevItemKey = context.dir === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\";\n const prevKeys = [prevItemKey, \"ArrowUp\", \"End\"];\n if (prevKeys.includes(event.key)) candidateNodes.reverse();\n if (ARROW_KEYS.includes(event.key)) {\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nfunction removeFromTabOrder(candidates) {\n candidates.forEach((candidate) => {\n candidate.dataset.tabindex = candidate.getAttribute(\"tabindex\") || \"\";\n candidate.setAttribute(\"tabindex\", \"-1\");\n });\n return () => {\n candidates.forEach((candidate) => {\n const prevTabIndex = candidate.dataset.tabindex;\n candidate.setAttribute(\"tabindex\", prevTabIndex);\n });\n };\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root2 = NavigationMenu;\nvar Sub = NavigationMenuSub;\nvar List = NavigationMenuList;\nvar Item = NavigationMenuItem;\nvar Trigger = NavigationMenuTrigger;\nvar Link = NavigationMenuLink;\nvar Indicator = NavigationMenuIndicator;\nvar Content = NavigationMenuContent;\nvar Viewport = NavigationMenuViewport;\nexport {\n Content,\n Indicator,\n Item,\n Link,\n List,\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuSub,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n Root2 as Root,\n Sub,\n Trigger,\n Viewport,\n createNavigationMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction NavigationMenu({\n\tclassName,\n\tchildren,\n\tviewport = true,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n\tviewport?: boolean;\n}) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Root\n\t\t\tdata-slot=\"navigation-menu\"\n\t\t\tdata-viewport={viewport}\n\t\t\tclassName={cn(\n\t\t\t\t\"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t{viewport && <NavigationMenuViewport />}\n\t\t</NavigationMenuPrimitive.Root>\n\t);\n}\n\nfunction NavigationMenuList({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.List\n\t\t\tdata-slot=\"navigation-menu-list\"\n\t\t\tclassName={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction NavigationMenuItem({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Item\n\t\t\tdata-slot=\"navigation-menu-item\"\n\t\t\tclassName={cn(\"relative\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst navigationMenuTriggerStyle = cva(\n\t\"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Trigger\n\t\t\tdata-slot=\"navigation-menu-trigger\"\n\t\t\tclassName={cn(navigationMenuTriggerStyle(), \"group\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}{\" \"}\n\t\t\t<ChevronDownIcon\n\t\t\t\tclassName=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t</NavigationMenuPrimitive.Trigger>\n\t);\n}\n\nfunction NavigationMenuContent({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Content\n\t\t\tdata-slot=\"navigation-menu-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n\t\t\t\t\"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction NavigationMenuViewport({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n\treturn (\n\t\t<div className={cn(\"absolute top-full left-0 isolate z-50 flex justify-center\")}>\n\t\t\t<NavigationMenuPrimitive.Viewport\n\t\t\t\tdata-slot=\"navigation-menu-viewport\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction NavigationMenuLink({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Link\n\t\t\tdata-slot=\"navigation-menu-link\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction NavigationMenuIndicator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n\treturn (\n\t\t<NavigationMenuPrimitive.Indicator\n\t\t\tdata-slot=\"navigation-menu-indicator\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n\t\t</NavigationMenuPrimitive.Indicator>\n\t);\n}\n\nexport {\n\tNavigationMenu,\n\tNavigationMenuList,\n\tNavigationMenuItem,\n\tNavigationMenuContent,\n\tNavigationMenuTrigger,\n\tNavigationMenuLink,\n\tNavigationMenuIndicator,\n\tNavigationMenuViewport,\n\tnavigationMenuTriggerStyle,\n};\n"],"names":["NavigationMenu","value","NavigationMenuList","NavigationMenuItem","NavigationMenuTrigger","VisuallyHiddenPrimitive.Root","NavigationMenuLink","event","NavigationMenuIndicator","ReactDOM","NavigationMenuContent","useLayoutEffect","NavigationMenuViewport","props","Root","className","children","viewport","NavigationMenuPrimitive","data-slot","data-viewport","cn","navigationMenuTriggerStyle","cva","ChevronDownIcon","aria-hidden","div"],"mappings":"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