{"version":3,"file":"__federation_expose_PromoKuDetails-lMQMJmmx.js","sources":["../../../../node_modules/@chakra-ui/utils/dist/chunk-O3SWHQEE.mjs","../../src/configs/featuresFlag.ts","../../../../node_modules/@chakra-ui/transition/dist/chunk-6NHXDBFO.mjs","../../../../node_modules/@chakra-ui/transition/dist/chunk-TR226DUX.mjs","../../../../node_modules/@chakra-ui/transition/dist/chunk-SR4VX3RF.mjs","../../../../node_modules/@chakra-ui/transition/dist/chunk-7254PCTD.mjs","../../../../node_modules/@chakra-ui/hooks/dist/chunk-724WJZW4.mjs","../../../../node_modules/@chakra-ui/hooks/dist/chunk-KA2477BY.mjs","../../../../node_modules/@chakra-ui/hooks/dist/chunk-6B2YUEGK.mjs","../../../../node_modules/@chakra-ui/hooks/dist/chunk-7JSBRQFI.mjs","../../../../node_modules/@chakra-ui/hooks/dist/chunk-7JBTTEVG.mjs","../../../../node_modules/@chakra-ui/dom-utils/dist/chunk-3XANSPY5.mjs","../../../../node_modules/@chakra-ui/dom-utils/dist/chunk-ROURZMX4.mjs","../../../../node_modules/@chakra-ui/dom-utils/dist/index.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-7NUJBCEL.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-5WQ4PXEV.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-CYRBRIA2.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-TJ2Q5ITW.mjs","../../../../node_modules/@chakra-ui/portal/dist/chunk-HK66PB7M.mjs","../../../../node_modules/@chakra-ui/portal/dist/chunk-34PD6CUK.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-MSA2NPQT.mjs","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/constants.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/FocusGuard.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/medium.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/Lock.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/array.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/is.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/tabbables.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/safe.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/focusInside.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/solver.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/auto-focus.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/focusSolver.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/focusables.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/commands.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/focus-lock/dist/es2015/moveFocusInside.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/util.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/Trap.js","../../../../node_modules/@chakra-ui/focus-lock/node_modules/react-focus-lock/dist/es2015/Combination.js","../../../../node_modules/@chakra-ui/focus-lock/dist/chunk-UU5OHSNF.mjs","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../../node_modules/@chakra-ui/modal/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../../node_modules/@chakra-ui/modal/dist/chunk-NABYTFTG.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-EL2VKIZQ.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-5FG5SY5K.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-JQMJHPZH.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-OFOVX77R.mjs","../../../../node_modules/@chakra-ui/modal/dist/chunk-4FCEGNGT.mjs","../../src/hooks/flagging/useFlagging.ts","../../node_modules/react-icons/io5/index.mjs","../../src/assets/images/error_general.svg","../../src/components/ErrorGeneral/index.tsx","../../src/features/PromoKu/components/PromoDetailModal/index.tsx","../../src/features/PromoKu/pages/Detail/tracker.ts","../../src/features/PromoKu/pages/Detail/PromoKuDetails.tsx","../../src/features/PromoKu/pages/Detail/index.tsx","../../src/features/PromoKu/constants/index.ts","../../src/features/PromoKu/pages/List/tracker.ts","../../src/features/PromoKu/pages/List/PromoKuPageNonAuthorized.tsx","../../src/features/PromoKu/pages/List/index.tsx","../../src/features/PromoKu/components/CodeInput/index.tsx","../../src/assets/images/empty_promo.svg","../../src/features/PromoKu/components/EmptyPromo/index.tsx","../../src/assets/icons/ic_promo.svg","../../src/features/PromoKu/utils/string.ts","../../src/features/PromoKu/components/PromoCard/index.tsx","../../node_modules/react-icons/fa6/index.mjs","../../src/features/PromoKu/components/PromoCardV2/index.tsx","../../src/assets/images/img_default.svg","../../src/features/PromoKu/components/PromoDetail/TransactionLimit.tsx","../../src/features/PromoKu/components/PromoDetail/index.tsx","../../src/features/PromoKu/components/PromoList/index.tsx","../../src/features/PromoKu/components/PromoListV2/index.tsx","../../src/features/PromoKu/pages/List/PromoKuPageAuthorized.tsx"],"sourcesContent":["// src/dom.ts\nfunction isElement(el) {\n return el != null && typeof el == \"object\" && \"nodeType\" in el && el.nodeType === Node.ELEMENT_NODE;\n}\nfunction isHTMLElement(el) {\n var _a;\n if (!isElement(el)) {\n return false;\n }\n const win = (_a = el.ownerDocument.defaultView) != null ? _a : window;\n return el instanceof win.HTMLElement;\n}\nfunction getOwnerWindow(node) {\n var _a, _b;\n return isElement(node) ? (_b = (_a = getOwnerDocument(node)) == null ? void 0 : _a.defaultView) != null ? _b : window : window;\n}\nfunction getOwnerDocument(node) {\n var _a;\n return isElement(node) ? (_a = node.ownerDocument) != null ? _a : document : document;\n}\nfunction getEventWindow(event) {\n var _a;\n return (_a = event.view) != null ? _a : window;\n}\nfunction canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\nvar isBrowser = /* @__PURE__ */ canUseDOM();\nvar dataAttr = (condition) => condition ? \"\" : void 0;\nvar ariaAttr = (condition) => condition ? true : void 0;\nvar cx = (...classNames) => classNames.filter(Boolean).join(\" \");\nfunction getActiveElement(node) {\n const doc = getOwnerDocument(node);\n return doc == null ? void 0 : doc.activeElement;\n}\nfunction contains(parent, child) {\n if (!parent)\n return false;\n return parent === child || parent.contains(child);\n}\nfunction addDomEvent(target, eventName, handler, options) {\n target.addEventListener(eventName, handler, options);\n return () => {\n target.removeEventListener(eventName, handler, options);\n };\n}\nfunction normalizeEventKey(event) {\n const { key, keyCode } = event;\n const isArrowKey = keyCode >= 37 && keyCode <= 40 && key.indexOf(\"Arrow\") !== 0;\n const eventKey = isArrowKey ? `Arrow${key}` : key;\n return eventKey;\n}\nfunction getRelatedTarget(event) {\n var _a, _b;\n const target = (_a = event.target) != null ? _a : event.currentTarget;\n const activeElement = getActiveElement(target);\n return (_b = event.relatedTarget) != null ? _b : activeElement;\n}\nfunction isRightClick(event) {\n return event.button !== 0;\n}\n\nexport {\n isElement,\n isHTMLElement,\n getOwnerWindow,\n getOwnerDocument,\n getEventWindow,\n canUseDOM,\n isBrowser,\n dataAttr,\n ariaAttr,\n cx,\n getActiveElement,\n contains,\n addDomEvent,\n normalizeEventKey,\n getRelatedTarget,\n isRightClick\n};\n","/** \n Give to flagID from flagging service\n Recommended to add all the environment\n e.g. [staging, uat, productio]\n\n if you only provide one flagID on the array,\n we assume you provide a staging environment flagId\n so,the other flagID (uat and production) will behandled by useFlagging hooks\n */\nexport const FLAGGING_SERVICE = {\n FEATURE_PROMO_REVAMP_V2: [2212, 2213, 2214],\n FEATURE_PROMOKU_REFERRAL: [2386, 2387, 2388],\n};\n","'use client'\n\n// src/transition-utils.ts\nvar TRANSITION_EASINGS = {\n ease: [0.25, 0.1, 0.25, 1],\n easeIn: [0.4, 0, 1, 1],\n easeOut: [0, 0, 0.2, 1],\n easeInOut: [0.4, 0, 0.2, 1]\n};\nvar TRANSITION_VARIANTS = {\n scale: {\n enter: { scale: 1 },\n exit: { scale: 0.95 }\n },\n fade: {\n enter: { opacity: 1 },\n exit: { opacity: 0 }\n },\n pushLeft: {\n enter: { x: \"100%\" },\n exit: { x: \"-30%\" }\n },\n pushRight: {\n enter: { x: \"-100%\" },\n exit: { x: \"30%\" }\n },\n pushUp: {\n enter: { y: \"100%\" },\n exit: { y: \"-30%\" }\n },\n pushDown: {\n enter: { y: \"-100%\" },\n exit: { y: \"30%\" }\n },\n slideLeft: {\n position: { left: 0, top: 0, bottom: 0, width: \"100%\" },\n enter: { x: 0, y: 0 },\n exit: { x: \"-100%\", y: 0 }\n },\n slideRight: {\n position: { right: 0, top: 0, bottom: 0, width: \"100%\" },\n enter: { x: 0, y: 0 },\n exit: { x: \"100%\", y: 0 }\n },\n slideUp: {\n position: { top: 0, left: 0, right: 0, maxWidth: \"100vw\" },\n enter: { x: 0, y: 0 },\n exit: { x: 0, y: \"-100%\" }\n },\n slideDown: {\n position: { bottom: 0, left: 0, right: 0, maxWidth: \"100vw\" },\n enter: { x: 0, y: 0 },\n exit: { x: 0, y: \"100%\" }\n }\n};\nfunction getSlideTransition(options) {\n var _a;\n const side = (_a = options == null ? void 0 : options.direction) != null ? _a : \"right\";\n switch (side) {\n case \"right\":\n return TRANSITION_VARIANTS.slideRight;\n case \"left\":\n return TRANSITION_VARIANTS.slideLeft;\n case \"bottom\":\n return TRANSITION_VARIANTS.slideDown;\n case \"top\":\n return TRANSITION_VARIANTS.slideUp;\n default:\n return TRANSITION_VARIANTS.slideRight;\n }\n}\nvar TRANSITION_DEFAULTS = {\n enter: {\n duration: 0.2,\n ease: TRANSITION_EASINGS.easeOut\n },\n exit: {\n duration: 0.1,\n ease: TRANSITION_EASINGS.easeIn\n }\n};\nvar withDelay = {\n enter: (transition, delay) => ({\n ...transition,\n delay: typeof delay === \"number\" ? delay : delay == null ? void 0 : delay[\"enter\"]\n }),\n exit: (transition, delay) => ({\n ...transition,\n delay: typeof delay === \"number\" ? delay : delay == null ? void 0 : delay[\"exit\"]\n })\n};\n\nexport {\n TRANSITION_EASINGS,\n TRANSITION_VARIANTS,\n getSlideTransition,\n TRANSITION_DEFAULTS,\n withDelay\n};\n//# sourceMappingURL=chunk-6NHXDBFO.mjs.map","'use client'\nimport {\n TRANSITION_DEFAULTS,\n withDelay\n} from \"./chunk-6NHXDBFO.mjs\";\n\n// src/fade.tsx\nimport { cx } from \"@chakra-ui/shared-utils\";\nimport {\n AnimatePresence,\n motion\n} from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar variants = {\n enter: ({ transition, transitionEnd, delay } = {}) => {\n var _a;\n return {\n opacity: 1,\n transition: (_a = transition == null ? void 0 : transition.enter) != null ? _a : withDelay.enter(TRANSITION_DEFAULTS.enter, delay),\n transitionEnd: transitionEnd == null ? void 0 : transitionEnd.enter\n };\n },\n exit: ({ transition, transitionEnd, delay } = {}) => {\n var _a;\n return {\n opacity: 0,\n transition: (_a = transition == null ? void 0 : transition.exit) != null ? _a : withDelay.exit(TRANSITION_DEFAULTS.exit, delay),\n transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit\n };\n }\n};\nvar fadeConfig = {\n initial: \"exit\",\n animate: \"enter\",\n exit: \"exit\",\n variants\n};\nvar Fade = forwardRef(function Fade2(props, ref) {\n const {\n unmountOnExit,\n in: isOpen,\n className,\n transition,\n transitionEnd,\n delay,\n ...rest\n } = props;\n const animate = isOpen || unmountOnExit ? \"enter\" : \"exit\";\n const show = unmountOnExit ? isOpen && unmountOnExit : true;\n const custom = { transition, transitionEnd, delay };\n return /* @__PURE__ */ jsx(AnimatePresence, { custom, children: show && /* @__PURE__ */ jsx(\n motion.div,\n {\n ref,\n className: cx(\"chakra-fade\", className),\n custom,\n ...fadeConfig,\n animate,\n ...rest\n }\n ) });\n});\nFade.displayName = \"Fade\";\n\nexport {\n fadeConfig,\n Fade\n};\n//# sourceMappingURL=chunk-TR226DUX.mjs.map","'use client'\nimport {\n TRANSITION_DEFAULTS,\n withDelay\n} from \"./chunk-6NHXDBFO.mjs\";\n\n// src/scale-fade.tsx\nimport { cx } from \"@chakra-ui/shared-utils\";\nimport {\n AnimatePresence,\n motion\n} from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar variants = {\n exit: ({ reverse, initialScale, transition, transitionEnd, delay }) => {\n var _a;\n return {\n opacity: 0,\n ...reverse ? { scale: initialScale, transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit } : { transitionEnd: { scale: initialScale, ...transitionEnd == null ? void 0 : transitionEnd.exit } },\n transition: (_a = transition == null ? void 0 : transition.exit) != null ? _a : withDelay.exit(TRANSITION_DEFAULTS.exit, delay)\n };\n },\n enter: ({ transitionEnd, transition, delay }) => {\n var _a;\n return {\n opacity: 1,\n scale: 1,\n transition: (_a = transition == null ? void 0 : transition.enter) != null ? _a : withDelay.enter(TRANSITION_DEFAULTS.enter, delay),\n transitionEnd: transitionEnd == null ? void 0 : transitionEnd.enter\n };\n }\n};\nvar scaleFadeConfig = {\n initial: \"exit\",\n animate: \"enter\",\n exit: \"exit\",\n variants\n};\nvar ScaleFade = forwardRef(\n function ScaleFade2(props, ref) {\n const {\n unmountOnExit,\n in: isOpen,\n reverse = true,\n initialScale = 0.95,\n className,\n transition,\n transitionEnd,\n delay,\n ...rest\n } = props;\n const show = unmountOnExit ? isOpen && unmountOnExit : true;\n const animate = isOpen || unmountOnExit ? \"enter\" : \"exit\";\n const custom = { initialScale, reverse, transition, transitionEnd, delay };\n return /* @__PURE__ */ jsx(AnimatePresence, { custom, children: show && /* @__PURE__ */ jsx(\n motion.div,\n {\n ref,\n className: cx(\"chakra-offset-slide\", className),\n ...scaleFadeConfig,\n animate,\n custom,\n ...rest\n }\n ) });\n }\n);\nScaleFade.displayName = \"ScaleFade\";\n\nexport {\n scaleFadeConfig,\n ScaleFade\n};\n//# sourceMappingURL=chunk-SR4VX3RF.mjs.map","'use client'\nimport {\n TRANSITION_DEFAULTS,\n withDelay\n} from \"./chunk-6NHXDBFO.mjs\";\n\n// src/slide-fade.tsx\nimport { cx } from \"@chakra-ui/shared-utils\";\nimport {\n AnimatePresence,\n motion\n} from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar variants = {\n initial: ({ offsetX, offsetY, transition, transitionEnd, delay }) => {\n var _a;\n return {\n opacity: 0,\n x: offsetX,\n y: offsetY,\n transition: (_a = transition == null ? void 0 : transition.exit) != null ? _a : withDelay.exit(TRANSITION_DEFAULTS.exit, delay),\n transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit\n };\n },\n enter: ({ transition, transitionEnd, delay }) => {\n var _a;\n return {\n opacity: 1,\n x: 0,\n y: 0,\n transition: (_a = transition == null ? void 0 : transition.enter) != null ? _a : withDelay.enter(TRANSITION_DEFAULTS.enter, delay),\n transitionEnd: transitionEnd == null ? void 0 : transitionEnd.enter\n };\n },\n exit: ({ offsetY, offsetX, transition, transitionEnd, reverse, delay }) => {\n var _a;\n const offset = { x: offsetX, y: offsetY };\n return {\n opacity: 0,\n transition: (_a = transition == null ? void 0 : transition.exit) != null ? _a : withDelay.exit(TRANSITION_DEFAULTS.exit, delay),\n ...reverse ? { ...offset, transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit } : { transitionEnd: { ...offset, ...transitionEnd == null ? void 0 : transitionEnd.exit } }\n };\n }\n};\nvar slideFadeConfig = {\n initial: \"initial\",\n animate: \"enter\",\n exit: \"exit\",\n variants\n};\nvar SlideFade = forwardRef(\n function SlideFade2(props, ref) {\n const {\n unmountOnExit,\n in: isOpen,\n reverse = true,\n className,\n offsetX = 0,\n offsetY = 8,\n transition,\n transitionEnd,\n delay,\n ...rest\n } = props;\n const show = unmountOnExit ? isOpen && unmountOnExit : true;\n const animate = isOpen || unmountOnExit ? \"enter\" : \"exit\";\n const custom = {\n offsetX,\n offsetY,\n reverse,\n transition,\n transitionEnd,\n delay\n };\n return /* @__PURE__ */ jsx(AnimatePresence, { custom, children: show && /* @__PURE__ */ jsx(\n motion.div,\n {\n ref,\n className: cx(\"chakra-offset-slide\", className),\n custom,\n ...slideFadeConfig,\n animate,\n ...rest\n }\n ) });\n }\n);\nSlideFade.displayName = \"SlideFade\";\n\nexport {\n slideFadeConfig,\n SlideFade\n};\n//# sourceMappingURL=chunk-7254PCTD.mjs.map","'use client'\n\n// src/use-safe-layout-effect.ts\nimport { isBrowser } from \"@chakra-ui/utils\";\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useSafeLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport {\n useSafeLayoutEffect\n};\n//# sourceMappingURL=chunk-724WJZW4.mjs.map","'use client'\nimport {\n useSafeLayoutEffect\n} from \"./chunk-724WJZW4.mjs\";\n\n// src/use-callback-ref.ts\nimport { useCallback, useRef } from \"react\";\nfunction useCallbackRef(fn, deps = []) {\n const ref = useRef(fn);\n useSafeLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, deps);\n}\n\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=chunk-KA2477BY.mjs.map","'use client'\n\n// src/use-id.ts\nimport { useCallback, useId as useReactId, useMemo, useState } from \"react\";\nfunction useId(idProp, prefix) {\n const id = useReactId();\n return useMemo(\n () => idProp || [prefix, id].filter(Boolean).join(\"-\"),\n [idProp, prefix, id]\n );\n}\nfunction useIds(idProp, ...prefixes) {\n const id = useId(idProp);\n return useMemo(() => {\n return prefixes.map((prefix) => `${prefix}-${id}`);\n }, [id, prefixes]);\n}\nfunction useOptionalPart(partId) {\n const [id, setId] = useState(null);\n const ref = useCallback(\n (node) => {\n setId(node ? partId : null);\n },\n [partId]\n );\n return { ref, id, isRendered: Boolean(id) };\n}\n\nexport {\n useId,\n useIds,\n useOptionalPart\n};\n//# sourceMappingURL=chunk-6B2YUEGK.mjs.map","'use client'\nimport {\n useCallbackRef\n} from \"./chunk-KA2477BY.mjs\";\n\n// src/use-controllable.ts\nimport { runIfFn } from \"@chakra-ui/utils\";\nimport { useCallback, useState } from \"react\";\nfunction useControllableProp(prop, state) {\n const isControlled = prop !== void 0;\n const value = isControlled && typeof prop !== \"undefined\" ? prop : state;\n return [isControlled, value];\n}\nfunction useControllableState(props) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n shouldUpdate = (prev, next) => prev !== next\n } = props;\n const onChangeProp = useCallbackRef(onChange);\n const shouldUpdateProp = useCallbackRef(shouldUpdate);\n const [valueState, setValue] = useState(defaultValue);\n const isControlled = valueProp !== void 0;\n const value = isControlled ? valueProp : valueState;\n const updateValue = useCallback(\n (next) => {\n const nextValue = runIfFn(next, value);\n if (!shouldUpdateProp(value, nextValue)) {\n return;\n }\n if (!isControlled) {\n setValue(nextValue);\n }\n onChangeProp(nextValue);\n },\n [isControlled, onChangeProp, value, shouldUpdateProp]\n );\n return [value, updateValue];\n}\n\nexport {\n useControllableProp,\n useControllableState\n};\n//# sourceMappingURL=chunk-7JSBRQFI.mjs.map","'use client'\nimport {\n useId\n} from \"./chunk-6B2YUEGK.mjs\";\nimport {\n useControllableProp\n} from \"./chunk-7JSBRQFI.mjs\";\nimport {\n useCallbackRef\n} from \"./chunk-KA2477BY.mjs\";\n\n// src/use-disclosure.ts\nimport { callAllHandlers } from \"@chakra-ui/utils\";\nimport { useCallback, useState } from \"react\";\nfunction useDisclosure(props = {}) {\n const {\n onClose: onCloseProp,\n onOpen: onOpenProp,\n isOpen: isOpenProp,\n id: idProp\n } = props;\n const onOpenPropCallbackRef = useCallbackRef(onOpenProp);\n const onClosePropCallbackRef = useCallbackRef(onCloseProp);\n const [isOpenState, setIsOpen] = useState(props.defaultIsOpen || false);\n const [isControlled, isOpen] = useControllableProp(isOpenProp, isOpenState);\n const id = useId(idProp, \"disclosure\");\n const onClose = useCallback(() => {\n if (!isControlled) {\n setIsOpen(false);\n }\n onClosePropCallbackRef == null ? void 0 : onClosePropCallbackRef();\n }, [isControlled, onClosePropCallbackRef]);\n const onOpen = useCallback(() => {\n if (!isControlled) {\n setIsOpen(true);\n }\n onOpenPropCallbackRef == null ? void 0 : onOpenPropCallbackRef();\n }, [isControlled, onOpenPropCallbackRef]);\n const onToggle = useCallback(() => {\n const action = isOpen ? onClose : onOpen;\n action();\n }, [isOpen, onOpen, onClose]);\n return {\n isOpen: !!isOpen,\n onOpen,\n onClose,\n onToggle,\n isControlled,\n getButtonProps: (props2 = {}) => ({\n ...props2,\n \"aria-expanded\": isOpen,\n \"aria-controls\": id,\n onClick: callAllHandlers(props2.onClick, onToggle)\n }),\n getDisclosureProps: (props2 = {}) => ({\n ...props2,\n hidden: !isOpen,\n id\n })\n };\n}\n\nexport {\n useDisclosure\n};\n//# sourceMappingURL=chunk-7JBTTEVG.mjs.map","// src/dom.ts\nfunction isElement(el) {\n return el != null && typeof el == \"object\" && \"nodeType\" in el && el.nodeType === Node.ELEMENT_NODE;\n}\nfunction isHTMLElement(el) {\n var _a;\n if (!isElement(el))\n return false;\n const win = (_a = el.ownerDocument.defaultView) != null ? _a : window;\n return el instanceof win.HTMLElement;\n}\nfunction getOwnerWindow(node) {\n var _a, _b;\n return (_b = (_a = getOwnerDocument(node)) == null ? void 0 : _a.defaultView) != null ? _b : window;\n}\nfunction getOwnerDocument(node) {\n return isElement(node) ? node.ownerDocument : document;\n}\nfunction getEventWindow(event) {\n var _a;\n return (_a = event.view) != null ? _a : window;\n}\nfunction isBrowser() {\n return Boolean(globalThis == null ? void 0 : globalThis.document);\n}\nfunction getActiveElement(node) {\n return getOwnerDocument(node).activeElement;\n}\nfunction contains(parent, child) {\n if (!parent)\n return false;\n return parent === child || parent.contains(child);\n}\n\nexport {\n isElement,\n isHTMLElement,\n getOwnerWindow,\n getOwnerDocument,\n getEventWindow,\n isBrowser,\n getActiveElement,\n contains\n};\n","import {\n getOwnerDocument,\n isHTMLElement\n} from \"./chunk-3XANSPY5.mjs\";\n\n// src/tabbable.ts\nvar hasDisplayNone = (element) => window.getComputedStyle(element).display === \"none\";\nvar hasTabIndex = (element) => element.hasAttribute(\"tabindex\");\nvar hasNegativeTabIndex = (element) => hasTabIndex(element) && element.tabIndex === -1;\nfunction isDisabled(element) {\n return Boolean(element.getAttribute(\"disabled\")) === true || Boolean(element.getAttribute(\"aria-disabled\")) === true;\n}\nfunction isInputElement(element) {\n return isHTMLElement(element) && element.localName === \"input\" && \"select\" in element;\n}\nfunction isActiveElement(element) {\n const doc = isHTMLElement(element) ? getOwnerDocument(element) : document;\n return doc.activeElement === element;\n}\nfunction hasFocusWithin(element) {\n if (!document.activeElement)\n return false;\n return element.contains(document.activeElement);\n}\nfunction isHidden(element) {\n if (element.parentElement && isHidden(element.parentElement))\n return true;\n return element.hidden;\n}\nfunction isContentEditable(element) {\n const value = element.getAttribute(\"contenteditable\");\n return value !== \"false\" && value != null;\n}\nfunction isFocusable(element) {\n if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n return false;\n }\n const { localName } = element;\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"];\n if (focusableTags.indexOf(localName) >= 0)\n return true;\n const others = {\n a: () => element.hasAttribute(\"href\"),\n audio: () => element.hasAttribute(\"controls\"),\n video: () => element.hasAttribute(\"controls\")\n };\n if (localName in others) {\n return others[localName]();\n }\n if (isContentEditable(element))\n return true;\n return hasTabIndex(element);\n}\nfunction isTabbable(element) {\n if (!element)\n return false;\n return isHTMLElement(element) && isFocusable(element) && !hasNegativeTabIndex(element);\n}\n\nexport {\n hasDisplayNone,\n hasTabIndex,\n hasNegativeTabIndex,\n isDisabled,\n isInputElement,\n isActiveElement,\n hasFocusWithin,\n isHidden,\n isContentEditable,\n isFocusable,\n isTabbable\n};\n","import {\n getScrollParent\n} from \"./chunk-4WEUWBTD.mjs\";\nimport {\n hasDisplayNone,\n hasFocusWithin,\n hasNegativeTabIndex,\n hasTabIndex,\n isActiveElement,\n isContentEditable,\n isDisabled,\n isFocusable,\n isHidden,\n isInputElement,\n isTabbable\n} from \"./chunk-ROURZMX4.mjs\";\nimport {\n contains,\n getActiveElement,\n getEventWindow,\n getOwnerDocument,\n getOwnerWindow,\n isBrowser,\n isElement,\n isHTMLElement\n} from \"./chunk-3XANSPY5.mjs\";\n\n// src/index.ts\nvar focusableElList = [\n \"input:not(:disabled):not([disabled])\",\n \"select:not(:disabled):not([disabled])\",\n \"textarea:not(:disabled):not([disabled])\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"a[href]\",\n \"area[href]\",\n \"button:not(:disabled):not([disabled])\",\n \"[tabindex]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"*[tabindex]:not([aria-disabled])\",\n \"*[contenteditable]\"\n];\nvar focusableElSelector = focusableElList.join();\nvar isVisible = (el) => el.offsetWidth > 0 && el.offsetHeight > 0;\nfunction getAllFocusable(container) {\n const focusableEls = Array.from(\n container.querySelectorAll(focusableElSelector)\n );\n focusableEls.unshift(container);\n return focusableEls.filter((el) => isFocusable(el) && isVisible(el));\n}\nfunction getFirstFocusable(container) {\n const allFocusable = getAllFocusable(container);\n return allFocusable.length ? allFocusable[0] : null;\n}\nfunction getAllTabbable(container, fallbackToFocusable) {\n const allFocusable = Array.from(\n container.querySelectorAll(focusableElSelector)\n );\n const allTabbable = allFocusable.filter(isTabbable);\n if (isTabbable(container)) {\n allTabbable.unshift(container);\n }\n if (!allTabbable.length && fallbackToFocusable) {\n return allFocusable;\n }\n return allTabbable;\n}\nfunction getFirstTabbableIn(container, fallbackToFocusable) {\n const [first] = getAllTabbable(container, fallbackToFocusable);\n return first || null;\n}\nfunction getLastTabbableIn(container, fallbackToFocusable) {\n const allTabbable = getAllTabbable(container, fallbackToFocusable);\n return allTabbable[allTabbable.length - 1] || null;\n}\nfunction getNextTabbable(container, fallbackToFocusable) {\n const allFocusable = getAllFocusable(container);\n const index = allFocusable.indexOf(document.activeElement);\n const slice = allFocusable.slice(index + 1);\n return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nfunction getPreviousTabbable(container, fallbackToFocusable) {\n const allFocusable = getAllFocusable(container).reverse();\n const index = allFocusable.indexOf(document.activeElement);\n const slice = allFocusable.slice(index + 1);\n return slice.find(isTabbable) || allFocusable.find(isTabbable) || (fallbackToFocusable ? slice[0] : null);\n}\nexport {\n contains,\n getActiveElement,\n getAllFocusable,\n getAllTabbable,\n getEventWindow,\n getFirstFocusable,\n getFirstTabbableIn,\n getLastTabbableIn,\n getNextTabbable,\n getOwnerDocument,\n getOwnerWindow,\n getPreviousTabbable,\n getScrollParent,\n hasDisplayNone,\n hasFocusWithin,\n hasNegativeTabIndex,\n hasTabIndex,\n isActiveElement,\n isBrowser,\n isContentEditable,\n isDisabled,\n isElement,\n isFocusable,\n isHTMLElement,\n isHidden,\n isInputElement,\n isTabbable\n};\n","'use client'\n\n// src/modal-transition.tsx\nimport { chakra } from \"@chakra-ui/system\";\nimport { scaleFadeConfig, slideFadeConfig } from \"@chakra-ui/transition\";\nimport { motion } from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar transitions = {\n slideInBottom: {\n ...slideFadeConfig,\n custom: { offsetY: 16, reverse: true }\n },\n slideInRight: {\n ...slideFadeConfig,\n custom: { offsetX: 16, reverse: true }\n },\n slideInTop: {\n ...slideFadeConfig,\n custom: { offsetY: -16, reverse: true }\n },\n slideInLeft: {\n ...slideFadeConfig,\n custom: { offsetX: -16, reverse: true }\n },\n scale: {\n ...scaleFadeConfig,\n custom: { initialScale: 0.95, reverse: true }\n },\n none: {}\n};\nvar MotionSection = chakra(motion.section);\nvar getMotionProps = (preset) => {\n return transitions[preset || \"none\"];\n};\nvar ModalTransition = forwardRef(\n (props, ref) => {\n const { preset, motionProps = getMotionProps(preset), ...rest } = props;\n return /* @__PURE__ */ jsx(MotionSection, { ref, ...motionProps, ...rest });\n }\n);\nModalTransition.displayName = \"ModalTransition\";\n\nexport {\n ModalTransition\n};\n//# sourceMappingURL=chunk-7NUJBCEL.mjs.map","'use client'\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\nexport {\n __publicField\n};\n//# sourceMappingURL=chunk-5WQ4PXEV.mjs.map","'use client'\nimport {\n __publicField\n} from \"./chunk-5WQ4PXEV.mjs\";\n\n// src/modal-manager.ts\nimport { useEffect, useState } from \"react\";\nvar ModalManager = class {\n constructor() {\n __publicField(this, \"modals\");\n this.modals = /* @__PURE__ */ new Map();\n }\n add(modal) {\n this.modals.set(modal, this.modals.size + 1);\n return this.modals.size;\n }\n remove(modal) {\n this.modals.delete(modal);\n }\n isTopModal(modal) {\n if (!modal)\n return false;\n return this.modals.get(modal) === this.modals.size;\n }\n};\nvar modalManager = new ModalManager();\nfunction useModalManager(ref, isOpen) {\n const [index, setIndex] = useState(0);\n useEffect(() => {\n const node = ref.current;\n if (!node)\n return;\n if (isOpen) {\n const index2 = modalManager.add(node);\n setIndex(index2);\n }\n return () => {\n modalManager.remove(node);\n setIndex(0);\n };\n }, [isOpen, ref]);\n return index;\n}\n\nexport {\n modalManager,\n useModalManager\n};\n//# sourceMappingURL=chunk-CYRBRIA2.mjs.map","'use client'\nimport {\n modalManager,\n useModalManager\n} from \"./chunk-CYRBRIA2.mjs\";\n\n// src/use-modal.ts\nimport { callAllHandlers } from \"@chakra-ui/shared-utils\";\nimport { mergeRefs } from \"@chakra-ui/react-use-merge-refs\";\nimport { hideOthers } from \"aria-hidden\";\nimport { useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nfunction useModal(props) {\n const {\n isOpen,\n onClose,\n id,\n closeOnOverlayClick = true,\n closeOnEsc = true,\n useInert = true,\n onOverlayClick: onOverlayClickProp,\n onEsc\n } = props;\n const dialogRef = useRef(null);\n const overlayRef = useRef(null);\n const [dialogId, headerId, bodyId] = useIds(\n id,\n `chakra-modal`,\n `chakra-modal--header`,\n `chakra-modal--body`\n );\n useAriaHidden(dialogRef, isOpen && useInert);\n const index = useModalManager(dialogRef, isOpen);\n const mouseDownTarget = useRef(null);\n const onMouseDown = useCallback((event) => {\n mouseDownTarget.current = event.target;\n }, []);\n const onKeyDown = useCallback(\n (event) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n if (closeOnEsc) {\n onClose == null ? void 0 : onClose();\n }\n onEsc == null ? void 0 : onEsc();\n }\n },\n [closeOnEsc, onClose, onEsc]\n );\n const [headerMounted, setHeaderMounted] = useState(false);\n const [bodyMounted, setBodyMounted] = useState(false);\n const getDialogProps = useCallback(\n (props2 = {}, ref = null) => ({\n role: \"dialog\",\n ...props2,\n ref: mergeRefs(ref, dialogRef),\n id: dialogId,\n tabIndex: -1,\n \"aria-modal\": true,\n \"aria-labelledby\": headerMounted ? headerId : void 0,\n \"aria-describedby\": bodyMounted ? bodyId : void 0,\n onClick: callAllHandlers(\n props2.onClick,\n (event) => event.stopPropagation()\n )\n }),\n [bodyId, bodyMounted, dialogId, headerId, headerMounted]\n );\n const onOverlayClick = useCallback(\n (event) => {\n event.stopPropagation();\n if (mouseDownTarget.current !== event.target)\n return;\n if (!modalManager.isTopModal(dialogRef.current))\n return;\n if (closeOnOverlayClick) {\n onClose == null ? void 0 : onClose();\n }\n onOverlayClickProp == null ? void 0 : onOverlayClickProp();\n },\n [onClose, closeOnOverlayClick, onOverlayClickProp]\n );\n const getDialogContainerProps = useCallback(\n (props2 = {}, ref = null) => ({\n ...props2,\n ref: mergeRefs(ref, overlayRef),\n onClick: callAllHandlers(props2.onClick, onOverlayClick),\n onKeyDown: callAllHandlers(props2.onKeyDown, onKeyDown),\n onMouseDown: callAllHandlers(props2.onMouseDown, onMouseDown)\n }),\n [onKeyDown, onMouseDown, onOverlayClick]\n );\n return {\n isOpen,\n onClose,\n headerId,\n bodyId,\n setBodyMounted,\n setHeaderMounted,\n dialogRef,\n overlayRef,\n getDialogProps,\n getDialogContainerProps,\n index\n };\n}\nfunction useAriaHidden(ref, shouldHide) {\n const currentElement = ref.current;\n useEffect(() => {\n if (!ref.current || !shouldHide)\n return void 0;\n return hideOthers(ref.current);\n }, [shouldHide, ref, currentElement]);\n}\nfunction useIds(idProp, ...prefixes) {\n const reactId = useId();\n const id = idProp || reactId;\n return useMemo(() => {\n return prefixes.map((prefix) => `${prefix}-${id}`);\n }, [id, prefixes]);\n}\n\nexport {\n useModal,\n useAriaHidden\n};\n//# sourceMappingURL=chunk-TJ2Q5ITW.mjs.map","'use client'\n\n// src/portal-manager.tsx\nimport { createContext } from \"@chakra-ui/react-context\";\nimport { jsx } from \"react/jsx-runtime\";\nvar [PortalManagerContextProvider, usePortalManager] = createContext({\n strict: false,\n name: \"PortalManagerContext\"\n});\nfunction PortalManager(props) {\n const { children, zIndex } = props;\n return /* @__PURE__ */ jsx(PortalManagerContextProvider, { value: { zIndex }, children });\n}\nPortalManager.displayName = \"PortalManager\";\n\nexport {\n usePortalManager,\n PortalManager\n};\n//# sourceMappingURL=chunk-HK66PB7M.mjs.map","'use client'\nimport {\n usePortalManager\n} from \"./chunk-HK66PB7M.mjs\";\n\n// src/portal.tsx\nimport { useSafeLayoutEffect } from \"@chakra-ui/react-use-safe-layout-effect\";\nimport { createContext } from \"@chakra-ui/react-context\";\nimport { createPortal } from \"react-dom\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar [PortalContextProvider, usePortalContext] = createContext({\n strict: false,\n name: \"PortalContext\"\n});\nvar PORTAL_CLASSNAME = \"chakra-portal\";\nvar PORTAL_SELECTOR = `.chakra-portal`;\nvar Container = (props) => /* @__PURE__ */ jsx(\n \"div\",\n {\n className: \"chakra-portal-zIndex\",\n style: {\n position: \"absolute\",\n zIndex: props.zIndex,\n top: 0,\n left: 0,\n right: 0\n // NB: Don't add `bottom: 0`, it makes the entire app unusable\n // @see https://github.com/chakra-ui/chakra-ui/issues/3201\n },\n children: props.children\n }\n);\nvar DefaultPortal = (props) => {\n const { appendToParentPortal, children } = props;\n const [tempNode, setTempNode] = useState(null);\n const portal = useRef(null);\n const [, forceUpdate] = useState({});\n useEffect(() => forceUpdate({}), []);\n const parentPortal = usePortalContext();\n const manager = usePortalManager();\n useSafeLayoutEffect(() => {\n if (!tempNode)\n return;\n const doc = tempNode.ownerDocument;\n const host = appendToParentPortal ? parentPortal != null ? parentPortal : doc.body : doc.body;\n if (!host)\n return;\n portal.current = doc.createElement(\"div\");\n portal.current.className = PORTAL_CLASSNAME;\n host.appendChild(portal.current);\n forceUpdate({});\n const portalNode = portal.current;\n return () => {\n if (host.contains(portalNode)) {\n host.removeChild(portalNode);\n }\n };\n }, [tempNode]);\n const _children = (manager == null ? void 0 : manager.zIndex) ? /* @__PURE__ */ jsx(Container, { zIndex: manager == null ? void 0 : manager.zIndex, children }) : children;\n return portal.current ? createPortal(\n /* @__PURE__ */ jsx(PortalContextProvider, { value: portal.current, children: _children }),\n portal.current\n ) : /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: (el) => {\n if (el)\n setTempNode(el);\n }\n }\n );\n};\nvar ContainerPortal = (props) => {\n const { children, containerRef, appendToParentPortal } = props;\n const containerEl = containerRef.current;\n const host = containerEl != null ? containerEl : typeof window !== \"undefined\" ? document.body : void 0;\n const portal = useMemo(() => {\n const node = containerEl == null ? void 0 : containerEl.ownerDocument.createElement(\"div\");\n if (node)\n node.className = PORTAL_CLASSNAME;\n return node;\n }, [containerEl]);\n const [, forceUpdate] = useState({});\n useSafeLayoutEffect(() => forceUpdate({}), []);\n useSafeLayoutEffect(() => {\n if (!portal || !host)\n return;\n host.appendChild(portal);\n return () => {\n host.removeChild(portal);\n };\n }, [portal, host]);\n if (host && portal) {\n return createPortal(\n /* @__PURE__ */ jsx(PortalContextProvider, { value: appendToParentPortal ? portal : null, children }),\n portal\n );\n }\n return null;\n};\nfunction Portal(props) {\n const portalProps = {\n appendToParentPortal: true,\n ...props\n };\n const { containerRef, ...rest } = portalProps;\n return containerRef ? /* @__PURE__ */ jsx(ContainerPortal, { containerRef, ...rest }) : /* @__PURE__ */ jsx(DefaultPortal, { ...rest });\n}\nPortal.className = PORTAL_CLASSNAME;\nPortal.selector = PORTAL_SELECTOR;\nPortal.displayName = \"Portal\";\n\nexport {\n Portal\n};\n//# sourceMappingURL=chunk-34PD6CUK.mjs.map","'use client'\nimport {\n useModal\n} from \"./chunk-TJ2Q5ITW.mjs\";\n\n// src/modal.tsx\nimport { Portal } from \"@chakra-ui/portal\";\nimport { createContext } from \"@chakra-ui/react-context\";\nimport {\n useMultiStyleConfig\n} from \"@chakra-ui/system\";\nimport { AnimatePresence } from \"framer-motion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar [ModalStylesProvider, useModalStyles] = createContext({\n name: `ModalStylesContext`,\n errorMessage: `useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in \" test