@flexprice/flexprice-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexprice-ui.mjs","sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/@radix-ui/number/dist/index.mjs","../../../node_modules/@radix-ui/primitive/dist/index.mjs","../../../node_modules/@radix-ui/react-context/dist/index.mjs","../../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../../../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../node_modules/@radix-ui/react-id/dist/index.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../node_modules/@radix-ui/react-use-size/dist/index.mjs","../../../node_modules/@radix-ui/react-popper/dist/index.mjs","../../../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../../../node_modules/aria-hidden/dist/es2015/index.js","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../../node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../node_modules/use-callback-ref/dist/es2015/useRef.js","../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../node_modules/use-sidecar/dist/es2015/medium.js","../../../node_modules/use-sidecar/dist/es2015/exports.js","../../../node_modules/react-remove-scroll/dist/es2015/medium.js","../../../node_modules/react-remove-scroll/dist/es2015/UI.js","../../../node_modules/get-nonce/dist/es2015/index.js","../../../node_modules/react-style-singleton/dist/es2015/singleton.js","../../../node_modules/react-style-singleton/dist/es2015/hook.js","../../../node_modules/react-style-singleton/dist/es2015/component.js","../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../node_modules/@radix-ui/react-select/dist/index.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/check.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../node_modules/lucide-react/dist/esm/icons/circle.js","../../../node_modules/lucide-react/dist/esm/icons/coins.js","../../../node_modules/lucide-react/dist/esm/icons/eye.js","../../../node_modules/lucide-react/dist/esm/icons/gauge.js","../../../node_modules/lucide-react/dist/esm/icons/info.js","../../../node_modules/lucide-react/dist/esm/icons/mail.js","../../../node_modules/lucide-react/dist/esm/icons/message-square.js","../../../node_modules/lucide-react/dist/esm/icons/phone.js","../../../node_modules/lucide-react/dist/esm/icons/sparkles.js","../../../node_modules/lucide-react/dist/esm/icons/zap.js","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../../src/lib/utils.ts","../../../src/components/ui/select.tsx","../../../src/components/atoms/Select/Select.tsx","../../../node_modules/i18next/dist/esm/i18next.js","../../../node_modules/react-i18next/dist/es/utils.js","../../../node_modules/react-i18next/dist/es/unescape.js","../../../node_modules/react-i18next/dist/es/defaults.js","../../../node_modules/react-i18next/dist/es/i18nInstance.js","../../../node_modules/react-i18next/dist/es/context.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/react-i18next/dist/es/useTranslation.js","../../../src/lib/exportable/bundledI18n.ts","../../../src/pricing/i18n.ts","../../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../node_modules/@radix-ui/react-presence/dist/index.mjs","../../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../../src/components/ui/tooltip.tsx","../../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/class-variance-authority/dist/index.mjs","../../../src/components/ui/button.tsx","../../../node_modules/iso-country-currency/index.js","../../../src/models/CreditGrant.ts","../../../src/models/Price.ts","../../../src/models/Entitlement.ts","../../../src/models/Invoice.ts","../../../src/models/Subscription.ts","../../../src/constants/constants.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/react-hot-toast/dist/index.mjs","../../../src/utils/common/helper_functions.ts","../../../src/components/atoms/Label/Label.tsx","../../../src/lib/sizing.ts","../../../src/components/atoms/Input/Input.tsx","../../../src/constants/planTypes.ts","../../../node_modules/zod/v3/helpers/util.js","../../../node_modules/zod/v3/ZodError.js","../../../node_modules/zod/v3/locales/en.js","../../../node_modules/zod/v3/errors.js","../../../node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/zod/v3/types.js","../../../src/lib/exportable/validation.ts","../../../src/pricing/schema.ts","../../../src/components/molecules/PricingCard/PricingCard.tsx","../../../src/pricing/components/PricingTable.tsx","../../../src/pricing/adapters.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\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 findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n var _padding$top, _padding$right, _padding$bottom, _padding$left;\n return {\n top: (_padding$top = padding.top) != null ? _padding$top : 0,\n right: (_padding$right = padding.right) != null ? _padding$right : 0,\n bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,\n left: (_padding$left = padding.left) != null ? _padding$left : 0\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n const alignment = getAlignment(placement);\n if (alignment) {\n coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(minPadding, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n\n // No rects (e.g. a hidden or detached reference, or a collapsed range) —\n // keep the existing reference rect rather than resetting to an invalid\n // one with non-finite values.\n if (!nativeClientRects.length) {\n return {};\n }\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n return rectToClientRect({\n x: left,\n y: top,\n width: right - left,\n height: bottom - top\n });\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n return rectToClientRect({\n x: minLeft,\n y: top,\n width: maxRight - minLeft,\n height: bottom - top\n });\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);\n if (checkMainAxis) {\n mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);\n }\n if (checkCrossAxis) {\n crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n var _rawOffset$mainAxis, _rawOffset$crossAxis;\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,\n crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n// Method syntax keeps callback parameters bivariant, but expressing the\n// explicit `| undefined` required by `exactOptionalPropertyTypes` needs\n// property syntax, which is contravariant under `strictFunctionTypes`.\n// Extracting the function from a method position restores that bivariance so\n// consumers can still assign callbacks with narrower parameter types.\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const shiftData = state.middlewareData.shift;\n const noShift = !shiftData;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (shiftData != null && shiftData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if (shiftData != null && shiftData.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n if (isYAxis) {\n availableWidth = width - 2 * max(overflow.left, overflow.right);\n } else {\n availableHeight = height - 2 * max(overflow.top, overflow.bottom);\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return (node.ownerDocument || node).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement && offsetParent) {\n const win = getWindow(domElement);\n const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return element.getClientRects ? Array.from(element.getClientRects()) : [];\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(html) {\n const scroll = getNodeScroll(html);\n const body = html.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(html);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy, rootBoundary) {\n if (rootBoundary === void 0) {\n rootBoundary = 'viewport';\n }\n const isLayoutViewport = rootBoundary === 'layoutViewport';\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n // Client coordinates are relative to the layout viewport, except in\n // WebKit with an `absolute` strategy, where they are relative to the\n // visual viewport.\n const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';\n if (isLayoutViewport) {\n if (!layoutRelativeClientCoords) {\n x = -visualViewport.offsetLeft;\n y = -visualViewport.offsetTop;\n }\n } else {\n width = visualViewport.width;\n height = visualViewport.height;\n if (layoutRelativeClientCoords) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks\n // the visual width but isn't reflected in `html.clientWidth`, so subtract it.\n // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also\n // reserves an empty inline-start gutter that clips nothing, so exclude just\n // the one scrollbar-side gutter — halve the measured (two-gutter) total. A\n // left-side scrollbar (`windowScrollbarX > 0`) is already handled by\n // `getHTMLOffset`/`visualViewport.width`; skip it here.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;\n if (gutter <= SCROLLBAR_MAX) {\n width -= gutter;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = getScale(element);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {\n rect = getViewportRect(element, strategy, clippingAncestor);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let lastKeptComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n // Position of the containing block chain below the current node. A fixed\n // element whose containing block hasn't been found yet is a fixed chain.\n const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';\n\n // A non-containing ancestor does not clip the element when the chain\n // below it escapes it: a fixed chain escapes all ancestors up to the\n // next containing block, an absolute chain escapes static ancestors.\n const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // The kept node carries the chain position for the next iteration.\n lastKeptComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n if (!isOffsetParentAnElement && documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove, ancestorResize) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n\n // The entry is a snapshot, so the reference may have moved since the\n // intersection was computed (under performance constraints, or between\n // consecutive frames of a multi-frame layout shift). The reported ratio\n // and the observed area are stale in that case and cannot be trusted to\n // detect subsequent movement, so refresh regardless of the ratio.\n if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n return refresh();\n }\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped in place, the ratio is 0. Throttle\n // the refresh to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n const win = getWindow(element);\n // The window is a resize ancestor, so when `ancestorResize` is enabled its\n // listener already runs the update on resize. Here we only need to rebuild\n // the `IntersectionObserver` for the new root size, skipping a redundant\n // update. When `ancestorResize` is disabled, this becomes the sole update.\n const handleResize = () => refresh(ancestorResize);\n win.addEventListener('resize', handleResize);\n refresh(true);\n return () => {\n win.removeEventListener('resize', handleResize);\n cleanup();\n };\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update);\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = options != null ? options : {};\n const platformWithCache = {\n ...platform,\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SELECT_NAME\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n caller: SELECT_NAME\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n SelectBubbleInput,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n ({ __scopeSelect, value, ...props }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n if (!select) return;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(\n Primitive.select,\n {\n ...props,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n ref: composedRefs,\n defaultValue: value\n }\n );\n }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses, toKebabCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props\n })\n );\n Component.displayName = `${iconName}`;\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Check = createLucideIcon(\"Check\", [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]);\n\nexport { Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"ChevronDown\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronUp = createLucideIcon(\"ChevronUp\", [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]]);\n\nexport { ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"Circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Coins = createLucideIcon(\"Coins\", [\n [\"circle\", { cx: \"8\", cy: \"8\", r: \"6\", key: \"3yglwk\" }],\n [\"path\", { d: \"M18.09 10.37A6 6 0 1 1 10.34 18\", key: \"t5s6rm\" }],\n [\"path\", { d: \"M7 6h1v4\", key: \"1obek4\" }],\n [\"path\", { d: \"m16.71 13.88.7.71-2.82 2.82\", key: \"1rbuyh\" }]\n]);\n\nexport { Coins as default };\n//# sourceMappingURL=coins.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Eye = createLucideIcon(\"Eye\", [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Gauge = createLucideIcon(\"Gauge\", [\n [\"path\", { d: \"m12 14 4-4\", key: \"9kzdfg\" }],\n [\"path\", { d: \"M3.34 19a10 10 0 1 1 17.32 0\", key: \"19p75a\" }]\n]);\n\nexport { Gauge as default };\n//# sourceMappingURL=gauge.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Info = createLucideIcon(\"Info\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n]);\n\nexport { Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Mail = createLucideIcon(\"Mail\", [\n [\"rect\", { width: \"20\", height: \"16\", x: \"2\", y: \"4\", rx: \"2\", key: \"18n3k1\" }],\n [\"path\", { d: \"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\", key: \"1ocrg3\" }]\n]);\n\nexport { Mail as default };\n//# sourceMappingURL=mail.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageSquare = createLucideIcon(\"MessageSquare\", [\n [\"path\", { d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\", key: \"1lielz\" }]\n]);\n\nexport { MessageSquare as default };\n//# sourceMappingURL=message-square.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Phone = createLucideIcon(\"Phone\", [\n [\n \"path\",\n {\n d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\",\n key: \"foiqr5\"\n }\n ]\n]);\n\nexport { Phone as default };\n//# sourceMappingURL=phone.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sparkles = createLucideIcon(\"Sparkles\", [\n [\n \"path\",\n {\n d: \"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\",\n key: \"4pj2yx\"\n }\n ],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }],\n [\"path\", { d: \"M4 17v2\", key: \"vumght\" }],\n [\"path\", { d: \"M5 18H3\", key: \"zchphs\" }]\n]);\n\nexport { Sparkles as default };\n//# sourceMappingURL=sparkles.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Zap = createLucideIcon(\"Zap\", [\n [\n \"path\",\n {\n d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\",\n key: \"1xq2db\"\n }\n ]\n]);\n\nexport { Zap as default };\n//# sourceMappingURL=zap.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n prefix\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\nconst getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map(classDefinition => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n};\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst createParseClassName = config => {\n const {\n separator,\n experimentalParseClassName\n } = config;\n const isSeparatorSingleCharacter = separator.length === 1;\n const firstSeparatorCharacter = separator[0];\n const separatorLength = separator.length;\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (experimentalParseClassName) {\n return className => experimentalParseClassName({\n className,\n parseClassName\n });\n }\n return parseClassName;\n};\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);\nconst isAny = () => true;\nconst getIsArbitraryValue = (value, label, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n const colors = fromTheme('colors');\n const spacing = fromTheme('spacing');\n const blur = fromTheme('blur');\n const brightness = fromTheme('brightness');\n const borderColor = fromTheme('borderColor');\n const borderRadius = fromTheme('borderRadius');\n const borderSpacing = fromTheme('borderSpacing');\n const borderWidth = fromTheme('borderWidth');\n const contrast = fromTheme('contrast');\n const grayscale = fromTheme('grayscale');\n const hueRotate = fromTheme('hueRotate');\n const invert = fromTheme('invert');\n const gap = fromTheme('gap');\n const gradientColorStops = fromTheme('gradientColorStops');\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n const inset = fromTheme('inset');\n const margin = fromTheme('margin');\n const opacity = fromTheme('opacity');\n const padding = fromTheme('padding');\n const saturate = fromTheme('saturate');\n const scale = fromTheme('scale');\n const sepia = fromTheme('sepia');\n const skew = fromTheme('skew');\n const space = fromTheme('space');\n const translate = fromTheme('translate');\n const getOverscroll = () => ['auto', 'contain', 'none'];\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];\n const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];\n const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue];\n const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...getPositions(), isArbitraryValue]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger, isArbitraryValue]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger, isArbitraryValue]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal', ...getAlign()]\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...getAlign(), 'baseline']\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [...getAlign(), 'baseline']\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']\n }],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{\n size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...getLineStyles(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength, isArbitraryLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isLength, isArbitraryValue]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...getPositions(), isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...getLineStyles(), 'hidden']\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': [borderColor]\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: ['', ...getLineStyles()]\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isLength, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmptyAndArbitrary()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'separator', separator);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n for (const configKey in override) {\n overrideConfigProperties(baseConfig[configKey], override[configKey]);\n }\n for (const key in extend) {\n mergeConfigProperties(baseConfig[key], extend[key]);\n }\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue);\n }\n }\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t'flex h-10 w-full items-center justify-between rounded-[6px] border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}>\n\t\t{children}\n\t\t<SelectPrimitive.Icon asChild>\n\t\t\t<ChevronDown className='h-4 w-4 opacity-50' />\n\t\t</SelectPrimitive.Icon>\n\t</SelectPrimitive.Trigger>\n));\n\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.ScrollUpButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}>\n\t\t<ChevronUp className='h-4 w-4' />\n\t</SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.ScrollDownButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}>\n\t\t<ChevronDown className='h-4 w-4' />\n\t</SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n\t<SelectPrimitive.Portal>\n\t\t<SelectPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-[6px] border bg-popover text-popover-foreground shadow-md 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',\n\t\t\t\tposition === 'popper' &&\n\t\t\t\t\t'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tposition={position}\n\t\t\t{...props}>\n\t\t\t<SelectScrollUpButton />\n\t\t\t<SelectPrimitive.Viewport\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'p-1',\n\t\t\t\t\tposition === 'popper' && 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n\t\t\t\t)}>\n\t\t\t\t{children}\n\t\t\t</SelectPrimitive.Viewport>\n\t\t\t<SelectScrollDownButton />\n\t\t</SelectPrimitive.Content>\n\t</SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Label ref={ref} className={cn('py-1.5 ps-8 pe-2 text-sm font-semibold', className)} {...props} />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t'relative flex w-full cursor-default select-none items-center rounded-[6px] py-1.5 ps-6 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}>\n\t\t<span className='absolute left-2 flex h-3.5 w-3.5 items-center justify-center'>\n\t\t\t<SelectPrimitive.ItemIndicator>\n\t\t\t\t<Check className='h-4 w-4' />\n\t\t\t</SelectPrimitive.ItemIndicator>\n\t\t</span>\n\n\t\t<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n\t</SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n\tSelect,\n\tSelectGroup,\n\tSelectValue,\n\tSelectTrigger,\n\tSelectContent,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n\tSelectScrollUpButton,\n\tSelectScrollDownButton,\n};\n","import { Select, SelectContent, SelectGroup, SelectItem as ShadcnSelect, SelectTrigger } from '@/components/ui/select';\nimport { cn } from '@/lib/utils';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Circle } from 'lucide-react';\nimport React from 'react';\n\nexport interface SelectOption {\n\tvalue: string;\n\tlabel: string;\n\tsuffixIcon?: React.ReactNode;\n\tprefixIcon?: React.ReactNode;\n\tdescription?: string;\n\tdisabled?: boolean;\n}\n\ninterface Props {\n\toptions: SelectOption[];\n\tvalue?: string;\n\tdefaultOpen?: boolean;\n\tplaceholder?: string;\n\tlabel?: string;\n\trequired?: boolean;\n\tdescription?: string;\n\terror?: string;\n\tonChange?: (value: string) => void;\n\tdisabled?: boolean;\n\tisRadio?: boolean;\n\tclassName?: string;\n\tnoOptionsText?: string;\n\thideSelectedTick?: boolean;\n\ttrigger?: React.ReactNode;\n\tcontentClassName?: string;\n}\n\nconst RadioSelectItem = React.forwardRef<\n\tReact.ElementRef<typeof SelectPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}>\n\t\t{/* Checkbox Icon - Show Empty when Not Selected, Filled when Selected */}\n\t\t<span className='absolute left-2 top-[10px] flex h-4 w-4 justify-center'>\n\t\t\t<SelectPrimitive.ItemIndicator className='flex items-center justify-center w-full h-full'>\n\t\t\t\t<Circle className='size-2 text-black fill-current' />\n\t\t\t</SelectPrimitive.ItemIndicator>\n\t\t\t{/* Default Unselected Checkbox */}\n\t\t\t<Circle className='size-4 text-gray-400 absolute' />\n\t\t</span>\n\n\t\t<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n\t</SelectPrimitive.Item>\n));\n\nconst FlexPriceSelect: React.FC<Props> = ({\n\tdisabled = false,\n\toptions,\n\tvalue,\n\tplaceholder = 'Select an option',\n\tlabel = '',\n\trequired = false,\n\tdescription,\n\tonChange,\n\terror,\n\tisRadio,\n\tclassName,\n\tnoOptionsText,\n\tdefaultOpen,\n\thideSelectedTick = true,\n\ttrigger,\n\tcontentClassName,\n}) => {\n\treturn (\n\t\t<div className={cn('space-y-1 ', className)}>\n\t\t\t{/* Label */}\n\t\t\t{label && (\n\t\t\t\t<label className={cn(' block text-sm font-medium text-zinc break-words', disabled ? 'text-zinc-500' : 'text-zinc-950')}>\n\t\t\t\t\t{label}\n\t\t\t\t\t{required && <span className='text-destructive'> *</span>}\n\t\t\t\t</label>\n\t\t\t)}\n\n\t\t\t<Select\n\t\t\t\tdefaultOpen={defaultOpen}\n\t\t\t\tonValueChange={(newValue) => {\n\t\t\t\t\tif (onChange) {\n\t\t\t\t\t\tonChange(newValue === value ? '' : newValue);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tvalue={value ?? ''}\n\t\t\t\tdisabled={disabled}>\n\t\t\t\t<SelectTrigger className={cn(disabled && 'cursor-not-allowed', className)}>\n\t\t\t\t\t{trigger ? (\n\t\t\t\t\t\ttrigger\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span className={cn('truncate', value ? '' : 'text-muted-foreground')}>\n\t\t\t\t\t\t\t{value ? options.find((option) => option.value === value)?.label.trim() : placeholder}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</SelectTrigger>\n\t\t\t\t<SelectContent className={cn('w-[var(--radix-select-trigger-width)]', contentClassName)}>\n\t\t\t\t\t<SelectGroup>\n\t\t\t\t\t\t{options.length > 0 &&\n\t\t\t\t\t\t\toptions.map((option) => {\n\t\t\t\t\t\t\t\tif (isRadio) {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<RadioSelectItem\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(option.disabled && 'select-none cursor-not-allowed')}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\t\t\tvalue={option.value}>\n\t\t\t\t\t\t\t\t\t\t\t<div className='flex items-center space-x-2 w-full'>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className='flex flex-col me-2 w-full'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className='break-words'>{option.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className='text-sm text-gray-500 break-words whitespace-normal'>{option.description}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</RadioSelectItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ShadcnSelect\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'w-full',\n\t\t\t\t\t\t\t\t\t\t\t\t'cursor-pointer',\n\t\t\t\t\t\t\t\t\t\t\t\toption.disabled && 'select-none cursor-not-allowed',\n\t\t\t\t\t\t\t\t\t\t\t\t'flex items-center space-x-2 justify-between w-full',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\t\t\tvalue={option.value}>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'flex w-full items-center space-x-2 justify-between',\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.disabled && 'opacity-50 pointer-events-none',\n\t\t\t\t\t\t\t\t\t\t\t\t\toption.suffixIcon && 'pe-8',\n\t\t\t\t\t\t\t\t\t\t\t\t\thideSelectedTick && '!pl-0',\n\t\t\t\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.prefixIcon && option.prefixIcon}\n\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={cn('flex flex-col w-full', !hideSelectedTick && 'mr-0')}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className='break-words'>{option.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className='text-sm text-gray-500 break-words whitespace-normal'>{option.description}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t{option.suffixIcon && <span className='absolute right-2 top-1/2 -translate-y-1/2'>{option.suffixIcon}</span>}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ShadcnSelect>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t{options.length === 0 && noOptionsText && (\n\t\t\t\t\t\t\t<ShadcnSelect value='no-items' disabled>\n\t\t\t\t\t\t\t\t<div className='flex items-center space-x-2 w-full'>\n\t\t\t\t\t\t\t\t\t<div className='flex flex-col me-2 w-full'>\n\t\t\t\t\t\t\t\t\t\t<span className='break-words'>{noOptionsText}</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ShadcnSelect>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SelectGroup>\n\t\t\t\t</SelectContent>\n\t\t\t</Select>\n\t\t\t{/* Description */}\n\t\t\t{description && <p className='text-sm text-muted-foreground break-words'>{description}</p>}\n\n\t\t\t{/* Error Message */}\n\t\t\t{error && <p className='text-sm text-destructive break-words'>{error}</p>}\n\t\t</div>\n\t);\n};\n\nexport default FlexPriceSelect;\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n const strict = opts?.enableSelector === 'strict';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n if (nsList) {\n const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n if (candidates.includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false — ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && !formats[0].includes(')') && formats.find(f => f.includes(')'))) {\n const lastIndex = formats.findIndex(f => f.includes(')'));\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n enableSelector: false,\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix, fixedOpts) {\n const scopeNs = fixedOpts?.scopeNs;\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n const explicitCallNs = o.ns !== undefined && o.ns !== null;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&amp;': '&',\n '&#38;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&quot;': '\"',\n '&#34;': '\"',\n '&nbsp;': ' ',\n '&#160;': ' ',\n '&copy;': '©',\n '&#169;': '©',\n '&reg;': '®',\n '&#174;': '®',\n '&hellip;': '…',\n '&#8230;': '…',\n '&#x2F;': '/',\n '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape,\n transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n if (!i18n) {\n console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n return {};\n }\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n if (typeof k === 'function') return '';\n if (Array.isArray(k)) {\n const last = k[k.length - 1];\n return typeof last === 'function' ? '' : last;\n }\n return k;\n};\nconst notReadySnapshot = {\n t: notReadyT,\n ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n }\n const i18nOptions = useMemo(() => ({\n ...getDefaults(),\n ...i18n?.options?.react,\n ...props\n }), [i18n, props]);\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n const revisionRef = useRef(0);\n const subscribe = useCallback(callback => {\n if (!i18n) return dummySubscribe;\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n const wrappedCallback = () => {\n revisionRef.current += 1;\n callback();\n };\n if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n return () => {\n if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n };\n }, [i18n, i18nOptions]);\n const snapshotRef = useRef();\n const getSnapshot = useCallback(() => {\n if (!i18n) {\n return notReadySnapshot;\n }\n const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const currentLng = props.lng || i18n.language;\n const currentRevision = revisionRef.current;\n const lastSnapshot = snapshotRef.current;\n if (lastSnapshot && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.keyPrefix === keyPrefix && lastSnapshot.revision === currentRevision) {\n return lastSnapshot;\n }\n const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix, {\n scopeNs: namespaces\n });\n const newSnapshot = {\n t: calculatedT,\n ready: calculatedReady,\n lng: currentLng,\n keyPrefix,\n revision: currentRevision\n };\n snapshotRef.current = newSnapshot;\n return newSnapshot;\n }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n const [loadCount, setLoadCount] = useState(0);\n const {\n t,\n ready\n } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (i18n && !ready && !useSuspense) {\n const onLoaded = () => setLoadCount(c => c + 1);\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n }\n }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n const finalI18n = i18n || {};\n const wrapperRef = useRef(null);\n const wrapperLangRef = useRef();\n const createI18nWrapper = original => {\n const descriptors = Object.getOwnPropertyDescriptors(original);\n if (descriptors.__original) delete descriptors.__original;\n const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n try {\n Object.defineProperty(wrapper, '__original', {\n value: original,\n writable: false,\n enumerable: false,\n configurable: false\n });\n } catch (_) {}\n }\n return wrapper;\n };\n const ret = useMemo(() => {\n const original = finalI18n;\n const lang = original?.language;\n let i18nWrapper = original;\n if (original) {\n if (wrapperRef.current && wrapperRef.current.__original === original) {\n if (wrapperLangRef.current !== lang) {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n } else {\n i18nWrapper = wrapperRef.current;\n }\n } else {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n }\n }\n const effectiveT = !ready && !useSuspense ? (...args) => {\n warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n return t(...args);\n } : t;\n const arr = [effectiveT, i18nWrapper, ready];\n arr.t = effectiveT;\n arr.i18n = i18nWrapper;\n arr.ready = ready;\n return arr;\n }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n if (i18n && useSuspense && !ready) {\n throw new Promise(resolve => {\n const onLoaded = () => resolve();\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n });\n }\n return ret;\n};","// Reusable bundled-i18n helper for exportable component libraries.\n//\n// Any component exported for external consumers can use this to render real translated strings\n// out-of-the-box (bundled defaults) WITHOUT overriding a host app that ships its own i18n. The\n// bundled instance is standalone — created via `createInstance()` and NEVER registered globally —\n// so it can't disturb a host app's i18next. When a host provides an initialized i18n that can\n// serve the given namespace bundle, the host's `t` wins; otherwise the bundled defaults are used.\nimport { createInstance, type TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Build a bundled translator bound to `namespace`, seeded with `resources` as its English bundle.\n * Returns `{ useBoundT }`: a hook returning the host `t` when the host i18n can serve `namespace`,\n * else a fixed `t` backed by the standalone bundled instance.\n */\nexport function createBundledT<N extends string>(namespace: N, resources: Record<string, unknown>): { useBoundT: () => TFunction<N> } {\n\t// A standalone instance — never registered globally, so it can't disturb a host app's i18n.\n\tconst fallbackInstance = createInstance();\n\tfallbackInstance.init({\n\t\tlng: 'en',\n\t\tfallbackLng: 'en',\n\t\tns: [namespace],\n\t\tdefaultNS: namespace,\n\t\tresources: { en: { [namespace]: resources } },\n\t\tinterpolation: { escapeValue: false },\n\t});\n\tconst fallbackT = fallbackInstance.getFixedT('en', namespace) as unknown as TFunction<N>;\n\n\t/** `t` for the component: the host's when it can serve the `namespace` bundle, else bundled defaults. */\n\tfunction useBoundT(): TFunction<N> {\n\t\tconst { t, i18n } = useTranslation(namespace);\n\t\t// Check the whole resolved fallback chain, not just the active language: a host on e.g.\n\t\t// `en-GB` with resources under `en` can still serve the namespace via fallback, so we must\n\t\t// keep the host translator. `i18n.languages` is that ordered chain; fall back to the single\n\t\t// language (or resolvedLanguage) if it's unavailable.\n\t\tconst chain = i18n?.languages ?? [i18n?.resolvedLanguage ?? i18n?.language].filter(Boolean);\n\t\tconst hostCanServe =\n\t\t\t!!i18n &&\n\t\t\ti18n.isInitialized &&\n\t\t\ttypeof i18n.hasResourceBundle === 'function' &&\n\t\t\tchain.some((lng) => i18n.hasResourceBundle(lng as string, namespace));\n\t\treturn hostCanServe ? (t as TFunction<N>) : fallbackT;\n\t}\n\n\treturn { useBoundT };\n}\n","// Bundled i18n so the widget renders real English out-of-the-box for external consumers —\n// WITHOUT overriding a host app that has its own i18n (the dashboard localizes these to Arabic).\n//\n// `usePricingT()`:\n// • host app has an initialized i18n with the `common` bundle → use it (dashboard/white-label)\n// • otherwise (bare SDK consumer, no i18next) → bundled English fallback\nimport { createBundledT } from '@/lib/exportable/bundledI18n';\n\n/** English defaults for the keys `PricingCard` renders (mirror of dashboard `common.pricingCard`). */\nconst EN_PRICING = {\n\tnotIncluded: 'Not included',\n\tperBillingPeriod: ' per {{period}}',\n\tfree: 'Free',\n\tplusUsage: '+ Usage',\n\tperPackage: '{{amount}} per package',\n\tperUnit: '{{amount}} per unit',\n\tstartingAtPerUnit: 'Starting at {{amount}} per unit',\n\tcompactPerPkg: '{{amount}}/pkg',\n\tcompactFromPerUnit: 'from {{amount}}/unit',\n\tcompactPerUnit: '{{amount}}/unit',\n\tvolumePricing: 'Volume Pricing',\n\tunitsLabel: '{{range}} units',\n\tperUnitShort: '{{amount}} per unit',\n\tflatFeeShort: '+ {{amount}} flat fee',\n\tusageSectionModern: 'Usage',\n\tusageSectionClassic: 'Usage-based charges:',\n\tmoreCount: '+{{count}} more',\n\tshowLess: 'Show less',\n\tviewPlan: 'View plan',\n\tincludedHeading: 'Included',\n\taddEntitlements: 'Add entitlements',\n\tcreditsHeading: 'Credits',\n\tcreditsAmount: '{{formatted}} credits',\n\toneTime: 'one-time',\n\trecurring: 'recurring',\n\tpreviewBooleanNotIncluded: '{{name}} not included',\n};\n\n// Thin wrapper over the reusable `createBundledT` primitive (`@/lib/exportable/bundledI18n`).\n// Namespace stays `'common'`: the dashboard localizes PricingCard via its `common` bundle (e.g.\n// Arabic), and the bundled English lives under `common.pricingCard`. Changing the namespace would\n// break the dashboard's host-i18n handoff.\nexport const usePricingT = createBundledT('common', { pricingCard: EN_PRICING }).useBoundT;\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n\tReact.ElementRef<typeof TooltipPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n\t<TooltipPrimitive.Content\n\t\tref={ref}\n\t\tsideOffset={sideOffset}\n\t\tclassName={cn(\n\t\t\t'z-50 overflow-hidden rounded-[6px] border-0 bg-popover/95 backdrop-blur-sm px-4 py-2 text-sm font-medium tracking-tight text-popover-foreground shadow-[0_4px_12px_rgba(0,0,0,0.08),0_2px_4px_rgba(0,0,0,0.04)] animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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',\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n\t'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[7px] text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-[#092E44] text-white shadow hover:opacity-90',\n\t\t\t\tdestructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n\t\t\t\toutline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n\t\t\t\tsecondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n\t\t\t\tghost: 'hover:bg-accent hover:text-accent-foreground',\n\t\t\t\tlink: 'text-primary underline-offset-4 hover:underline',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'h-9 px-4 py-2',\n\t\t\t\tsm: 'h-8 rounded-[7px] px-3 text-xs',\n\t\t\t\tlg: 'h-10 rounded-[7px] px-8',\n\t\t\t\ticon: 'h-9 w-9',\n\t\t\t\txs: 'h-8 rounded-[7px] px-3 text-xs',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t},\n);\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n\tasChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({ className, variant, size, asChild = false, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : 'button';\n\treturn <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />;\n});\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","const dataJSON = {\n AD: {\n countryName: \"Andorra\",\n currency: \"EUR\",\n symbol: \"€\",\n numericCode: 978\n },\n AE: {\n countryName: \"United Arab Emirates\",\n currency: \"AED\",\n symbol: \"AED\",\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 784,\n },\n AF: {\n countryName: \"Afghanistan\",\n currency: \"AFN\",\n symbol: \"Af\",\n numericCode: 971,\n },\n AG: {\n countryName: \"Antigua and Barbuda\",\n currency: \"XCD\",\n symbol: \"XCD\",\n numericCode: 951,\n },\n AI: {\n countryName: \"Anguilla\",\n currency: \"XCD\",\n symbol: \"XCD\",\n numericCode: 951,\n },\n AL: {\n countryName: \"Albania\",\n currency: \"ALL\",\n symbol: \"ALL\",\n dateFormat: \"yyyy-MM-dd\",\n numericCode: 8,\n },\n AM: {\n countryName: \"Armenia\",\n currency: \"AMD\",\n symbol: \"AMD\",\n numericCode: 51,\n },\n AO: {\n countryName: \"Angola\",\n currency: \"AOA\",\n symbol: \"AOA\",\n numericCode: 973,\n },\n AR: {\n countryName: \"Argentina\",\n currency: \"ARS\",\n symbol: \"AR$\",\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 32,\n },\n AS: {\n countryName: \"American Samoa\",\n currency: \"USD\",\n symbol: \"$\",\n numericCode: 840,\n },\n AT: {\n countryName: \"Austria\",\n currency: \"EUR\",\n symbol: \"€\",\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 978,\n },\n AU: {\n countryName: \"Australia\",\n currency: \"AUD\",\n symbol: \"$\",\n dateFormat: \"d/MM/yyyy\",\n numericCode: 36,\n },\n AW: {\n countryName: \"Aruba\",\n currency: \"AWG\",\n symbol: \"AWG\",\n numericCode: 533,\n },\n AX: {\n countryName: \"Aland Islands\",\n currency: \"EUR\",\n symbol: \"€\",\n numericCode: 978,\n },\n AZ: {\n countryName: \"Azerbaijan\",\n currency: \"AZN\",\n symbol: \"man.\",\n numericCode: 944,\n },\n BA: {\n countryName: \"Bosnia and Herzegovina\",\n currency: \"BAM\",\n symbol: \"KM\",\n dateFormat: \"yyyy-MM-dd\",\n numericCode: 977,\n },\n BB: {\n countryName: \"Barbados\",\n currency: \"BBD\",\n symbol: \"BBD\",\n numericCode: 52,\n },\n BD: {\n countryName: \"Bangladesh\",\n currency: \"BDT\",\n symbol: \"Tk\",\n numericCode: 50,\n },\n BE: {\n countryName: \"Belgium\",\n currency: \"EUR\",\n symbol: \"€\",\n dateFormat: \"d/MM/yyyy\",\n numericCode: 978,\n },\n BF: {\n countryName: \"Burkina Faso\",\n currency: \"XOF\",\n symbol: \"CFA\",\n numericCode: 952,\n },\n BG: {\n countryName: \"Bulgaria\",\n currency: \"BGN\",\n symbol: \"BGN\",\n dateFormat: \"yyyy-M-d\",\n numericCode: 975,\n },\n BH: {\n countryName: \"Bahrain\",\n currency: \"BHD\",\n symbol: \"BD\",\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 48,\n },\n BI: {\n countryName: \"Burundi\",\n currency: \"BIF\",\n symbol: \"FBu\",\n numericCode: 108,\n },\n BJ: {\n countryName: \"Benin\",\n currency: \"XOF\",\n symbol: \"CFA\",\n numericCode: 952,\n },\n BL: {\n countryName: \"Saint Barthelemy\",\n currency: \"EUR\",\n symbol: \"€\",\n numericCode: 978,\n },\n BM: {\n countryName: \"Bermuda\",\n currency: \"BMD\",\n symbol: \"BMD\",\n numericCode: 60,\n },\n BN: {\n countryName: \"Brunei\",\n currency: \"BND\",\n symbol: \"BN$\",\n numericCode: 96\n },\n BO: {\n countryName: \"Bolivia\",\n currency: \"BOB\",\n symbol: \"Bs\",\n dateFormat: \"dd-MM-yyyy\",\n numericCode: 68,\n },\n BQ: {\n countryName: \"Bonaire, Saint Eustatius and Saba \",\n currency: \"USD\",\n symbol: \"$\",\n numericCode: 840,\n },\n BR: {\n countryName: \"Brazil\",\n currency: \"BRL\",\n symbol: \"R$\",\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 986,\n },\n BS: {\n countryName: \"Bahamas\",\n currency: \"BSD\",\n symbol: \"BSD\",\n numericCode: 44,\n },\n BT: {\n countryName: \"Bhutan\",\n currency: \"BTN\",\n symbol: \"BTN\",\n numericCode: 64,\n },\n BV: {\n countryName: \"Bouvet Island\",\n currency: \"NOK\",\n symbol: \"Nkr\",\n numericCode: 578,\n },\n BW: {\n countryName: \"Botswana\",\n currency: \"BWP\",\n symbol: \"BWP\",\n numericCode: 72,\n },\n BY: {\n countryName: \"Belarus\",\n currency: \"BYN\",\n symbol: \"BYN\",\n dateFormat: \"d.M.yyyy\",\n numericCode: 933,\n },\n BZ: {\n countryName: \"Belize\",\n currency: \"BZD\",\n symbol: \"BZ$\",\n numericCode: 84,\n },\n CA: {\n countryName: \"Canada\",\n currency: \"CAD\",\n symbol: \"CA$\",\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 124,\n },\n CC: {\n countryName: \"Cocos Islands\",\n currency: \"AUD\",\n symbol: \"AU$\",\n numericCode: 36\n },\n CD: {\n countryName: \"Democratic Republic of the Congo\",\n currency: \"CDF\",\n symbol: \"CDF\",\n numericCode: 976,\n },\n CF: {\n countryName: \"Central African Republic\",\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n CG: {\n countryName: 'Republic of the Congo',\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n CH: {\n countryName: 'Switzerland',\n currency: 'CHF',\n symbol: 'CHF',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 756,\n },\n CI: {\n countryName: 'Ivory Coast',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n CK: {\n countryName: 'Cook Islands',\n currency: 'NZD',\n symbol: 'NZ$',\n numericCode: 554,\n },\n CL: {\n countryName: 'Chile',\n currency: 'CLP',\n symbol: 'CL$',\n dateFormat: \"dd-MM-yyyy\",\n numericCode: 152,\n },\n CM: {\n countryName: 'Cameroon',\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n CN: {\n countryName: 'China',\n currency: 'CNY',\n symbol: 'CN¥',\n dateFormat: \"yyyy-M-d\",\n numericCode: 156,\n },\n CO: {\n countryName: 'Colombia',\n currency: 'COP',\n symbol: 'CO$',\n dateFormat: \"d/MM/yyyy\",\n numericCode: 170,\n },\n CR: {\n countryName: 'Costa Rica',\n currency: 'CRC',\n symbol: '₡',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 188,\n },\n CU: {\n countryName: 'Cuba',\n currency: 'CUP',\n symbol: 'CUP',\n numericCode: 192,\n },\n CV: {\n countryName: 'Cape Verde',\n currency: 'CVE',\n symbol: 'CV$',\n numericCode: 132,\n },\n CW: {\n countryName: 'Curacao',\n currency: 'ANG',\n symbol: 'ANG',\n numericCode: 532,\n },\n CX: {\n countryName: 'Christmas Island',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n CY: {\n countryName: 'Cyprus',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n CZ: {\n countryName: 'Czech Republic',\n currency: 'CZK',\n symbol: 'Kč',\n dateFormat: \"d.M.yyyy\",\n numericCode: 203,\n },\n DE: {\n countryName: 'Germany',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 978,\n },\n DJ: {\n countryName: 'Djibouti',\n currency: 'DJF',\n symbol: 'Fdj',\n numericCode: 262,\n },\n DK: {\n countryName: 'Denmark',\n currency: 'DKK',\n symbol: 'Dkr',\n dateFormat: \"dd-MM-yyyy\",\n numericCode: 208,\n },\n DM: {\n countryName: 'Dominica',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n DO: {\n countryName: 'Dominican Republic',\n currency: 'DOP',\n symbol: 'RD$',\n dateFormat: \"MM/dd/yyyy\",\n numericCode: 214,\n },\n DZ: {\n countryName: 'Algeria',\n currency: 'DZD',\n symbol: 'DA',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 12,\n },\n EC: {\n countryName: 'Ecuador',\n currency: 'USD',\n symbol: '$',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 840,\n },\n EE: {\n countryName: 'Estonia',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d.MM.yyyy\",\n numericCode: 978,\n },\n EG: {\n countryName: 'Egypt',\n currency: 'EGP',\n symbol: 'EGP',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 818,\n },\n EH: {\n countryName: 'Western Sahara',\n currency: 'MAD',\n symbol: 'MAD',\n numericCode: 504,\n },\n ER: {\n countryName: 'Eritrea',\n currency: 'ERN',\n symbol: 'Nfk',\n numericCode: 232,\n },\n ES: {\n countryName: 'Spain',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n ET: {\n countryName: 'Ethiopia',\n currency: 'ETB',\n symbol: 'Br',\n numericCode: 230,\n },\n FI: {\n countryName: 'Finland',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d.M.yyyy\",\n numericCode: 978,\n },\n FJ: {\n countryName: 'Fiji',\n currency: 'FJD',\n symbol: 'FJD',\n numericCode: 242,\n },\n FK: {\n countryName: 'Falkland Islands',\n currency: 'FKP',\n symbol: 'FKP',\n numericCode: 238,\n },\n FM: {\n countryName: 'Micronesia',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n FO: {\n countryName: 'Faroe Islands',\n currency: 'DKK',\n symbol: 'Dkr',\n numericCode: 208,\n },\n FR: {\n countryName: 'France',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n GA: {\n countryName: 'Gabon',\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n GB: {\n countryName: 'United Kingdom',\n currency: 'GBP',\n symbol: '£',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 826,\n },\n GD: {\n countryName: 'Grenada',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n GE: {\n countryName: 'Georgia',\n currency: 'GEL',\n symbol: 'GEL',\n numericCode: 981,\n },\n GF: {\n countryName: 'French Guiana',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n GG: {\n countryName: 'Guernsey',\n currency: 'GBP',\n symbol: '£',\n numericCode: 826,\n },\n GH: {\n countryName: 'Ghana',\n currency: 'GHS',\n symbol: 'GH₵',\n numericCode: 936,\n },\n GI: {\n countryName: 'Gibraltar',\n currency: 'GIP',\n symbol: 'GIP',\n numericCode: 292,\n },\n GL: {\n countryName: 'Greenland',\n currency: 'DKK',\n symbol: 'Dkr',\n numericCode: 208,\n },\n GM: {\n countryName: 'Gambia',\n currency: 'GMD',\n symbol: 'GMD',\n numericCode: 270,\n },\n GN: {\n countryName: 'Guinea',\n currency: 'GNF',\n symbol: 'FG',\n numericCode: 324,\n },\n GP: {\n countryName: 'Guadeloupe',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n GQ: {\n countryName: 'Equatorial Guinea',\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n GR: {\n countryName: 'Greece',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d/M/yyyy\",\n numericCode: 978,\n },\n GS: {\n countryName: 'South Georgia and the South Sandwich Islands',\n currency: 'GBP',\n symbol: '£',\n numericCode: 826,\n },\n GT: {\n countryName: 'Guatemala',\n currency: 'GTQ',\n symbol: 'GTQ',\n dateFormat: \"d/MM/yyyy\",\n numericCode: 320,\n },\n GU: {\n countryName: 'Guam',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n GW: {\n countryName: 'Guinea-Bissau',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n GY: {\n countryName: 'Guyana',\n currency: 'GYD',\n symbol: 'GYD',\n numericCode: 328,\n },\n HK: {\n countryName: 'Hong Kong',\n currency: 'HKD',\n symbol: 'HK$',\n dateFormat: \"yyyy年M月d日\",\n numericCode: 344,\n },\n HM: {\n countryName: 'Heard Island and McDonald Islands',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n HN: {\n countryName: 'Honduras',\n currency: 'HNL',\n symbol: 'HNL',\n dateFormat: \"MM-dd-yyyy\",\n numericCode: 340,\n },\n HR: {\n countryName: \"Croatia\",\n currency: \"EUR\",\n symbol: \"€\",\n dateFormat: \"dd.MM.yyyy.\",\n numericCode: 978,\n },\n HT: {\n countryName: 'Haiti',\n currency: 'HTG',\n symbol: 'HTG',\n numericCode: 332,\n },\n HU: {\n countryName: 'Hungary',\n currency: 'HUF',\n symbol: 'Ft',\n dateFormat: \"yyyy.MM.dd.\",\n numericCode: 348,\n },\n ID: {\n countryName: 'Indonesia',\n currency: 'IDR',\n symbol: 'Rp',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 360,\n },\n IE: {\n countryName: 'Ireland',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n IL: {\n countryName: 'Israel',\n currency: 'ILS',\n symbol: '₪',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 376,\n },\n IM: {\n countryName: 'Isle of Man',\n currency: 'GBP',\n symbol: '£',\n numericCode: 826,\n },\n IN: {\n countryName: 'India',\n currency: 'INR',\n symbol: '₹',\n dateFormat: \"d/M/yyyy\",\n numericCode: 356,\n },\n IO: {\n countryName: 'British Indian Ocean Territory',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n IQ: {\n countryName: 'Iraq',\n currency: 'IQD',\n symbol: 'IQD',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 368,\n },\n IR: {\n countryName: 'Iran',\n currency: 'IRR',\n symbol: 'IRR',\n numericCode: 364,\n },\n IS: {\n countryName: 'Iceland',\n currency: 'ISK',\n symbol: 'Ikr',\n dateFormat: \"d.M.yyyy\",\n numericCode: 352,\n },\n IT: {\n countryName: 'Italy',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n JE: {\n countryName: 'Jersey',\n currency: 'GBP',\n symbol: '£',\n numericCode: 826,\n },\n JM: {\n countryName: 'Jamaica',\n currency: 'JMD',\n symbol: 'J$',\n numericCode: 388,\n },\n JO: {\n countryName: 'Jordan',\n currency: 'JOD',\n symbol: 'JD',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 400,\n },\n JP: {\n countryName: 'Japan',\n currency: 'JPY',\n symbol: '¥',\n dateFormat: \"H24.MM.dd\",\n numericCode: 392,\n },\n KE: {\n countryName: 'Kenya',\n currency: 'KES',\n symbol: 'Ksh',\n numericCode: 404,\n },\n KG: {\n countryName: 'Kyrgyzstan',\n currency: 'KGS',\n symbol: 'KGS',\n numericCode: 417,\n },\n KH: {\n countryName: 'Cambodia',\n currency: 'KHR',\n symbol: 'KHR',\n numericCode: 116,\n },\n KI: {\n countryName: 'Kiribati',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n KM: {\n countryName: 'Comoros',\n currency: 'KMF',\n symbol: 'CF',\n numericCode: 174,\n },\n KN: {\n countryName: 'Saint Kitts and Nevis',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n KP: {\n countryName: 'North Korea',\n currency: 'KPW',\n symbol: 'KPW',\n numericCode: 408,\n },\n KR: {\n countryName: 'South Korea',\n currency: 'KRW',\n symbol: '₩',\n dateFormat: \"yyyy. M. d\",\n numericCode: 410,\n },\n KW: {\n countryName: 'Kuwait',\n currency: 'KWD',\n symbol: 'KD',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 414,\n },\n KY: {\n countryName: 'Cayman Islands',\n currency: 'KYD',\n symbol: 'KYD',\n numericCode: 136,\n },\n KZ: {\n countryName: 'Kazakhstan',\n currency: 'KZT',\n symbol: 'KZT',\n numericCode: 398,\n },\n LA: {\n countryName: 'Laos',\n currency: 'LAK',\n symbol: 'LAK',\n numericCode: 418,\n },\n LB: {\n countryName: 'Lebanon',\n currency: 'LBP',\n symbol: 'LB£',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 422,\n },\n LC: {\n countryName: 'Saint Lucia',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n LI: {\n countryName: 'Liechtenstein',\n currency: 'CHF',\n symbol: 'CHF',\n numericCode: 756,\n },\n LK: {\n countryName: 'Sri Lanka',\n currency: 'LKR',\n symbol: 'SLRs',\n numericCode: 144,\n },\n LR: {\n countryName: 'Liberia',\n currency: 'LRD',\n symbol: 'LRD',\n numericCode: 430,\n },\n LS: {\n countryName: 'Lesotho',\n currency: 'LSL',\n symbol: 'LSL',\n numericCode: 426,\n },\n LT: {\n countryName: 'Lithuania',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"yyyy.M.d\",\n numericCode: 978,\n },\n LU: {\n countryName: 'Luxembourg',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 978,\n },\n LV: {\n countryName: 'Latvia',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"yyyy.d.M\",\n numericCode: 978,\n },\n LY: {\n countryName: 'Libya',\n currency: 'LYD',\n symbol: 'LD',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 434,\n },\n MA: {\n countryName: 'Morocco',\n currency: 'MAD',\n symbol: 'MAD',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 504,\n },\n MC: {\n countryName: 'Monaco',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n MD: {\n countryName: 'Moldova',\n currency: 'MDL',\n symbol: 'MDL',\n numericCode: 498,\n },\n ME: {\n countryName: 'Montenegro',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d.M.yyyy.\",\n numericCode: 978,\n },\n MF: {\n countryName: 'Saint Martin',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n MG: {\n countryName: 'Madagascar',\n currency: 'MGA',\n symbol: 'MGA',\n numericCode: 969,\n },\n MH: {\n countryName: 'Marshall Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n MK: {\n countryName: 'Macedonia',\n currency: 'MKD',\n symbol: 'MKD',\n dateFormat: \"d.M.yyyy\",\n numericCode: 807,\n },\n ML: {\n countryName: 'Mali',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n MM: {\n countryName: 'Myanmar',\n currency: 'MMK',\n symbol: 'MMK',\n numericCode: 104,\n },\n MN: {\n countryName: 'Mongolia',\n currency: 'MNT',\n symbol: 'MNT',\n numericCode: 496,\n },\n MO: {\n countryName: 'Macao',\n currency: 'MOP',\n symbol: 'MOP$',\n numericCode: 446,\n },\n MP: {\n countryName: 'Northern Mariana Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n MQ: {\n countryName: 'Martinique',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n MR: {\n countryName: 'Mauritania',\n currency: 'MRU',\n symbol: 'MRU',\n numericCode: 929,\n },\n MS: {\n countryName: 'Montserrat',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n MT: {\n countryName: 'Malta',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 978,\n },\n MU: {\n countryName: 'Mauritius',\n currency: 'MUR',\n symbol: 'MURs',\n numericCode: 480,\n },\n MV: {\n countryName: 'Maldives',\n currency: 'MVR',\n symbol: 'MVR',\n numericCode: 462,\n },\n MW: {\n countryName: 'Malawi',\n currency: 'MWK',\n symbol: 'MWK',\n numericCode: 454,\n },\n MX: {\n countryName: 'Mexico',\n currency: 'MXN',\n symbol: 'MX$',\n dateFormat: \"d/MM/yyyy\",\n numericCode: 484,\n },\n MY: {\n countryName: 'Malaysia',\n currency: 'MYR',\n symbol: 'RM',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 458,\n },\n MZ: {\n countryName: 'Mozambique',\n currency: 'MZN',\n symbol: 'MTn',\n numericCode: 943,\n },\n NA: {\n countryName: 'Namibia',\n currency: 'NAD',\n symbol: 'N$',\n numericCode: 516,\n },\n NC: {\n countryName: 'New Caledonia',\n currency: 'XPF',\n symbol: 'XPF',\n numericCode: 953,\n },\n NE: {\n countryName: 'Niger',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n NF: {\n countryName: 'Norfolk Island',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n NG: {\n countryName: 'Nigeria',\n currency: 'NGN',\n symbol: '₦',\n numericCode: 566,\n },\n NI: {\n countryName: 'Nicaragua',\n currency: 'NIO',\n symbol: 'C$',\n dateFormat: \"MM-dd-yyyy\",\n numericCode: 558,\n },\n NL: {\n countryName: 'Netherlands',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d-M-yyyy\",\n numericCode: 978,\n },\n NO: {\n countryName: 'Norway',\n currency: 'NOK',\n symbol: 'Nkr',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 578,\n },\n NP: {\n countryName: 'Nepal',\n currency: 'NPR',\n symbol: 'NPRs',\n numericCode: 524,\n },\n NR: {\n countryName: 'Nauru',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n NU: {\n countryName: 'Niue',\n currency: 'NZD',\n symbol: 'NZ$',\n numericCode: 554,\n },\n NZ: {\n countryName: 'New Zealand',\n currency: 'NZD',\n symbol: 'NZ$',\n dateFormat: \"d/MM/yyyy\",\n numericCode: 554,\n },\n OM: {\n countryName: 'Oman',\n currency: 'OMR',\n symbol: 'OMR',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 512,\n },\n PA: {\n countryName: 'Panama',\n currency: 'PAB',\n symbol: 'B/.',\n dateFormat: \"MM/dd/yyyy\",\n numericCode: 590,\n },\n PE: {\n countryName: 'Peru',\n currency: 'PEN',\n symbol: 'S/.',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 604,\n },\n PF: {\n countryName: 'French Polynesia',\n currency: 'XPF',\n symbol: 'XPF',\n numericCode: 953,\n },\n PG: {\n countryName: 'Papua New Guinea',\n currency: 'PGK',\n symbol: 'PGK',\n numericCode: 598,\n },\n PH: {\n countryName: 'Philippines',\n currency: 'PHP',\n symbol: '₱',\n dateFormat: \"M/d/yyyy\",\n numericCode: 608,\n },\n PK: {\n countryName: 'Pakistan',\n currency: 'PKR',\n symbol: 'PKRs',\n numericCode: 586,\n },\n PL: {\n countryName: 'Poland',\n currency: 'PLN',\n symbol: 'zł',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 985,\n },\n PM: {\n countryName: 'Saint Pierre and Miquelon',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n PN: {\n countryName: 'Pitcairn',\n currency: 'NZD',\n symbol: 'NZ$',\n numericCode: 554,\n },\n PR: {\n countryName: 'Puerto Rico',\n currency: 'USD',\n symbol: '$',\n dateFormat: \"MM-dd-yyyy\",\n numericCode: 840,\n },\n PS: {\n countryName: 'Palestinian Territory',\n currency: 'ILS',\n symbol: '₪',\n numericCode: 376,\n },\n PT: {\n countryName: 'Portugal',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"dd-MM-yyyy\",\n numericCode: 978,\n },\n PW: {\n countryName: 'Palau',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n PY: {\n countryName: 'Paraguay',\n currency: 'PYG',\n symbol: '₲',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 600,\n },\n QA: {\n countryName: 'Qatar',\n currency: 'QAR',\n symbol: 'QR',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 634,\n },\n RE: {\n countryName: 'Reunion',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n RO: {\n countryName: 'Romania',\n currency: 'RON',\n symbol: 'RON',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 946,\n },\n RS: {\n countryName: 'Serbia',\n currency: 'RSD',\n symbol: 'din.',\n dateFormat: \"d.M.yyyy.\",\n numericCode: 941,\n },\n RU: {\n countryName: 'Russia',\n currency: 'RUB',\n symbol: 'RUB',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 643,\n },\n RW: {\n countryName: 'Rwanda',\n currency: 'RWF',\n symbol: 'RWF',\n numericCode: 646,\n },\n SA: {\n countryName: 'Saudi Arabia',\n currency: 'SAR',\n symbol: 'SR',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 682,\n },\n SB: {\n countryName: 'Solomon Islands',\n currency: 'SBD',\n symbol: 'SBD',\n numericCode: 90,\n },\n SC: {\n countryName: 'Seychelles',\n currency: 'SCR',\n symbol: 'SCR',\n numericCode: 690,\n },\n SD: {\n countryName: 'Sudan',\n currency: 'SDG',\n symbol: 'SDG',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 938,\n },\n SE: {\n countryName: 'Sweden',\n currency: 'SEK',\n symbol: 'Skr',\n dateFormat: \"yyyy-MM-dd\",\n numericCode: 752,\n },\n SG: {\n countryName: 'Singapore',\n currency: 'SGD',\n symbol: 'S$',\n dateFormat: \"M/d/yyyy\",\n numericCode: 702,\n },\n SH: {\n countryName: 'Saint Helena',\n currency: 'SHP',\n symbol: 'SHP',\n numericCode: 654,\n },\n SI: {\n countryName: 'Slovenia',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d.M.yyyy\",\n numericCode: 978,\n },\n SJ: {\n countryName: 'Svalbard and Jan Mayen',\n currency: 'NOK',\n symbol: 'Nkr',\n numericCode: 578,\n },\n SK: {\n countryName: 'Slovakia',\n currency: 'EUR',\n symbol: '€',\n dateFormat: \"d.M.yyyy\",\n numericCode: 978,\n },\n SL: {\n countryName: 'Sierra Leone',\n currency: 'SLL',\n symbol: 'SLL',\n numericCode: 694,\n },\n SM: {\n countryName: 'San Marino',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n SN: {\n countryName: 'Senegal',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n SO: {\n countryName: 'Somalia',\n currency: 'SOS',\n symbol: 'Ssh',\n numericCode: 706,\n },\n SR: {\n countryName: 'Suriname',\n currency: 'SRD',\n symbol: 'SRD',\n numericCode: 968,\n },\n SS: {\n countryName: 'South Sudan',\n currency: 'SSP',\n symbol: 'SSP',\n numericCode: 728,\n },\n ST: {\n countryName: 'Sao Tome and Principe',\n currency: 'STD',\n symbol: 'STD',\n numericCode: 678,\n },\n SV: {\n countryName: 'El Salvador',\n currency: 'USD',\n symbol: '$',\n dateFormat: \"MM-dd-yyyy\",\n numericCode: 840,\n },\n SX: {\n countryName: 'Sint Maarten',\n currency: 'ANG',\n symbol: 'ANG',\n numericCode: 532,\n },\n SY: {\n countryName: 'Syria',\n currency: 'SYP',\n symbol: 'SY£',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 760,\n },\n SZ: {\n countryName: 'Swaziland',\n currency: 'SZL',\n symbol: 'SZL',\n numericCode: 748,\n },\n TC: {\n countryName: 'Turks and Caicos Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n TD: {\n countryName: 'Chad',\n currency: 'XAF',\n symbol: 'FCFA',\n numericCode: 950,\n },\n TF: {\n countryName: 'French Southern Territories',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n TG: {\n countryName: 'Togo',\n currency: 'XOF',\n symbol: 'CFA',\n numericCode: 952,\n },\n TH: {\n countryName: 'Thailand',\n currency: 'THB',\n symbol: '฿',\n dateFormat: \"๓/๖/๒๕๕๕\",\n numericCode: 764,\n },\n TJ: {\n countryName: 'Tajikistan',\n currency: 'TJS',\n symbol: 'TJS',\n numericCode: 972,\n },\n TK: {\n countryName: 'Tokelau',\n currency: 'NZD',\n symbol: 'NZ$',\n numericCode: 554,\n },\n TL: {\n countryName: 'East Timor',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n TM: {\n countryName: 'Turkmenistan',\n currency: 'TMT',\n symbol: 'TMT',\n numericCode: 934,\n },\n TN: {\n countryName: 'Tunisia',\n currency: 'TND',\n symbol: 'DT',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 788,\n },\n TO: {\n countryName: 'Tonga',\n currency: 'TOP',\n symbol: 'T$',\n numericCode: 776,\n },\n TR: {\n countryName: 'Turkey',\n currency: 'TRY',\n symbol: '₺',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 949,\n },\n TT: {\n countryName: 'Trinidad and Tobago',\n currency: 'TTD',\n symbol: 'TT$',\n numericCode: 780,\n },\n TV: {\n countryName: 'Tuvalu',\n currency: 'AUD',\n symbol: 'AU$',\n numericCode: 36,\n },\n TW: {\n countryName: 'Taiwan',\n currency: 'TWD',\n symbol: 'NT$',\n dateFormat: \"yyyy/M/d\",\n numericCode: 901,\n },\n TZ: {\n countryName: 'Tanzania',\n currency: 'TZS',\n symbol: 'TSh',\n numericCode: 834,\n },\n UA: {\n countryName: 'Ukraine',\n currency: 'UAH',\n symbol: '₴',\n dateFormat: \"dd.MM.yyyy\",\n numericCode: 980,\n },\n UG: {\n countryName: 'Uganda',\n currency: 'UGX',\n symbol: 'USh',\n numericCode: 800,\n },\n UM: {\n countryName: 'United States Minor Outlying Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n US: {\n countryName: 'United States',\n currency: 'USD',\n symbol: '$',\n dateFormat: \"M/d/yyyy\",\n numericCode: 840,\n },\n UY: {\n countryName: 'Uruguay',\n currency: 'UYU',\n symbol: '$U',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 858,\n },\n UZ: {\n countryName: 'Uzbekistan',\n currency: 'UZS',\n symbol: 'UZS',\n numericCode: 860,\n },\n VA: {\n countryName: 'Vatican',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n VC: {\n countryName: 'Saint Vincent and the Grenadines',\n currency: 'XCD',\n symbol: 'XCD',\n numericCode: 951,\n },\n VE: {\n countryName: 'Venezuela',\n currency: 'VEF',\n symbol: 'Bs.F.',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 937,\n },\n VG: {\n countryName: 'British Virgin Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n VI: {\n countryName: 'U.S. Virgin Islands',\n currency: 'USD',\n symbol: '$',\n numericCode: 840,\n },\n VN: {\n countryName: 'Vietnam',\n currency: 'VND',\n symbol: '₫',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 704,\n },\n VU: {\n countryName: 'Vanuatu',\n currency: 'VUV',\n symbol: 'VUV',\n numericCode: 548,\n },\n WF: {\n countryName: 'Wallis and Futuna',\n currency: 'XPF',\n symbol: 'XPF',\n numericCode: 953,\n },\n WS: {\n countryName: 'Samoa',\n currency: 'WST',\n symbol: 'WST',\n numericCode: 882,\n },\n XK: {\n countryName: 'Kosovo',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n YE: {\n countryName: 'Yemen',\n currency: 'YER',\n symbol: 'YR',\n dateFormat: \"dd/MM/yyyy\",\n numericCode: 886,\n },\n YT: {\n countryName: 'Mayotte',\n currency: 'EUR',\n symbol: '€',\n numericCode: 978,\n },\n ZA: {\n countryName: 'South Africa',\n currency: 'ZAR',\n symbol: 'R',\n dateFormat: \"yyyy/MM/dd\",\n numericCode: 710,\n },\n ZM: {\n countryName: 'Zambia',\n currency: 'ZMW',\n symbol: 'ZK',\n numericCode: 967,\n },\n ZW: {\n countryName: 'Zimbabwe',\n currency: 'ZWL',\n symbol: 'ZWL',\n numericCode: 932,\n },\n};\n\nconst currencyAndSymbol = ['currency', 'symbol'];\nconst allSearchParams = currencyAndSymbol.concat(['countryName', 'dateFormat']);\n\n\n\nexports.getAllISOCodes = function() {\n const keys = Object.keys(dataJSON);\n\n return keys.map(function(key) {\n const ISOObject = dataJSON[key];\n\n return {\n iso: key,\n currency: ISOObject.currency,\n symbol: ISOObject.symbol,\n countryName: ISOObject.countryName,\n dateFormat: ISOObject.dateFormat\n };\n });\n};\n\nexports.getAllInfoByISO = function(isoCode) {\n const iso = isoCode.toUpperCase();\n\n if(dataJSON.hasOwnProperty(iso)) {\n const ISOObject = dataJSON[iso];\n\n return {\n iso,\n currency: ISOObject.currency,\n symbol: ISOObject.symbol,\n countryName: ISOObject.countryName,\n dateFormat: ISOObject.dateFormat\n };\n }\n throw new Error('ISO2 code wasn\\'t found');\n};\n\nexports.getParamByISO = function(iso, param) {\n checkParam(param, allSearchParams);\n\n if(dataJSON.hasOwnProperty(iso.toUpperCase())) {\n return dataJSON[iso.toUpperCase()][param];\n }\n\n throw new Error('ISO2 code wasn\\'t found');\n};\n\nexports.getISOByParam = function(param, value) {\n checkParam(param, allSearchParams);\n\n for(let key in dataJSON) {\n if(dataJSON.hasOwnProperty(key) && dataJSON[key][param] === value) {\n return key;\n }\n }\n throw new Error(value + ' wasn\\'t found in ' + param);\n};\n\nexports.getParamByParam = function(givenParam, givenParamValue, searchParam) {\n checkParam(givenParam, allSearchParams);\n checkParam(searchParam, allSearchParams);\n\n for(let key in dataJSON) {\n if(dataJSON.hasOwnProperty(key) && dataJSON[key][givenParam] === givenParamValue) {\n return dataJSON[key][searchParam];\n }\n }\n throw new Error(givenParam + ' wasn\\'t found in ' + givenParamValue);\n};\n\nexports.getAllCountriesByCurrencyOrSymbol = function(param, value) {\n const countriesArray = [];\n\n checkParam(param, currencyAndSymbol);\n\n for(let key in dataJSON) {\n if(dataJSON.hasOwnProperty(key) && dataJSON[key][param] === value) {\n countriesArray.push(dataJSON[key].countryName) ;\n }\n }\n\n if(countriesArray.length === 0) {\n throw new Error(value + ' wasn\\'t found in' + param);\n }\n\n return countriesArray;\n};\n\n\nexports.getAllISOByCurrencyOrSymbol = function(param, value) {\n const ISOArray = [];\n\n checkParam(param, currencyAndSymbol);\n\n for(let key in dataJSON) {\n if(dataJSON.hasOwnProperty(key) && dataJSON[key][param] === value) {\n ISOArray.push(key) ;\n }\n }\n\n if(ISOArray.length === 0) {\n throw new Error(value + ' wasn\\'t found in' + param);\n }\n\n return ISOArray;\n};\n\nfunction checkParam(param, paramArray) {\n if(paramArray.indexOf(param) === -1) {\n throw new Error('Invalid search param');\n }\n}\n","import { BaseModel, Metadata } from './base';\n\nexport enum CREDIT_GRANT_SCOPE {\n\tPLAN = 'PLAN',\n\tSUBSCRIPTION = 'SUBSCRIPTION',\n\tADDON = 'ADDON',\n}\n\nexport interface CreditGrant extends BaseModel {\n\treadonly credits: number;\n\treadonly cadence: CREDIT_GRANT_CADENCE;\n\treadonly metadata: Metadata;\n\treadonly name: string;\n\treadonly period?: CREDIT_GRANT_PERIOD;\n\treadonly period_count?: number;\n\treadonly plan_id?: string;\n\treadonly addon_id?: string;\n\treadonly priority?: number;\n\treadonly scope: CREDIT_GRANT_SCOPE;\n\treadonly expiration_duration?: number;\n\treadonly expiration_type?: CREDIT_GRANT_EXPIRATION_TYPE;\n\treadonly expiration_duration_unit?: CREDIT_GRANT_PERIOD_UNIT;\n\treadonly subscription_id?: string;\n\treadonly conversion_rate?: number;\n\treadonly topup_conversion_rate?: number;\n\t/** ISO date string. Present for SUBSCRIPTION-scoped grants. */\n\treadonly start_date?: string;\n\t/** ISO date string. Optional end date for the grant. */\n\treadonly end_date?: string;\n\t/** ISO date string. Anchor date for recurring credit grant applications. */\n\treadonly credit_grant_anchor?: string;\n}\n\nexport enum CREDIT_GRANT_CADENCE {\n\tONETIME = 'ONETIME',\n\tRECURRING = 'RECURRING',\n}\n\nexport enum CREDIT_GRANT_EXPIRATION_TYPE {\n\tNEVER = 'NEVER',\n\tDURATION = 'DURATION',\n\tBILLING_CYCLE = 'BILLING_CYCLE',\n}\n\nexport enum CREDIT_GRANT_PERIOD_UNIT {\n\tDAYS = 'DAY',\n\tWEEKS = 'WEEK',\n\tMONTHS = 'MONTH',\n\tYEARS = 'YEAR',\n}\n\nexport enum CREDIT_GRANT_PERIOD {\n\tDAILY = 'DAILY',\n\tWEEKLY = 'WEEKLY',\n\tMONTHLY = 'MONTHLY',\n\tANNUAL = 'ANNUAL',\n\tQUARTERLY = 'QUARTERLY',\n\tHALF_YEARLY = 'HALF_YEARLY',\n}\n","import { BaseModel, Metadata } from './base';\nimport { BILLING_CADENCE, INVOICE_CADENCE } from './Invoice';\nimport { Meter } from './Meter';\nimport { Group } from './Group';\n\nexport interface Price extends BaseModel {\n\treadonly amount: string;\n\treadonly display_amount: string;\n\treadonly currency: string;\n\treadonly entity_type: PRICE_ENTITY_TYPE;\n\treadonly entity_id: string;\n\treadonly type: PRICE_TYPE;\n\treadonly price_unit_type: PRICE_UNIT_TYPE;\n\treadonly price_unit_id?: string;\n\treadonly price_unit_amount?: string;\n\treadonly display_price_unit_amount?: string;\n\treadonly price_unit?: string;\n\treadonly conversion_rate?: string;\n\treadonly billing_period: BILLING_PERIOD;\n\treadonly billing_period_count: number;\n\treadonly billing_model: BILLING_MODEL;\n\treadonly display_name: string;\n\treadonly billing_cadence?: BILLING_CADENCE;\n\treadonly tier_mode: TIER_MODE;\n\treadonly tiers: Tier[] | null;\n\treadonly price_unit_tiers?: Tier[] | null;\n\treadonly meter_id: string;\n\treadonly filter_values: Record<string, string[]> | null;\n\treadonly lookup_key: string;\n\treadonly description: string;\n\treadonly transform_quantity: TransformQuantity | null;\n\treadonly meter?: Meter;\n\treadonly invoice_cadence: INVOICE_CADENCE;\n\treadonly trial_period_days?: number;\n\treadonly start_date?: string;\n\treadonly end_date?: string;\n\treadonly metadata: Metadata | null;\n\treadonly price_unit_config?: PriceUnitConfig;\n\treadonly parent_price_id?: string;\n\treadonly group_id?: string;\n\treadonly group?: Group;\n\treadonly min_quantity?: number;\n}\n\nexport interface Tier {\n\treadonly flat_amount: string;\n\treadonly unit_amount: string;\n\treadonly up_to: number;\n}\n\nexport interface TransformQuantity {\n\treadonly divide_by: number;\n\treadonly round?: 'up' | 'down';\n}\n\nexport interface PriceUnitConfig {\n\t// Amount is the price amount in the custom price unit (optional)\n\t// Required when billing_model is FLAT_FEE or PACKAGE with custom price unit\n\treadonly amount?: string;\n\t/**\n\t * The price unit code (3 characters, e.g., \"BTC\", \"TOK\", \"CRD\")\n\t * This is the unique identifier for the price unit, not the full PriceUnit object\n\t * Required when using custom price unit type\n\t */\n\treadonly price_unit: string;\n\t// PriceUnitTiers are the pricing tiers for custom price units\n\t// Required when billing_model is TIERED with custom price unit\n\treadonly price_unit_tiers?: CreatePriceTier[];\n}\n\nexport interface CreatePriceTier {\n\treadonly up_to?: number | null;\n\treadonly unit_amount: string;\n\treadonly flat_amount?: string;\n}\n\nexport enum BILLING_MODEL {\n\tFLAT_FEE = 'FLAT_FEE',\n\tPACKAGE = 'PACKAGE',\n\tTIERED = 'TIERED',\n}\n\nexport enum PRICE_TYPE {\n\tUSAGE = 'USAGE',\n\tFIXED = 'FIXED',\n}\n\nexport enum PRICE_UNIT_TYPE {\n\tFIAT = 'FIAT',\n\tCUSTOM = 'CUSTOM',\n}\n\nexport enum PRICE_ENTITY_TYPE {\n\tPLAN = 'PLAN',\n\tADDON = 'ADDON',\n\tFEATURE = 'FEATURE',\n\tMETER = 'METER',\n\tCOST_SHEET = 'COSTSHEET',\n\tSUBSCRIPTION = 'SUBSCRIPTION',\n}\n\nexport enum TIER_MODE {\n\tVOLUME = 'VOLUME',\n\tSLAB = 'SLAB',\n}\n\nexport enum BILLING_PERIOD {\n\tMONTHLY = 'MONTHLY',\n\tANNUAL = 'ANNUAL',\n\tWEEKLY = 'WEEKLY',\n\tDAILY = 'DAILY',\n\tQUARTERLY = 'QUARTERLY',\n\tHALF_YEARLY = 'HALF_YEARLY',\n\tONETIME = 'ONETIME',\n}\n\nexport enum PRICE_STATUS {\n\tUPCOMING = 'upcoming',\n\tINACTIVE = 'inactive',\n\tACTIVE = 'active',\n}\n","import { JsonObject } from '@/types/common';\nimport { BaseModel } from './base';\nimport Feature from './Feature';\n\nexport enum ENTITLEMENT_USAGE_RESET_PERIOD {\n\tMONTHLY = 'MONTHLY',\n\tANNUAL = 'ANNUAL',\n\tWEEKLY = 'WEEKLY',\n\tDAILY = 'DAILY',\n\tQUARTERLY = 'QUARTERLY',\n\tHALF_YEARLY = 'HALF_YEARLY',\n\tNEVER = 'NEVER',\n}\n\nexport enum ENTITLEMENT_ENTITY_TYPE {\n\tPLAN = 'PLAN',\n\tSUBSCRIPTION = 'SUBSCRIPTION',\n\tADDON = 'ADDON',\n}\n\nexport interface Entitlement extends BaseModel {\n\treadonly feature: Feature;\n\treadonly feature_id: string;\n\treadonly feature_type: string;\n\treadonly is_enabled: boolean;\n\treadonly is_soft_limit: boolean;\n\treadonly entity_type: ENTITLEMENT_ENTITY_TYPE;\n\treadonly entity_id: string;\n\treadonly static_value: string;\n\treadonly tenant_id: string;\n\treadonly usage_limit: number | null;\n\treadonly usage_reset_period: ENTITLEMENT_USAGE_RESET_PERIOD | null;\n\treadonly display_order?: number;\n\treadonly parent_entitlement_id?: string;\n\t/** ISO date string. Optional start date for the entitlement. */\n\treadonly start_date?: string;\n\t/** ISO date string. Optional end date for the entitlement. */\n\treadonly end_date?: string;\n\treadonly config_value?: JsonObject | null;\n}\n","import { BaseModel, Metadata } from './base';\nimport Customer from './Customer';\nimport { Subscription } from './Subscription';\nimport { PAYMENT_STATUS } from '@/constants/payment';\nimport { TaxApplied } from './Tax';\nimport { PRICE_TYPE } from './Price';\n\nexport interface Invoice extends BaseModel {\n\treadonly customer_id: string;\n\treadonly subscription_id: string;\n\t// subscription_customer_id is the subscription owner's customer ID when it differs from customer_id (invoicing customer)\n\treadonly subscription_customer_id?: string;\n\treadonly invoice_type: INVOICE_TYPE;\n\treadonly invoice_status: INVOICE_STATUS;\n\treadonly payment_status: PAYMENT_STATUS;\n\treadonly billing_period: BILLING_CADENCE;\n\treadonly currency: string;\n\treadonly invoice_pdf_url: string;\n\treadonly amount_due: number;\n\treadonly subtotal: number;\n\treadonly total: number;\n\treadonly amount_paid: number;\n\treadonly amount_remaining: number;\n\treadonly invoice_number: string;\n\treadonly idempotency_key: string;\n\treadonly billing_sequence: number;\n\treadonly description: string;\n\treadonly due_date: string;\n\treadonly period_start: string;\n\treadonly period_end: string;\n\treadonly paid_at: string;\n\treadonly voided_at?: string;\n\treadonly finalized_at: string;\n\treadonly issue_date?: string;\n\treadonly billing_reason: INVOICE_BILLING_REASON;\n\treadonly line_items: LineItem[];\n\treadonly total_tax: number;\n\treadonly version: number;\n\treadonly tenant_id: string;\n\treadonly subscription: Subscription;\n\treadonly customer?: Customer;\n\treadonly total_discount?: number;\n\treadonly taxes?: TaxApplied[];\n\t// adjustment_amount is the total sum of credit notes of type \"adjustment\".\n\t// These are non-cash reductions applied to the invoice (e.g. goodwill credit, billing correction).\n\treadonly adjustment_amount: number;\n\t// refunded_amount is the total sum of credit notes of type \"refund\".\n\t// These are actual refunds issued to the customer.\n\treadonly refunded_amount: number;\n\t// total_prepaid_credits_applied is the total amount of prepaid credits applied to this invoice.\n\t// This represents the sum of all prepaid applications (from credit grants, credit notes, etc.) that reduce the invoice amount.\n\treadonly total_prepaid_credits_applied: number;\n\t// overpaid_amount is the excess amount paid beyond net payable (amount_paid - amount_due when positive).\n\treadonly overpaid_amount?: number;\n\t// recalculated_invoice_id is the ID of the replacement invoice created when this invoice was voided and recalculated.\n\t// When set, it forms a parent→child link from this (voided) invoice to the new replacement invoice.\n\treadonly recalculated_invoice_id?: string;\n}\n\n/** Entity type of an invoice line item (plan, addon, or subscription) */\nexport enum INVOICE_LINE_ITEM_ENTITY_TYPE {\n\tPLAN = 'plan',\n\tADDON = 'addon',\n\tSUBSCRIPTION = 'subscription',\n}\n\nexport interface LineItem extends BaseModel {\n\treadonly id: string;\n\treadonly invoice_id: string;\n\treadonly customer_id: string;\n\treadonly subscription_id?: string;\n\treadonly entity_id?: string;\n\treadonly entity_type?: INVOICE_LINE_ITEM_ENTITY_TYPE;\n\treadonly plan_display_name?: string;\n\treadonly price_id?: string;\n\treadonly price_type?: PRICE_TYPE;\n\treadonly meter_id?: string;\n\treadonly meter_display_name?: string;\n\treadonly price_unit_id?: string;\n\treadonly price_unit?: string;\n\treadonly price_unit_amount?: number;\n\treadonly display_name?: string;\n\treadonly amount: number;\n\treadonly quantity: string;\n\treadonly currency: string;\n\treadonly period_start?: string;\n\treadonly period_end?: string;\n\treadonly metadata: Metadata;\n\treadonly environment_id: string;\n\treadonly commitment_info?: {\n\t\tcommitment_amount?: number;\n\t\tcommitment_quantity?: number;\n\t\tcommitment_type?: string;\n\t\toverage_factor?: number;\n\t\tenable_true_up?: boolean;\n\t\tis_window_commitment?: boolean;\n\t};\n\t// prepaid_credits_applied is the amount in invoice currency reduced from this line item due to prepaid credits application.\n\t// This represents prepaid credits (from credit grants, credit notes, etc.) that are specifically applied to reduce this line item's amount.\n\treadonly prepaid_credits_applied: number;\n\t// line_item_discount is the discount amount in invoice currency applied directly to this line item.\n\t// This represents discounts that are applied specifically to this line item (e.g., via line-item level coupons or discounts).\n\treadonly line_item_discount: number;\n}\n\nexport enum INVOICE_TYPE {\n\tSUBSCRIPTION = 'SUBSCRIPTION',\n\tONE_OFF = 'ONE_OFF',\n\tCREDIT = 'CREDIT',\n}\n\nexport enum INVOICE_CADENCE {\n\tARREAR = 'ARREAR',\n\tADVANCE = 'ADVANCE',\n}\n\nexport enum BILLING_CADENCE {\n\tRECURRING = 'RECURRING',\n\tONETIME = 'ONETIME',\n}\n\nexport enum INVOICE_STATUS {\n\tDRAFT = 'DRAFT',\n\tFINALIZED = 'FINALIZED',\n\tVOIDED = 'VOIDED',\n\tSKIPPED = 'SKIPPED',\n}\n\nexport enum INVOICE_BILLING_REASON {\n\tSUBSCRIPTION_CREATE = 'SUBSCRIPTION_CREATE',\n\tSUBSCRIPTION_CYCLE = 'SUBSCRIPTION_CYCLE',\n\tSUBSCRIPTION_UPDATE = 'SUBSCRIPTION_UPDATE',\n\tPRORATION = 'PRORATION',\n\tMANUAL = 'MANUAL',\n}\n","import Customer from './Customer';\nimport { BILLING_CADENCE, INVOICE_CADENCE } from './Invoice';\nimport { BILLING_PERIOD } from '@/constants/constants';\nimport { Plan } from './Plan';\nimport { CreditGrant } from './CreditGrant';\nimport { BaseModel, ENTITY_STATUS, Metadata } from './base';\nimport { Price, PRICE_TYPE } from './Price';\nimport { CommitmentTimeBucket } from '@/types/dto/CommitmentTimeBucket';\n\nexport interface SubscriptionCommitmentInfo {\n\tenable_true_up?: boolean;\n\tcommitment_amount?: number;\n\toverage_factor?: number;\n\tcommitment_duration?: string;\n\tcurrency?: string;\n}\n\nexport interface LineItem extends BaseModel {\n\treadonly subscription_id: string;\n\treadonly customer_id: string;\n\t/** @deprecated Prefer entity_type + entity_id. When entity_type === 'plan', entity_id is the plan ID. */\n\treadonly plan_id?: string;\n\treadonly price_id: string;\n\treadonly meter_id: string;\n\treadonly environment_id: string;\n\treadonly tenant_id: string;\n\treadonly display_name: string;\n\treadonly plan_display_name: string;\n\treadonly meter_display_name: string;\n\treadonly price_type: PRICE_TYPE;\n\treadonly billing_period: string;\n\treadonly currency: string;\n\treadonly quantity: number;\n\treadonly start_date: string;\n\treadonly end_date: string;\n\treadonly metadata: Metadata;\n\treadonly price?: Price;\n\treadonly subscription_phase_id?: string;\n\t/** Source of the line item: plan, addon, or subscription (subscription-scoped price) */\n\treadonly entity_type?: SUBSCRIPTION_LINE_ITEM_ENTITY_TYPE;\n\t/** ID of the source entity (plan_id, addon_id, or subscription_id) */\n\treadonly entity_id?: string;\n\t// Commitment fields\n\treadonly commitment_amount?: string | number;\n\treadonly commitment_quantity?: string;\n\treadonly commitment_type?: string;\n\treadonly commitment_overage_factor?: string;\n\treadonly commitment_true_up_enabled?: boolean;\n\treadonly commitment_windowed?: boolean;\n\treadonly commitment_duration?: string;\n\treadonly commitment_time_buckets?: CommitmentTimeBucket[];\n}\n\nexport interface Subscription extends BaseModel {\n\treadonly id: string;\n\treadonly lookup_key: string;\n\treadonly customer_id: string;\n\t/** Read-only: API-resolved customer that receives invoices (may differ from subscriber when using hierarchy / inheritance). */\n\treadonly invoicing_customer_id?: string;\n\t/** Parent subscription ID when this subscription is a child (e.g. in parent-child subscription hierarchy) */\n\treadonly parent_subscription_id?: string;\n\t/** Hierarchy role: standalone, delegated_invoicing, parent, inherited (mirror), or grouped_invoicing. */\n\treadonly subscription_type?: SUBSCRIPTION_TYPE;\n\treadonly plan_id: string;\n\treadonly environment_id: string;\n\treadonly tenant_id: string;\n\treadonly subscription_status: SUBSCRIPTION_STATUS;\n\treadonly currency: string;\n\treadonly billing_anchor: string;\n\treadonly start_date: string;\n\treadonly end_date: string;\n\treadonly current_period_start: string;\n\treadonly current_period_end: string;\n\treadonly cancelled_at: string;\n\treadonly cancel_at: string;\n\treadonly cancel_at_period_end: boolean;\n\treadonly trial_start: string;\n\treadonly trial_end: string;\n\treadonly trial_period_days?: number | null;\n\treadonly billing_cadence?: BILLING_CADENCE;\n\treadonly billing_period: BILLING_PERIOD;\n\treadonly billing_period_count: number;\n\treadonly invoice_cadence: INVOICE_CADENCE;\n\treadonly version: number;\n\treadonly metadata: Metadata;\n\treadonly customer: Customer;\n\treadonly billing_cycle: BILLING_CYCLE;\n\treadonly line_items: LineItem[];\n\treadonly plan: Plan;\n\n\t// experimental fields\n\tcredit_grants?: CreditGrant[];\n\tcommitment_amount?: number;\n\toverage_factor?: number;\n\tenable_true_up?: boolean;\n\n\t/** Payment terms (e.g. 15 NET, 30 NET) used to compute invoice due date from period end */\n\treadonly payment_terms?: string;\n\n\t// Subscription phases\n\treadonly phases?: SubscriptionPhase[];\n\n\t// experimental fields\n\treadonly schedule: Schedule;\n\n\t// commitment duration\n\treadonly commitment_duration?: string;\n\n\t/** Usage-style subscriptions: optional threshold amount for auto-invoicing behavior (API-defined semantics). */\n\treadonly auto_invoice_threshold?: number;\n\n\t/** IANA timezone for billing period calculations; defaults to UTC when unset. */\n\treadonly timezone?: string;\n}\n\nexport interface SubscriptionUsage extends BaseModel {\n\treadonly amount: number;\n\treadonly currency: string;\n\treadonly display_amount: string;\n\treadonly start_time: Date;\n\treadonly end_time: Date;\n\treadonly charges: SubscriptionUsageByMeters[];\n\treadonly commitment_amount?: number;\n\treadonly overage_factor?: number;\n\treadonly commitment_utilized?: number; // Amount of commitment used\n\treadonly overage_amount?: number; // Amount charged at overage rate\n\treadonly has_overage: boolean; // Whether any usage exceeded commitment\n}\n\nexport interface SubscriptionUsageByMeters extends BaseModel {\n\treadonly amount: number;\n\treadonly currency: string;\n\treadonly display_amount: string;\n\treadonly quantity: number;\n\treadonly filter_values: Metadata;\n\treadonly meter_id: string;\n\treadonly meter_display_name: string;\n\treadonly price: Price;\n\treadonly is_overage: boolean; // Whether this charge is at overage rate\n\treadonly overage_factor?: number; // Factor applied to this charge if in overage\n}\n\nexport interface SubscriptionUpdatePeriodResponse {\n\ttotal_success: number;\n\ttotal_failed: number;\n\titems: SubscriptionUpdatePeriodResponseItem[];\n\tstart_at: Date;\n}\n\nexport interface SubscriptionUpdatePeriodResponseItem {\n\tsubscription_id: string;\n\tperiod_start: Date;\n\tperiod_end: Date;\n\tsuccess: boolean;\n\terror?: string;\n}\n\nexport interface Charge extends BaseModel {\n\treadonly amount: number;\n\treadonly currency: string;\n\treadonly display_amount: string;\n\treadonly quantity: number;\n\treadonly meter_display_name: string;\n}\n\nexport enum BILLING_CYCLE {\n\tANNIVERSARY = 'anniversary',\n\tCALENDAR = 'calendar',\n}\n\nexport interface SubscriptionPhase extends BaseModel {\n\treadonly id: string;\n\treadonly subscription_id: string;\n\treadonly start_date: string;\n\treadonly end_date?: string | null;\n\treadonly metadata?: Metadata;\n\treadonly environment_id: string;\n}\n\nexport interface Schedule extends BaseModel {\n\treadonly id: string;\n\treadonly subscription_id: string;\n\treadonly status: ENTITY_STATUS;\n\treadonly current_phase_index: number;\n\treadonly end_behavior: string;\n\treadonly start_date: string;\n\treadonly phases: readonly SubscriptionPhase[];\n\treadonly metadata: Metadata;\n}\n\nexport enum SUBSCRIPTION_STATUS {\n\tACTIVE = 'active',\n\tCANCELLED = 'cancelled',\n\tINCOMPLETE = 'incomplete',\n\tTRIALING = 'trialing',\n\tDRAFT = 'draft',\n}\n\n/** How this subscription participates in subscription hierarchy (backend subscription_type). */\nexport enum SUBSCRIPTION_TYPE {\n\tSTANDALONE = 'standalone',\n\t/** Invoice raised to another customer; no parent subscription. */\n\tDELEGATED_INVOICING = 'delegated_invoicing',\n\tPARENT = 'parent',\n\tINHERITED = 'inherited',\n\t/** Own line items; invoice rolled into parent subscription. */\n\tGROUPED_INVOICING = 'grouped_invoicing',\n}\n\n/** Values shown in the subscription table “Hierarchy” column (maps from {@link SUBSCRIPTION_TYPE}; standalone → no chip). */\nexport enum SUBSCRIPTION_HIERARCHY_DISPLAY_KIND {\n\tINHERITED = 'inherited',\n\tPARENT = 'parent',\n\tGROUPED_INVOICING = 'grouped_invoicing',\n\tDELEGATED_INVOICING = 'delegated_invoicing',\n}\n\n/** Mid-cycle modify API: `POST /subscriptions/:id/modify/preview|execute` body `type`. */\nexport enum SUBSCRIPTION_MODIFY_TYPE {\n\tINHERITANCE = 'inheritance',\n\tQUANTITY_CHANGE = 'quantity_change',\n\tGROUPED_INVOICING = 'grouped_invoicing',\n\tCOUPON = 'coupon',\n\tTAX = 'tax',\n}\n\n/** Payload `grouped_invoicing_params.action` for {@link SUBSCRIPTION_MODIFY_TYPE.GROUPED_INVOICING}. */\nexport enum GROUPED_INVOICING_MODIFY_ACTION {\n\tADD = 'add',\n\tREMOVE = 'remove',\n}\n\n/** Payload `coupon_params.action` for {@link SUBSCRIPTION_MODIFY_TYPE.COUPON}. */\nexport enum SUB_MODIFY_COUPON_ACTION {\n\tADD = 'add',\n\tREMOVE = 'remove',\n}\n\n/** Payload `tax_params.action` for {@link SUBSCRIPTION_MODIFY_TYPE.TAX}. */\nexport enum SUB_MODIFY_TAX_ACTION {\n\tADD = 'add',\n\tREMOVE = 'remove',\n}\n\n/** Type alias for DTO fields that carry {@link SUBSCRIPTION_MODIFY_TYPE}. */\nexport type SubscriptionModifyType = SUBSCRIPTION_MODIFY_TYPE;\n\n/** How a line item was affected (response `changed_resources.line_items`). */\nexport enum SUBSCRIPTION_MODIFY_LINE_ITEM_ACTION {\n\tCREATED = 'created',\n\tUPDATED = 'updated',\n\tENDED = 'ended',\n}\n\n/** How a subscription row was affected (response `changed_resources.subscriptions`). */\nexport enum SUBSCRIPTION_MODIFY_SUBSCRIPTION_RESOURCE_ACTION {\n\tCREATED = 'created',\n\tUPDATED = 'updated',\n}\n\n/** How an invoice row was affected (response `changed_resources.invoices`). */\nexport enum SUBSCRIPTION_MODIFY_INVOICE_RESOURCE_ACTION {\n\tCREATED = 'created',\n\tWALLET_CREDIT = 'wallet_credit',\n}\n\n/** Subscription edit page: which line-item editor is open. */\nexport enum SUBSCRIPTION_LINE_ITEM_EDIT_MODE {\n\tUSAGE_OVERRIDE = 'usage_override',\n\tFIXED_QUANTITY = 'fixed_quantity',\n\tWINDOW_COMMITMENT = 'window_commitment',\n}\n\n// PaymentBehavior determines how subscription payments are handled\nexport enum PAYMENT_BEHAVIOR {\n\t// Immediately attempts payment. If fails, subscription becomes incomplete\n\tALLOW_INCOMPLETE = 'allow_incomplete',\n\t// Always creates incomplete subscription if payment required\n\tDEFAULT_INCOMPLETE = 'default_incomplete',\n\t// Fails subscription creation if payment fails\n\tERROR_IF_INCOMPLETE = 'error_if_incomplete',\n\t// Creates active subscription without payment attempt\n\tDEFAULT_ACTIVE = 'default_active',\n}\n\n// CollectionMethod determines how invoices are collected for subscriptions\nexport enum COLLECTION_METHOD {\n\t// Automatically charge payment method\n\tCHARGE_AUTOMATICALLY = 'charge_automatically',\n\t// Send invoice to customer for manual payment\n\tSEND_INVOICE = 'send_invoice',\n}\n\n// PaymentTerms (e.g. 15 NET, 30 NET) used to compute invoice due date from period end\nexport enum PAYMENT_TERMS {\n\tNET_15 = '15 NET',\n\tNET_30 = '30 NET',\n\tNET_45 = '45 NET',\n\tNET_60 = '60 NET',\n\tNET_75 = '75 NET',\n\tNET_90 = '90 NET',\n}\n\n// SubscriptionLineItemEntityType is the type of the source of a subscription line item\nexport enum SUBSCRIPTION_LINE_ITEM_ENTITY_TYPE {\n\tPLAN = 'plan',\n\tADDON = 'addon',\n\tSUBSCRIPTION = 'subscription',\n}\n\n// SubscriptionChangeType defines the type of subscription change\nexport enum SUBSCRIPTION_CHANGE_TYPE {\n\tUPGRADE = 'upgrade',\n\tDOWNGRADE = 'downgrade',\n\tLATERAL = 'lateral',\n}\n\n/**\n * ProrationAction defines the type of change triggering proration.\n */\nexport enum SUBSCRIPTION_PRORATION_ACTION {\n\tUPGRADE = 'upgrade',\n\tDOWNGRADE = 'downgrade',\n\tQUANTITY_CHANGE = 'quantity_change',\n\tCANCELLATION = 'cancellation',\n\tADD_ITEM = 'add_item',\n\tREMOVE_ITEM = 'remove_item',\n}\n\n/**\n * ProrationStrategy defines how the proration coefficient is calculated.\n */\nexport enum SUBSCRIPTION_PRORATION_STRATEGY {\n\tDAY_BASED = 'day_based', // Default\n\tSECOND_BASED = 'second_based', // Future enhancement\n}\n\n/**\n * ProrationBehavior defines how proration is applied (e.g., create invoice items).\n */\nexport enum SUBSCRIPTION_PRORATION_BEHAVIOR {\n\tCREATE_PRORATIONS = 'create_prorations', // Default: Create credits/charges on invoice\n\tNONE = 'none', // Calculate but don't apply (e.g., for previews)\n}\n\nexport enum SUBSCRIPTION_CANCELLATION_TYPE {\n\tIMMEDIATE = 'immediate',\n\tEND_OF_PERIOD = 'end_of_period',\n\t/** Cancel on a specific future date (requires `cancel_at` on the cancel request). */\n\tSCHEDULED_DATE = 'scheduled_date',\n}\n\nexport enum SUBSCRIPTION_CANCEL_IMMEDIATELY_INVOICE_POLICY {\n\tGENERATE_INVOICE = 'generate_invoice',\n\tSKIP = 'skip',\n}\n","import { getAllISOCodes } from 'iso-country-currency';\nimport { CREDIT_GRANT_PERIOD } from '@/models/CreditGrant';\nimport { BILLING_MODEL, PRICE_ENTITY_TYPE } from '@/models/Price';\nimport { ENTITLEMENT_ENTITY_TYPE } from '@/models/Entitlement';\nimport { BILLING_CADENCE, INVOICE_CADENCE } from '@/models/Invoice';\nimport {\n\tBILLING_CYCLE,\n\tCOLLECTION_METHOD,\n\tPAYMENT_BEHAVIOR,\n\tPAYMENT_TERMS,\n\tSUBSCRIPTION_CANCELLATION_TYPE,\n\tSUBSCRIPTION_LINE_ITEM_ENTITY_TYPE,\n\tSUBSCRIPTION_PRORATION_BEHAVIOR,\n\tSUBSCRIPTION_STATUS,\n} from '@/models/Subscription';\n\nexport const DEFAULT_CURRENCY_CODE = 'USD';\n\nexport enum BILLING_PERIOD {\n\tDAILY = 'DAILY',\n\tWEEKLY = 'WEEKLY',\n\tMONTHLY = 'MONTHLY',\n\tQUARTERLY = 'QUARTERLY',\n\tHALF_YEARLY = 'HALF_YEARLY',\n\tANNUAL = 'ANNUAL',\n\tONETIME = 'ONETIME',\n}\n\n// Dashboard time periods for analytics and monitoring\nexport enum TIME_PERIOD {\n\tLAST_HOUR = 'last-hour',\n\tLAST_DAY = 'last-day',\n\tLAST_WEEK = 'last-week',\n\tLAST_30_DAYS = 'last-30-days',\n}\n\n/** ISO 4217 codes valid but absent from iso-country-currency (funds, SDRs, etc.). */\ntype SupplementalIsoCurrency = { currency: string; symbol: string };\n\nconst SUPPLEMENTAL_ISO_CURRENCIES: SupplementalIsoCurrency[] = [{ currency: 'CLF', symbol: 'CLF' }];\n\nexport const getCurrencyOptions = () => {\n\tconst codes = getAllISOCodes();\n\tconst map = new Map();\n\tconst priorityCurrencies = ['USD', 'INR', 'EUR'];\n\n\t// First add priority currencies\n\tpriorityCurrencies.forEach((currency) => {\n\t\tconst code = codes.find((c) => c.currency === currency);\n\t\tif (code) {\n\t\t\tmap.set(currency, {\n\t\t\t\tcurrency: code.currency,\n\t\t\t\tsymbol: code.symbol,\n\t\t\t});\n\t\t}\n\t});\n\n\t// Then add all other currencies\n\tcodes.forEach((code) => {\n\t\tif (!priorityCurrencies.includes(code.currency)) {\n\t\t\tmap.set(code.currency, {\n\t\t\t\tcurrency: code.currency,\n\t\t\t\tsymbol: code.symbol,\n\t\t\t});\n\t\t}\n\t});\n\n\tSUPPLEMENTAL_ISO_CURRENCIES.forEach(({ currency, symbol }) => {\n\t\tif (!map.has(currency)) {\n\t\t\tmap.set(currency, { currency, symbol });\n\t\t}\n\t});\n\n\treturn Array.from(map.values());\n};\n\nexport const currencyOptions = Array.from(\n\tnew Map(\n\t\tgetCurrencyOptions().map((currency) => [\n\t\t\tcurrency.currency,\n\t\t\t{\n\t\t\t\t// label: `${currency.currency} (${currency.symbol})`,\n\t\t\t\t// label: `${currency.currency} (${currency.countryName})`,\n\t\t\t\tlabel: currency.currency,\n\t\t\t\tvalue: currency.currency,\n\t\t\t\tsymbol: currency.symbol,\n\t\t\t},\n\t\t]),\n\t).values(),\n);\nexport const billlingPeriodOptions = [\n\t{ label: 'Daily', value: BILLING_PERIOD.DAILY },\n\t{ label: 'Weekly', value: BILLING_PERIOD.WEEKLY },\n\t{ label: 'Monthly', value: BILLING_PERIOD.MONTHLY },\n\t{ label: 'Yearly', value: BILLING_PERIOD.ANNUAL },\n\t{ label: 'Quarterly', value: BILLING_PERIOD.QUARTERLY },\n\t{ label: 'Half-Yearly', value: BILLING_PERIOD.HALF_YEARLY },\n\t{ label: 'One-time', value: BILLING_PERIOD.ONETIME },\n];\n\nexport const creditGrantPeriodOptions = [\n\t{ label: 'Daily', value: CREDIT_GRANT_PERIOD.DAILY },\n\t{ label: 'Weekly', value: CREDIT_GRANT_PERIOD.WEEKLY },\n\t{ label: 'Monthly', value: CREDIT_GRANT_PERIOD.MONTHLY },\n\t{ label: 'Yearly', value: CREDIT_GRANT_PERIOD.ANNUAL },\n\t{ label: 'Quarterly', value: CREDIT_GRANT_PERIOD.QUARTERLY },\n\t{ label: 'Half-Yearly', value: CREDIT_GRANT_PERIOD.HALF_YEARLY },\n];\n\n// Price-related options\nexport const billingModelOptions = [\n\t{ label: 'Flat Fee', value: BILLING_MODEL.FLAT_FEE },\n\t{ label: 'Package', value: BILLING_MODEL.PACKAGE },\n\t{ label: 'Volume Tiered', value: BILLING_MODEL.TIERED },\n\t{ label: 'Slab Tiered', value: 'SLAB_TIERED' }, // Maps to TIERED with SLAB tier_mode\n];\n\nexport const billingCadenceOptions = [\n\t{ label: 'Recurring', value: BILLING_CADENCE.RECURRING },\n\t{ label: 'One Time', value: BILLING_CADENCE.ONETIME },\n];\n\nexport const priceEntityTypeOptions = [\n\t{ label: 'Plan', value: PRICE_ENTITY_TYPE.PLAN },\n\t{ label: 'Addon', value: PRICE_ENTITY_TYPE.ADDON },\n\t{ label: 'Feature', value: PRICE_ENTITY_TYPE.FEATURE },\n\t{ label: 'Meter', value: PRICE_ENTITY_TYPE.METER },\n];\n\nexport const entitlementEntityTypeOptions = [\n\t{ label: 'Plan', value: ENTITLEMENT_ENTITY_TYPE.PLAN },\n\t{ label: 'Addon', value: ENTITLEMENT_ENTITY_TYPE.ADDON },\n];\n\nexport const invoiceCadenceOptions = [\n\t{ label: 'Arrear', value: INVOICE_CADENCE.ARREAR },\n\t{ label: 'Advance', value: INVOICE_CADENCE.ADVANCE },\n];\n\n// Subscription-related options\nexport const subscriptionStatusOptions = [\n\t{ label: 'Active', value: SUBSCRIPTION_STATUS.ACTIVE },\n\t{ label: 'Cancelled', value: SUBSCRIPTION_STATUS.CANCELLED },\n\t{ label: 'Incomplete', value: SUBSCRIPTION_STATUS.INCOMPLETE },\n\t{ label: 'Trialing', value: SUBSCRIPTION_STATUS.TRIALING },\n\t{ label: 'Draft', value: SUBSCRIPTION_STATUS.DRAFT },\n];\n\nexport const billingCycleOptions = [\n\t{ label: 'Anniversary', value: BILLING_CYCLE.ANNIVERSARY },\n\t{ label: 'Calendar', value: BILLING_CYCLE.CALENDAR },\n];\n\nexport const paymentBehaviorOptions = [\n\t{ label: 'Allow Incomplete', value: PAYMENT_BEHAVIOR.ALLOW_INCOMPLETE },\n\t{ label: 'Default Incomplete', value: PAYMENT_BEHAVIOR.DEFAULT_INCOMPLETE },\n\t{ label: 'Error If Incomplete', value: PAYMENT_BEHAVIOR.ERROR_IF_INCOMPLETE },\n\t{ label: 'Default Active', value: PAYMENT_BEHAVIOR.DEFAULT_ACTIVE },\n];\n\nexport const collectionMethodOptions = [\n\t{ label: 'Charge Automatically', value: COLLECTION_METHOD.CHARGE_AUTOMATICALLY },\n\t{ label: 'Send Invoice', value: COLLECTION_METHOD.SEND_INVOICE },\n];\n\n// Sentinel for \"no payment terms\" — Radix Select disallows value=\"\"\nexport const PAYMENT_TERMS_NONE = '__none__';\nexport const paymentTermsOptions = [\n\t{ label: 'None', value: PAYMENT_TERMS_NONE },\n\t{ label: 'NET 15', value: PAYMENT_TERMS.NET_15 },\n\t{ label: 'NET 30', value: PAYMENT_TERMS.NET_30 },\n\t{ label: 'NET 45', value: PAYMENT_TERMS.NET_45 },\n\t{ label: 'NET 60', value: PAYMENT_TERMS.NET_60 },\n\t{ label: 'NET 75', value: PAYMENT_TERMS.NET_75 },\n\t{ label: 'NET 90', value: PAYMENT_TERMS.NET_90 },\n];\n\nexport const prorationBehaviorOptions = [\n\t{ label: 'Create Prorations', value: SUBSCRIPTION_PRORATION_BEHAVIOR.CREATE_PRORATIONS },\n\t{ label: 'None', value: SUBSCRIPTION_PRORATION_BEHAVIOR.NONE },\n];\n\nexport const cancellationTypeOptions = [\n\t{ label: 'Immediate', value: SUBSCRIPTION_CANCELLATION_TYPE.IMMEDIATE },\n\t{ label: 'End of Period', value: SUBSCRIPTION_CANCELLATION_TYPE.END_OF_PERIOD },\n\t{ label: 'Scheduled date', value: SUBSCRIPTION_CANCELLATION_TYPE.SCHEDULED_DATE },\n];\n\nexport const subscriptionLineItemEntityTypeOptions = [\n\t{ label: 'Plan', value: SUBSCRIPTION_LINE_ITEM_ENTITY_TYPE.PLAN },\n\t{ label: 'Addon', value: SUBSCRIPTION_LINE_ITEM_ENTITY_TYPE.ADDON },\n];\n\n// Sandbox environment auto-cancellation period (in days)\nexport const SANDBOX_AUTO_CANCELLATION_DAYS = 45;\n","let e={data:\"\"},t=t=>{if(\"object\"==typeof window){let e=(t?t.querySelector(\"#_goober\"):window._goober)||Object.assign(document.createElement(\"style\"),{innerHTML:\" \",id:\"_goober\"});return e.nonce=window.__nonce__,e.parentNode||(t||document.head).appendChild(e),e.firstChild}return t||e},r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/([^,]*:\\S+\\([^)]*\\))|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function w(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,w as styled};\n","\"use client\";\nvar Z=e=>typeof e==\"function\",h=(e,t)=>Z(e)?e(t):e;var W=(()=>{let e=0;return()=>(++e).toString()})(),E=(()=>{let e;return()=>{if(e===void 0&&typeof window<\"u\"){let t=matchMedia(\"(prefers-reduced-motion: reduce)\");e=!t||t.matches}return e}})();import{useEffect as ee,useState as te,useRef as oe}from\"react\";var re=20,k=\"default\";var H=(e,t)=>{let{toastLimit:o}=e.settings;switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,o)};case 1:return{...e,toasts:e.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case 2:let{toast:s}=t;return H(e,{type:e.toasts.find(r=>r.id===s.id)?1:0,toast:s});case 3:let{toastId:a}=t;return{...e,toasts:e.toasts.map(r=>r.id===a||a===void 0?{...r,dismissed:!0,visible:!1}:r)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(r=>r.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let i=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(r=>({...r,pauseDuration:r.pauseDuration+i}))}}},v=[],j={toasts:[],pausedAt:void 0,settings:{toastLimit:re}},f={},Y=(e,t=k)=>{f[t]=H(f[t]||j,e),v.forEach(([o,s])=>{o===t&&s(f[t])})},_=e=>Object.keys(f).forEach(t=>Y(e,t)),Q=e=>Object.keys(f).find(t=>f[t].toasts.some(o=>o.id===e)),S=(e=k)=>t=>{Y(t,e)},se={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},V=(e={},t=k)=>{let[o,s]=te(f[t]||j),a=oe(f[t]);ee(()=>(a.current!==f[t]&&s(f[t]),v.push([t,s]),()=>{let r=v.findIndex(([l])=>l===t);r>-1&&v.splice(r,1)}),[t]);let i=o.toasts.map(r=>{var l,g,T;return{...e,...e[r.type],...r,removeDelay:r.removeDelay||((l=e[r.type])==null?void 0:l.removeDelay)||(e==null?void 0:e.removeDelay),duration:r.duration||((g=e[r.type])==null?void 0:g.duration)||(e==null?void 0:e.duration)||se[r.type],style:{...e.style,...(T=e[r.type])==null?void 0:T.style,...r.style}}});return{...o,toasts:i}};var ie=(e,t=\"blank\",o)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:t,ariaProps:{role:\"status\",\"aria-live\":\"polite\"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||W()}),P=e=>(t,o)=>{let s=ie(t,e,o);return S(s.toasterId||Q(s.id))({type:2,toast:s}),s.id},n=(e,t)=>P(\"blank\")(e,t);n.error=P(\"error\");n.success=P(\"success\");n.loading=P(\"loading\");n.custom=P(\"custom\");n.dismiss=(e,t)=>{let o={type:3,toastId:e};t?S(t)(o):_(o)};n.dismissAll=e=>n.dismiss(void 0,e);n.remove=(e,t)=>{let o={type:4,toastId:e};t?S(t)(o):_(o)};n.removeAll=e=>n.remove(void 0,e);n.promise=(e,t,o)=>{let s=n.loading(t.loading,{...o,...o==null?void 0:o.loading});return typeof e==\"function\"&&(e=e()),e.then(a=>{let i=t.success?h(t.success,a):void 0;return i?n.success(i,{id:s,...o,...o==null?void 0:o.success}):n.dismiss(s),a}).catch(a=>{let i=t.error?h(t.error,a):void 0;i?n.error(i,{id:s,...o,...o==null?void 0:o.error}):n.dismiss(s)}),e};import{useEffect as X,useCallback as A,useRef as ne}from\"react\";var ce=1e3,w=(e,t=\"default\")=>{let{toasts:o,pausedAt:s}=V(e,t),a=ne(new Map).current,i=A((c,m=ce)=>{if(a.has(c))return;let p=setTimeout(()=>{a.delete(c),r({type:4,toastId:c})},m);a.set(c,p)},[]);X(()=>{if(s)return;let c=Date.now(),m=o.map(p=>{if(p.duration===1/0)return;let R=(p.duration||0)+p.pauseDuration-(c-p.createdAt);if(R<0){p.visible&&n.dismiss(p.id);return}return setTimeout(()=>n.dismiss(p.id,t),R)});return()=>{m.forEach(p=>p&&clearTimeout(p))}},[o,s,t]);let r=A(S(t),[t]),l=A(()=>{r({type:5,time:Date.now()})},[r]),g=A((c,m)=>{r({type:1,toast:{id:c,height:m}})},[r]),T=A(()=>{s&&r({type:6,time:Date.now()})},[s,r]),d=A((c,m)=>{let{reverseOrder:p=!1,gutter:R=8,defaultPosition:z}=m||{},O=o.filter(u=>(u.position||z)===(c.position||z)&&u.height),K=O.findIndex(u=>u.id===c.id),B=O.filter((u,I)=>I<K&&u.visible).length;return O.filter(u=>u.visible).slice(...p?[B+1]:[0,B]).reduce((u,I)=>u+(I.height||0)+R,0)},[o]);return X(()=>{o.forEach(c=>{if(c.dismissed)i(c.id,c.removeDelay);else{let m=a.get(c.id);m&&(clearTimeout(m),a.delete(c.id))}})},[o,i]),{toasts:o,handlers:{updateHeight:g,startPause:l,endPause:T,calculateOffset:d}}};import*as y from\"react\";import{styled as J,keyframes as G}from\"goober\";import*as b from\"react\";import{styled as U,keyframes as xe}from\"goober\";import{styled as pe,keyframes as M}from\"goober\";var de=M`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`,me=M`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`,le=M`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`,C=pe(\"div\")`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${e=>e.primary||\"#ff4b4b\"};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${de} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${me} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${e=>e.secondary||\"#fff\"};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${le} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;import{styled as ue,keyframes as fe}from\"goober\";var Te=fe`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`,F=ue(\"div\")`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${e=>e.secondary||\"#e0e0e0\"};\n border-right-color: ${e=>e.primary||\"#616161\"};\n animation: ${Te} 1s linear infinite;\n`;import{styled as ye,keyframes as q}from\"goober\";var ge=q`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`,he=q`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`,L=ye(\"div\")`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${e=>e.primary||\"#61d345\"};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${ge} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${he} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${e=>e.secondary||\"#fff\"};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;var be=U(\"div\")`\n position: absolute;\n`,Se=U(\"div\")`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`,Ae=xe`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`,Pe=U(\"div\")`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${Ae} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`,$=({toast:e})=>{let{icon:t,type:o,iconTheme:s}=e;return t!==void 0?typeof t==\"string\"?b.createElement(Pe,null,t):t:o===\"blank\"?null:b.createElement(Se,null,b.createElement(F,{...s}),o!==\"loading\"&&b.createElement(be,null,o===\"error\"?b.createElement(C,{...s}):b.createElement(L,{...s})))};var Re=e=>`\n0% {transform: translate3d(0,${e*-200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`,Ee=e=>`\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${e*-150}%,-1px) scale(.6); opacity:0;}\n`,ve=\"0%{opacity:0;} 100%{opacity:1;}\",De=\"0%{opacity:1;} 100%{opacity:0;}\",Oe=J(\"div\")`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`,Ie=J(\"div\")`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`,ke=(e,t)=>{let s=e.includes(\"top\")?1:-1,[a,i]=E()?[ve,De]:[Re(s),Ee(s)];return{animation:t?`${G(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${G(i)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},N=y.memo(({toast:e,position:t,style:o,children:s})=>{let a=e.height?ke(e.position||t||\"top-center\",e.visible):{opacity:0},i=y.createElement($,{toast:e}),r=y.createElement(Ie,{...e.ariaProps},h(e.message,e));return y.createElement(Oe,{className:e.className,style:{...a,...o,...e.style}},typeof s==\"function\"?s({icon:i,message:r}):y.createElement(y.Fragment,null,i,r))});import{css as _e,setup as Ve}from\"goober\";import*as x from\"react\";Ve(x.createElement);var we=({id:e,className:t,style:o,onHeightUpdate:s,children:a})=>{let i=x.useCallback(r=>{if(r){let l=()=>{let g=r.getBoundingClientRect().height;s(e,g)};l(),new MutationObserver(l).observe(r,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return x.createElement(\"div\",{ref:i,className:t,style:o},a)},Me=(e,t)=>{let o=e.includes(\"top\"),s=o?{top:0}:{bottom:0},a=e.includes(\"center\")?{justifyContent:\"center\"}:e.includes(\"right\")?{justifyContent:\"flex-end\"}:{};return{left:0,right:0,display:\"flex\",position:\"absolute\",transition:E()?void 0:\"all 230ms cubic-bezier(.21,1.02,.73,1)\",transform:`translateY(${t*(o?1:-1)}px)`,...s,...a}},Ce=_e`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`,D=16,Fe=({reverseOrder:e,position:t=\"top-center\",toastOptions:o,gutter:s,children:a,toasterId:i,containerStyle:r,containerClassName:l})=>{let{toasts:g,handlers:T}=w(o,i);return x.createElement(\"div\",{\"data-rht-toaster\":i||\"\",style:{position:\"fixed\",zIndex:9999,top:D,left:D,right:D,bottom:D,pointerEvents:\"none\",...r},className:l,onMouseEnter:T.startPause,onMouseLeave:T.endPause},g.map(d=>{let c=d.position||t,m=T.calculateOffset(d,{reverseOrder:e,gutter:s,defaultPosition:t}),p=Me(c,m);return x.createElement(we,{id:d.id,key:d.id,onHeightUpdate:T.updateHeight,className:d.visible?Ce:\"\",style:p},d.type===\"custom\"?h(d.message,d):a?a(d):x.createElement(N,{toast:d,position:c}))}))};var zt=n;export{L as CheckmarkIcon,C as ErrorIcon,F as LoaderIcon,N as ToastBar,$ as ToastIcon,Fe as Toaster,zt as default,h as resolveValue,n as toast,w as useToaster,V as useToasterStore};\n//# sourceMappingURL=index.mjs.map","import { BILLING_PERIOD } from '@/constants/constants';\nimport { BILLING_MODEL, Price, PRICE_TYPE } from '@/models/Price';\nimport { getAllISOCodes } from 'iso-country-currency';\nimport { v4 as uuidv4 } from 'uuid';\nimport toast from 'react-hot-toast';\n\nexport function getCurrencySymbol(currency: string): string {\n\ttry {\n\t\tconst info = getAllISOCodes().filter((code) => code.currency === currency.toUpperCase());\n\t\treturn info[0]?.symbol || currency;\n\t} catch (error) {\n\t\tconsole.error('Error getting currency symbol', error);\n\t\treturn currency;\n\t}\n}\n\nexport function getCurrencyName(currency: string): string {\n\ttry {\n\t\tconst info = getAllISOCodes().filter((code) => code.currency === currency.toUpperCase());\n\t\treturn info[0]?.countryName || currency;\n\t} catch (error) {\n\t\tconsole.error('Error getting currency name', error);\n\t\treturn currency;\n\t}\n}\n\nexport const formatBillingModel = (billingModel: string) => {\n\tswitch (billingModel.toUpperCase()) {\n\t\tcase BILLING_MODEL.FLAT_FEE:\n\t\t\treturn 'Flat Fee';\n\t\tcase BILLING_MODEL.PACKAGE:\n\t\t\treturn 'Package';\n\t\tcase BILLING_MODEL.TIERED:\n\t\t\treturn 'Tiered';\n\t\tdefault:\n\t\t\treturn '--';\n\t}\n};\n\n/**\n * Formats billing period for price display (e.g., \"50rs/month\", \"100rs/day\")\n * @param billingPeriod - The billing period to format\n * @returns The billing period in short form (day, month, year, etc.)\n */\nexport const formatBillingPeriodForPrice = (billingPeriod: string) => {\n\tswitch (billingPeriod.toUpperCase()) {\n\t\tcase BILLING_PERIOD.DAILY:\n\t\t\treturn 'day';\n\t\tcase BILLING_PERIOD.WEEKLY:\n\t\t\treturn 'week';\n\t\tcase BILLING_PERIOD.MONTHLY:\n\t\t\treturn 'month';\n\t\tcase BILLING_PERIOD.ANNUAL:\n\t\t\treturn 'year';\n\t\tcase BILLING_PERIOD.QUARTERLY:\n\t\t\treturn 'quarter';\n\t\tcase BILLING_PERIOD.HALF_YEARLY:\n\t\t\treturn 'half year';\n\t\tcase BILLING_PERIOD.ONETIME:\n\t\t\treturn 'one-time';\n\t\tdefault:\n\t\t\treturn '--';\n\t}\n};\n\n/**\n * Formats billing period for sentence display (e.g., \"You will be billed monthly\")\n * @param billingPeriod - The billing period to format\n * @returns The billing period in adjective form (monthly, annually, etc.)\n */\nexport const formatBillingPeriodForDisplay = (billingPeriod: string) => {\n\tswitch (billingPeriod.toUpperCase()) {\n\t\tcase BILLING_PERIOD.DAILY:\n\t\t\treturn 'Daily';\n\t\tcase BILLING_PERIOD.WEEKLY:\n\t\t\treturn 'Weekly';\n\t\tcase BILLING_PERIOD.MONTHLY:\n\t\t\treturn 'Monthly';\n\t\tcase BILLING_PERIOD.ANNUAL:\n\t\t\treturn 'Annually';\n\t\tcase BILLING_PERIOD.QUARTERLY:\n\t\t\treturn 'Quarterly';\n\t\tcase BILLING_PERIOD.HALF_YEARLY:\n\t\t\treturn 'Half Yearly';\n\t\tcase BILLING_PERIOD.ONETIME:\n\t\t\treturn 'One-time';\n\t\tdefault:\n\t\t\treturn '--';\n\t}\n};\n\nexport const getPriceTypeLabel = (type: string | PRICE_TYPE | undefined): string => {\n\tif (type == null || type === '') return '--';\n\tswitch (String(type).toUpperCase()) {\n\t\tcase PRICE_TYPE.FIXED:\n\t\t\treturn 'Fixed charge';\n\t\tcase PRICE_TYPE.USAGE:\n\t\t\treturn 'Usage Based';\n\t\tdefault:\n\t\t\treturn '--';\n\t}\n};\n\nexport const toSentenceCase = (str: string): string => {\n\tif (!str) return str;\n\treturn str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n};\n\n/**\n * Formats entity type names for display (e.g., \"credit_topups\" -> \"Credit Top-ups\")\n * @param entityType - The entity type to format\n * @returns The formatted entity type name\n */\nexport const formatEntityType = (entityType: string): string => {\n\tif (!entityType) return entityType;\n\n\t// Handle specific cases\n\tswitch (entityType.toLowerCase()) {\n\t\tcase 'events':\n\t\t\treturn 'Events';\n\t\tcase 'invoice':\n\t\t\treturn 'Invoice';\n\t\tcase 'credit_topups':\n\t\t\treturn 'Credit Top-ups';\n\t\tdefault:\n\t\t\t// Generic formatting: replace underscores with spaces and capitalize each word\n\t\t\treturn entityType\n\t\t\t\t.split('_')\n\t\t\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n\t\t\t\t.join(' ');\n\t}\n};\n\n/** @param fixedCharges - FIXED-type prices (fixed charges) */\nexport const getTotalPayableText = (fixedCharges: Price[], usageCharges: Price[], recurringTotal: number) => {\n\tlet text = '';\n\n\tif (fixedCharges.length > 0) {\n\t\ttext += `${getCurrencySymbol(fixedCharges[0].currency)}${recurringTotal}`;\n\t}\n\n\tif (usageCharges.length > 0) {\n\t\tif (fixedCharges.length > 0) {\n\t\t\ttext += ' + Usage';\n\t\t} else {\n\t\t\ttext += 'Depends on usage';\n\t\t}\n\t}\n\n\treturn text;\n};\n\n/** @param fixedCharges - FIXED-type prices (fixed charges) */\nexport const getTotalPayableInfo = (fixedCharges: Price[], usageCharges: Price[], recurringTotal: number) => {\n\tlet text = '';\n\n\tif (fixedCharges.length > 0) {\n\t\ttext += `${getCurrencySymbol(fixedCharges[0].currency)}${recurringTotal}`;\n\t}\n\n\tif (usageCharges.length > 0) {\n\t\tif (fixedCharges.length > 0) {\n\t\t\ttext += ' + Usage';\n\t\t} else {\n\t\t\ttext += 'depending on usage';\n\t\t}\n\t}\n\n\treturn text;\n};\n\nexport const formatDateShort = (dateString: string): string => {\n\tconst date = new Date(dateString);\n\tconst options: Intl.DateTimeFormatOptions = { month: 'short', day: 'numeric', year: 'numeric' };\n\treturn date.toLocaleDateString('en-US', options);\n};\n\n/**\n * Calculates the discount amount based on coupon type and value\n * @param coupon - The coupon object\n * @param originalAmount - The original amount to apply discount to\n * @returns The discount amount\n */\nexport const calculateCouponDiscount = (\n\tcoupon: { type: string; amount_off?: string; percentage_off?: string },\n\toriginalAmount: number,\n): number => {\n\tif (coupon.type === 'fixed' && coupon.amount_off) {\n\t\treturn Math.min(parseFloat(coupon.amount_off), originalAmount);\n\t} else if (coupon.type === 'percentage' && coupon.percentage_off) {\n\t\treturn (originalAmount * parseFloat(coupon.percentage_off)) / 100;\n\t}\n\treturn 0;\n};\n\n/**\n * Calculates total discount from multiple coupons\n * @param coupons - Array of coupons to apply\n * @param originalAmount - The original amount to apply discounts to\n * @returns The total discount amount\n */\nexport const calculateTotalCouponDiscount = (\n\tcoupons: { type: string; amount_off?: string; percentage_off?: string }[],\n\toriginalAmount: number,\n): number => {\n\treturn coupons.reduce((totalDiscount, coupon) => {\n\t\treturn totalDiscount + calculateCouponDiscount(coupon, originalAmount);\n\t}, 0);\n};\n\nexport const formatPayableAmount = (amount: number): string => {\n\tif (!Number.isFinite(amount) || amount === 0) {\n\t\treturn '0.00';\n\t}\n\n\tconst formatted = amount.toFixed(8).replace(/\\.?0+$/, '');\n\n\treturn formatted.includes('.') ? formatted.replace(/(\\.\\d)$/, '$10') : `${formatted}.00`;\n};\n\n/**\n * Gets the total payable text including coupon discounts\n * @param fixedCharges - Array of fixed (FIXED type) prices\n * @param usageCharges - Array of usage charges\n * @param recurringTotal - Total fixed-charge amount\n * @param coupons - Array of coupons to apply\n * @returns Formatted text showing total with discounts\n */\nexport const getTotalPayableTextWithCoupons = (\n\tfixedCharges: Price[],\n\tusageCharges: Price[],\n\trecurringTotal: number,\n\tcoupons: { type: string; amount_off?: string; percentage_off?: string }[] = [],\n) => {\n\tlet text = '';\n\n\tif (fixedCharges.length > 0) {\n\t\tconst currency = fixedCharges[0].currency;\n\t\tconst totalDiscount = calculateTotalCouponDiscount(coupons, recurringTotal);\n\t\tconst finalAmount = Math.max(0, recurringTotal - totalDiscount);\n\n\t\ttext += `${getCurrencySymbol(currency)}${formatPayableAmount(finalAmount)}`;\n\n\t\t// Show discount information if there are coupons\n\t\tif (coupons.length > 0 && totalDiscount > 0) {\n\t\t\ttext += ` (${getCurrencySymbol(currency)}${formatPayableAmount(recurringTotal)} - ${getCurrencySymbol(currency)}${formatPayableAmount(totalDiscount)} discount)`;\n\t\t}\n\t}\n\n\tif (usageCharges.length > 0) {\n\t\tif (fixedCharges.length > 0) {\n\t\t\ttext += ' + Usage';\n\t\t} else {\n\t\t\ttext += 'Depends on usage';\n\t\t}\n\t}\n\n\treturn text;\n};\n\n/**\n * Gets coupon discount breakdown text\n * @param coupons - Array of coupons\n * @param originalAmount - Original amount before discounts\n * @param currency - Currency symbol\n * @returns Formatted text showing coupon breakdown\n */\nexport const getCouponBreakdownText = (\n\tcoupons: { type: string; amount_off?: string; percentage_off?: string; name?: string }[],\n\toriginalAmount: number,\n\tcurrency: string = 'USD',\n) => {\n\tif (coupons.length === 0) return '';\n\n\tlet breakdown = '';\n\n\tcoupons.forEach((coupon, index) => {\n\t\tconst discount = calculateCouponDiscount(coupon, originalAmount);\n\t\tif (discount > 0) {\n\t\t\tif (index > 0) breakdown += ', ';\n\t\t\tbreakdown += `${coupon.name || 'Coupon'}: -${getCurrencySymbol(currency)}${discount.toFixed(2)}`;\n\t\t}\n\t});\n\n\treturn breakdown;\n};\n\n/**\n * Generates a unique ID using Math.random()\n * @returns A unique ID\n */\nexport const generateUniqueId = (): string => {\n\treturn uuidv4().replace(/-/g, '');\n};\n\n/**\n * Copies text to clipboard and shows a success toast message\n * @param textToCopy - The text string to copy to clipboard\n * @param toastMessage - The message to display in the success toast\n * @returns Promise that resolves when copy is complete, or rejects on error\n */\nexport const copyToClipboard = async (textToCopy: string, toastMessage: string): Promise<void> => {\n\ttry {\n\t\tawait navigator.clipboard.writeText(textToCopy);\n\t\ttoast.success(toastMessage);\n\t} catch (error) {\n\t\ttoast.error('Failed to copy to clipboard. Please try again.');\n\t\tthrow error;\n\t}\n};\n","import { cn } from '@/lib/utils';\nimport React from 'react';\n\ninterface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n\tlabel: string;\n\tdisabled?: boolean;\n\tlabelClassName?: string;\n\tchildren?: React.ReactNode;\n}\n\nconst Label = ({ label, disabled, labelClassName, children, htmlFor, ...props }: LabelProps) => {\n\treturn (\n\t\t<label\n\t\t\t{...props}\n\t\t\thtmlFor={htmlFor}\n\t\t\tclassName={cn(' block text-sm font-medium', disabled ? 'text-zinc-500' : 'text-zinc-950', labelClassName)}>\n\t\t\t{label ? label : children}\n\t\t</label>\n\t);\n};\n\nexport default Label;\n","export const sizes = {\n\txs: {\n\t\theight: 'h-6',\n\t\tpadding: 'px-2 py-1',\n\t\ttext: 'text-xs',\n\t\tdisplay: '',\n\t},\n\tsm: {\n\t\theight: 'h-8',\n\t\tpadding: 'px-2 py-1.5',\n\t\ttext: 'text-xs',\n\t\tdisplay: '',\n\t},\n\tdefault: {\n\t\theight: 'h-10',\n\t\tpadding: 'px-3 py-2',\n\t\ttext: 'text-sm',\n\t\tdisplay: '',\n\t},\n\tlg: {\n\t\theight: 'h-12',\n\t\tpadding: 'px-4 py-2.5',\n\t\ttext: 'text-base',\n\t\tdisplay: '',\n\t},\n\ticon: {\n\t\theight: 'h-9 w-9',\n\t\tpadding: 'p-2',\n\t\ttext: 'text-sm',\n\t\tdisplay: 'flex items-center justify-center',\n\t},\n} as const;\n\nexport type SizeConfig = {\n\theight: string;\n\tpadding: string;\n\ttext: string;\n\tdisplay: string;\n};\n\nexport type SizeVariant = keyof typeof sizes;\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport Label from '../Label';\nimport { sizes, SizeVariant } from '@/lib/sizing';\n\ntype InputVariant = 'text' | 'number' | 'formatted-number' | 'integer';\n\ninterface NumberFormatOptions {\n\tallowNegative?: boolean;\n\tallowDecimals?: boolean;\n\tthousandSeparator: string;\n\tdecimalSeparator: string;\n}\n\nconst DEFAULT_FORMAT_OPTIONS: NumberFormatOptions = {\n\tallowNegative: false,\n\tallowDecimals: true,\n\tthousandSeparator: ',',\n\tdecimalSeparator: '.',\n};\n\nexport const formatAmount = (amount: string, options: NumberFormatOptions = DEFAULT_FORMAT_OPTIONS): string => {\n\tif (!amount) return '';\n\n\tconst { allowNegative, allowDecimals, thousandSeparator, decimalSeparator } = {\n\t\t...DEFAULT_FORMAT_OPTIONS,\n\t\t...options,\n\t};\n\n\t// Handle negative numbers\n\tconst isNegative = allowNegative && amount.startsWith('-');\n\tconst absAmount = isNegative ? amount.slice(1) : amount;\n\n\tconst parts = absAmount.split(decimalSeparator);\n\tconst integerPart = parts[0] || '';\n\tconst decimalPart = parts[1];\n\n\t// Format integer part with separators\n\tconst formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n\t// Combine parts\n\tlet result = formattedInteger;\n\tif (allowDecimals && decimalPart !== undefined) {\n\t\tresult += decimalSeparator + decimalPart;\n\t}\n\n\treturn isNegative ? '-' + result : result;\n};\n\nexport const removeFormatting = (amount: string, options: NumberFormatOptions = DEFAULT_FORMAT_OPTIONS): string => {\n\tconst { thousandSeparator } = { ...DEFAULT_FORMAT_OPTIONS, ...options };\n\tconst escapedSeparator = thousandSeparator.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\treturn amount.replace(new RegExp(escapedSeparator, 'g'), '');\n};\n\n/** Printable ASCII + Basic Arabic (U+0600–U+06FF). */\nconst ENGLISH_ARABIC_REGEX = /[^\\x20-\\x7E\\u0600-\\u06FF]/g;\n\nexport const sanitizeEnglishOnly = (value: string): string => value.replace(ENGLISH_ARABIC_REGEX, '');\n\nconst getInputPattern = (variant: InputVariant, options: NumberFormatOptions = DEFAULT_FORMAT_OPTIONS): RegExp => {\n\tconst { allowNegative, allowDecimals, decimalSeparator } = { ...DEFAULT_FORMAT_OPTIONS, ...options };\n\n\tswitch (variant) {\n\t\tcase 'integer':\n\t\t\treturn allowNegative ? /^-?\\d*$/ : /^\\d*$/;\n\t\tcase 'number':\n\t\tcase 'formatted-number':\n\t\t\treturn allowNegative\n\t\t\t\t? new RegExp(`^-?\\\\d*${allowDecimals ? `\\\\${decimalSeparator}?\\\\d*` : ''}$`)\n\t\t\t\t: new RegExp(`^\\\\d*${allowDecimals ? `\\\\${decimalSeparator}?\\\\d*` : ''}$`);\n\t\tdefault:\n\t\t\treturn /.*/;\n\t}\n};\n\ninterface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {\n\tlabel?: string;\n\tdescription?: React.ReactNode;\n\terror?: string;\n\ttype?: React.HTMLInputTypeAttribute;\n\tonChange?: (value: string) => void;\n\tdisabled?: boolean;\n\tsuffix?: React.ReactNode;\n\tclassName?: string;\n\tplaceholder?: string;\n\tid?: string;\n\tinputPrefix?: React.ReactNode;\n\tlabelClassName?: string;\n\tvariant?: InputVariant;\n\tformatOptions?: NumberFormatOptions;\n\tsize?: SizeVariant;\n\t/**\n\t * Restrict to printable ASCII and Basic Arabic.\n\t * Defaults to true for `variant=\"text\"`; set `englishOnly={false}` to allow other scripts.\n\t */\n\tenglishOnly?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t(\n\t\t{\n\t\t\tclassName,\n\t\t\ttype,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\terror,\n\t\t\tonChange,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t\tsuffix,\n\t\t\tid,\n\t\t\tvalue,\n\t\t\tinputPrefix,\n\t\t\tlabelClassName,\n\t\t\tvariant = 'text',\n\t\t\tsize = 'default',\n\t\t\tformatOptions = DEFAULT_FORMAT_OPTIONS,\n\t\t\tenglishOnly = true,\n\t\t\tonBeforeInput: onBeforeInputProp,\n\t\t\tonPaste: onPasteProp,\n\t\t\tonCompositionEnd: onCompositionEndProp,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst inputRef = React.useRef<HTMLInputElement | null>(null);\n\t\tconst [cursorPosition, setCursorPosition] = React.useState<number | null>(null);\n\n\t\tconst enforceEnglishOnly = englishOnly ?? variant === 'text';\n\t\tconst isFormattedVariant = variant === 'formatted-number' || variant === 'integer';\n\t\tconst pattern = React.useMemo(() => getInputPattern(variant, formatOptions), [variant, formatOptions]);\n\n\t\tconst applyEnglishOnly = React.useCallback(\n\t\t\t(raw: string) => (enforceEnglishOnly ? sanitizeEnglishOnly(raw) : raw),\n\t\t\t[enforceEnglishOnly],\n\t\t);\n\n\t\tconst supportsSelectionRange = (element: HTMLInputElement) =>\n\t\t\ttypeof element.setSelectionRange === 'function' && ['text', 'search', 'url', 'tel', 'password', ''].includes(element.type ?? '');\n\n\t\t// Handle cursor position after formatting\n\t\tReact.useEffect(() => {\n\t\t\tif (cursorPosition !== null && inputRef.current) {\n\t\t\t\tif (supportsSelectionRange(inputRef.current)) {\n\t\t\t\t\tinputRef.current.setSelectionRange(cursorPosition, cursorPosition);\n\t\t\t\t}\n\t\t\t\tsetCursorPosition(null);\n\t\t\t}\n\t\t}, [cursorPosition]);\n\n\t\tconst handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tlet newValue = e.target.value;\n\t\t\tconst oldValue = (value as string) || '';\n\t\t\tconst currentCursorPosition = e.target.selectionStart || 0;\n\n\t\t\tnewValue = applyEnglishOnly(newValue);\n\t\t\tif (enforceEnglishOnly && newValue !== e.target.value) {\n\t\t\t\tconst sanitizedBeforeCursor = sanitizeEnglishOnly(e.target.value.slice(0, currentCursorPosition));\n\t\t\t\tsetCursorPosition(sanitizedBeforeCursor.length);\n\t\t\t}\n\n\t\t\t// For number variants, validate and format\n\t\t\tif (variant !== 'text') {\n\t\t\t\t// Remove formatting before validation\n\t\t\t\tif (isFormattedVariant) {\n\t\t\t\t\tnewValue = removeFormatting(newValue, formatOptions);\n\t\t\t\t}\n\n\t\t\t\t// Validate against pattern\n\t\t\t\tif (!pattern.test(newValue)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Handle cursor position for formatted variants\n\t\t\t\tif (isFormattedVariant) {\n\t\t\t\t\tconst oldFormatCharCount = (oldValue.slice(0, currentCursorPosition).match(/,/g) || []).length;\n\t\t\t\t\tconst newFormatCharCount = (formatAmount(newValue, formatOptions).slice(0, currentCursorPosition).match(/,/g) || []).length;\n\t\t\t\t\tconst cursorAdjustment = newFormatCharCount - oldFormatCharCount;\n\t\t\t\t\tsetCursorPosition(currentCursorPosition + cursorAdjustment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onChange) {\n\t\t\t\tonChange(newValue);\n\t\t\t}\n\t\t};\n\n\t\tconst getValue = () => {\n\t\t\tlet displayValue = value;\n\t\t\tif (enforceEnglishOnly && typeof displayValue === 'string') {\n\t\t\t\tdisplayValue = sanitizeEnglishOnly(displayValue);\n\t\t\t}\n\t\t\tif (isFormattedVariant && displayValue) {\n\t\t\t\treturn formatAmount(displayValue as string, {\n\t\t\t\t\t...formatOptions,\n\t\t\t\t\tallowDecimals: variant !== 'integer',\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn displayValue;\n\t\t};\n\n\t\treturn (\n\t\t\t<div className='space-y-1 w-full flex flex-col'>\n\t\t\t\t{/* Label */}\n\t\t\t\t{label && <Label label={label} disabled={disabled} labelClassName={labelClassName} htmlFor={id} />}\n\t\t\t\t{/* Input */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tsizes[size].height,\n\t\t\t\t\t\tsizes[size].padding,\n\t\t\t\t\t\tsizes[size].text,\n\t\t\t\t\t\tsizes[size].display,\n\t\t\t\t\t\t'w-full flex group items-center rounded-[6px] border bg-background ring-offset-background placeholder:text-muted-foreground disabled:opacity-50 disabled:cursor-not-allowed',\n\t\t\t\t\t\terror ? 'border-destructive' : 'border-input focus-within:ring-ring focus-within:ring-offset-2',\n\t\t\t\t\t\t'focus-within:border-black',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}>\n\t\t\t\t\t{inputPrefix && <div className='me-2'>{inputPrefix}</div>}\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tvalue={getValue()}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'peer relative min-h-0 min-w-0 flex-1 bg-transparent outline-none ring-0 focus:outline-none placeholder:text-muted-foreground',\n\t\t\t\t\t\t\tdisabled && 'text-zinc-500',\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\tref={(element) => {\n\t\t\t\t\t\t\tinputRef.current = element;\n\t\t\t\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\t\t\t\tref(element);\n\t\t\t\t\t\t\t} else if (ref) {\n\t\t\t\t\t\t\t\tref.current = element;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t{suffix && (\n\t\t\t\t\t\t<div className='ms-2 flex shrink-0 items-center self-stretch ps-2 text-sm tabular-nums leading-none text-muted-foreground'>\n\t\t\t\t\t\t\t{suffix}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{/* Description */}\n\t\t\t\t{description && <p className={cn('text-sm', disabled ? 'text-zinc-500' : 'text-muted-foreground')}>{description}</p>}\n\t\t\t\t{/* Error Message */}\n\t\t\t\t{error && <p className='text-sm text-destructive'>{error}</p>}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n","export enum PlanType {\n\tFREE = 'FREE',\n\tFIXED = 'FIXED',\n\tHYBRID_FREE = 'HYBRID_FREE',\n\tHYBRID_PAID = 'HYBRID_PAID',\n\tUSAGE_ONLY = 'USAGE_ONLY',\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","// Reusable runtime validation / normalization boundary for exportable component libraries.\n//\n// WHY: exported components receive raw props from external consumers' own code/API. TypeScript\n// disappears at runtime, so a JS consumer — or a TS one using `as any` — can hand us the wrong\n// shape. Rather than crash, we coerce what we can, drop what we can't, and surface issues via a\n// caller-supplied reporter. `createNormalizer(schema)` packages the array/single normalization\n// logic so any component library can reuse it with its own Zod schema and issue reporter.\nimport type { ZodIssue, ZodType } from 'zod';\n\n/** Generic validation issue: `index` (-1 for whole-input errors) plus the raw Zod issues. */\nexport interface NormalizerIssue {\n\tindex: number;\n\tissues: ZodIssue[];\n}\n\n/**\n * Build a normalizer bound to `schema`.\n * - `normalizeMany(input, onIssue?)`: non-array input → `[]` (reported at index -1); otherwise each\n * item is safe-parsed, valid entries collected, invalid entries reported through `onIssue`.\n * - `normalizeOne(raw)`: safe-parse; on failure re-parse a repaired `{ ...raw, id: raw.id ?? '' }`;\n * returns the repaired data or the original `raw` — never throws.\n */\nexport function createNormalizer<T>(schema: ZodType): {\n\tnormalizeMany: (input: unknown, onIssue?: (issue: NormalizerIssue) => void) => T[];\n\tnormalizeOne: <R extends object>(raw: R) => R;\n} {\n\tfunction normalizeMany(input: unknown, onIssue?: (issue: NormalizerIssue) => void): T[] {\n\t\tif (!Array.isArray(input)) {\n\t\t\tonIssue?.({ index: -1, issues: [{ code: 'custom', message: '`plans` is not an array', path: [] }] as ZodIssue[] });\n\t\t\treturn [];\n\t\t}\n\n\t\tconst out: T[] = [];\n\t\tinput.forEach((raw, index) => {\n\t\t\tconst result = schema.safeParse(raw);\n\t\t\tif (result.success) {\n\t\t\t\tout.push(result.data as unknown as T);\n\t\t\t} else {\n\t\t\t\tonIssue?.({ index, issues: result.error.issues });\n\t\t\t}\n\t\t});\n\t\treturn out;\n\t}\n\n\tfunction normalizeOne<R extends object>(raw: R): R {\n\t\tconst result = schema.safeParse(raw);\n\t\tif (result.success) return result.data as unknown as R;\n\t\t// Even a total parse failure yields a renderable shell (schema fields carry `.catch` defaults);\n\t\t// re-parse a repaired object so required fields exist. Guard against `null`/non-object input\n\t\t// (e.g. `normalizeOne(null)`) so the boundary never throws for external JS consumers.\n\t\tconst base = raw != null && typeof raw === 'object' ? (raw as object) : {};\n\t\tconst repaired = schema.safeParse({ ...base, id: (base as { id?: unknown }).id ?? '' });\n\t\treturn (repaired.success ? (repaired.data as unknown as R) : raw) as R;\n\t}\n\n\treturn { normalizeMany, normalizeOne };\n}\n","// Runtime validation / normalization boundary for the pricing widget.\n//\n// WHY: the dashboard feeds trusted, adapter-produced data, but external SDK consumers pass raw\n// props from their own code/API. TypeScript disappears at runtime, so a JS consumer — or a TS\n// one using `as any` — can hand us the wrong shape. Rather than crash (white screen), we coerce\n// what we can, drop what we can't, and surface issues via `onValidationError`.\nimport { z } from 'zod';\nimport { PlanType } from '@/constants/planTypes';\nimport { createNormalizer } from '@/lib/exportable/validation';\nimport type { Plan } from './types';\n\n// `z.coerce.string()` turns `undefined`/`null` into the literal `\"undefined\"`/`\"null\"` (and its\n// `.catch('')` never fires because coercion \"succeeds\"). Preprocess nullish → '' first so missing\n// fields normalize to an empty string.\nconst nullishToString = z.preprocess((v) => (v == null ? '' : v), z.coerce.string()).catch('');\n\nconst entitlementSchema = z\n\t.object({\n\t\tid: nullishToString,\n\t\tfeature_id: nullishToString,\n\t\tname: nullishToString,\n\t\t// Unknown/garbage type falls back to a plain static row instead of breaking the renderer.\n\t\ttype: z.enum(['STATIC', 'BOOLEAN', 'METERED', 'CONFIG']).catch('STATIC'),\n\t\t// Value can be string | number | boolean | object | null — pass through as-is.\n\t\tvalue: z.unknown().nullable().catch(null),\n\t\tdescription: z.coerce.string().optional(),\n\t\tusage_reset_period: z.coerce.string().optional(),\n\t})\n\t.passthrough();\n\nconst priceSchema = z\n\t.object({\n\t\tamount: z.coerce.string().optional(),\n\t\tcurrency: z.coerce.string().optional(),\n\t\tbillingPeriod: z.coerce.string().optional(),\n\t\ttype: z.unknown().optional(),\n\t\t// The single hard-crash field: an invalid displayType is coerced to a safe default.\n\t\tdisplayType: z.nativeEnum(PlanType).catch(PlanType.FIXED),\n\t})\n\t.passthrough();\n\nconst creditGrantSchema = z\n\t.object({\n\t\tname: nullishToString,\n\t\tcredits: z.coerce.number().catch(0),\n\t\tcadence: z.enum(['onetime', 'recurring']).catch('onetime'),\n\t\tperiod: z.coerce.string().nullish(),\n\t})\n\t.passthrough();\n\n/**\n * A single plan. `.passthrough()` preserves consumer-supplied callback props (onSelectPlan,\n * getFeatureHref, flags) untouched while the data-bearing fields are validated/coerced.\n * `id` is the only truly required field — without it a plan can't be keyed or selected, so it's\n * dropped rather than repaired.\n */\nexport const PlanSchema = z\n\t.object({\n\t\tid: z.string().min(1),\n\t\tname: nullishToString,\n\t\tdescription: nullishToString,\n\t\t// Functional catches so every normalized plan gets its OWN fallback object/array — a shared\n\t\t// mutable literal could be aliased across plans (and mutated by a consumer).\n\t\tprice: priceSchema.catch(() => ({ displayType: PlanType.FIXED })),\n\t\tusageCharges: z.array(z.unknown()).catch(() => []),\n\t\tentitlements: z.array(entitlementSchema).catch(() => []),\n\t\tcreditGrants: z\n\t\t\t.array(creditGrantSchema)\n\t\t\t.optional()\n\t\t\t.catch(() => []),\n\t})\n\t.passthrough();\n\n/**\n * Card variant of {@link PlanSchema} for the single-plan path. `normalizeCardProps` repairs a\n * missing `id` to `''` so a lone `<PricingCard>` still renders — but `PlanSchema.id` is `min(1)`\n * and would reject `''`. This schema relaxes only `id` (defaulting to `''`) so the repaired parse\n * succeeds; the array path keeps the strict `PlanSchema` and still drops id-less plans.\n */\nexport const CardPlanSchema = PlanSchema.extend({ id: nullishToString });\n\nexport interface PlanValidationIssue {\n\tindex: number;\n\tissues: z.ZodIssue[];\n}\n\n// Array/single normalization logic lives in the reusable `createNormalizer` primitive\n// (`@/lib/exportable/validation`); the pricing-specific schema, issue shape, and default dev-warn\n// reporter are supplied here.\nconst planNormalizer = createNormalizer<Plan>(PlanSchema);\n// Card path uses the id-relaxed schema so the missing-id repair (`''`) parses successfully.\nconst cardNormalizer = createNormalizer<Plan>(CardPlanSchema);\n\n/**\n * Validate + normalize an unknown `plans` input into safe `Plan[]`.\n * - Non-array input → `[]` (reported).\n * - Each entry is coerced where possible; entries without a usable `id` are dropped.\n * - Invalid entries are reported through `onValidationError` (default: `console.warn` in dev).\n */\nexport function normalizePlans(input: unknown, onValidationError?: (issue: PlanValidationIssue) => void): Plan[] {\n\tconst report =\n\t\tonValidationError ??\n\t\t((issue: PlanValidationIssue) => {\n\t\t\tif (import.meta.env?.DEV) console.warn('[@flexprice/flexprice-ui] invalid plan dropped/normalized:', issue);\n\t\t});\n\n\treturn planNormalizer.normalizeMany(input, report);\n}\n\n/**\n * Single-plan variant used by `<PricingCard>` to validate its own props. Unlike the array path,\n * this never drops: a missing `id` is repaired to `''` (a lone card still renders), so a direct\n * SDK consumer of `<PricingCard>` degrades gracefully rather than white-screening. Callback props\n * (onSelectPlan, getFeatureHref, flags) pass through untouched.\n */\nexport function normalizeCardProps<T extends object>(raw: T): T {\n\treturn cardNormalizer.normalizeOne(raw);\n}\n","import { useMemo, useState } from 'react';\nimport type { TFunction } from 'i18next';\n// The reusable cross-cutting primitives live in `@/lib/exportable` (bundledI18n + validation);\n// `@/pricing/i18n` and `@/pricing/schema` are thin pricing-specific wrappers over them.\nimport { usePricingT } from '@/pricing/i18n';\nimport { Check, Coins, Eye, Gauge, Info, Mail, MessageSquare, Phone, Sparkles, Zap, type LucideIcon } from 'lucide-react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { Button } from '@/components/ui/button';\nimport { formatBillingPeriodForPrice, getCurrencySymbol } from '@/utils/common/helper_functions';\nimport { formatAmount } from '@/components/atoms/Input/Input';\nimport { PlanType } from '@/constants/planTypes';\nimport { cn } from '@/lib/utils';\nimport { PRICE_TYPE } from '@/models/Price';\nimport { normalizeCardProps } from '@/pricing/schema';\nimport { JsonObject } from '@/types/common';\nexport interface UsageCharge {\n\tamount?: string;\n\tcurrency?: string;\n\tbilling_model: string;\n\ttype?: PRICE_TYPE;\n\ttiers?: Array<{\n\t\tup_to: number | null;\n\t\tunit_amount: string;\n\t\tflat_amount: string;\n\t}> | null;\n\tmatter_name?: string;\n\tmeter_name?: string;\n}\n\nexport interface PricingCardProps {\n\tid: string;\n\tname: string;\n\tdescription: string;\n\tprice: {\n\t\tamount?: string;\n\t\tcurrency?: string;\n\t\tbillingPeriod?: string;\n\t\ttype?: PRICE_TYPE;\n\t\tdisplayType: PlanType;\n\t};\n\tusageCharges?: UsageCharge[];\n\tentitlements: Array<{\n\t\tid: string;\n\t\tfeature_id: string;\n\t\tname: string;\n\t\ttype: 'STATIC' | 'BOOLEAN' | 'METERED' | 'CONFIG';\n\t\tvalue: string | number | boolean | JsonObject | null;\n\t\tdescription?: string;\n\t\tusage_reset_period?: string;\n\t}>;\n\tonPurchase?: () => void;\n\t/** Invoked when the plan CTA (\"View plan\") is clicked. Consumers wire their own navigation. */\n\tonSelectPlan?: (id: string) => void;\n\t/** Optional link target for a feature name. Return undefined to render plain text (default). */\n\tgetFeatureHref?: (featureId: string) => string | undefined;\n\tclassName?: string;\n\tshowUsageCharges?: boolean;\n\t/** When true, AI/onboarding preview: full charge/entitlement lists, optional credits, no \"View plan\" CTA. */\n\tisPreview?: boolean;\n\t/** Product catalog / widgets: same card chrome, icons, and colors as setup preview, but keeps \"View plan\" and list truncation. */\n\tuseModernChrome?: boolean;\n\t/** Per-plan credit grants (listed under entitlements when preview or modern chrome). */\n\tcreditGrants?: Array<{\n\t\tname: string;\n\t\tcredits: number;\n\t\tcadence: 'onetime' | 'recurring';\n\t\t/** Lowercase cadence label for display, e.g. monthly, annual, weekly. */\n\t\tperiod?: string | null;\n\t}>;\n}\n\nconst formatEntitlementValue = ({\n\ttype,\n\tvalue,\n\tname,\n\tusage_reset_period,\n\tfeature_id,\n\tt,\n\tgetFeatureHref,\n}: {\n\ttype: string;\n\tvalue: string | number | boolean | JsonObject | null;\n\tname: string;\n\tusage_reset_period: string;\n\tfeature_id: string;\n\tt: TFunction<'common'>;\n\tgetFeatureHref?: (featureId: string) => string | undefined;\n}) => {\n\tconst featureHref = feature_id ? getFeatureHref?.(feature_id) : undefined;\n\tconst feature = featureHref ? (\n\t\t<a\n\t\t\thref={featureHref}\n\t\t\tclassName='hover:underline decoration-dashed decoration-[0.5px] decoration-muted-foreground/50 underline-offset-4'>\n\t\t\t{name}\n\t\t</a>\n\t) : (\n\t\tname\n\t);\n\n\tswitch (type) {\n\t\tcase 'STATIC':\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{value} {feature}\n\t\t\t\t</>\n\t\t\t);\n\t\tcase 'BOOLEAN':\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{value ? (\n\t\t\t\t\t\tfeature\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{name} {t('pricingCard.notIncluded')}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t);\n\t\tcase 'METERED':\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{formatAmount((value ?? '').toString())} {feature}\n\t\t\t\t\t{usage_reset_period ? t('pricingCard.perBillingPeriod', { period: formatBillingPeriodForPrice(usage_reset_period) }) : ''}\n\t\t\t\t</>\n\t\t\t);\n\t\tcase 'CONFIG':\n\t\t\treturn feature;\n\t\tdefault:\n\t\t\treturn `${value} ${feature}`;\n\t}\n};\n\nconst formatUsageCharge = (charge: UsageCharge, t: TFunction<'common'>) => {\n\tif (!charge.amount) return '';\n\n\tconst sym = getCurrencySymbol(charge.currency || '');\n\tconst amt = `${sym}${formatAmount(charge.amount)}`;\n\n\tif (charge.billing_model === 'PACKAGE') {\n\t\treturn t('pricingCard.perPackage', { amount: amt });\n\t} else if (charge.billing_model === 'FLAT_FEE') {\n\t\treturn t('pricingCard.perUnit', { amount: amt });\n\t} else if (charge.billing_model === 'TIERED' && charge.tiers?.length) {\n\t\tconst startAmt = `${sym}${formatAmount(charge.tiers[0].unit_amount)}`;\n\t\treturn t('pricingCard.startingAtPerUnit', { amount: startAmt });\n\t}\n\treturn t('pricingCard.perUnit', { amount: amt });\n};\n\n/** Compact usage line for AI pricing preview (/unit instead of per unit). */\nconst formatUsageChargeCompact = (charge: UsageCharge, t: TFunction<'common'>) => {\n\tif (!charge.amount) return '';\n\tconst sym = getCurrencySymbol(charge.currency || '');\n\tconst amt = formatAmount(charge.amount);\n\tif (charge.billing_model === 'PACKAGE') {\n\t\treturn t('pricingCard.compactPerPkg', { amount: `${sym}${amt}` });\n\t}\n\tif (charge.billing_model === 'TIERED' && charge.tiers?.length) {\n\t\treturn t('pricingCard.compactFromPerUnit', { amount: `${sym}${formatAmount(charge.tiers[0].unit_amount)}` });\n\t}\n\treturn t('pricingCard.compactPerUnit', { amount: `${sym}${amt}` });\n};\n\n/** Matches default/template grant titles — redundant with plan cadence (e.g. /month on price). */\nfunction isBoilerplateCreditGrantName(raw: string): boolean {\n\tconst n = raw.trim().toLowerCase().replace(/\\s+/g, ' ');\n\tif (!n) return true;\n\treturn /^(monthly|annual|quarterly|weekly|daily) included credits?$/.test(n);\n}\n\nfunction getEntitlementVisual(type: string, name: string): { Icon: LucideIcon; iconClass: string } {\n\tconst n = name.toLowerCase();\n\tif (type === 'METERED') {\n\t\tif (n.includes('email') || n.includes('mail')) return { Icon: Mail, iconClass: 'text-sky-600' };\n\t\tif (n.includes('sms') || n.includes('chat') || n.includes('message')) return { Icon: MessageSquare, iconClass: 'text-violet-600' };\n\t\tif (n.includes('phone') || n.includes('call') || n.includes('minute')) return { Icon: Phone, iconClass: 'text-emerald-600' };\n\t\tif (n.includes('api') || n.includes('request') || n.includes('agent')) return { Icon: Zap, iconClass: 'text-amber-600' };\n\t\treturn { Icon: Gauge, iconClass: 'text-indigo-600' };\n\t}\n\treturn { Icon: Sparkles, iconClass: 'text-emerald-600' };\n}\n\nfunction formatEntitlementPreviewLine(ent: PricingCardProps['entitlements'][0], t: TFunction<'common'>): string {\n\tconst period = ent.usage_reset_period ? `/${formatBillingPeriodForPrice(ent.usage_reset_period)}` : '';\n\tswitch (ent.type) {\n\t\tcase 'STATIC':\n\t\t\treturn `${ent.value} ${ent.name}`;\n\t\tcase 'BOOLEAN':\n\t\t\treturn ent.value ? String(ent.name) : t('pricingCard.previewBooleanNotIncluded', { name: ent.name });\n\t\tcase 'METERED':\n\t\t\treturn `${formatAmount(String(ent.value))} ${ent.name}${period}`;\n\t\tcase 'CONFIG':\n\t\t\treturn String(ent.name);\n\t\tdefault:\n\t\t\treturn `${ent.value} ${ent.name}`;\n\t}\n}\n\nconst UsageChargeTooltip: React.FC<{ charge: UsageCharge; t: TFunction<'common'> }> = ({ charge, t }) => {\n\tif (charge.billing_model !== 'TIERED' || !charge.tiers) {\n\t\treturn null;\n\t}\n\n\ttype Tier = NonNullable<UsageCharge['tiers']>[number];\n\tconst formatRange = (tier: Tier, index: number, allTiers: Tier[]) => {\n\t\tconst from = index === 0 ? 1 : (allTiers[index - 1].up_to ?? 0) + 1;\n\t\tif (tier.up_to === null || index === allTiers.length - 1) {\n\t\t\treturn `${from} - ∞`;\n\t\t}\n\t\treturn `${from} - ${tier.up_to}`;\n\t};\n\n\tconst sym = getCurrencySymbol(charge.currency || '');\n\n\treturn (\n\t\t<TooltipContent\n\t\t\tsideOffset={5}\n\t\t\tclassName='bg-white border border-gray-200 shadow-lg text-sm text-gray-900 px-4 py-3 rounded-lg max-w-[320px]'>\n\t\t\t<div className='space-y-3'>\n\t\t\t\t<div className='font-medium border-b border-spacing-1 border-gray-200 pb-2 text-base text-gray-900'>\n\t\t\t\t\t{t('pricingCard.volumePricing')}\n\t\t\t\t</div>\n\t\t\t\t<div className='space-y-2'>\n\t\t\t\t\t{charge.tiers.map((tier, index) => (\n\t\t\t\t\t\t<div key={index} className='flex flex-col gap-1'>\n\t\t\t\t\t\t\t<div className='flex items-center justify-between gap-6'>\n\t\t\t\t\t\t\t\t<div className='!font-normal text-muted-foreground'>\n\t\t\t\t\t\t\t\t\t{t('pricingCard.unitsLabel', { range: formatRange(tier, index, charge.tiers || []) })}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className='text-end'>\n\t\t\t\t\t\t\t\t\t<div className='!font-normal text-muted-foreground'>\n\t\t\t\t\t\t\t\t\t\t{t('pricingCard.perUnitShort', {\n\t\t\t\t\t\t\t\t\t\t\tamount: `${sym}${formatAmount(tier.unit_amount)}`,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{Number(tier.flat_amount) > 0 && (\n\t\t\t\t\t\t\t\t\t\t<div className='text-xs text-gray-500'>\n\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.flatFeeShort', { amount: `${sym}${formatAmount(tier.flat_amount)}` })}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{index < (charge.tiers?.length || 0) - 1 && <div className='h-px bg-gray-100' />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</TooltipContent>\n\t);\n};\n\nconst VISIBLE_LIMIT = 3;\n\nconst PricingCard: React.FC<PricingCardProps> = (rawProps) => {\n\t// Validate/normalize own props at the boundary so a direct SDK/JS consumer passing a wrong\n\t// shape degrades (fields coerced, invalid displayType → FIXED, missing arrays → []) instead\n\t// of white-screening. Idempotent for trusted dashboard data. Every entry point (this card +\n\t// PricingTable) validates independently.\n\tconst {\n\t\tid,\n\t\tname,\n\t\tprice = { displayType: PlanType.FIXED },\n\t\tusageCharges = [],\n\t\tentitlements = [],\n\t\tcreditGrants = [],\n\t\tclassName = '',\n\t\tshowUsageCharges = false,\n\t\tisPreview = false,\n\t\tuseModernChrome = false,\n\t\tonSelectPlan,\n\t\tgetFeatureHref,\n\t} = normalizeCardProps(rawProps);\n\t// Host i18n when available (dashboard: Arabic/white-label), else bundled English defaults.\n\tconst t = usePricingT();\n\tconst [showAllCharges, setShowAllCharges] = useState(false);\n\tconst [showAllEntitlements, setShowAllEntitlements] = useState(false);\n\n\tconst isSetupPreview = isPreview;\n\tconst visualModern = isSetupPreview || useModernChrome;\n\n\tconst priceDisplayConfig = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\t[PlanType.FREE]: { text: t('pricingCard.free'), useCurrencyZeroDisplay: false, showBillingPeriod: false, subtext: '' },\n\t\t\t\t[PlanType.HYBRID_FREE]: { text: '', useCurrencyZeroDisplay: true, showBillingPeriod: true, subtext: t('pricingCard.plusUsage') },\n\t\t\t\t[PlanType.HYBRID_PAID]: { text: '', useCurrencyZeroDisplay: false, showBillingPeriod: true, subtext: t('pricingCard.plusUsage') },\n\t\t\t\t[PlanType.USAGE_ONLY]: { text: '', useCurrencyZeroDisplay: true, showBillingPeriod: true, subtext: t('pricingCard.plusUsage') },\n\t\t\t\t[PlanType.FIXED]: { text: '', useCurrencyZeroDisplay: false, showBillingPeriod: true, subtext: '' },\n\t\t\t}) as const,\n\t\t[t],\n\t);\n\n\t// Fall back to FIXED chrome when displayType is missing/invalid so `config` is never undefined.\n\tconst config = priceDisplayConfig[price.displayType] ?? priceDisplayConfig[PlanType.FIXED];\n\tconst displayAmount = config.text || `${getCurrencySymbol(price.currency || '')}${formatAmount(price.amount || '')}`;\n\tconst hasUsageCharges = usageCharges.length > 0;\n\n\tconst chargeLimit = isSetupPreview ? usageCharges.length : VISIBLE_LIMIT;\n\tconst entLimit = isSetupPreview ? entitlements.length : VISIBLE_LIMIT;\n\n\tconst visibleCharges = showAllCharges ? usageCharges : usageCharges.slice(0, chargeLimit);\n\tconst hiddenChargesCount = isSetupPreview ? 0 : usageCharges.length - VISIBLE_LIMIT;\n\n\tconst visibleEntitlements = showAllEntitlements ? entitlements : entitlements.slice(0, entLimit);\n\tconst hiddenEntitlementsCount = isSetupPreview ? 0 : entitlements.length - VISIBLE_LIMIT;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flexprice-ui',\n\t\t\t\t'border transition-all shadow-md',\n\t\t\t\tvisualModern\n\t\t\t\t\t? 'rounded-2xl border-slate-200/90 bg-gradient-to-b from-white to-slate-50/90 p-5 shadow-sm ring-1 ring-slate-100 hover:border-slate-300/90'\n\t\t\t\t\t: 'border-gray-200 bg-white hover:border-gray-300 rounded-3xl p-7',\n\t\t\t\tclassName,\n\t\t\t)}>\n\t\t\t{/* Header */}\n\t\t\t<div className={cn(visualModern ? 'space-y-1.5' : 'space-y-2')}>\n\t\t\t\t<h3 className={cn('font-[300] text-gray-900', visualModern ? 'text-lg' : 'text-xl')}>{name}</h3>\n\t\t\t\t{/* <p className='text-sm font-normal text-gray-500 leading-relaxed'>{description}</p> */}\n\t\t\t</div>\n\n\t\t\t{/* Price */}\n\t\t\t<div className={cn(visualModern ? 'mt-5 space-y-3' : 'mt-6 space-y-4')}>\n\t\t\t\t{/* Base Price */}\n\t\t\t\t<div className='flex flex-col'>\n\t\t\t\t\t<div className='flex items-baseline'>\n\t\t\t\t\t\t<span className={cn('font-normal text-gray-900', visualModern ? 'text-[28px]' : 'text-4xl')}>\n\t\t\t\t\t\t\t{config.useCurrencyZeroDisplay ? `${getCurrencySymbol(price.currency || '')}0` : displayAmount}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{config.showBillingPeriod && (\n\t\t\t\t\t\t\t<span className={cn('ms-2 text-gray-500', visualModern ? 'text-xs' : 'text-sm text3')}>\n\t\t\t\t\t\t\t\t/{formatBillingPeriodForPrice(price.billingPeriod || '')}\n\t\t\t\t\t\t\t\t{config.subtext && (!visualModern || isSetupPreview) && (\n\t\t\t\t\t\t\t\t\t<span className={cn('ms-1', visualModern ? 'text-[11px] font-semibold text-indigo-600' : 'font-medium text-lg')}>\n\t\t\t\t\t\t\t\t\t\t{config.subtext}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Usage Charges Section */}\n\t\t\t\t{hasUsageCharges && showUsageCharges && (\n\t\t\t\t\t<div className={cn('border-t', visualModern ? 'mt-3 border-slate-100 pt-3.5' : 'pt-4')}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'font-medium text-gray-900',\n\t\t\t\t\t\t\t\tvisualModern ? 'mb-2 text-[10px] uppercase tracking-wide text-gray-400' : 'mb-2 text-sm',\n\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t{visualModern ? t('pricingCard.usageSectionModern') : t('pricingCard.usageSectionClassic')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className={cn(visualModern ? 'space-y-2' : 'space-y-2')}>\n\t\t\t\t\t\t\t{visibleCharges.map((charge, index) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'flex items-start justify-between gap-2',\n\t\t\t\t\t\t\t\t\t\tvisualModern ? 'text-[11px] leading-snug text-slate-700' : 'gap-3 text-sm text-gray-600',\n\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t<span className={cn('min-w-0 flex-1', !visualModern && 'leading-snug')}>{charge.meter_name}</span>\n\t\t\t\t\t\t\t\t\t<div className='flex items-center gap-1.5 shrink-0'>\n\t\t\t\t\t\t\t\t\t\t<span className={cn('whitespace-nowrap text-end font-medium', visualModern ? 'text-slate-800' : 'text-gray-700')}>\n\t\t\t\t\t\t\t\t\t\t\t{visualModern ? formatUsageChargeCompact(charge, t) : formatUsageCharge(charge, t)}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{charge.billing_model === 'TIERED' && charge.tiers && (\n\t\t\t\t\t\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'text-gray-400 transition-colors duration-150 hover:text-gray-500',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvisualModern ? 'h-3.5 w-3.5' : 'h-4 w-4',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<UsageChargeTooltip charge={charge} t={t} />\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{!showAllCharges && hiddenChargesCount > 0 && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t\tonClick={() => setShowAllCharges(true)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'mt-1 flex items-center gap-1.5 text-xs transition-colors',\n\t\t\t\t\t\t\t\t\t\tvisualModern ? 'text-slate-400 hover:text-slate-600' : 'text-gray-400 hover:text-gray-600',\n\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t<Eye className='h-3.5 w-3.5' />\n\t\t\t\t\t\t\t\t\t{t('pricingCard.moreCount', { count: hiddenChargesCount })}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{showAllCharges && usageCharges.length > VISIBLE_LIMIT && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t\tonClick={() => setShowAllCharges(false)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'mt-1 flex items-center gap-1.5 text-xs transition-colors',\n\t\t\t\t\t\t\t\t\t\tvisualModern ? 'text-slate-400 hover:text-slate-600' : 'text-gray-400 hover:text-gray-600',\n\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t{t('pricingCard.showLess')}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* View plan — below price, above included / credits. Only rendered when a consumer wires\n\t\t\t `onSelectPlan`, so the CTA is never an enabled no-op. */}\n\t\t\t{!isSetupPreview && onSelectPlan && (\n\t\t\t\t<div className={cn(visualModern ? 'mt-5' : 'mt-6')}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tonSelectPlan(id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'w-full py-3 text-sm font-medium transition-colors',\n\t\t\t\t\t\t\tvisualModern\n\t\t\t\t\t\t\t\t? 'rounded-xl border border-slate-200 bg-white text-slate-900 shadow-sm hover:bg-slate-50'\n\t\t\t\t\t\t\t\t: 'rounded-2xl bg-gray-50 text-gray-900 hover:bg-gray-100',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvariant='outline'>\n\t\t\t\t\t\t{t('pricingCard.viewPlan')}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Features + credits (credits: simple rows under entitlements when modern / preview) */}\n\t\t\t{(entitlements.length > 0 || !isSetupPreview || (visualModern && creditGrants.length > 0)) && (\n\t\t\t\t<div className={cn(visualModern ? 'mt-4 border-t border-slate-100 pt-4' : 'mt-7')}>\n\t\t\t\t\t{entitlements.length > 0 ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{visualModern && (\n\t\t\t\t\t\t\t\t<p className='mb-2.5 text-[10px] font-semibold uppercase tracking-wide text-gray-400'>{t('pricingCard.includedHeading')}</p>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<ul className={cn(visualModern ? 'space-y-2.5' : 'space-y-3.5')}>\n\t\t\t\t\t\t\t\t{visibleEntitlements.map((entitlement) => {\n\t\t\t\t\t\t\t\t\tif (visualModern) {\n\t\t\t\t\t\t\t\t\t\tconst { Icon, iconClass } = getEntitlementVisual(entitlement.type, entitlement.name);\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<li key={entitlement.id} className='flex items-center gap-2'>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon className={cn('h-3.5 w-3.5 shrink-0', iconClass)} strokeWidth={2} aria-hidden />\n\t\t\t\t\t\t\t\t\t\t\t\t<span className='min-w-0 flex-1 text-[11px] font-normal leading-snug text-slate-700'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isSetupPreview ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformatEntitlementPreviewLine(entitlement, t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatEntitlementValue({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: entitlement.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: entitlement.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: entitlement.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusage_reset_period: entitlement.usage_reset_period || '',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeature_id: entitlement.feature_id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetFeatureHref,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{entitlement.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger className='cursor-pointer shrink-0'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className='h-3.5 w-3.5 text-gray-400 transition-colors hover:text-gray-500' />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsideOffset={5}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName='max-w-[200px] rounded-lg bg-gray-900 px-3 py-1.5 text-xs text-white'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{entitlement.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<li key={entitlement.id} className='flex items-center gap-3'>\n\t\t\t\t\t\t\t\t\t\t\t<Check className='h-[18px] w-[18px] flex-shrink-0 text-gray-600' />\n\t\t\t\t\t\t\t\t\t\t\t<span className='flex-1 text-[15px] font-normal text-gray-600'>\n\t\t\t\t\t\t\t\t\t\t\t\t{formatEntitlementValue({\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: entitlement.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: entitlement.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: entitlement.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\tusage_reset_period: entitlement.usage_reset_period || '',\n\t\t\t\t\t\t\t\t\t\t\t\t\tfeature_id: entitlement.feature_id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetFeatureHref,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{entitlement.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger className='cursor-pointer'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className='h-4 w-4 text-gray-400 transition-colors duration-150 hover:text-gray-500' />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TooltipContent sideOffset={5} className='max-w-[200px] rounded-lg bg-gray-900 px-3 py-1.5 text-xs text-white'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{entitlement.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t{!showAllEntitlements && hiddenEntitlementsCount > 0 && (\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => setShowAllEntitlements(true)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'flex items-center gap-1.5 text-xs transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvisualModern ? 'text-slate-400 hover:text-slate-600' : 'text-gray-400 hover:text-gray-600',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Eye className='h-3.5 w-3.5' />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.moreCount', { count: hiddenEntitlementsCount })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\t\tsideOffset={5}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName='bg-white border border-gray-200 shadow-lg text-sm text-gray-900 px-4 py-3 rounded-lg max-w-[280px]'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className='space-y-2'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{entitlements.slice(VISIBLE_LIMIT).map((ent, i) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (visualModern) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst { Icon, iconClass } = getEntitlementVisual(ent.type, ent.name);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div key={i} className='flex items-start gap-2 text-[11px] leading-snug text-slate-700'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon className={cn('mt-0.5 h-3.5 w-3.5 shrink-0', iconClass)} strokeWidth={2} aria-hidden />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatEntitlementValue({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: ent.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: ent.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: ent.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusage_reset_period: ent.usage_reset_period || '',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeature_id: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetFeatureHref,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div key={i} className='flex items-start gap-2 text-sm text-gray-600'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Check className='h-3.5 w-3.5 text-gray-400 mt-0.5 shrink-0' />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatEntitlementValue({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: ent.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: ent.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: ent.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusage_reset_period: ent.usage_reset_period || '',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeature_id: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgetFeatureHref,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{showAllEntitlements && entitlements.length > VISIBLE_LIMIT && (\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => setShowAllEntitlements(false)}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'flex items-center gap-1.5 text-xs transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\tvisualModern ? 'text-slate-400 hover:text-slate-600' : 'text-gray-400 hover:text-gray-600',\n\t\t\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.showLess')}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className='text-center'>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tonClick={() => onSelectPlan?.(id)}\n\t\t\t\t\t\t\t\tclassName='text-sm text-gray-900 underline decoration-dashed decoration-[0.5px] decoration-muted-foreground/50 underline-offset-4 hover:text-gray-700 transition-colors'>\n\t\t\t\t\t\t\t\t{t('pricingCard.addEntitlements')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{visualModern && creditGrants.length > 0 && (\n\t\t\t\t\t\t<div className={cn(entitlements.length > 0 || !isSetupPreview ? 'mt-3 border-t border-slate-100 pt-3' : '')}>\n\t\t\t\t\t\t\t<p className='mb-2.5 text-[10px] font-semibold uppercase tracking-wide text-gray-400'>{t('pricingCard.creditsHeading')}</p>\n\t\t\t\t\t\t\t<ul className='space-y-2.5'>\n\t\t\t\t\t\t\t\t{creditGrants.map((g, i) => (\n\t\t\t\t\t\t\t\t\t<li key={`${g.name}-${i}`} className='flex items-center gap-2'>\n\t\t\t\t\t\t\t\t\t\t<Coins className='h-3.5 w-3.5 shrink-0 text-slate-400' strokeWidth={2} aria-hidden />\n\t\t\t\t\t\t\t\t\t\t<span className='min-w-0 flex-1 text-[11px] font-normal leading-snug text-slate-700'>\n\t\t\t\t\t\t\t\t\t\t\t<span className='font-medium text-slate-800'>\n\t\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.creditsAmount', { formatted: g.credits.toLocaleString() })}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{!isBoilerplateCreditGrantName(g.name) && <span className='text-slate-600'> · {g.name}</span>}\n\t\t\t\t\t\t\t\t\t\t\t{g.cadence === 'recurring' && g.period && <span className='text-slate-500'> /{g.period}</span>}\n\t\t\t\t\t\t\t\t\t\t\t{g.cadence === 'onetime' && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className='text-slate-500'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{' · '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.oneTime')}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{g.cadence === 'recurring' && !g.period && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className='text-slate-500'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{' · '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t('pricingCard.recurring')}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default PricingCard;\n","import { FC, useMemo } from 'react';\nimport Select from '@/components/atoms/Select/Select';\nimport PricingCard from '@/components/molecules/PricingCard/PricingCard';\nimport { cn } from '@/lib/utils';\nimport type { PricingTableProps } from '../types';\nimport { normalizePlans } from '../schema';\n\n/**\n * Prop-only pricing grid — no fetching, no auth, no routing. Renders the currency /\n * billing-period selectors and a responsive grid of {@link PricingCard}s. Consumers supply\n * already-filtered `plans` plus controlled selector state and callbacks.\n */\nconst PricingTable: FC<PricingTableProps> = ({\n\tplans,\n\tbillingPeriod,\n\tonBillingPeriodChange,\n\tbillingPeriodOptions,\n\tbillingPeriodPlaceholder = 'Select billing period',\n\tcurrency,\n\tonCurrencyChange,\n\tcurrencyOptions,\n\tcurrencyPlaceholder = 'Select currency',\n\tonSelectPlan,\n\tgetFeatureHref,\n\thideFilters = false,\n\tonValidationError,\n\tclassName,\n}) => {\n\t// Validate/normalize at the boundary so wrong-format SDK input degrades (bad plans dropped,\n\t// missing fields defaulted) instead of crashing the renderer. Idempotent for trusted data.\n\tconst safePlans = useMemo(() => normalizePlans(plans, onValidationError), [plans, onValidationError]);\n\n\treturn (\n\t\t<div className={cn('flexprice-ui', 'flex flex-col gap-6', className)}>\n\t\t\t{!hideFilters && (\n\t\t\t\t<div className='flex w-full justify-start gap-4'>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tclassName='w-40 !rounded-xl'\n\t\t\t\t\t\tvalue={billingPeriod}\n\t\t\t\t\t\toptions={billingPeriodOptions}\n\t\t\t\t\t\tonChange={onBillingPeriodChange}\n\t\t\t\t\t\tplaceholder={billingPeriodPlaceholder}\n\t\t\t\t\t/>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tclassName='w-40 !rounded-xl'\n\t\t\t\t\t\tvalue={currency}\n\t\t\t\t\t\toptions={currencyOptions}\n\t\t\t\t\t\tonChange={onCurrencyChange}\n\t\t\t\t\t\tplaceholder={currencyPlaceholder}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className='grid grid-cols-1 gap-5 md:grid-cols-2 md:gap-6 lg:grid-cols-3 lg:gap-6'>\n\t\t\t\t<div className='contents'>\n\t\t\t\t\t{safePlans.map((plan, index) => (\n\t\t\t\t\t\t<div className='flex w-full' key={plan.id || index}>\n\t\t\t\t\t\t\t<PricingCard {...plan} className='w-full' useModernChrome onSelectPlan={onSelectPlan} getFeatureHref={getFeatureHref} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t{/* Keep the 3-col grid balanced when fewer than 3 plans render. */}\n\t\t\t\t{safePlans.length === 2 && <div className='hidden lg:block' />}\n\t\t\t\t{safePlans.length === 1 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className='hidden md:block' />\n\t\t\t\t\t\t<div className='hidden lg:block' />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PricingTable;\n","// Pure DTO → presentational mapping for the pricing widget.\n//\n// Everything here is side-effect free and framework-agnostic (no React, no hooks). The\n// container calls these to turn API responses into `Plan` (PricingCardProps) objects and to\n// derive the currency / billing-period options.\n\nimport type { PlanResponse, PriceResponse, EntitlementResponse } from '@/types';\nimport { Price, BILLING_PERIOD, INVOICE_CADENCE, PRICE_TYPE, CREDIT_GRANT_CADENCE, type CreditGrant, type Tier } from '@/models';\nimport { PlanType } from '@/constants/planTypes';\nimport { billlingPeriodOptions } from '@/constants/constants';\nimport type { Plan, PricingOption } from './types';\n\nexport type PlanWithData = PlanResponse & { prices: PriceResponse[]; entitlements: EntitlementResponse[] };\n\n// Structural subset of PriceResponse the pure helpers below actually read. Defined via Pick\n// so a real PriceResponse (or PlanWithData['prices'][number]) is assignable without any cast.\ntype PriceLike = Pick<\n\tPriceResponse,\n\t'currency' | 'billing_period' | 'billing_model' | 'type' | 'amount' | 'tiers' | 'meter' | 'invoice_cadence'\n>;\n\nexport const parseAmount = (amount: string | undefined): number => {\n\tif (!amount) return 0;\n\tconst parsed = parseFloat(amount);\n\treturn isNaN(parsed) ? 0 : parsed;\n};\n\nexport const isRecurringPrice = (price: PriceLike) =>\n\tprice.type === PRICE_TYPE.FIXED && price.billing_period?.toUpperCase() !== BILLING_PERIOD.ONETIME;\n\nexport const isUsageBasedPrice = (price: PriceLike) => price.type === PRICE_TYPE.USAGE;\n\nexport const getPriceDisplayType = (prices: PriceLike[]): PlanType => {\n\tif (!prices || prices.length === 0) return PlanType.USAGE_ONLY;\n\n\tconst recurringPrices = prices.filter(isRecurringPrice);\n\tconst usagePrices = prices.filter(isUsageBasedPrice);\n\n\tconst hasNonZeroRecurring = recurringPrices.some((p) => parseAmount(p.amount) > 0);\n\tconst allRecurringZero = recurringPrices.every((p) => parseAmount(p.amount) === 0);\n\n\tif (recurringPrices.length > 0 && !usagePrices.length && allRecurringZero) return PlanType.FREE;\n\tif (recurringPrices.length > 0 && usagePrices.length > 0 && allRecurringZero) return PlanType.HYBRID_FREE;\n\tif (recurringPrices.length > 0 && usagePrices.length > 0) return PlanType.HYBRID_PAID;\n\tif (usagePrices.length > 0 && recurringPrices.length === 0) return PlanType.USAGE_ONLY;\n\tif (recurringPrices.length > 0 && hasNonZeroRecurring) return PlanType.FIXED;\n\n\treturn PlanType.USAGE_ONLY;\n};\n\nexport function grantPlanId(grant: CreditGrant, fallbackPlanId: string): string {\n\tconst g = grant as CreditGrant & { planId?: string };\n\treturn grant.plan_id ?? g.planId ?? fallbackPlanId;\n}\n\nexport function mapCreditGrantToCardProps(grant: CreditGrant): NonNullable<Plan['creditGrants']>[number] {\n\tconst cadence = grant.cadence === CREDIT_GRANT_CADENCE.RECURRING ? ('recurring' as const) : ('onetime' as const);\n\treturn {\n\t\tname: grant.name,\n\t\tcredits: grant.credits,\n\t\tcadence,\n\t\tperiod: grant.period ? grant.period.toLowerCase() : null,\n\t};\n}\n\n/** Pick the currency + billing period that shows the most plans (preferring recurring pricing). */\nexport const findBestPriceCombination = (\n\tplans: PlanWithData[],\n\tavailableCurrencyOptions: Array<{ value: string }>,\n\tavailablePeriodOptions: Array<{ value: string }>,\n) => {\n\tlet maxPlans = 0;\n\tlet bestCurrency = '';\n\tlet bestPeriod = '';\n\n\t// Preferred: the recurring-price combination that shows the MOST plans (not merely the first\n\t// non-empty one), so the default view maximizes visible plans.\n\tfor (const currency of availableCurrencyOptions) {\n\t\tfor (const period of availablePeriodOptions) {\n\t\t\tconst testFiltered = plans\n\t\t\t\t.map((plan) => ({\n\t\t\t\t\t...plan,\n\t\t\t\t\tprices: plan.prices?.filter(\n\t\t\t\t\t\t(price: PriceResponse) =>\n\t\t\t\t\t\t\tprice.currency.toUpperCase() === currency.value && price.billing_period === period.value && isRecurringPrice(price),\n\t\t\t\t\t),\n\t\t\t\t}))\n\t\t\t\t.filter((plan) => plan.prices && plan.prices.length > 0);\n\n\t\t\tif (testFiltered.length > maxPlans) {\n\t\t\t\tmaxPlans = testFiltered.length;\n\t\t\t\tbestCurrency = currency.value;\n\t\t\t\tbestPeriod = period.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (maxPlans > 0) {\n\t\treturn { currency: bestCurrency, period: bestPeriod, hasPreferred: true };\n\t}\n\n\tfor (const currency of availableCurrencyOptions) {\n\t\tfor (const period of availablePeriodOptions) {\n\t\t\tconst testFiltered = plans\n\t\t\t\t.map((plan) => ({\n\t\t\t\t\t...plan,\n\t\t\t\t\tprices: plan.prices?.filter(\n\t\t\t\t\t\t(price: PriceResponse) => price.currency.toUpperCase() === currency.value && price.billing_period === period.value,\n\t\t\t\t\t),\n\t\t\t\t}))\n\t\t\t\t.filter((plan) => (plan.prices?.length ?? 0) > 0);\n\n\t\t\tif (testFiltered.length > maxPlans) {\n\t\t\t\tmaxPlans = testFiltered.length;\n\t\t\t\tbestCurrency = currency.value;\n\t\t\t\tbestPeriod = period.value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { currency: bestCurrency, period: bestPeriod, hasPreferred: false };\n};\n\nexport interface CurrencyPeriodOptions {\n\tallCurrencyOptions: PricingOption[];\n\tallPeriodOptions: PricingOption[];\n\tavailableCurrencyOptions: PricingOption[];\n\tavailablePeriodOptions: PricingOption[];\n}\n\n/** Collect currency / period options and narrow them by the current selection. */\nexport function deriveCurrencyPeriodOptions(\n\tplans: PlanWithData[],\n\tselectedCurrency: string,\n\tselectedBillingPeriod: string,\n): CurrencyPeriodOptions {\n\tconst currencies = new Set<string>();\n\tplans.forEach((plan) => plan.prices?.forEach((price) => currencies.add(price.currency)));\n\n\tconst allCurrencyOptions = Array.from(currencies).map((currency) => ({\n\t\tlabel: currency.toUpperCase(),\n\t\tvalue: currency.toUpperCase(),\n\t}));\n\tconst allPeriodOptions = billlingPeriodOptions;\n\n\tconst availableCurrencyOptions = selectedBillingPeriod\n\t\t? allCurrencyOptions.filter((currency) =>\n\t\t\t\tplans.some((plan) =>\n\t\t\t\t\tplan.prices?.some((price) => price.currency.toUpperCase() === currency.value && price.billing_period === selectedBillingPeriod),\n\t\t\t\t),\n\t\t\t)\n\t\t: allCurrencyOptions;\n\n\tconst availablePeriodOptions = selectedCurrency\n\t\t? allPeriodOptions.filter((period) =>\n\t\t\t\tplans.some((plan) =>\n\t\t\t\t\tplan.prices?.some((price) => price.currency.toUpperCase() === selectedCurrency && price.billing_period === period.value),\n\t\t\t\t),\n\t\t\t)\n\t\t: allPeriodOptions;\n\n\treturn { allCurrencyOptions, allPeriodOptions, availableCurrencyOptions, availablePeriodOptions };\n}\n\n/** Filter each plan's prices to the active currency + period, drop empty plans, and sort for display. */\nexport function filterAndSortPlans(plans: PlanWithData[], selectedCurrency: string, selectedBillingPeriod: string): PlanWithData[] {\n\tconst filtered = plans\n\t\t.map((plan) => ({\n\t\t\t...plan,\n\t\t\tprices:\n\t\t\t\tplan.prices?.filter(\n\t\t\t\t\t(price) => price.currency.toUpperCase() === selectedCurrency && price.billing_period === selectedBillingPeriod,\n\t\t\t\t) || [],\n\t\t}))\n\t\t.filter((plan) => plan.prices?.length > 0);\n\n\treturn filtered.sort((a, b) => {\n\t\tconst getRecurringAmount = (plan: PlanWithData) => {\n\t\t\tconst recurringPrice = plan.prices?.find((price) => isRecurringPrice(price));\n\t\t\treturn recurringPrice ? parseFloat(recurringPrice.amount || '0') : 0;\n\t\t};\n\t\tconst getUsageFlag = (plan: PlanWithData) => (plan.prices?.some((price) => price.type === PRICE_TYPE.USAGE) ? 1 : 0);\n\n\t\tconst r1 = getRecurringAmount(a);\n\t\tconst r2 = getRecurringAmount(b);\n\t\tif (r1 !== r2) return r1 - r2;\n\t\treturn getUsageFlag(a) - getUsageFlag(b);\n\t});\n}\n\n/** Map one filtered plan (+ its credit grants) into a presentational `Plan` (PricingCardProps). */\nexport function adaptPlanToCard(plan: PlanWithData, grants: CreditGrant[]): Plan {\n\tconst prices = plan.prices as Price[];\n\tconst displayType = getPriceDisplayType(prices);\n\tconst recurringPrice = prices?.find((p) => isRecurringPrice(p));\n\tconst usageCharges =\n\t\tprices\n\t\t\t?.filter((p) => isUsageBasedPrice(p))\n\t\t\t.map((price) => ({\n\t\t\t\tamount: price.amount,\n\t\t\t\tcurrency: price.currency,\n\t\t\t\tbilling_model: price.billing_model,\n\t\t\t\t// price.tiers is Tier[] | null; UsageCharge.tiers is non-nullable and Tier structurally\n\t\t\t\t// matches its element (up_to widens to number | null), so assert the Tier[] shape here.\n\t\t\t\ttiers: price.tiers as Tier[],\n\t\t\t\tmeter_name: price.meter?.name || 'Usage',\n\t\t\t\tbilling_period: price.billing_period,\n\t\t\t\ttype: price.type,\n\t\t\t\tinvoice_cadence: price.invoice_cadence as INVOICE_CADENCE,\n\t\t\t})) || [];\n\n\tconst displayPrice = recurringPrice || usageCharges[0];\n\n\treturn {\n\t\tid: plan.id,\n\t\tname: plan.name,\n\t\tdescription: plan.description,\n\t\tprice: {\n\t\t\tamount: displayPrice?.amount,\n\t\t\tcurrency: displayPrice?.currency,\n\t\t\tbillingPeriod: displayPrice?.billing_period,\n\t\t\ttype: displayPrice?.type,\n\t\t\tdisplayType,\n\t\t},\n\t\tusageCharges,\n\t\tentitlements:\n\t\t\tplan.entitlements?.map((e) => ({\n\t\t\t\tid: e.id,\n\t\t\t\tfeature_id: e.feature?.id || '',\n\t\t\t\tname: e.feature?.name || '',\n\t\t\t\ttype: e.feature_type.toUpperCase() as 'STATIC' | 'BOOLEAN' | 'METERED',\n\t\t\t\tvalue:\n\t\t\t\t\te.feature_type === 'boolean' ? e.is_enabled : e.feature_type === 'metered' ? e.usage_limit || 'Unlimited' : e.static_value || '',\n\t\t\t\tdescription: e.feature?.description,\n\t\t\t\tusage_reset_period: e.usage_reset_period || '',\n\t\t\t})) || [],\n\t\tcreditGrants: grants.map(mapCreditGrantToCardProps),\n\t};\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","clamp","min","max","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","index","Provider","scope","context","Context","jsx","useContext2","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","setRef","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","i","useComposedRefs","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","slotPropValue","childPropValue","args","result","element","mayWarn","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","composedRefs","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","DirectionContext","useDirection","localDir","globalDir","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","count","useFocusGuards","edgeGuards","createFocusGuard","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","item","updatedArray","items","useLayoutEffect2","useReactId","useId","deterministicId","id","setId","useLayoutEffect","reactId","sides","round","floor","createCoords","v","oppositeSideMap","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","_padding$top","_padding$right","_padding$bottom","_padding$left","getPaddingObject","rectToClientRect","rect","x","y","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","state","options","_await$platform$isEle","platform","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","currentMiddleware","fn","nextX","nextY","data","reset","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","_overflowsData$filter2","currentSideAxis","acc","getSideOffsets","isAnySideFullyClipped","hide","offsets","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","clampCoord","coord","limitedCoords","limitShift","_rawOffset$mainAxis","_rawOffset$crossAxis","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","shiftData","noShift","availableHeight","availableWidth","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","SCROLLBAR_MAX","getViewportRect","isLayoutViewport","visualViewport","layoutRelativeClientCoords","doc","bodyStyles","bodyMarginInline","reservedWidth","gutter","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","getClippingElementAncestors","cache","cachedResult","el","lastKeptComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","lastPosition","ancestor","getClippingRect","clippingAncestors","firstRect","right","bottom","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","ancestorResize","io","timeoutId","root","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","entries","ratio","handleResize","autoUpdate","update","ancestorScroll","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isClient","noop","deepEqual","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","Root","useSize","setSize","entry","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","usePrevious","VISUALLY_HIDDEN_STYLES","VisuallyHidden","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","parent","targets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","e","hideOthers","activeParentNode","__assign","t","s","n","p","__rest","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useState","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","_a","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","className","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","_b","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","styles","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","gap","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","usePopperScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","openProp","defaultOpen","onOpenChange","valueProp","onValueChange","dir","autoComplete","disabled","required","form","popperScope","trigger","setTrigger","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","setOpen","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","PopperPrimitive.Root","jsxs","prev","optionsSet","SelectBubbleInput","TRIGGER_NAME","SelectTrigger","triggerProps","isDisabled","getItems","pointerTypeRef","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","currentItem","nextItem","findNextItem","handleOpen","pointerEvent","PopperPrimitive.Anchor","shouldShowPlaceholder","isTypingAhead","VALUE_NAME","SelectValue","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","Fragment","ICON_NAME","SelectIcon","iconProps","SelectPortal","PortalPrimitive","SelectContent","fragment","setFragment","frag","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","onCloseAutoFocus","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","focusSelectedItem","pointerMoveDelta","handlePointerMove","handlePointerUp","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","PopperPrimitive.Content","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","SEPARATOR_NAME","SelectSeparator","separatorProps","SelectArrow","PopperPrimitive.Arrow","BUBBLE_INPUT_NAME","prevValue","selectProto","onSearchChange","handleSearchChange","timerRef","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","startIndex","_","Trigger","Icon","Content2","Viewport","Group","Label","Item","ItemText","ItemIndicator","ScrollUpButton","ScrollDownButton","Separator","toKebabCase","string","mergeClasses","classes","defaultAttributes","forwardRef","color","strokeWidth","absoluteStrokeWidth","iconNode","createElement","attrs","createLucideIcon","iconName","Component","Check","ChevronDown","ChevronUp","Circle","Coins","Eye","Gauge","Info","Mail","MessageSquare","Phone","Sparkles","Zap","r","f","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","prefix","getPrefixedClassGroupEntries","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","currentClassPartObject","pathPart","func","classGroupEntries","prefixedClassGroup","createLruCache","maxCacheSize","cacheSize","previousCache","IMPORTANT_MODIFIER","createParseClassName","separator","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","modifiers","bracketDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitraryNumber","isInteger","isPercent","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","saturate","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","twMerge","cn","inputs","SelectPrimitive.Root","SelectPrimitive.Group","SelectPrimitive.Trigger","SelectPrimitive.Icon","SelectPrimitive.ScrollUpButton","SelectPrimitive.ScrollDownButton","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Label","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText","SelectPrimitive.Separator","RadioSelectItem","FlexPriceSelect","description","error","isRadio","noOptionsText","hideSelectedTick","contentClassName","ShadcnSelect","isString","obj","defer","res","rej","promise","resolve","reject","makeString","copy","m","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","Empty","stackIndex","setPath","pushPath","concat","getPath","getPathWithDefaults","defaultData","deepExtend","source","overwrite","regexEscape","str","_entityMap","escape","RegExpCache","pattern","regExpFromCache","regExpNew","chars","looksLikeObjectPathRegExpCache","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","c","matched","ki","deepFind","tokens","next","nextPath","j","getCleanedCode","code","consoleLogger","Logger","concreteLogger","lvl","debugOnly","moduleName","baseLogger","EventEmitter","events","listener","numListeners","wrapper","observer","numTimesAdded","ResourceStore","ns","lng","ignoreJSONStructure","resources","postProcessor","module","processors","translator","processor","PATH_KEY","createProxy","proxy","keysFromSelector","selector","opts","strict","nsList","shouldHandleAsObject","Translator","services","o","opt","resolved","isObject","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","parts","lastKey","returnDetails","namespace","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","noObject","joinArrays","handleAsObjectInI18nFormat","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","resForObjHndl","handleAsObject","resType","resTypeIsArray","newKeyToUse","deepKey","usedDefault","usedKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","specificDefaultValue","defaultForMissing","language","suffixes","suffix","skipOnVariables","nestBef","nb","na","nestAft","postProcess","postProcessorNames","found","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","codes","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","LanguageUtil","formattedCode","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","dummyRule","PluralResolver","languageUtils","cleanedCode","cacheKey","rule","lngPart","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","regexSafe","val","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","match","replaces","handleFormat","missingInterpolationHandler","todo","matchedVar","temp","safeValue","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","elem","parseFormatStr","formatStr","formatName","formatOptions","optStr","trimmedKey","createCachedFormatter","optForCache","frm","createNonCachedFormatter","Formatter","cf","formatter","format","formats","lastIndex","mem","formatted","valOptions","removePending","q","Connector","backend","store","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","err","loaded","loadedKeys","fcName","tried","wait","resolver","fallbackValue","isUpdate","clb","get","ret","transformOptions","bindMemberFunctions","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","load","finish","usedCallback","append","li","lngInLngs","setLngProps","done","setLng","fl","keyPrefix","fixedOpts","scopeNs","fixedT","explicitCallNs","selectorOpts","resultKey","fallbackLng","lastLng","loadNotPending","loadState","preResult","preloaded","newLngs","ti","rtlLngs","instance","forkResourceStore","clone","clonedData","mergedInterpolation","mergedForInterpolator","createInstance","warn","i18n","msg","alreadyWarned","warnOnce","loadedClb","initialized","loadNamespaces","loadLanguages","hasLoadedNamespace","i18nInstance","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","unescape","text","defaultOptions","getDefaults","getI18n","I18nContext","createContext","ReportNamespaces","is","objectIs","useEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","_useState","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","didWarnOld18Alpha","didWarnUncachedGetSnapshot","cachedValue","useSyncExternalStoreShim_development","shimModule","notReadyT","optsOrDefaultValue","notReadySnapshot","dummySubscribe","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","useContext","i18nOptions","useMemo","useSuspense","nsOrContext","unstableNamespaces","revisionRef","useRef","useCallback","bindI18n","bindI18nStore","wrappedCallback","snapshotRef","calculatedReady","currentLng","currentRevision","lastSnapshot","newSnapshot","loadCount","setLoadCount","ready","useSyncExternalStore","onLoaded","finalI18n","wrapperRef","wrapperLangRef","createI18nWrapper","original","descriptors","lang","i18nWrapper","effectiveT","arr","createBundledT","fallbackInstance","fallbackT","useBoundT","chain","EN_PRICING","usePricingT","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","currentAnimationName","getAnimationName","wasPresent","prevAnimationName","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","createSlottable","Slottable2","Fragment2","createTooltipContext","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","disableHoverableContentProp","delayDurationProp","providerContext","contentId","openTimerRef","wasOpenDelayedRef","open2","stateAttribute","handleClose","handleDelayedOpen","TooltipTrigger","isPointerDownRef","hasPointerMoveOpenedRef","PortalProvider","usePortalContext","TooltipContent","portalContext","forceMount","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","ariaLabel","VisuallyHiddenPrimitive.Root","TooltipArrow","point","polygon","inside","ii","jj","xi","yi","xj","yj","points","newPoints","getHullPresorted","upperHull","lowerHull","Root3","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Content","use","isPromiseLike","isLazyComponent","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","dataJSON","currencyAndSymbol","allSearchParams","isoCountryCurrency","ISOObject","isoCode","iso","checkParam","givenParam","givenParamValue","searchParam","countriesArray","ISOArray","paramArray","CREDIT_GRANT_CADENCE","CREDIT_GRANT_PERIOD","BILLING_MODEL","PRICE_TYPE","PRICE_ENTITY_TYPE","BILLING_PERIOD","ENTITLEMENT_ENTITY_TYPE","INVOICE_CADENCE","BILLING_CADENCE","BILLING_CYCLE","SUBSCRIPTION_STATUS","PAYMENT_BEHAVIOR","COLLECTION_METHOD","PAYMENT_TERMS","SUBSCRIPTION_LINE_ITEM_ENTITY_TYPE","SUBSCRIPTION_PRORATION_BEHAVIOR","SUBSCRIPTION_CANCELLATION_TYPE","SUPPLEMENTAL_ISO_CURRENCIES","getCurrencyOptions","getAllISOCodes","map","priorityCurrencies","currency","symbol","billlingPeriodOptions","PAYMENT_TERMS_NONE","u","g","h","w","Z","E","de","M","me","le","C","pe","Te","fe","F","ue","ge","he","L","ye","be","U","Se","Ae","xe","Pe","Re","Ee","ve","De","Oe","J","Ie","ke","G","Ve","_e","getCurrencySymbol","formatBillingPeriodForPrice","billingPeriod","labelClassName","htmlFor","sizes","DEFAULT_FORMAT_OPTIONS","formatAmount","amount","allowNegative","allowDecimals","thousandSeparator","decimalSeparator","isNegative","integerPart","decimalPart","removeFormatting","escapedSeparator","ENGLISH_ARABIC_REGEX","sanitizeEnglishOnly","getInputPattern","Input","inputPrefix","englishOnly","onBeforeInputProp","onPasteProp","onCompositionEndProp","inputRef","cursorPosition","setCursorPosition","enforceEnglishOnly","isFormattedVariant","applyEnglishOnly","raw","supportsSelectionRange","handleChange","currentCursorPosition","sanitizedBeforeCursor","oldFormatCharCount","cursorAdjustment","getValue","displayValue","PlanType","util","assertIs","_arg","assertNever","_x","validKeys","filtered","checker","joinValues","objectUtil","second","ZodParsedType","getParsedType","ZodIssueCode","ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","formErrors","firstEl","errorMap","_ctx","message","overrideErrorMap","defaultErrorMap","getErrorMap","makeIssue","params","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","addIssueToContext","ctx","overrideMap","ParseStatus","status","results","arrayValue","INVALID","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","errorUtil","ParseInputLazyPath","handleResult","processCreateParams","invalid_type_error","required_error","iss","ZodType","input","maybeAsyncResult","check","getIssueProperties","setError","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","def","ZodOptional","ZodNullable","ZodArray","ZodPromise","ZodUnion","incoming","ZodIntersection","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","secondsRegexSource","secondsQuantifier","timeRegex","datetimeRegex","regex","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","tooBig","tooSmall","validation","minLength","maxLength","ch","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","kind","inclusive","ZodBigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","schema","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","defaultError","augmentation","merging","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","mergeValues","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","itemIndex","schemas","ZodMap","keyType","valueType","finalMap","ZodSet","finalizeSet","parsedSet","minSize","maxSize","ZodLazy","ZodLiteral","values","ZodEnum","expectedValues","enumValues","newDef","ZodNativeEnum","nativeEnumValues","promisified","effect","checkCtx","arg","processed","executeRefinement","inner","preprocess","newCtx","ZodNaN","inResult","freeze","stringType","unknownType","arrayType","objectType","enumType","nativeEnumType","preprocessType","coerce","createNormalizer","normalizeMany","onIssue","out","normalizeOne","repaired","nullishToString","z.preprocess","z.coerce","entitlementSchema","z.object","z.enum","z.unknown","priceSchema","z.nativeEnum","creditGrantSchema","PlanSchema","z.string","z.array","CardPlanSchema","planNormalizer","cardNormalizer","normalizePlans","onValidationError","report","normalizeCardProps","formatEntitlementValue","usage_reset_period","feature_id","getFeatureHref","featureHref","feature","formatUsageCharge","charge","sym","amt","startAmt","formatUsageChargeCompact","isBoilerplateCreditGrantName","getEntitlementVisual","formatEntitlementPreviewLine","ent","period","UsageChargeTooltip","formatRange","tier","allTiers","VISIBLE_LIMIT","PricingCard","rawProps","price","usageCharges","entitlements","creditGrants","showUsageCharges","isPreview","useModernChrome","onSelectPlan","showAllCharges","setShowAllCharges","showAllEntitlements","setShowAllEntitlements","isSetupPreview","visualModern","priceDisplayConfig","displayAmount","hasUsageCharges","chargeLimit","entLimit","visibleCharges","hiddenChargesCount","visibleEntitlements","hiddenEntitlementsCount","entitlement","iconClass","PricingTable","plans","onBillingPeriodChange","billingPeriodOptions","billingPeriodPlaceholder","onCurrencyChange","currencyOptions","currencyPlaceholder","hideFilters","safePlans","plan","parseAmount","parsed","isRecurringPrice","isUsageBasedPrice","getPriceDisplayType","prices","recurringPrices","usagePrices","hasNonZeroRecurring","allRecurringZero","mapCreditGrantToCardProps","grant","cadence","findBestPriceCombination","availableCurrencyOptions","availablePeriodOptions","maxPlans","bestCurrency","bestPeriod","testFiltered","deriveCurrencyPeriodOptions","selectedCurrency","selectedBillingPeriod","currencies","allCurrencyOptions","allPeriodOptions","filterAndSortPlans","getRecurringAmount","recurringPrice","getUsageFlag","r1","r2","adaptPlanToCard","grants","displayType","displayPrice"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,76,77,78,79,80,81,82,83,84,85,88,89,90,91,93,94,96,103,104,110,111,112,113,114,115,116]}