@fiction/sdk 1.0.61 → 1.0.62

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.
Files changed (21) hide show
  1. package/dist/FModal.vue_vue_type_script_setup_true_lang-CUVfXWtt.js +172 -0
  2. package/dist/FModal.vue_vue_type_script_setup_true_lang-CUVfXWtt.js.map +1 -0
  3. package/dist/{SelfProvider.vue_vue_type_script_setup_true_lang-26F7cqUz.js → SelfProvider.vue_vue_type_script_setup_true_lang-BQMizxIX.js} +4 -4
  4. package/dist/{SelfProvider.vue_vue_type_script_setup_true_lang-26F7cqUz.js.map → SelfProvider.vue_vue_type_script_setup_true_lang-BQMizxIX.js.map} +1 -1
  5. package/dist/{SelfWidgetInline-DM14q3uW.js → SelfWidgetInline-DGJVlVk0.js} +2 -2
  6. package/dist/{SelfWidgetInline-DM14q3uW.js.map → SelfWidgetInline-DGJVlVk0.js.map} +1 -1
  7. package/dist/{SelfWidgetModal-BpkLEYY0.js → SelfWidgetModal-BXmmc3Xf.js} +3 -3
  8. package/dist/{SelfWidgetModal-BpkLEYY0.js.map → SelfWidgetModal-BXmmc3Xf.js.map} +1 -1
  9. package/dist/{SelfWidgetPopup-DjwPpHLy.js → SelfWidgetPopup-BP0M4ucX.js} +7 -7
  10. package/dist/{SelfWidgetPopup-DjwPpHLy.js.map → SelfWidgetPopup-BP0M4ucX.js.map} +1 -1
  11. package/dist/{SelfWrap.vue_vue_type_script_setup_true_lang-DLAFn8rY.js → SelfWrap.vue_vue_type_script_setup_true_lang-Y1yR8Chp.js} +15 -16
  12. package/dist/SelfWrap.vue_vue_type_script_setup_true_lang-Y1yR8Chp.js.map +1 -0
  13. package/dist/sdk.css +1 -1
  14. package/dist/self/ui/SelfSidebarClose.vue.d.ts +6 -0
  15. package/dist/self.js +4 -4
  16. package/dist/widget.js +4 -4
  17. package/dist/widget.js.map +1 -1
  18. package/package.json +3 -3
  19. package/dist/FModal.vue_vue_type_script_setup_true_lang-Ce7y9PSl.js +0 -146
  20. package/dist/FModal.vue_vue_type_script_setup_true_lang-Ce7y9PSl.js.map +0 -1
  21. package/dist/SelfWrap.vue_vue_type_script_setup_true_lang-DLAFn8rY.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelfWrap.vue_vue_type_script_setup_true_lang-Y1yR8Chp.js","sources":["../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/core.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/util.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/errors.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/parse.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/regexes.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/checks.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/doc.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/versions.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/schemas.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/registries.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/api.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/iso.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/errors.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/parse.js","../../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/schemas.js","../self/accounts.ts","../../../src/ui/common/FSpinner.vue","../../../src/utils/color.ts","../self/schema.ts","../self/constants.ts","../self/ClientAudio.ts","../self/utils.ts","../self/SelfController.ts","../../../src/ui/effects/EffectTransitionList.vue","../self/ui/ElSelfButton.vue","../self/ui/SelfInputEmail.vue","../self/ui/SelfInputOneTimeCode.vue","../self/ui/ElAuthGate.vue","../self/ui/ElModeHeader.vue","../../../node_modules/.pnpm/tailwind-merge@3.3.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../../src/ui/common/themes.ts","../../../src/ui/common/FButton.vue","../self/ui/ElSelfAbout.vue","../self/ui/ElSelfChat.vue","../self/ui/ElSelfHeader.vue","../self/ui/SelfSidebarClose.vue","../self/ui/ElSidebar.vue","../self/ui/ElSelfModeSidebar.vue","../self/ui/ElSelfSidebar.vue","../../../src/ui/common/FAudioVisualizer.vue","../self/ui/ElSelfAudioVisualizer.vue","../self/ui/ElSelfVoice.vue","../self/ui/SelfAgent.vue","../self/ui/SelfWrap.vue"],"sourcesContent":["/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false,\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for (const k in _.prototype) {\n if (!(k in inst))\n Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error();\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\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}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\"Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = {\n ...schema._zod.def,\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: schema._zod.def.checks,\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\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 }\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(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?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/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[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/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[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// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?: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])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nexport const cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(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\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\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 dateSource = `(?:(?:\\\\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])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 1,\n patch: 12,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n // const handleChecksResult = (\n // checkResult: ParsePayload,\n // originalResult: ParsePayload,\n // ctx: ParseContextInternal\n // ): util.MaybeAsync<ParsePayload> => {\n // // if the checks mutated the value && there are no issues, re-parse the result\n // if (checkResult.value !== originalResult.value && !checkResult.issues.length)\n // return inst._zod.parse(checkResult, ctx);\n // return originalResult;\n // };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: regexes.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(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 {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\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 {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\nexport const globalRegistry = /*@__PURE__*/ registry();\n","import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }));\n };\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`,\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","import { z } from 'zod'\n\n// Social media accounts structure - shared across app/SDK/widget\nexport const SocialAccountSchema = z.object({\n platform: z.enum(['linkedin', 'x', 'facebook', 'tiktok', 'youtube', 'github', 'instagram', 'threads', 'email', 'phone', 'website']),\n handle: z.string(),\n})\n\n// Schema with preprocessing to filter out incomplete accounts\nexport const SocialAccountsSchema = z.preprocess(\n (val) => {\n if (!Array.isArray(val))\n return val\n // Filter out items missing platform or handle\n return val.filter(\n item => item && typeof item === 'object' && item.platform && item.handle,\n )\n },\n z.array(SocialAccountSchema),\n)\n\nexport type SocialAccount = z.infer<typeof SocialAccountSchema>\nexport type SocialAccounts = z.infer<typeof SocialAccountsSchema>\n\n// Platform metadata for URL generation and display\nexport const SOCIAL_PLATFORMS = {\n linkedin: {\n label: 'LinkedIn',\n icon: 'i-simple-icons-linkedin',\n placeholder: 'john-smith',\n getUrl: (handle: string) => `https://linkedin.com/in/${handle}`,\n },\n x: {\n label: 'X',\n icon: 'i-simple-icons-x',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://x.com/${handle}`,\n },\n facebook: {\n label: 'Facebook',\n icon: 'i-simple-icons-facebook',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://facebook.com/${handle}`,\n },\n tiktok: {\n label: 'TikTok',\n icon: 'i-simple-icons-tiktok',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://tiktok.com/@${handle}`,\n },\n youtube: {\n label: 'YouTube',\n icon: 'i-tabler-brand-youtube',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://youtube.com/@${handle}`,\n },\n github: {\n label: 'GitHub',\n icon: 'i-tabler-brand-github',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://github.com/${handle}`,\n },\n instagram: {\n label: 'Instagram',\n icon: 'i-simple-icons-instagram',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://instagram.com/${handle}`,\n },\n threads: {\n label: 'Threads',\n icon: 'i-simple-icons-threads',\n placeholder: 'johnsmith',\n getUrl: (handle: string) => `https://threads.net/@${handle}`,\n },\n email: {\n label: 'Email',\n icon: 'i-tabler-mail',\n placeholder: 'hello@example.com',\n getUrl: (handle: string) => `mailto:${handle}`,\n },\n phone: {\n label: 'Phone',\n icon: 'i-tabler-phone',\n placeholder: '+1-555-123-4567',\n getUrl: (handle: string) => `tel:${handle.replace(/[^0-9+]/g, '')}`,\n },\n website: {\n label: 'Website',\n icon: 'i-tabler-world',\n placeholder: 'https://example.com',\n getUrl: (handle: string) => handle, // handle IS the URL\n },\n} as const\n\nexport type SocialPlatform = keyof typeof SOCIAL_PLATFORMS\n","<script lang=\"ts\" setup>\ndefineProps({\n width: { type: String, default: '' },\n colorMode: { type: String, default: 'primary' },\n})\n</script>\n\n<template>\n <div class=\"spinner max-w-sm\">\n <svg\n class=\"ring-circular h-full w-full origin-center\"\n viewBox=\"25 25 50 50\"\n >\n <circle\n :class=\"colorMode\"\n class=\"ring-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"5\"\n stroke-miterlimit=\"30\"\n />\n </svg>\n </div>\n</template>\n\n<style lang=\"less\">\n.ring-circular {\n animation: rotate 1s linear infinite;\n}\n\n.ring-path {\n will-change: stroke-dasharray;\n will-change: stroke-dashoffset;\n\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n\n stroke-linecap: round;\n animation: dash 2s ease-in-out infinite;\n // &.placeholder {\n // stroke: var(--color-placeholder, var(--color-bg-contrast));\n // }\n // &.primary {\n // stroke: var(--color-primary);\n // }\n // &.secondary {\n // stroke: var(--color-secondary);\n // }\n // &.text {\n // stroke: var(--color-text);\n // }\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n}\n</style>\n","/**\n * Tailwind v4 OKLCH color scales for theming\n * Values copied from Tailwind CSS v4 default theme\n */\n\nexport type ColorScale = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950\n\nexport type ColorName = 'green' | 'blue' | 'rose' | 'cyan' | 'purple' | 'amber' | 'indigo' | 'pink' | 'teal' | 'sky'\n\nexport type ColorScheme = Record<ColorScale, string>\n\nconst colorSchemes: Record<ColorName, ColorScheme> = {\n green: {\n 50: 'oklch(98.2% 0.018 155.826)',\n 100: 'oklch(96.2% 0.044 156.743)',\n 200: 'oklch(92.5% 0.084 155.995)',\n 300: 'oklch(87.1% 0.15 154.449)',\n 400: 'oklch(79.2% 0.209 151.711)',\n 500: 'oklch(72.3% 0.219 149.579)',\n 600: 'oklch(62.7% 0.194 149.214)',\n 700: 'oklch(52.7% 0.154 150.069)',\n 800: 'oklch(44.8% 0.119 151.328)',\n 900: 'oklch(39.3% 0.095 152.535)',\n 950: 'oklch(26.6% 0.065 152.934)',\n },\n blue: {\n 50: 'oklch(97% 0.014 254.604)',\n 100: 'oklch(93.2% 0.032 255.585)',\n 200: 'oklch(88.2% 0.059 254.128)',\n 300: 'oklch(80.9% 0.105 251.813)',\n 400: 'oklch(70.7% 0.165 254.624)',\n 500: 'oklch(62.3% 0.214 259.815)',\n 600: 'oklch(54.6% 0.245 262.881)',\n 700: 'oklch(48.8% 0.243 264.376)',\n 800: 'oklch(42.4% 0.199 265.638)',\n 900: 'oklch(37.9% 0.146 265.522)',\n 950: 'oklch(28.2% 0.091 267.935)',\n },\n rose: {\n 50: 'oklch(96.9% 0.015 12.422)',\n 100: 'oklch(94.1% 0.03 12.58)',\n 200: 'oklch(89.2% 0.058 10.001)',\n 300: 'oklch(81% 0.117 11.638)',\n 400: 'oklch(71.2% 0.194 13.428)',\n 500: 'oklch(64.5% 0.246 16.439)',\n 600: 'oklch(58.6% 0.253 17.585)',\n 700: 'oklch(51.4% 0.222 16.935)',\n 800: 'oklch(45.5% 0.188 13.697)',\n 900: 'oklch(41% 0.159 10.272)',\n 950: 'oklch(27.1% 0.105 12.094)',\n },\n cyan: {\n 50: 'oklch(98.4% 0.019 200.873)',\n 100: 'oklch(95.6% 0.045 203.388)',\n 200: 'oklch(91.7% 0.08 205.041)',\n 300: 'oklch(86.5% 0.127 207.078)',\n 400: 'oklch(78.9% 0.154 211.53)',\n 500: 'oklch(71.5% 0.143 215.221)',\n 600: 'oklch(60.9% 0.126 221.723)',\n 700: 'oklch(52% 0.105 223.128)',\n 800: 'oklch(45% 0.085 224.283)',\n 900: 'oklch(39.8% 0.07 227.392)',\n 950: 'oklch(30.2% 0.056 229.695)',\n },\n purple: {\n 50: 'oklch(97.7% 0.014 308.299)',\n 100: 'oklch(94.6% 0.033 307.174)',\n 200: 'oklch(90.2% 0.063 306.703)',\n 300: 'oklch(82.7% 0.119 306.383)',\n 400: 'oklch(71.4% 0.203 305.504)',\n 500: 'oklch(62.7% 0.265 303.9)',\n 600: 'oklch(55.8% 0.288 302.321)',\n 700: 'oklch(49.6% 0.265 301.924)',\n 800: 'oklch(43.8% 0.218 303.724)',\n 900: 'oklch(38.1% 0.176 304.987)',\n 950: 'oklch(29.1% 0.149 302.717)',\n },\n amber: {\n 50: 'oklch(98.7% 0.022 95.277)',\n 100: 'oklch(96.2% 0.059 95.617)',\n 200: 'oklch(92.4% 0.12 95.746)',\n 300: 'oklch(87.9% 0.169 91.605)',\n 400: 'oklch(82.8% 0.189 84.429)',\n 500: 'oklch(76.9% 0.188 70.08)',\n 600: 'oklch(66.6% 0.179 58.318)',\n 700: 'oklch(55.5% 0.163 48.998)',\n 800: 'oklch(47.3% 0.137 46.201)',\n 900: 'oklch(41.4% 0.112 45.904)',\n 950: 'oklch(27.9% 0.077 45.635)',\n },\n indigo: {\n 50: 'oklch(96.2% 0.018 272.314)',\n 100: 'oklch(93% 0.034 272.788)',\n 200: 'oklch(87% 0.065 274.039)',\n 300: 'oklch(78.5% 0.115 274.713)',\n 400: 'oklch(67.3% 0.182 276.935)',\n 500: 'oklch(58.5% 0.233 277.117)',\n 600: 'oklch(51.1% 0.262 276.966)',\n 700: 'oklch(45.7% 0.24 277.023)',\n 800: 'oklch(39.8% 0.195 277.366)',\n 900: 'oklch(35.9% 0.144 278.697)',\n 950: 'oklch(25.7% 0.09 281.288)',\n },\n pink: {\n 50: 'oklch(97.1% 0.014 343.198)',\n 100: 'oklch(94.8% 0.028 342.258)',\n 200: 'oklch(89.9% 0.061 343.231)',\n 300: 'oklch(82.3% 0.12 346.018)',\n 400: 'oklch(71.8% 0.202 349.761)',\n 500: 'oklch(65.6% 0.241 354.308)',\n 600: 'oklch(59.2% 0.249 0.584)',\n 700: 'oklch(52.5% 0.223 3.958)',\n 800: 'oklch(45.9% 0.187 3.815)',\n 900: 'oklch(40.8% 0.153 2.432)',\n 950: 'oklch(28.4% 0.109 3.907)',\n },\n teal: {\n 50: 'oklch(98.4% 0.014 180.72)',\n 100: 'oklch(95.3% 0.051 180.801)',\n 200: 'oklch(91% 0.096 180.426)',\n 300: 'oklch(85.5% 0.138 181.071)',\n 400: 'oklch(77.7% 0.152 181.912)',\n 500: 'oklch(70.4% 0.14 182.503)',\n 600: 'oklch(60% 0.118 184.704)',\n 700: 'oklch(51.1% 0.096 186.391)',\n 800: 'oklch(43.7% 0.078 188.216)',\n 900: 'oklch(38.6% 0.063 188.416)',\n 950: 'oklch(27.7% 0.046 192.524)',\n },\n sky: {\n 50: 'oklch(97.7% 0.013 236.62)',\n 100: 'oklch(95.1% 0.026 236.824)',\n 200: 'oklch(90.1% 0.058 230.902)',\n 300: 'oklch(82.8% 0.111 230.318)',\n 400: 'oklch(74.6% 0.16 232.661)',\n 500: 'oklch(68.5% 0.169 237.323)',\n 600: 'oklch(58.8% 0.158 241.966)',\n 700: 'oklch(50% 0.134 242.749)',\n 800: 'oklch(44.3% 0.11 240.79)',\n 900: 'oklch(39.1% 0.09 240.876)',\n 950: 'oklch(29.3% 0.066 243.157)',\n },\n}\n\n/**\n * Get OKLCH color scale for a given color name\n * Returns full scale (50-950) for use with CSS custom properties\n */\nexport function getColorSchemeOklch(colorName: ColorName): ColorScheme {\n return colorSchemes[colorName] || colorSchemes.blue\n}\n","// Re-export Self type from @fiction/types for external consumers\nexport type { Self } from '@fiction/types'\n\n// Chat message interface from web project\nexport interface ChatMessage {\n id: string\n text: string\n sender: 'user' | 'agent' | 'system'\n timestamp: Date\n}\n\n// Voice connection states from web project\nexport interface VoiceConnectionState {\n isActive: boolean\n isConnected: boolean\n isSpeaking: boolean\n isListening: boolean\n isProcessing: boolean // Agent is processing user input (waiting for response)\n transcript?: string\n connectionStatus: 'connecting' | 'connected' | 'disconnected' | 'error'\n error?: string\n}\n\nexport interface TextConnectionState {\n isActive: boolean\n isConnected: boolean\n isThinking: boolean\n connectionStatus: 'connecting' | 'connected' | 'disconnected' | 'error'\n error?: string\n}\n\n// Audio level interface for visualizer\nexport interface AudioLevel {\n inputLevel: number\n outputLevel: number\n}\n\n// Agent mode configuration\nexport const AGENT_MODES = [\n {\n mode: 'self' as const,\n label: 'Overview',\n icon: 'i-tabler-north-star',\n },\n {\n mode: 'talk' as const,\n label: 'Talk',\n icon: 'i-tabler-phone',\n },\n {\n mode: 'chat' as const,\n label: 'Chat',\n icon: 'i-tabler-message-circle',\n },\n {\n mode: 'info' as const,\n label: 'About',\n icon: 'i-tabler-user-circle',\n },\n] as const\n\n// Agent modes from web project\nexport type AgentMode = (typeof AGENT_MODES)[number]['mode']\n","// UI constants and configuration from web project\nexport const AUDIO_FFT_SIZE = 256\nexport const AUDIO_SMOOTHING = 0.8\nexport const AUDIO_LEVEL_UPDATE_INTERVAL = 50 // 20fps\n\n// Voice visualizer constants\nexport const VISUALIZER_CONFIG = {\n bars: 64,\n barWidth: 3,\n barSpacing: 1,\n minHeight: 4,\n maxHeight: 80,\n\n // Enhanced physics constants\n STIFFNESS: 0.18,\n DAMPING: 0.22,\n PEAK_HOLD_TIME: 300, // ms to hold peaks\n PEAK_DECAY_STIFFNESS: 0.12,\n PEAK_DECAY_DAMPING: 0.15,\n}\n\n// Voice-optimized frequency bands for visualizer\nexport const VOICE_FREQUENCIES = [\n // Low fundamentals\n 85,\n 100,\n 120,\n 140,\n 155,\n 170,\n 185,\n 200,\n 215,\n 230,\n 245,\n 260,\n 275,\n 290,\n 315,\n 340,\n // Mid fundamentals (voice clarity)\n 355,\n 375,\n 400,\n 425,\n 450,\n 475,\n 500,\n 530,\n 560,\n 590,\n 630,\n 670,\n 700,\n 730,\n 780,\n 820,\n // Harmonics (speech intelligibility)\n 880,\n 940,\n 1000,\n 1100,\n 1200,\n 1300,\n 1400,\n 1500,\n 1600,\n 1700,\n 1800,\n 1900,\n 2000,\n 2200,\n // High harmonics (consonant clarity)\n 2300,\n 2500,\n 2600,\n 2800,\n 3000,\n 3200,\n 3500,\n 3800,\n 4000,\n 4300,\n 4500,\n 4800,\n 5000,\n 5300,\n // Presence/air (voice definition)\n 5500,\n 5800,\n 6000,\n 6500,\n 7000,\n 7500,\n 8000,\n 8500,\n]\n","import type { AudioLevel } from './schema'\nimport { ref } from 'vue'\nimport { SettingsObject } from '@/utils/base'\nimport { AUDIO_FFT_SIZE, AUDIO_LEVEL_UPDATE_INTERVAL, AUDIO_SMOOTHING } from './constants'\n\nexport type AudioPermissionOptions = {\n noiseSuppression?: boolean\n echoCancellation?: boolean\n autoGainControl?: boolean\n voiceIsolation?: boolean\n}\n\ntype ClientAudioSettings = {\n [key: string]: unknown\n}\n\nexport class ClientAudio extends SettingsObject<ClientAudioSettings> {\n private audioContext?: AudioContext\n private analyser?: AnalyserNode\n private microphone?: MediaStreamAudioSourceNode\n private audioLevelInterval?: number\n private stream?: MediaStream\n private visibilityChangeHandler?: () => void\n private vadTimeout?: number\n private lastSpeechTime = 0\n\n // VAD configuration - tuned for voice isolation (ignores background music)\n private readonly VAD_SILENCE_THRESHOLD = 0.03 // 3% audio level = silence (filters out quiet background noise)\n private readonly VAD_SILENCE_DURATION = 1200 // 1.2 seconds of silence before considering \"stopped speaking\"\n\n // Public reactive state\n audioLevels = ref<AudioLevel>({ inputLevel: 0, outputLevel: 0 })\n\n constructor(args: ClientAudioSettings) {\n super('ClientAudio', args)\n // Setup iOS visibility change handler for proper audio cleanup\n this.setupVisibilityHandler()\n }\n\n /**\n * Setup iOS-specific visibility change handler\n */\n private setupVisibilityHandler(): void {\n if (typeof document === 'undefined')\n return\n\n this.visibilityChangeHandler = () => {\n if (document.hidden) {\n this.logger.info('App backgrounded, suspending audio context')\n this.handleAppBackground()\n } else {\n this.logger.info('App foregrounded, resuming audio context')\n this.handleAppForeground()\n }\n }\n\n document.addEventListener('visibilitychange', this.visibilityChangeHandler, { passive: true })\n\n // Also listen for page beforeunload to cleanup properly\n window.addEventListener('beforeunload', () => {\n this.cleanup().catch(this.logger.error.bind(this, 'Error during beforeunload cleanup'))\n }, { passive: true })\n }\n\n /**\n * Handle app going to background (Privacy & Security Best Practice)\n * CRITICAL: Must stop microphone tracks to remove indicator on mobile/browser\n */\n private handleAppBackground(): void {\n this.logger.info('App backgrounded - stopping microphone for privacy')\n // Stop microphone entirely to remove indicator (not just suspend)\n // This is the correct privacy/security behavior - don't keep mic active when tab hidden\n this.stopMicrophone().catch(this.logger.error.bind(this, 'Error stopping microphone on background'))\n }\n\n /**\n * Handle app returning to foreground\n * SECURITY: Do NOT auto-restart microphone - requires user gesture (browser security model)\n */\n private handleAppForeground(): void {\n this.logger.info('App foregrounded - microphone remains off until user re-enables (security best practice)')\n // DO NOT auto-restart microphone here\n // User must explicitly click to re-enable microphone (browser security requirement)\n // Auto-restarting microphone without user gesture violates browser security policies\n }\n\n /**\n * Request microphone permission with voice isolation and setup audio analysis\n * Returns the MediaStream for ElevenLabs to reuse (prevents dual stream conflicts)\n */\n async requestMicrophonePermission(options: AudioPermissionOptions = {}): Promise<boolean> {\n try {\n const {\n noiseSuppression = true,\n echoCancellation = true,\n autoGainControl = true,\n voiceIsolation = true,\n } = options\n\n // Advanced constraints for maximum voice isolation\n const constraints: MediaStreamConstraints = {\n audio: {\n noiseSuppression: { ideal: noiseSuppression, exact: noiseSuppression },\n echoCancellation: { ideal: echoCancellation, exact: echoCancellation },\n autoGainControl: { ideal: autoGainControl, exact: autoGainControl },\n // Chrome-specific voice isolation (degrades gracefully in other browsers)\n voiceIsolation: { ideal: voiceIsolation, exact: voiceIsolation },\n advanced: [\n // Prioritize speech frequencies (300-3400 Hz) - Chrome-specific goog* properties\n // @ts-expect-error - Chrome-specific constraint\n { googAudioMirroring: false },\n // @ts-expect-error - Chrome-specific constraint\n { googAutoGainControl: autoGainControl },\n // @ts-expect-error - Chrome-specific constraint\n { googAutoGainControl2: autoGainControl },\n // @ts-expect-error - Chrome-specific constraint\n { googNoiseSuppression: noiseSuppression },\n // @ts-expect-error - Chrome-specific constraint\n { googNoiseSuppression2: noiseSuppression },\n // @ts-expect-error - Chrome-specific constraint\n { googEchoCancellation: echoCancellation },\n // @ts-expect-error - Chrome-specific constraint\n { googEchoCancellation2: echoCancellation },\n // @ts-expect-error - Chrome-specific constraint\n { googHighpassFilter: true }, // Remove low-frequency noise (bass from music)\n // @ts-expect-error - Chrome-specific constraint\n { googTypingNoiseDetection: true },\n ],\n },\n }\n\n this.stream = await navigator.mediaDevices.getUserMedia(constraints)\n\n // Log which constraints were actually applied\n const audioTrack = this.stream.getAudioTracks()[0]\n const settings = audioTrack.getSettings()\n this.logger.info('Microphone permission granted with settings:', {\n noiseSuppression: settings.noiseSuppression,\n echoCancellation: settings.echoCancellation,\n autoGainControl: settings.autoGainControl,\n // @ts-expect-error - voiceIsolation is not in standard types yet\n voiceIsolation: settings.voiceIsolation,\n sampleRate: settings.sampleRate,\n })\n\n await this.setupAudioAnalysis()\n return true\n } catch (error) {\n this.logger.error('Microphone permission denied:', error)\n return false\n }\n }\n\n /**\n * Get the microphone stream for ElevenLabs to reuse\n * CRITICAL: This prevents dual stream conflicts that break the analyser\n */\n getMicrophoneStream(): MediaStream | undefined {\n return this.stream\n }\n\n /**\n * Setup audio analysis for level monitoring\n */\n private async setupAudioAnalysis(): Promise<void> {\n if (!this.stream) {\n throw new Error('No audio stream available')\n }\n\n try {\n this.audioContext = new AudioContext()\n this.analyser = this.audioContext.createAnalyser()\n this.microphone = this.audioContext.createMediaStreamSource(this.stream)\n\n this.analyser.fftSize = AUDIO_FFT_SIZE\n this.analyser.smoothingTimeConstant = AUDIO_SMOOTHING\n\n this.microphone.connect(this.analyser)\n this.logger.info('Audio analysis setup complete', {\n fftSize: this.analyser.fftSize,\n frequencyBinCount: this.analyser.frequencyBinCount,\n sampleRate: this.audioContext.sampleRate,\n })\n } catch (error) {\n this.logger.error('Failed to setup audio analysis:', error)\n throw error\n }\n }\n\n /**\n * Detect voice activity (returns true if user is speaking)\n * Used for client-side VAD to prevent background noise issues\n */\n private detectVoiceActivity(inputLevel: number): boolean {\n const isSpeaking = inputLevel > this.VAD_SILENCE_THRESHOLD\n\n if (isSpeaking) {\n this.lastSpeechTime = Date.now()\n }\n\n return isSpeaking\n }\n\n /**\n * Check if user has stopped speaking (silence detected)\n * Returns true if VAD_SILENCE_DURATION has passed since last speech\n */\n hasUserStoppedSpeaking(): boolean {\n if (this.lastSpeechTime === 0)\n return false\n\n const silenceDuration = Date.now() - this.lastSpeechTime\n return silenceDuration > this.VAD_SILENCE_DURATION\n }\n\n /**\n * Start monitoring audio levels with VAD detection\n */\n startAudioLevelMonitoring(isConnected?: () => boolean, onSilenceDetected?: () => void): void {\n if (!this.analyser) {\n this.logger.info('Audio level monitoring not started - missing analyser')\n return\n }\n\n this.logger.info('Starting audio level monitoring with VAD at timestamp:', Date.now())\n const inputDataArray = new Uint8Array(this.analyser.frequencyBinCount)\n\n const updateLevels = async (): Promise<void> => {\n if (!this.analyser) {\n this.logger.info('Stopping audio level monitoring - missing analyser')\n return\n }\n\n try {\n // Get microphone input levels\n this.analyser.getByteFrequencyData(inputDataArray)\n const inputAverage = inputDataArray.reduce((sum, value) => sum + value, 0) / inputDataArray.length\n const inputLevel = Math.min(inputAverage / 128, 1) // Normalize to 0-1\n\n // Detect voice activity\n const isSpeaking = this.detectVoiceActivity(inputLevel)\n\n // Check for silence and notify callback\n if (!isSpeaking && this.hasUserStoppedSpeaking() && onSilenceDetected) {\n this.logger.info('VAD: User stopped speaking (silence detected)')\n onSilenceDetected()\n this.lastSpeechTime = 0 // Reset to prevent repeated callbacks\n }\n\n // Simple output level estimation (SelfController will handle real ElevenLabs data)\n const outputLevel = isConnected?.() ? 0.3 : 0\n\n this.audioLevels.value = { inputLevel, outputLevel }\n } catch (error) {\n this.logger.error('Error in audio level monitoring:', error)\n this.stopAudioLevelMonitoring()\n }\n }\n\n // Use async interval for ElevenLabs API calls\n const intervalWrapper = () => {\n updateLevels().catch((error) => {\n this.logger.error('Async error in audio level monitoring:', error)\n })\n }\n\n this.audioLevelInterval = window.setInterval(intervalWrapper, AUDIO_LEVEL_UPDATE_INTERVAL)\n }\n\n /**\n * Stop monitoring audio levels\n */\n stopAudioLevelMonitoring(): void {\n if (this.audioLevelInterval) {\n this.logger.info('Stopping audio level monitoring interval')\n clearInterval(this.audioLevelInterval)\n this.audioLevelInterval = undefined\n } else {\n this.logger.info('No audio level monitoring interval to stop')\n }\n\n // Clear VAD state\n this.lastSpeechTime = 0\n if (this.vadTimeout) {\n clearTimeout(this.vadTimeout)\n this.vadTimeout = undefined\n }\n }\n\n /**\n * Reset audio levels to zero\n */\n resetAudioLevels(): void {\n this.audioLevels.value = { inputLevel: 0, outputLevel: 0 }\n this.lastSpeechTime = 0\n }\n\n /**\n * Check if audio context is available\n */\n isAudioContextAvailable(): boolean {\n return !!this.audioContext\n }\n\n /**\n * Get current audio context state\n */\n getAudioContextState(): AudioContextState | undefined {\n return this.audioContext?.state\n }\n\n /**\n * Get shared analyser for AudioVisualizer (prevents duplicate audio contexts)\n */\n getSharedAnalyser(): AnalyserNode | undefined {\n return this.analyser\n }\n\n /**\n * Stop microphone and cleanup audio stream\n */\n async stopMicrophone(): Promise<void> {\n if (this.stream) {\n this.logger.info('Stopping microphone stream')\n this.stream.getTracks().forEach((track) => {\n track.stop()\n track.enabled = false\n })\n this.stream = undefined\n }\n\n this.stopAudioLevelMonitoring()\n this.resetAudioLevels()\n\n // Close audio context if open\n if (this.audioContext && this.audioContext.state !== 'closed') {\n await this.audioContext.close()\n this.audioContext = undefined\n }\n\n this.analyser = undefined\n this.microphone = undefined\n\n this.logger.info('Microphone stopped')\n }\n\n /**\n * Cleanup all audio resources (call on destroy)\n */\n async cleanup(): Promise<void> {\n // Stop microphone first\n await this.stopMicrophone()\n\n // Remove visibility change handler\n if (this.visibilityChangeHandler && typeof document !== 'undefined') {\n document.removeEventListener('visibilitychange', this.visibilityChangeHandler)\n this.visibilityChangeHandler = undefined\n }\n\n this.logger.info('Audio resources cleaned up')\n }\n}\n","import type { Self } from '@fiction/types'\n\n// Image utility functions - simplified for Self usage\nexport function getImageSrc(image: string | { src?: string } | undefined): string {\n if (!image)\n return ''\n if (typeof image === 'string')\n return image\n return image.src || ''\n}\n\nexport function getSelfAvatarUrl(self: Self): string {\n return getImageSrc(self.cover) || getImageSrc(self.avatar) || '/img/placeholder-avatar.png'\n}\n\nexport function getFallbackAvatarDataUrl(): string {\n return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iNDAiIGZpbGw9IiM2MzY2RjEiLz4KPHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeD0iMjAiIHk9IjIwIj4KPHA0aCBkPSJNMTIgMTJjMi4yMSAwIDQtMS43OSA0LTRTNC4yMSA0IDIgNHMxLjc5IDQgNCA0em0wIDJjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6IiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4KPC9zdmc+'\n}\n\nexport function handleImageError(event: Event): void {\n const img = event.target as HTMLImageElement\n if (!img.dataset.fallbackUsed) {\n img.dataset.fallbackUsed = 'true'\n img.src = getFallbackAvatarDataUrl()\n }\n}\n\n// Voice message parsing from web project\nexport function parseVoiceMessage(args: { message: string, source: string }): { text: string, sender: 'user' | 'agent' } | null {\n const { message, source } = args\n if (!message)\n return null\n\n // Map source to sender\n const senderMap: Record<string, 'user' | 'agent'> = {\n user: 'user',\n ai: 'agent',\n agent: 'agent',\n }\n\n const sender = senderMap[source] || 'agent' // Default to agent if source is unknown\n\n if (typeof message === 'string') {\n return message.trim() ? { text: message.trim(), sender } : null\n }\n\n if (typeof message !== 'object')\n return null\n\n const parsers: Array<(msg: { message: string, source: string }) => { text: string, sender: 'user' | 'agent' } | null> = [\n (msg) => {\n if (!('source' in msg))\n return null\n const msgSender = senderMap[msg.source]\n return msgSender ? { text: msg.message || '', sender: msgSender } : null\n },\n ]\n\n for (const parser of parsers) {\n const result = parser(message)\n if (result && result.text.trim()) {\n return { text: result.text.trim(), sender: result.sender }\n }\n }\n\n return null\n}\n\n// Removed selfToDigitalSelf - no longer needed since components use Self directly\n\n// Generate default first message based on context\nexport function generateFirstMessage(args: { name: string, context?: string }): string {\n const { name, context } = args\n\n if (context === 'welcome') {\n return `Welcome to Fiction! I'm ${name}, your digital self. I'm here to help you understand how I can represent you and assist with your daily tasks. What would you like to know about how I work?`\n }\n\n if (context === 'onboarding') {\n return `Hi! I'm ${name}, your newly created digital self. I can handle conversations, answer questions about your expertise, and represent you professionally. Ready to see what I can do?`\n }\n\n return `Hello! I'm ${name}. How can I help you today?`\n}\n","import type { Ref } from 'vue'\nimport type { FictionSDK } from '../sdkClient'\nimport type { AgentMode, ChatMessage, Self, TextConnectionState, VoiceConnectionState } from './schema'\n// Direct import from ElevenLabs SDK - matches web project pattern\nimport { Conversation } from '@elevenlabs/client'\nimport { objectId } from '@fiction/utils'\nimport { ref, watch } from 'vue'\nimport { SettingsObject } from '@/utils/base'\nimport { ClientAudio } from './ClientAudio'\n\nimport { parseVoiceMessage } from './utils'\n\ntype ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error'\n\ninterface AgentState {\n isActive: boolean\n isConnected: boolean\n connectionStatus: ConnectionState\n error?: string\n}\n\ninterface AgentCallbacks {\n onConnect?: () => void\n onDisconnect?: () => void\n onError?: (error: Error) => void\n onModeChange?: (mode: string) => void\n onMessage?: (message: unknown) => void\n onAudioLevel?: (levels: { inputLevel: number, outputLevel: number }) => void\n}\n\ntype SelfControllerSettings = {\n sdk: FictionSDK\n self: Self\n context?: string\n firstMessage?: string\n}\n\nexport class SelfController extends SettingsObject<SelfControllerSettings> {\n private conversation?: Conversation\n private isTextMode = false\n private lastMessage = { hash: '', time: 0 }\n private clientAudio: ClientAudio\n private unwatchAudio?: () => void\n private isConnecting = false\n private lastUserSpeechTime = 0 // Track when user last spoke (audio VAD)\n private lastUserMessageTime = 0 // Track when user's last transcription arrived (ElevenLabs)\n\n // Simple usage tracking\n private sessionId?: string\n private conversationStartTime?: Date\n private chatCharacterCount = 0\n\n // Participant IDs for message attribution\n private hostParticipantId?: string // The digital self\n private visitorParticipantId?: string // The user/anon\n\n voiceState: Ref<VoiceConnectionState> = ref({\n isActive: false,\n isConnected: false,\n isSpeaking: false,\n isListening: false,\n isProcessing: false,\n transcript: 'Tap to begin voice conversation',\n connectionStatus: 'disconnected',\n })\n\n textState: Ref<TextConnectionState> = ref({\n isActive: false,\n isConnected: false,\n isThinking: false,\n connectionStatus: 'disconnected',\n })\n\n agentMode: Ref<AgentMode> = ref('self')\n sharedMessages: Ref<ChatMessage[]> = ref([])\n\n constructor(settings: SelfControllerSettings) {\n super('SelfController', settings)\n\n // Fail fast - validate required configuration\n if (!settings.self.elevenlabsAgentId || settings.self.elevenlabsAgentId.trim() === '') {\n throw new Error(`Agent ID is required for SelfController. Self \"${settings.self.name}\" (${settings.self.selfId}) does not have a valid elevenlabsAgentId.`)\n }\n\n // Note: self.selfId, self.ownerId, self.orgId used for usage tracking\n // SelfController works without usage tracking if these are undefined\n\n this.clientAudio = new ClientAudio(settings)\n this.setupModeWatcher()\n }\n\n get audioLevels() {\n return this.clientAudio.audioLevels\n }\n\n getClientAudio() {\n return this.clientAudio\n }\n\n /**\n * Get output (agent speaking) frequency data from ElevenLabs\n * Used by visualizer during 'speaking' mode\n */\n getOutputFrequencyData(): Uint8Array | null {\n if (!this.conversation) {\n return null\n }\n\n try {\n const data = this.conversation.getOutputByteFrequencyData()\n if (data && data.length > 0) {\n return new Uint8Array(data)\n }\n } catch (error) {\n if (import.meta.env.DEV) {\n console.error('[SelfController] Failed to get output frequency data:', error)\n }\n }\n return null\n }\n\n /**\n * Get input (user speaking) frequency data from ElevenLabs\n * Used by visualizer during 'listening' mode\n * Fallback: Uses ClientAudio analyser if ElevenLabs data unavailable\n */\n getInputFrequencyData(): Uint8Array | null {\n // Try ElevenLabs input data first (if supported)\n if (this.conversation) {\n try {\n const data = this.conversation.getInputByteFrequencyData?.()\n if (data && data.length > 0) {\n return new Uint8Array(data)\n }\n } catch (error) {\n // Silently fall back to ClientAudio\n }\n }\n\n // Fallback to ClientAudio analyser\n const analyser = this.clientAudio.getSharedAnalyser()\n if (analyser) {\n try {\n const dataArray = new Uint8Array(analyser.frequencyBinCount)\n analyser.getByteFrequencyData(dataArray)\n return dataArray\n } catch (error) {\n if (import.meta.env.DEV) {\n console.error('[SelfController] Failed to get input frequency data:', error)\n }\n }\n }\n\n return null\n }\n\n private isDuplicateMessage(text: string, sender: string): boolean {\n const hash = `${sender}:${text.toLowerCase().trim()}`\n const now = Date.now()\n const isDupe = hash === this.lastMessage.hash && (now - this.lastMessage.time) < 500\n\n if (!isDupe) {\n this.lastMessage = { hash, time: now }\n }\n\n return isDupe\n }\n\n private addMessage(text: string, sender: 'user' | 'agent' | 'system') {\n if (this.isDuplicateMessage(text, sender))\n return\n\n this.sharedMessages.value = [\n ...this.sharedMessages.value,\n { id: Date.now().toString(), text, sender, timestamp: new Date() },\n ]\n }\n\n private getDynamicSettings() {\n const { sdk } = this.settings\n const user = sdk.activeUser.value\n const primarySelf = user?.selves?.find(s => s.selfId === user.primarySelfId)\n\n // Append user context for agent awareness (enables MCP tools like calendar booking, CRM)\n const userContext = user ? `\n\nCurrent User:\n- Name: ${primarySelf?.name || 'Anonymous'}\n- Email: ${user.email}\n- Title: ${primarySelf?.title || ''}\n- About: ${primarySelf?.summary || ''}\n` : ''\n\n return {\n dynamicVariables: {\n context: `${this.settings.context || ''}${userContext}`.trim(),\n firstMessage: this.settings.firstMessage || '',\n },\n overrides: {\n agent: this.settings.firstMessage ? { firstMessage: this.settings.firstMessage } : {},\n },\n }\n }\n\n private updateState<T extends AgentState>(state: Ref<T>, updates: Partial<T>) {\n state.value = { ...state.value, ...updates }\n }\n\n private resetState(isText: boolean) {\n if (isText) {\n this.updateState(this.textState, {\n isActive: false,\n isConnected: false,\n isThinking: false,\n connectionStatus: 'disconnected',\n error: undefined,\n })\n } else {\n this.updateState(this.voiceState, {\n isActive: false,\n isConnected: false,\n isSpeaking: false,\n isListening: false,\n isProcessing: false,\n transcript: 'Ready to start a call...',\n connectionStatus: 'disconnected',\n error: undefined,\n })\n this.clientAudio.resetAudioLevels()\n this.lastUserSpeechTime = 0\n this.lastUserMessageTime = 0\n }\n }\n\n private setupModeWatcher() {\n watch(this.agentMode, async (newMode, oldMode) => {\n this.logger.info(`Mode changed from ${oldMode} to ${newMode}`)\n\n // End any active conversation when switching modes\n if (this.conversation && (oldMode === 'talk' || oldMode === 'chat')) {\n await this.endConversation()\n }\n\n // User must explicitly start conversations via buttons\n // No auto-start logic\n })\n }\n\n private handleMessage(message: { message: string, source: string }, isVoice: boolean) {\n const parsed = parseVoiceMessage(message)\n if (parsed) {\n // Track user message timing for enhanced processing state detection\n if (isVoice && parsed.sender === 'user') {\n this.lastUserMessageTime = Date.now()\n this.logger.info('User transcription received', { text: parsed.text })\n }\n\n this.addMessage(parsed.text, parsed.sender)\n if (!isVoice && parsed.sender === 'agent') {\n this.updateState(this.textState, { isThinking: false })\n }\n\n // Save message to database if we have participant IDs\n if (this.sessionId && this.hostParticipantId && this.visitorParticipantId) {\n const participantId = parsed.sender === 'agent' ? this.hostParticipantId : this.visitorParticipantId\n const { sdk } = this.settings\n\n sdk.saveMessage({\n conversationId: this.sessionId,\n participantId,\n content: parsed.text,\n role: parsed.sender === 'agent' ? 'agent' : 'user',\n }).catch((err) => {\n this.logger.warn('Failed to save message', { error: err })\n })\n }\n }\n }\n\n private handleError(error: unknown, isVoice: boolean) {\n const message = (error as Error).message\n this.logger.error('Conversation error:', error)\n\n this.resetState(isVoice)\n if (isVoice) {\n this.updateState(this.voiceState, {\n error: message,\n connectionStatus: 'error',\n transcript: 'Failed to start call.',\n })\n } else {\n this.updateState(this.textState, {\n error: message,\n connectionStatus: 'error',\n })\n }\n }\n\n async setMode(mode: AgentMode) {\n if (this.agentMode.value !== mode) {\n this.agentMode.value = mode\n }\n }\n\n async startVoiceConversation(callbacks: AgentCallbacks = {}) {\n // Prevent double calls\n if (this.isConnecting) {\n this.logger.info('Voice conversation already connecting, ignoring duplicate request')\n return\n }\n\n this.isConnecting = true\n this.isTextMode = false\n this.updateState(this.voiceState, {\n isActive: true,\n transcript: 'Connecting...',\n connectionStatus: 'connecting',\n })\n\n if (!(await this.clientAudio.requestMicrophonePermission())) {\n this.isConnecting = false\n this.updateState(this.voiceState, {\n isActive: false,\n error: 'Microphone permission required',\n transcript: 'Failed to get microphone permission',\n connectionStatus: 'error',\n })\n throw new Error('Microphone permission required')\n }\n\n // Start simple session tracking\n await this.startSession('voice')\n\n const dynamicSettings = this.getDynamicSettings()\n const agentId = this.settings.self.elevenlabsAgentId!\n this.logger.info('Starting voice conversation...', { agentId, dynamicSettings })\n\n try {\n this.conversation = await Conversation.startSession({\n agentId,\n connectionType: 'websocket',\n ...dynamicSettings,\n onConnect: () => {\n this.isConnecting = false\n\n // Start audio monitoring with VAD silence detection\n this.clientAudio.startAudioLevelMonitoring(\n () => this.isVoiceConnected(),\n () => {\n // VAD detected user stopped speaking\n this.logger.info('Client-side VAD: User has stopped speaking')\n // Optional: Send user activity to prevent timeout\n if (this.conversation) {\n this.conversation.sendUserActivity()\n this.logger.info('Sent user activity signal to ElevenLabs')\n }\n },\n )\n\n // Track user speech activity for intelligent state detection\n // Update lastUserSpeechTime when user is actively speaking (inputLevel > 3%)\n this.unwatchAudio = watch(this.audioLevels, (levels) => {\n const VAD_THRESHOLD = 0.03 // 3% matches ClientAudio VAD threshold\n if (levels.inputLevel > VAD_THRESHOLD) {\n this.lastUserSpeechTime = Date.now()\n }\n callbacks.onAudioLevel?.(levels)\n }, { immediate: true })\n\n this.updateState(this.voiceState, {\n isConnected: true,\n isListening: true,\n isProcessing: false,\n transcript: 'Connected! Start speaking...',\n connectionStatus: 'connected',\n })\n callbacks.onConnect?.()\n\n // Log audio setup for debugging\n this.logger.info('Voice conversation connected', {\n audioContextAvailable: this.clientAudio.isAudioContextAvailable(),\n audioContextState: this.clientAudio.getAudioContextState(),\n })\n },\n onDisconnect: () => {\n this.logger.info('Voice conversation disconnected')\n this.conversation = undefined\n this.clientAudio.stopAudioLevelMonitoring()\n\n // End session tracking\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n\n this.resetState(false)\n callbacks.onDisconnect?.()\n },\n onError: (msg: string) => {\n // Enhanced error message for common ElevenLabs issues\n let errorMessage = msg\n if (msg.includes('does not exist')) {\n errorMessage = `Agent not found: ${this.settings.self.elevenlabsAgentId}. Check ElevenLabs configuration.`\n } else if (msg.includes('limit') || msg.includes('quota')) {\n errorMessage = `ElevenLabs account limit reached. Check your subscription and usage.`\n } else if (msg.includes('unauthorized') || msg.includes('invalid')) {\n errorMessage = `ElevenLabs API authentication failed. Check ELEVENLABS_API_KEY.`\n }\n\n // End session tracking on error\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n\n this.handleError(new Error(errorMessage), true)\n callbacks.onError?.(new Error(errorMessage))\n },\n onModeChange: (mode: { mode: string }) => {\n const isSpeaking = mode.mode === 'speaking'\n\n // Enhanced state detection combining Audio VAD + ElevenLabs transcription\n // More reliable than time-based alone - uses both signals\n const PROCESSING_WINDOW = 3000 // 3 seconds window for processing detection\n const now = Date.now()\n const timeSinceUserSpeech = now - this.lastUserSpeechTime\n const timeSinceUserMessage = now - this.lastUserMessageTime\n\n // We're processing if:\n // 1. Not currently speaking AND\n // 2. Either audio VAD detected recent speech OR received recent user transcription\n const hasRecentUserActivity = timeSinceUserSpeech < PROCESSING_WINDOW || timeSinceUserMessage < PROCESSING_WINDOW\n const isProcessing = !isSpeaking && hasRecentUserActivity\n\n // Determine transcript based on state\n let transcript: string\n if (isSpeaking) {\n transcript = 'Speaking...'\n } else if (isProcessing) {\n transcript = 'Thinking...'\n } else {\n transcript = 'Listening...'\n }\n\n this.updateState(this.voiceState, {\n isSpeaking,\n isListening: !isSpeaking, // Mic active when agent not speaking - ElevenLabs handles interruptions\n isProcessing,\n transcript,\n })\n\n this.logger.info('Voice mode changed', {\n mode: mode.mode,\n isSpeaking,\n isListening: !isSpeaking,\n isProcessing,\n timeSinceUserSpeech,\n timeSinceUserMessage,\n detectionSource: timeSinceUserMessage < timeSinceUserSpeech ? 'message' : 'audio'\n })\n callbacks.onModeChange?.(mode.mode)\n },\n onMessage: (message: any) => {\n this.handleMessage(message, true)\n callbacks.onMessage?.(message)\n },\n })\n } catch (error) {\n this.isConnecting = false\n // End session tracking on error\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n this.handleError(error, true)\n throw error\n }\n }\n\n async startTextConversation(callbacks: AgentCallbacks = {}) {\n if (this.isConnecting) {\n this.logger.info('Text conversation already connecting, ignoring duplicate request')\n return\n }\n\n this.isConnecting = true\n this.isTextMode = true\n this.updateState(this.textState, { isActive: true, connectionStatus: 'connecting' })\n\n // Start simple session tracking\n await this.startSession('chat')\n\n try {\n this.conversation = await Conversation.startSession({\n agentId: this.settings.self.elevenlabsAgentId!,\n connectionType: 'websocket',\n ...this.getDynamicSettings(),\n textOnly: true,\n onConnect: () => {\n this.isConnecting = false\n this.updateState(this.textState, { isConnected: true, connectionStatus: 'connected' })\n callbacks.onConnect?.()\n },\n onDisconnect: () => {\n this.conversation = undefined\n\n // End session tracking\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n\n this.resetState(true)\n callbacks.onDisconnect?.()\n },\n onError: (msg: string) => {\n // Enhanced error message for common ElevenLabs issues\n let errorMessage = msg\n if (msg.includes('does not exist')) {\n errorMessage = `Agent not found: ${this.settings.self.elevenlabsAgentId}. Check ElevenLabs configuration.`\n } else if (msg.includes('limit') || msg.includes('quota')) {\n errorMessage = `ElevenLabs account limit reached. Check your subscription and usage.`\n } else if (msg.includes('unauthorized') || msg.includes('invalid')) {\n errorMessage = `ElevenLabs API authentication failed. Check ELEVENLABS_API_KEY.`\n }\n\n // End session tracking on error\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n\n this.handleError(new Error(errorMessage), false)\n callbacks.onError?.(new Error(errorMessage))\n },\n onModeChange: (mode: { mode: string }) => {\n callbacks.onModeChange?.(mode.mode)\n },\n onMessage: (messageArgs: any) => {\n this.handleMessage(messageArgs, false)\n callbacks.onMessage?.(messageArgs)\n },\n })\n } catch (error) {\n this.isConnecting = false\n // End session tracking on error\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n this.handleError(error, false)\n throw error\n }\n }\n\n async endConversation() {\n if (!this.conversation) {\n this.resetState(this.isTextMode)\n // Ensure microphone is stopped even if no active conversation\n await this.clientAudio.stopMicrophone()\n return\n }\n\n try {\n await this.conversation.endSession()\n } finally {\n this.conversation = undefined\n this.unwatchAudio?.()\n this.unwatchAudio = undefined\n this.resetState(this.isTextMode)\n this.isTextMode = false\n // Stop microphone on all exit paths\n await this.clientAudio.stopMicrophone()\n }\n }\n\n async sendChatMessage(message: string) {\n if (!this.conversation || !this.isTextMode)\n return\n\n this.addMessage(message, 'user')\n\n // Track chat characters\n this.chatCharacterCount += message.length\n\n try {\n this.updateState(this.textState, { isThinking: true })\n this.conversation.sendUserMessage(message)\n } catch (error) {\n this.handleError(error, false)\n }\n }\n\n isConnected(): boolean {\n return !!this.conversation\n }\n\n isVoiceConnected(): boolean {\n return this.isConnected() && !this.isTextMode\n }\n\n isTextConnected(): boolean {\n return this.isConnected() && this.isTextMode\n }\n\n async destroy() {\n await this.endConversation()\n await this.clientAudio.cleanup()\n\n // End any active session tracking\n this.endSession().catch((error) => console.error('Failed to end session:', error))\n }\n\n // Simple session tracking - minimal implementation\n private async startSession(type: 'voice' | 'chat') {\n const { self, sdk } = this.settings\n this.conversationStartTime = new Date()\n this.chatCharacterCount = 0\n\n // Start conversation using SDK method (auto-creates conversation record)\n if (self.selfId && self.orgId) {\n const anonId = sdk.activeUser.value?.userId ? undefined : sdk.generateAnonId()\n const conversationData = await sdk.startConversation({\n selfId: self.selfId,\n userId: sdk.activeUser.value?.userId,\n anonId,\n })\n\n if (conversationData) {\n this.sessionId = conversationData.conversationId\n this.hostParticipantId = conversationData.hostParticipantId\n this.visitorParticipantId = conversationData.visitorParticipantId\n this.logger.info('Started conversation session', {\n sessionId: this.sessionId,\n type,\n userId: sdk.activeUser.value?.userId,\n anonId,\n hostParticipantId: this.hostParticipantId,\n visitorParticipantId: this.visitorParticipantId,\n })\n return\n }\n }\n\n // Fallback to simple sessionId if conversation creation fails\n this.sessionId = objectId()\n this.logger.info('Started conversation session (fallback)', {\n sessionId: this.sessionId,\n type,\n })\n }\n\n private async endSession() {\n if (!this.sessionId || !this.conversationStartTime)\n return\n\n // Usage tracking is handled server-side by ConversationServer.processStaleConversations()\n // This background job processes sessions after 15+ minutes of inactivity and:\n // - Calculates accurate usage credits (voice: 1 per second, chat: 1 per user message)\n // - Records usage for both authenticated AND anonymous users\n // - Updates conversation analytics\n // No client-side usage tracking needed - prevents duplicate recording\n this.logger.info('Session ended', {\n sessionId: this.sessionId,\n duration: Math.round((Date.now() - this.conversationStartTime.getTime()) / 1000),\n type: this.isTextMode ? 'chat' : 'voice',\n })\n\n this.resetSession()\n }\n\n private resetSession() {\n this.sessionId = undefined\n this.conversationStartTime = undefined\n this.chatCharacterCount = 0\n }\n}\n","<script lang=\"ts\" setup>\nconst { disabled = false, mode: _mode = 'block' } = defineProps<{ disabled?: boolean, mode?: 'block' | 'inline' }>()\n</script>\n\n<template>\n <TransitionGroup :name=\"!disabled ? 'nlist' : ''\">\n <slot />\n </TransitionGroup>\n</template>\n\n<style lang=\"less\">\n.nlist-enter-active,\n.nlist-leave-active,\n.nlist-move {\n transition: all 600ms cubic-bezier(0.68, -0.55, 0.27, 1.55);\n}\n\n.nlist-enter-from {\n opacity: 0;\n transform: translateX(-30px) scale(0.9);\n}\n\n.nlist-enter-to {\n opacity: 1;\n transform: translateX(0) scale(1);\n}\n\n.nlist-leave-active {\n position: absolute;\n // width: 100%;\n}\n\n.nlist-leave-to {\n opacity: 0;\n transform: scale(0.9);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\ntype ButtonTheme = 'primary' | 'green' | 'red' | 'default'\ntype ButtonSize = 'sm' | 'md' | 'lg'\n\nconst {\n theme = 'primary',\n size = 'lg',\n loading = false,\n icon,\n iconAfter,\n} = defineProps<{\n theme?: ButtonTheme\n size?: ButtonSize\n loading?: boolean\n icon?: string\n iconAfter?: string\n}>()\n\n// Overlay-optimized themes (bright colors that pop against dark backgrounds)\n// 'primary' uses CSS variables set by parent component's theme\n// 'green' and 'rose' use standard Tailwind colors for UI conventions (start/end call)\nconst themeClasses = computed(() => {\n const themes = {\n primary: 'bg-primary-600 border-primary-400 hover:border-primary-300 hover:bg-primary-500',\n green: 'bg-green-600 border-green-400 hover:border-green-300 hover:bg-green-500',\n red: 'bg-red-600 border-red-400 hover:border-red-300 hover:bg-red-500',\n default: 'bg-white/10 border-white/20 hover:border-white/40 hover:bg-white/20',\n }\n return themes[theme]\n})\n\nconst sizeClasses = computed(() => {\n const sizes = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-6 py-3 text-base',\n lg: 'px-8 py-4 text-base',\n }\n return sizes[size]\n})\n\nconst iconSizeClasses = computed(() => {\n const sizes = {\n sm: 'size-4',\n md: 'size-4',\n lg: 'size-5',\n }\n return sizes[size]\n})\n</script>\n\n<template>\n <button\n class=\"relative inline-flex items-center justify-center gap-2 font-medium rounded-full backdrop-blur-sm border-2 text-white transition-all duration-200 focus:outline-none active:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer\"\n :class=\"[themeClasses, sizeClasses]\"\n >\n <!-- Loading spinner overlay -->\n <div\n v-if=\"loading\"\n class=\"absolute inset-0 flex items-center justify-center\"\n >\n <i class=\"i-svg-spinners-90-ring-with-bg size-5\" />\n </div>\n\n <!-- Button content -->\n <span\n class=\"flex items-center gap-2 transition-opacity duration-200\"\n :class=\"loading ? 'opacity-0' : 'opacity-100'\"\n >\n <i v-if=\"icon\" :class=\"[icon, iconSizeClasses]\" />\n <slot />\n <i v-if=\"iconAfter\" :class=\"[iconAfter, iconSizeClasses]\" />\n </span>\n </button>\n</template>\n","<script setup lang=\"ts\">\nconst { modelValue = '' } = defineProps<{ modelValue?: string }>()\nconst emit = defineEmits<{ (event: 'update:modelValue', value: string): void }>()\n</script>\n\n<template>\n <input\n type=\"email\"\n autocomplete=\"email\"\n placeholder=\"Enter Your Email\"\n :value=\"modelValue\"\n class=\"w-full px-6 py-3 text-theme-900 placeholder-theme-500 bg-white border border-white rounded-full focus:outline-none transition-all\"\n style=\"font-size: 16px\"\n @input=\"emit('update:modelValue', ($event.target as HTMLInputElement).value)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from 'vue'\n\nconst props = defineProps<{\n modelValue: string\n length: number\n focusFirst?: boolean\n}>()\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: string): void\n (event: 'autoSubmit', value: string): void\n}>()\n\nconst inputs = ref<(HTMLInputElement | null)[]>([])\nconst values = ref<string[]>(Array.from({ length: props.length }).fill('') as string[])\nconst justPasted = ref(false)\n\nonMounted(() => {\n if (props.modelValue)\n values.value = props.modelValue.split('').slice(0, props.length)\n\n if (props.focusFirst && !('ontouchstart' in window))\n inputs.value[0]?.focus()\n})\n\nwatch(() => props.modelValue, (v) => {\n values.value = v ? v.split('').slice(0, props.length) : Array.from({ length: props.length }).fill('') as string[]\n})\n\nwatch(values, () => {\n const v = values.value.filter(Boolean).join('')\n emit('update:modelValue', v)\n if (v.length === props.length)\n emit('autoSubmit', v)\n}, { deep: true })\n\nfunction onPaste(i: number, e: ClipboardEvent) {\n e.preventDefault()\n justPasted.value = true\n\n const nums = (e.clipboardData?.getData('text') || '').replace(/\\D/g, '')\n\n if (nums.length === props.length) {\n values.value = nums.split('')\n // Focus after values are set, using nextTick-like delay\n setTimeout(() => {\n inputs.value[props.length - 1]?.focus()\n justPasted.value = false\n }, 10)\n } else {\n const newValues = [...values.value]\n nums.split('').slice(0, props.length - i).forEach((c, idx) => {\n newValues[i + idx] = c\n })\n values.value = newValues\n const nextPos = Math.min(i + nums.length, props.length - 1)\n setTimeout(() => {\n inputs.value[nextPos]?.focus()\n justPasted.value = false\n }, 10)\n }\n}\n\nfunction onInput(i: number, e: Event) {\n const val = (e.target as HTMLInputElement).value.slice(-1).replace(/\\D/g, '')\n values.value[i] = val\n if (val && i < props.length - 1)\n inputs.value[i + 1]?.focus()\n}\n\nfunction onKeydown(i: number, e: KeyboardEvent) {\n if (e.key === 'Backspace') {\n e.preventDefault()\n values.value[i] = ''\n if (i > 0)\n inputs.value[i - 1]?.focus()\n } else if (e.key === 'ArrowLeft' && i > 0) {\n inputs.value[i - 1]?.focus()\n } else if (e.key === 'ArrowRight' && i < props.length - 1) {\n inputs.value[i + 1]?.focus()\n }\n}\n\nfunction onFocus(i: number) {\n inputs.value[i]?.select()\n\n // Don't clear values if we just pasted\n if (justPasted.value)\n return\n\n if (values.value[i]) {\n for (let idx = i; idx < props.length; idx++)\n values.value[idx] = ''\n }\n}\n</script>\n\n<template>\n <div class=\"flex gap-1.5 justify-center\">\n <input\n v-for=\"i in length\"\n :key=\"i\"\n :ref=\"el => inputs[i - 1] = el as HTMLInputElement\"\n v-model=\"values[i - 1]\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n class=\"size-11 text-center font-mono text-theme-900 bg-white border border-white rounded-lg focus:outline-none transition-all\"\n style=\"font-size: 16px\"\n maxlength=\"1\"\n @input=\"onInput(i - 1, $event)\"\n @keydown=\"onKeydown(i - 1, $event)\"\n @paste=\"onPaste(i - 1, $event as ClipboardEvent)\"\n @focus=\"onFocus(i - 1)\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { FictionSDK } from '../../sdkClient'\nimport { computed, ref } from 'vue'\nimport EffectTransitionList from '@/ui/effects/EffectTransitionList.vue'\nimport ElSelfButton from './ElSelfButton.vue'\nimport SelfInputEmail from './SelfInputEmail.vue'\nimport SelfInputOneTimeCode from './SelfInputOneTimeCode.vue'\n\nconst { sdk } = defineProps<{ sdk: FictionSDK }>()\n\nconst form = ref({ email: '', code: '' })\nconst step = ref<'email' | 'code'>('email')\nconst isSubmitting = ref(false)\n\n// Engine array for step configuration\nconst stepConfig = {\n email: {\n title: 'Enter Your Email',\n button: { label: 'Continue', disabled: () => !form.value.email || isSubmitting.value },\n action: async () => {\n if (isSubmitting.value) return\n isSubmitting.value = true\n try {\n const success = await sdk.requestAuthCode({ email: form.value.email })\n if (success)\n step.value = 'code'\n } finally {\n isSubmitting.value = false\n }\n },\n },\n code: {\n title: 'Enter Verification Code',\n button: { label: 'Verify', disabled: () => form.value.code.length !== 6 || isSubmitting.value },\n action: async () => {\n if (isSubmitting.value) return\n isSubmitting.value = true\n try {\n await sdk.loginWithCode({ email: form.value.email, code: form.value.code })\n } finally {\n isSubmitting.value = false\n }\n },\n },\n}\n\nconst currentStep = computed(() => stepConfig[step.value])\n</script>\n\n<template>\n <div class=\"flex flex-col items-center justify-center h-full p-6\">\n <div class=\"w-full max-w-xs space-y-12\">\n <p v-if=\"sdk.error.value\" class=\"text-xs text-theme-400 text-center\">\n {{ sdk.error.value }}\n </p>\n\n <h3 class=\"text-base font-light text-white text-center\">\n {{ currentStep.title }}\n </h3>\n\n <div class=\"space-y-6 relative\">\n <EffectTransitionList>\n <div v-if=\"step === 'email'\" key=\"email-field\" class=\"w-full\">\n <SelfInputEmail\n v-model=\"form.email\"\n @keyup.enter=\"currentStep.action\"\n />\n </div>\n <div v-else key=\"code-field\" class=\"w-full\">\n <SelfInputOneTimeCode\n v-model=\"form.code\"\n :length=\"6\"\n :focus-first=\"true\"\n @auto-submit=\"currentStep.action\"\n />\n </div>\n\n <div :key=\"currentStep.button.label\" class=\"space-y-4 w-full\">\n <ElSelfButton\n theme=\"primary\"\n size=\"md\"\n class=\"w-full\"\n :loading=\"sdk.loading.value\"\n :disabled=\"currentStep.button.disabled() || sdk.loading.value\"\n @click=\"currentStep.action\"\n >\n {{ currentStep.button.label }}\n </ElSelfButton>\n\n <button\n v-if=\"step === 'code'\"\n class=\"w-full text-xs text-white/50 hover:text-white/70 transition-colors py-2\"\n @click=\"step = 'email'\"\n >\n Change Email\n </button>\n </div>\n </EffectTransitionList>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { Self } from '@fiction/types'\nimport { getFallbackAvatarDataUrl, handleImageError } from '../utils'\n\ninterface Props {\n self: Self\n size?: 'md' | 'lg'\n showOnlineIndicator?: boolean\n layout?: 'centered' | 'horizontal'\n}\n\nconst {\n self,\n size = 'md',\n showOnlineIndicator = true,\n layout = 'centered',\n} = defineProps<Props>()\n\nfunction getAvatarSrc(): string {\n if (self.avatar?.src) {\n return self.avatar.src\n }\n return getFallbackAvatarDataUrl()\n}\n</script>\n\n<template>\n <div\n class=\"flex gap-4\"\n :class=\"[\n layout === 'centered' ? 'flex-col items-center text-center' : 'flex-row items-center justify-center',\n ]\"\n >\n <!-- Avatar with online indicator -->\n <div class=\"relative flex-shrink-0\">\n <div\n class=\"rounded-full overflow-hidden border-white\"\n :class=\"size === 'lg' ? 'w-20 h-20 sm:w-24 sm:h-24 border-4' : 'w-16 sm:size-16 border-2'\"\n >\n <img\n :src=\"getAvatarSrc()\"\n :alt=\"self.name\"\n class=\"w-full h-full object-cover\"\n @error=\"handleImageError\"\n />\n </div>\n <!-- Online indicator -->\n <div v-if=\"showOnlineIndicator\" class=\"absolute top-1 right-1\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Name and title -->\n <div class=\"min-w-0\">\n <h1\n class=\"font-light text-white mb-1 truncate\"\n :class=\"[\n size === 'lg' ? 'text-3xl mb-2' : 'text-xl sm:text-2xl tracking-wide leading-tight',\n layout === 'horizontal' ? 'text-white/95' : '',\n ]\"\n >\n {{ self.name }}\n </h1>\n <p\n class=\"font-light line-clamp-1\"\n :class=\"[\n size === 'lg' ? 'text-base text-white/60' : 'text-sm sm:text-base',\n layout === 'horizontal' ? 'text-white/70 truncate' : 'text-white/60',\n ]\"\n >\n {{ layout === 'horizontal' ? (self.title || 'Digital Self') : self.title }}\n </p>\n </div>\n </div>\n</template>\n","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 classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], 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;\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 MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 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 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\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 } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\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 createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\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 };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\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 isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!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 = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\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 isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\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 isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\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 * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\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: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\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: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\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: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\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: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\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': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, 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: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\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: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, 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 * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\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 * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\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: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\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: scaleUnambiguousSpacing()\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', isArbitraryVariable, 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 * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\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', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\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 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: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\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': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\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 // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\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', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\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': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\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', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\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-x', 'border-w-y', '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-x', 'border-color-y', '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 translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\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 orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\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 experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\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 mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\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","export type ColorThemeUser = 'primary' | 'default' | 'overlay' | 'rose' | 'green' | 'muted' | 'theme' | 'orange' | 'indigo' | 'red'\nexport type ButtonDesign = 'solid' | 'ghost' | 'outline' | 'link'\n\nexport const themes: Record<ColorThemeUser, Record<ButtonDesign, {\n base?: string\n border?: string\n hover?: string\n icon?: string\n input?: string\n}>> = {\n default: {\n solid: {\n base: 'bg-theme-0 dark:bg-theme-700/40 text-theme-600 dark:text-theme-50',\n input: `bg-white dark:bg-theme-800/50\n ring-theme-200 dark:ring-theme-600/70\n focus:ring-theme-600 focus:bg-white\n dark:focus:ring-theme-500 dark:focus:bg-theme-800\n focus-within:ring-theme-600 dark:focus-within:ring-theme-500\n text-theme-900 dark:text-theme-100\n placeholder:text-theme-400 dark:placeholder:text-theme-500`,\n border: 'border-theme-300/80 dark:border-theme-600',\n hover: 'hover:border-theme-300 dark:hover:border-theme-500',\n icon: 'text-theme-600 dark:text-theme-50',\n },\n ghost: {\n base: 'bg-theme-50 dark:bg-theme-600/30 text-theme-700 dark:text-theme-50',\n border: 'border-theme-100 dark:border-theme-800/20',\n hover: 'hover:bg-theme-200 dark:hover:bg-theme-600/50 hover:border-theme-200 dark:hover:border-theme-600',\n icon: 'text-theme-500 dark:text-theme-500',\n },\n outline: {\n base: 'bg-transparent text-theme-700 dark:text-theme-50',\n border: 'border-theme-300 dark:border-theme-400',\n hover: 'hover:opacity-70',\n icon: 'text-theme-700 dark:text-theme-300',\n },\n link: {\n base: 'bg-transparent text-theme-600 dark:text-theme-50',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-theme-600 dark:text-theme-400',\n },\n },\n muted: {\n solid: {\n base: 'bg-gray-100 dark:bg-gray-700/40 text-gray-900 dark:text-gray-50',\n input: `bg-white dark:bg-gray-800/50\n ring-gray-200 dark:ring-gray-600/70\n focus:ring-gray-600 focus:bg-white\n dark:focus:ring-gray-500 dark:focus:bg-gray-800\n focus-within:ring-gray-600 dark:focus-within:ring-gray-500\n text-gray-900 dark:text-gray-100\n placeholder:text-gray-400 dark:placeholder:text-gray-500`,\n border: 'border-gray-300/80 dark:border-gray-600',\n hover: 'hover:border-gray-300 dark:hover:border-gray-500',\n icon: 'text-gray-600 dark:text-gray-50',\n },\n ghost: {\n base: 'bg-gray-100 dark:bg-gray-600/30 text-gray-700 dark:text-gray-50',\n border: 'border-gray-100 dark:border-gray-800/20',\n hover: 'hover:bg-gray-200 dark:hover:bg-gray-600/50 hover:border-gray-200 dark:hover:border-gray-600',\n icon: 'text-gray-500 dark:text-gray-500',\n },\n outline: {\n base: 'bg-transparent text-gray-700 dark:text-gray-50',\n border: 'border-gray-500 dark:border-gray-400',\n hover: 'hover:opacity-70',\n icon: 'text-gray-700 dark:text-gray-300',\n },\n link: {\n base: 'bg-transparent text-gray-600 dark:text-gray-50',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-gray-600 dark:text-gray-400',\n },\n },\n overlay: {\n solid: {\n base: 'bg-white/100 text-black backdrop-blur-sm shadow-sm mix-blend-overlay [text-shadow:_0_1px_1px_rgb(255_255_255_/_100%)]',\n border: 'border-white/100',\n input: `bg-white/10 ring-white\n focus:ring-white/90 focus:bg-white/20\n dark:focus:ring-white/70\n text-white\n placeholder:text-white/60`,\n hover: 'hover:bg-white/70 ',\n icon: 'text-black',\n },\n ghost: {\n base: 'bg-white/70 text-black backdrop-blur-sm shadow-sm mix-blend-overlay [text-shadow:_0_1px_1px_rgb(255_255_255_/_100%)]',\n border: 'border-white/100',\n hover: 'hover:bg-white/70 hover:border-white/90',\n icon: 'text-black',\n },\n outline: {\n base: 'bg-white/10 text-white backdrop-blur-sm shadow-sm [text-shadow:_0_0.5px_0_rgb(0_0_0_/_40%)]',\n border: 'border-white',\n hover: 'hover:border-white/80',\n icon: 'text-white',\n },\n link: {\n base: 'bg-transparent text-white [text-shadow:_0_0.5px_0_rgb(0_0_0_/_40%)]',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-white',\n },\n },\n primary: {\n solid: {\n base: 'bg-primary-500 dark:bg-primary-700/70 text-primary-0 dark:text-primary-50',\n border: 'border-primary-600/80 dark:border-primary-600',\n input: `bg-primary-50 dark:bg-primary-800/20\n ring-primary-500 dark:ring-primary-600/70\n focus:ring-primary-700 focus:bg-primary-50/50\n dark:focus:ring-primary-600 dark:focus:bg-primary-800/40\n text-primary-800 dark:text-primary-0\n placeholder:text-primary-300 dark:placeholder:text-primary-600`,\n hover: 'hover:bg-primary-600 dark:hover:bg-primary-800',\n icon: 'text-primary-0 dark:text-primary-50',\n },\n ghost: {\n base: 'bg-primary-50 dark:bg-primary-800/40 text-primary-800 dark:text-primary-0',\n border: 'border-primary-100 dark:border-primary-800/20',\n hover: 'hover:bg-primary-100 dark:hover:bg-primary-800/60 hover:border-primary-200 dark:hover:border-primary-700',\n icon: 'text-primary-500 dark:text-primary-500',\n },\n outline: {\n base: 'bg-transparent text-primary-500 dark:text-primary-100',\n border: 'border-primary-500 dark:border-primary-500',\n hover: 'hover:bg-primary-500/10 dark:hover:bg-primary-500/20',\n icon: 'text-primary-700 dark:text-primary-100',\n },\n link: {\n base: 'bg-transparent text-primary-600 dark:text-primary-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-primary-600 dark:text-primary-400',\n },\n },\n theme: {\n solid: {\n base: 'bg-theme-500 dark:bg-theme-600/70 text-theme-0 dark:text-theme-0',\n border: 'border-theme-600/80 dark:border-theme-600',\n hover: 'hover:bg-theme-600 dark:hover:bg-theme-800',\n icon: 'text-theme-50 dark:text-theme-50',\n },\n ghost: {\n base: 'bg-theme-100 dark:bg-theme-600/50 text-theme-900 dark:text-theme-100',\n border: 'border-theme-100 dark:border-theme-800/20',\n hover: 'hover:bg-theme-200 dark:hover:bg-theme-600/40 hover:border-theme-200 dark:hover:border-theme-600',\n icon: 'text-theme-500 dark:text-theme-500',\n },\n outline: {\n base: 'bg-transparent text-theme-500 dark:text-theme-300',\n border: 'border-theme-500 dark:border-theme-400',\n hover: 'hover:bg-theme-500/10 dark:hover:bg-theme-400/20',\n icon: 'text-theme-500 dark:text-theme-300',\n },\n link: {\n base: 'bg-transparent text-theme-600 dark:text-theme-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-theme-600 dark:text-theme-400',\n },\n },\n green: {\n solid: {\n base: 'bg-green-600 dark:bg-green-700/70 text-green-50 dark:text-green-50',\n border: 'border-green-600 dark:border-green-600',\n hover: 'hover:bg-green-700 dark:hover:bg-green-800',\n icon: 'text-green-50 dark:text-green-50',\n },\n ghost: {\n base: 'bg-green-100 dark:bg-green-800/20 text-green-900 dark:text-green-100',\n border: 'border-green-100 dark:border-green-800/20',\n hover: 'hover:bg-green-200 dark:hover:bg-green-800/40 hover:border-green-200 dark:hover:border-green-700',\n icon: 'text-green-500 dark:text-green-500',\n },\n outline: {\n base: 'bg-transparent text-green-500 dark:text-green-50',\n border: 'border-green-500 dark:border-green-600',\n hover: 'hover:bg-green-500/10 dark:hover:bg-green-400/10',\n icon: 'text-green-500 dark:text-green-50',\n },\n link: {\n base: 'bg-transparent text-green-600 dark:text-green-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-green-600 dark:text-green-400',\n },\n },\n orange: {\n solid: {\n base: 'bg-orange-500 dark:bg-orange-700/70 text-orange-50 dark:text-orange-50',\n border: 'border-orange-700 dark:border-orange-600',\n hover: 'hover:bg-orange-700 dark:hover:bg-orange-800',\n icon: 'text-orange-50 dark:text-orange-50',\n },\n ghost: {\n base: 'bg-orange-100 dark:bg-orange-800/20 text-orange-900 dark:text-orange-100',\n border: 'border-orange-100 dark:border-orange-800/20',\n hover: 'hover:bg-orange-200 dark:hover:bg-orange-800/40 hover:border-orange-200 dark:hover:border-orange-700',\n icon: 'text-orange-500 dark:text-orange-500',\n },\n outline: {\n base: 'bg-transparent text-orange-500 dark:text-orange-50',\n border: 'border-orange-500 dark:border-orange-600',\n hover: 'hover:bg-orange-500/10 dark:hover:bg-orange-400/10',\n icon: 'text-orange-500 dark:text-orange-50',\n },\n link: {\n base: 'bg-transparent text-orange-600 dark:text-orange-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-orange-600 dark:text-orange-400',\n },\n },\n rose: {\n solid: {\n base: 'bg-rose-500 dark:bg-rose-700/70 text-rose-50 dark:text-rose-50',\n border: 'border-rose-600/80 dark:border-rose-600',\n hover: 'hover:bg-rose-600 dark:hover:bg-rose-800',\n icon: 'text-rose-50 dark:text-rose-50',\n },\n ghost: {\n base: 'bg-rose-100 dark:bg-rose-800/20 text-rose-900 dark:text-rose-100',\n border: 'border-rose-100 dark:border-rose-800/20',\n hover: 'hover:bg-rose-200 dark:hover:bg-rose-800/40 hover:border-rose-200 dark:hover:border-rose-700',\n icon: 'text-rose-500 dark:text-rose-500',\n },\n outline: {\n base: 'bg-transparent text-rose-500 dark:text-rose-50',\n border: 'border-rose-500 dark:border-rose-600',\n hover: 'hover:bg-rose-500/10 dark:hover:bg-rose-400/10',\n icon: 'text-rose-500 dark:text-rose-50',\n },\n link: {\n base: 'bg-transparent text-rose-600 dark:text-rose-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-rose-600 dark:text-rose-400',\n },\n },\n indigo: {\n solid: {\n base: 'bg-indigo-500 dark:bg-indigo-700/70 text-indigo-50 dark:text-indigo-50',\n border: 'border-indigo-600/80 dark:border-indigo-600',\n hover: 'hover:bg-indigo-600 dark:hover:bg-indigo-800',\n icon: 'text-indigo-50 dark:text-indigo-50',\n },\n ghost: {\n base: 'bg-indigo-100 dark:bg-indigo-800/20 text-indigo-900 dark:text-indigo-100',\n border: 'border-indigo-100 dark:border-indigo-800/20',\n hover: 'hover:bg-indigo-200 dark:hover:bg-indigo-800/40 hover:border-indigo-200 dark:hover:border-indigo-700',\n icon: 'text-indigo-500 dark:text-indigo-500',\n },\n outline: {\n base: 'bg-transparent text-indigo-500 dark:text-indigo-50',\n border: 'border-indigo-500 dark:border-indigo-600',\n hover: 'hover:bg-indigo-500/10 dark:hover:bg-indigo-400/10',\n icon: 'text-indigo-500 dark:text-indigo-50',\n },\n link: {\n base: 'bg-transparent text-indigo-600 dark:text-indigo-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-indigo-600 dark:text-indigo-400',\n },\n },\n red: {\n solid: {\n base: 'bg-red-500 dark:bg-red-700/70 text-red-50 dark:text-red-50',\n border: 'border-red-600/80 dark:border-red-600',\n hover: 'hover:bg-red-600 dark:hover:bg-red-800',\n icon: 'text-red-50 dark:text-red-50',\n },\n ghost: {\n base: 'bg-red-100 dark:bg-red-800/20 text-red-900 dark:text-red-100',\n border: 'border-red-100 dark:border-red-800/20',\n hover: 'hover:bg-red-200 dark:hover:bg-red-800/40 hover:border-red-200 dark:hover:border-red-700',\n icon: 'text-red-500 dark:text-red-500',\n },\n outline: {\n base: 'bg-transparent text-red-500 dark:text-red-50',\n border: 'border-red-500 dark:border-red-600',\n hover: 'hover:bg-red-500/10 dark:hover:bg-red-400/10',\n icon: 'text-red-500 dark:text-red-50',\n },\n link: {\n base: 'bg-transparent text-red-600 dark:text-red-400',\n border: 'border-transparent',\n hover: 'hover:opacity-70',\n icon: 'text-red-600 dark:text-red-400',\n },\n },\n}\n","<script lang=\"ts\" setup>\nimport type { MediaObject } from '@fiction/types'\nimport type { ButtonDesign, ColorThemeUser } from './themes'\nimport { twMerge } from 'tailwind-merge'\nimport { computed } from 'vue'\nimport FSpinner from './FSpinner.vue'\nimport { themes } from './themes'\n\ninterface ButtonProps {\n theme?: ColorThemeUser\n design?: ButtonDesign\n size?: 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n rounding?: 'md' | 'lg' | 'full'\n href?: string\n icon?: string | MediaObject\n iconAfter?: string | MediaObject\n tag?: 'button' | 'div' | 'a'\n loading?: boolean\n class?: string\n}\n\nconst {\n theme = 'default',\n design = 'solid',\n size = 'md',\n rounding = 'full',\n href,\n icon,\n iconAfter,\n tag = 'button',\n loading = false,\n class: className = '',\n} = defineProps<ButtonProps>()\n\nconst icons = computed(() => {\n return {\n icon: typeof icon === 'string' ? icon : icon?.className,\n iconAfter: typeof iconAfter === 'string' ? iconAfter : iconAfter?.className,\n }\n})\n\nconst componentTag = computed(() => {\n if (href)\n return 'a'\n return tag\n})\n\nconst spinnerSize = computed(() => {\n const sizes = {\n xxs: 'size-2.5',\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6',\n }\n return sizes[size]\n})\n\nconst getThemeConfig = computed(() => {\n const v = themes[theme]?.[design] || themes.default[design]\n\n if (!v) {\n console.warn(`FButton: No theme configuration found for theme \"${theme}\" and design \"${design}\". Falling back to default solid theme.`)\n }\n\n return v || { base: '', border: '', hover: '', icon: '' }\n})\n\nconst buttonClass = computed(() => {\n const baseClasses = 'relative inline-flex items-center justify-center gap-2 font-medium transition-all duration-200 focus:outline-none active:opacity-80 cursor-pointer'\n\n // Size classes\n const sizeClasses = {\n xxs: 'px-2 py-0.5 text-[10px]',\n xs: 'px-3 py-1 text-[11px]',\n sm: 'px-3 py-1.5 text-xs',\n md: 'px-4 py-2 text-sm',\n lg: 'px-6 py-3 text-base',\n xl: 'px-8 py-4 text-base',\n }\n\n // Override padding for link design\n const linkPadding = design === 'link' ? '!px-1' : ''\n\n // Rounding classes\n const roundingClasses = {\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n }\n\n // Get theme classes\n const themeClasses = getThemeConfig.value\n\n const out = [\n baseClasses,\n sizeClasses[size],\n linkPadding,\n roundingClasses[rounding],\n themeClasses.base,\n `border ${themeClasses.border}`,\n themeClasses.hover,\n ].filter(Boolean).join(' ')\n\n return twMerge(out, className)\n})\n\nconst iconClass = computed(() => {\n const themeClasses = getThemeConfig.value\n return {\n design: themeClasses.icon || '',\n\n }\n})\n</script>\n\n<template>\n <component\n :is=\"componentTag\"\n :href=\"href\"\n :class=\"buttonClass\"\n >\n <!-- Loading spinner overlay -->\n <div\n v-if=\"loading\"\n class=\"absolute inset-0 flex items-center justify-center\"\n >\n <FSpinner :class=\"spinnerSize\" />\n </div>\n\n <!-- Button content -->\n <span\n class=\"flex items-center gap-2 transition-opacity duration-200 whitespace-nowrap\"\n :class=\"loading ? 'opacity-0' : 'opacity-100'\"\n >\n <span v-if=\"icons.icon\" class=\"flex items-center size-[1.1em] mt-[-.07em]\" :class=\"[icons.icon, iconClass]\" />\n <slot />\n <span v-if=\"icons.iconAfter\" class=\"flex items-center size-[1.1em] mt-[-.07em]\" :class=\"[icons.iconAfter, iconClass]\" />\n </span>\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport type { Self } from '@fiction/types'\nimport { SOCIAL_PLATFORMS } from '../accounts'\nimport FButton from '@/ui/common/FButton.vue'\nimport ElModeHeader from './ElModeHeader.vue'\n\nconst { self } = defineProps<{\n self: Self\n}>()\n</script>\n\n<template>\n <div class=\"flex-1 flex flex-col min-h-0 py-6 space-y-6 h-full overflow-scroll [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden relative\">\n <!-- Name/Avatar Header -->\n <ElModeHeader :self=\"self\" />\n\n <div class=\"flex-1 space-y-6 pb-12\">\n\n\n <!-- About Section -->\n <div v-if=\"self.summary\" class=\"text-sm bg-white/10 backdrop-blur-sm rounded-2xl p-4 border border-white/20 space-y-3\">\n <h3 class=\"font-medium text-white/50\">\n About\n </h3>\n <p class=\"font-light text-white/80 italic leading-relaxed font-serif\">\n \"{{ self.headline }}\"\n </p>\n\n <div class=\" text-white/70 leading-relaxed\" v-html=\"self.summary\" />\n </div>\n\n <!-- Entity Type Info -->\n <div v-if=\"self.entityType === 'company'\" class=\"bg-white/5 backdrop-blur-sm rounded-2xl p-4 border border-white/10\">\n <h3 class=\"text-sm font-medium text-white/90 mb-2\">\n Company Info\n </h3>\n <p class=\"text-sm text-white/70 leading-relaxed\">\n This is a company digital self representing {{ self.name }}.\n </p>\n </div>\n\n <!-- Email Contact -->\n <div v-if=\"self.email\" class=\"space-y-3\">\n <h3 class=\"text-sm font-medium text-white/90\">\n Contact\n </h3>\n <FButton\n design=\"ghost\"\n theme=\"default\"\n size=\"sm\"\n class=\"bg-white/5 hover:bg-white/10 border border-white/10 text-white/80 text-sm justify-start h-10 w-full\"\n icon=\"i-heroicons-envelope\"\n :href=\"`mailto:${self.email}`\"\n target=\"_blank\"\n >\n Email\n </FButton>\n </div>\n\n <!-- Social Accounts -->\n <div v-if=\"self.accounts && self.accounts.length > 0\" class=\"space-y-3\">\n <h3 class=\"text-sm font-medium text-white/90\">\n Links\n </h3>\n <div class=\"grid grid-cols-2 gap-3\">\n <FButton\n v-for=\"account in self.accounts\"\n :key=\"`${account.platform}-${account.handle}`\"\n design=\"ghost\"\n theme=\"default\"\n size=\"md\"\n class=\"bg-white/10 hover:bg-white/20 border border-white/20 text-white/80 \"\n :icon=\"SOCIAL_PLATFORMS[account.platform].icon\"\n :href=\"SOCIAL_PLATFORMS[account.platform].getUrl(account.handle)\"\n target=\"_blank\"\n >\n {{ SOCIAL_PLATFORMS[account.platform].label }}\n </FButton>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { Self } from '@fiction/types'\nimport type { SelfController } from '../SelfController'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport FSpinner from '@/ui/common/FSpinner.vue'\nimport { getFallbackAvatarDataUrl, getSelfAvatarUrl } from '../utils'\nimport ElModeHeader from './ElModeHeader.vue'\n\nconst { selfController, self } = defineProps<{\n selfController?: SelfController\n self: Self\n}>()\n\nconst message = ref('')\nconst messagesContainer = ref<HTMLElement>()\nconst textarea = ref<HTMLTextAreaElement>()\n\nconst selfAvatarUrl = computed(() => {\n return getSelfAvatarUrl(self) || getFallbackAvatarDataUrl()\n})\n\n// Group consecutive messages and determine if avatar should show\nfunction shouldShowAvatar(messages: any[], index: number): boolean {\n const currentMsg = messages[index]\n const nextMsg = messages[index + 1]\n\n // Show avatar if this is the last message in a group (next message is from different sender or doesn't exist)\n return !nextMsg || nextMsg.sender !== currentMsg.sender\n}\n\n// Auto-start text conversation when component mounts (no permissions needed)\nonMounted(async () => {\n if (selfController && !selfController.textState.value.isConnected) {\n try {\n await selfController.startTextConversation()\n } catch (error) {\n console.error('Failed to start text conversation:', error)\n }\n }\n})\n\nasync function sendMessage() {\n if (!message.value.trim() || !selfController || !selfController.textState.value.isConnected)\n return\n\n const messageText = message.value\n message.value = ''\n\n // Reset textarea height and refocus immediately\n if (textarea.value) {\n textarea.value.style.height = 'auto'\n textarea.value.focus()\n }\n\n try {\n await selfController.sendChatMessage(messageText)\n scrollToBottom()\n } catch (error) {\n console.error('Error sending message:', error)\n }\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n sendMessage()\n }\n}\n\nfunction scrollToBottom() {\n if (messagesContainer.value) {\n nextTick(() => {\n const container = messagesContainer.value!\n container.scrollTop = container.scrollHeight\n })\n }\n}\n\n// Auto-grow textarea as user types\nfunction adjustTextareaHeight() {\n if (!textarea.value)\n return\n\n // Reset height to auto to get the correct scrollHeight\n textarea.value.style.height = 'auto'\n\n // Set height to scrollHeight, but cap at 150px\n const newHeight = Math.min(textarea.value.scrollHeight, 150)\n textarea.value.style.height = `${newHeight}px`\n}\n\n// Watch message input to auto-grow textarea\nwatch(message, () => {\n nextTick(() => adjustTextareaHeight())\n})\n\n// Watch for new messages to auto-scroll\nwatch(() => selfController?.sharedMessages.value, (messages) => {\n if (messages && messages.length > 0) {\n nextTick(() => scrollToBottom())\n }\n}, { immediate: true, deep: true })\n</script>\n\n<template>\n <div class=\"flex flex-col h-full relative\">\n <!-- Name/Avatar Header -->\n <div class=\"pb-4\">\n <ElModeHeader :self=\"self\" />\n </div>\n\n <!-- Connection Status Badge -->\n <div\n v-if=\"selfController?.textState.value.connectionStatus !== 'connected'\"\n class=\"text-theme-600 py-16 flex flex-col items-center justify-center gap-2 text-sm\"\n >\n <FSpinner class=\"size-4\" />\n </div>\n\n <div\n ref=\"messagesContainer\"\n class=\"flex-1 overflow-y-auto overflow-x-hidden py-8 space-y-1 min-h-0 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\"\n >\n <div\n v-for=\"(msg, index) in selfController?.sharedMessages.value.filter(m => m.sender !== 'system') ?? []\"\n :key=\"msg.id\"\n class=\"flex gap-2 items-end\"\n :class=\"{\n 'justify-end': msg.sender === 'user',\n 'justify-start': msg.sender === 'agent',\n 'mb-4': shouldShowAvatar(selfController?.sharedMessages.value.filter(m => m.sender !== 'system') ?? [], index),\n }\"\n >\n <!-- Avatar - only show for agent messages on last message of group -->\n <div v-if=\"msg.sender === 'agent'\" class=\"flex-shrink-0 size-8\">\n <img\n v-if=\"shouldShowAvatar(selfController?.sharedMessages.value.filter(m => m.sender !== 'system') ?? [], index)\"\n :src=\"selfAvatarUrl\"\n :alt=\"self.name\"\n class=\"size-7 rounded-full object-cover\"\n />\n </div>\n\n <!-- Message bubble -->\n <div class=\"max-w-[70%]\">\n <div\n class=\"rounded-2xl px-3.5 py-1.5 backdrop-blur-sm\"\n :class=\"msg.sender === 'user'\n ? 'bg-primary-500/80 text-white'\n : 'bg-white/15 text-white/95'\"\n >\n <p class=\"text-sm leading-[1.5] whitespace-pre-wrap break-words\">\n {{ msg.text }}\n </p>\n </div>\n </div>\n </div>\n\n <!-- Thinking indicator -->\n <div v-if=\"selfController?.textState.value.isThinking\" class=\"flex gap-2 justify-start items-end mb-4\">\n <div class=\"flex-shrink-0\">\n <img\n :src=\"selfAvatarUrl\"\n :alt=\"self.name\"\n class=\"size-8 rounded-full object-cover\"\n />\n </div>\n <div class=\"rounded-2xl px-4 py-2.5 bg-white/15 backdrop-blur-sm flex items-center\">\n <i class=\"i-svg-spinners-3-dots-fade size-6 text-white/70\" />\n </div>\n </div>\n </div>\n\n <div class=\"flex-shrink-0 pt-6 pb-2\">\n <textarea\n ref=\"textarea\"\n v-model=\"message\"\n rows=\"1\"\n :placeholder=\"selfController?.textState.value.isConnected ? 'Message' : 'Connecting...'\"\n :disabled=\"!selfController?.textState.value.isConnected\"\n style=\"font-size: 16px; resize: none;\"\n class=\"w-full bg-white/10 backdrop-blur-sm border border-white/20 rounded-3xl px-5 py-3 text-white placeholder-white/50 focus:outline-none focus:border-white/40 disabled:opacity-50 overflow-y-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\"\n @keydown=\"handleKeydown\"\n />\n <div class=\"text-[10px] text-white/40 text-center mt-2\">\n Press Enter to send, Shift+Enter for new line\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { Self } from '@fiction/types'\nimport { getFallbackAvatarDataUrl, handleImageError } from '../utils'\n\ninterface Props {\n self: Self\n}\n\nconst { self } = defineProps<Props>()\n\nfunction getAvatarSrc(): string {\n if (self.avatar?.src) {\n return self.avatar.src\n }\n return getFallbackAvatarDataUrl()\n}\n</script>\n\n<template>\n <!-- Centered layout for default \"self\" mode with large avatar and online indicator -->\n <div class=\"flex flex-col items-center text-center gap-4\">\n <!-- Avatar with online indicator -->\n <div class=\"relative flex-shrink-0\">\n <div class=\"w-20 h-20 sm:w-24 sm:h-24 rounded-full overflow-hidden border-4 border-white\">\n <img\n :src=\"getAvatarSrc()\"\n :alt=\"self.name\"\n class=\"w-full h-full object-cover\"\n @error=\"handleImageError\"\n />\n </div>\n\n <div class=\"absolute top-1.5 right-1.5\">\n <div class=\"size-4 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-4 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Name and title -->\n <div class=\"min-w-0\">\n <h1 class=\"text-3xl font-light text-white mb-2 truncate\">\n {{ self.name }}\n </h1>\n <p class=\"text-base font-light text-white/60 line-clamp-1\">\n {{ self.title }}\n </p>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\n\ndefineOptions({ name: 'SelfSidebarClose' })\n\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst inView = ref(false)\n\nonMounted(() => {\n setTimeout(() => {\n inView.value = true\n }, 100)\n})\n</script>\n\n<template>\n <a\n class=\"close block cursor-pointer w-[60px] h-[60px] rounded-full transition-all duration-1000 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-110 active:scale-90 hover:rotate-90\"\n @click=\"$emit('click', $event)\"\n >\n <!-- Background circle (invisible, for hover area) -->\n <span class=\"absolute inset-0 rounded-full transition-all\" />\n\n <!-- Close lines container -->\n <span class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[28px] h-[28px] overflow-hidden\">\n <!-- Line 1 - animates from bottom-left to center, rotates 45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 rotate-45' : 'translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.15s\"\n />\n\n <!-- Line 2 - animates from top-left to center, rotates -45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 -rotate-45' : '-translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.45s\"\n />\n </span>\n </a>\n</template>\n","<script lang=\"ts\" setup>\nimport type { NavItem } from '@fiction/types'\nimport { computed } from 'vue'\nimport SelfSidebarClose from './SelfSidebarClose.vue'\n\ndefineOptions({ name: 'ElSidebar' })\n\nconst props = defineProps<{\n modelValue: boolean\n items: NavItem[]\n position?: 'left' | 'right'\n title?: string\n widthClasses?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\nconst position = props.position || 'left'\nconst widthClasses = props.widthClasses || 'w-[80%] max-w-[300px]'\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: (value) => emit('update:modelValue', value),\n})\n\nconst visibleItems = computed(() => props.items.filter((item) => !item.isHidden))\n\nfunction handleItemClick(item: NavItem) {\n if (item.isDisabled)\n return\n\n if (item.onClick) {\n item.onClick({ item, event: new MouseEvent('click') })\n } else if (item.href) {\n if (item.href.includes('http')) {\n window.open(item.href, item.target || '_self')?.focus()\n } else {\n window.location.href = item.href\n }\n }\n\n isOpen.value = false\n}\n\n// Position-specific classes\nconst transitionClasses = computed(() => {\n if (position === 'left') {\n return {\n enter: '-translate-x-full',\n leave: '-translate-x-full',\n position: 'justify-start',\n closeButton: '-right-16',\n }\n } else {\n return {\n enter: 'translate-x-full',\n leave: 'translate-x-full',\n position: 'justify-end',\n closeButton: '-left-16',\n }\n }\n})\n</script>\n\n<template>\n <!-- Backdrop -->\n <Transition\n enter-active-class=\"transition-opacity duration-300 ease-out\"\n leave-active-class=\"transition-opacity duration-200 ease-in\"\n enter-from-class=\"opacity-0\"\n enter-to-class=\"opacity-100\"\n leave-from-class=\"opacity-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"isOpen\"\n class=\"absolute inset-0 z-40 bg-black/50 backdrop-blur-sm\"\n @click=\"isOpen = false\"\n />\n </Transition>\n\n <!-- Sidebar -->\n <Transition\n enter-active-class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)]\"\n leave-active-class=\"transition-all duration-400 ease-[cubic-bezier(0.25,1,0.33,1)]\"\n :enter-from-class=\"transitionClasses.enter\"\n enter-to-class=\"translate-x-0\"\n leave-from-class=\"translate-x-0\"\n :leave-to-class=\"transitionClasses.leave\"\n >\n <div\n v-if=\"isOpen\"\n class=\"absolute inset-0 z-50 flex\"\n :class=\"transitionClasses.position\"\n @click=\"isOpen = false\"\n >\n <!-- Menu Panel -->\n <div\n class=\"relative h-full shadow-2xl bg-black/30 backdrop-blur-xl flex flex-col justify-center\"\n :class=\"widthClasses\"\n @click.stop\n >\n <SelfSidebarClose\n class=\"absolute top-4 z-10 text-white\"\n :class=\"transitionClasses.closeButton\"\n @click=\"isOpen = false\"\n />\n\n <!-- Title -->\n <div v-if=\"title\" class=\"px-9 pt-12 pb-4\">\n <h3 class=\"text-base font-medium text-theme-400\">\n {{ title }}\n </h3>\n </div>\n\n <!-- Header Slot -->\n <div v-if=\"$slots.header\" class=\"px-4 pb-8 border-b border-white/10\">\n <slot name=\"header\" />\n </div>\n\n <!-- Menu Items -->\n <div class=\"flex-1 p-6 space-y-2 overflow-y-auto\" :class=\"{ 'pt-6': !title && !$slots.header, 'pt-4': title || $slots.header }\">\n <TransitionGroup\n enter-active-class=\"transition-all duration-400 ease-[cubic-bezier(0.25,1,0.33,1)]\"\n leave-active-class=\"transition-all duration-200 ease-[cubic-bezier(0.25,1,0.33,1)]\"\n :enter-from-class=\"position === 'left' ? '-translate-x-4 opacity-0' : 'translate-x-4 opacity-0'\"\n enter-to-class=\"translate-x-0 opacity-100\"\n leave-from-class=\"translate-x-0 opacity-100\"\n :leave-to-class=\"position === 'left' ? '-translate-x-4 opacity-0' : 'translate-x-4 opacity-0'\"\n >\n <button\n v-for=\"(item, index) in visibleItems\"\n :key=\"item.key || item.label || index\"\n :style=\"{ transitionDelay: `${index * 40}ms` }\"\n class=\"cursor-pointer w-full text-left p-3 rounded-xl transition-all duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group\"\n :class=\"[\n item.isActive\n ? 'bg-primary-500/20 border border-primary-500/40'\n : 'hover:bg-white/10',\n item.isDisabled && 'opacity-50 cursor-not-allowed',\n ]\"\n :disabled=\"item.isDisabled\"\n @click=\"handleItemClick(item)\"\n >\n <div class=\"flex items-center gap-3\">\n <i\n v-if=\"item.icon?.src\"\n class=\"size-5 flex-shrink-0 transition-transform duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group-hover:scale-110\"\n :class=\"[\n item.icon.src,\n item.isActive ? 'text-primary-400' : 'text-white/70 group-hover:text-white',\n ]\"\n />\n <div class=\"flex-1\">\n <div\n class=\"font-medium text-sm\"\n :class=\"item.isActive ? 'text-primary-300' : 'text-white'\"\n >\n {{ item.label }}\n </div>\n <div v-if=\"item.subLabel\" class=\"text-xs text-white/50 mt-0.5\">\n {{ item.subLabel }}\n </div>\n </div>\n </div>\n </button>\n </TransitionGroup>\n </div>\n\n <!-- Footer -->\n <div class=\"p-6\">\n <slot name=\"footer\">\n <div class=\"text-center\">\n <p class=\"text-[10px] text-white/40 font-sans\">\n Digital Self by <a href=\"https://www.fiction.com\" target=\"_blank\" class=\"text-white/60 hover:text-white/80 transition-colors\">Fiction</a>\n </p>\n </div>\n </slot>\n </div>\n </div>\n </div>\n </Transition>\n</template>\n","<script lang=\"ts\" setup>\nimport type { AgentMode } from '../schema'\nimport type { SelfController } from '../SelfController'\nimport type { NavItem } from '@fiction/types'\nimport { computed } from 'vue'\nimport { AGENT_MODES } from '../schema'\nimport ElSidebar from './ElSidebar.vue'\n\ndefineOptions({ name: 'SelfModeSidebar' })\n\nconst props = defineProps<{\n modelValue: boolean\n selfController?: SelfController\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: (value) => emit('update:modelValue', value),\n})\n\nconst currentMode = computed(() => props.selfController?.agentMode?.value ?? 'self')\n\nconst modeItems = computed<NavItem[]>(() => AGENT_MODES.map((mode) => ({\n key: mode.mode,\n icon: { src: mode.icon },\n label: mode.label,\n isActive: currentMode.value === mode.mode,\n onClick: () => {\n props.selfController?.setMode(mode.mode as AgentMode)\n },\n})))\n</script>\n\n<template>\n <ElSidebar\n v-model=\"isOpen\"\n :items=\"modeItems\"\n position=\"right\"\n title=\"Mode\"\n width-classes=\"w-[80%] max-w-[255px]\"\n />\n</template>\n","<script lang=\"ts\" setup>\nimport type { FictionSDK } from '../../sdkClient'\nimport type { Self } from '../schema'\nimport type { NavItem } from '@fiction/types'\nimport { computed } from 'vue'\nimport ElSidebar from './ElSidebar.vue'\n\ndefineOptions({ name: 'SelfSidebar' })\n\nconst props = defineProps<{\n modelValue: boolean\n self: Self\n sdk: FictionSDK\n title?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: (value) => emit('update:modelValue', value),\n})\n\nconst menuItems = computed<NavItem[]>(() => {\n const items: NavItem[] = [\n {\n key: 'share',\n icon: { src: 'i-tabler-share' },\n label: 'Share This Digital Self',\n onClick: () => {\n const url = `${window.location.origin}/@${props.self.handle || props.self.selfId}`\n navigator.clipboard.writeText(url)\n // TODO: Show notification that URL was copied\n },\n },\n {\n key: 'profile',\n icon: { src: 'i-tabler-user' },\n label: 'Visit Full Profile',\n onClick: () => {\n window.open(`/@${props.self.handle || props.self.selfId}`, '_blank')\n },\n },\n {\n key: 'create',\n icon: { src: 'i-tabler-sparkles' },\n label: 'Create Your Own',\n onClick: () => {\n window.open('/auth', '_blank')\n },\n },\n ]\n\n // Add logout option if user is authenticated\n if (props.sdk.activeUser.value) {\n items.push({\n key: 'logout',\n icon: { src: 'i-tabler-logout' },\n label: 'Logout',\n onClick: async () => {\n await props.sdk.logout()\n },\n })\n }\n\n return items\n})\n</script>\n\n<template>\n <ElSidebar\n v-model=\"isOpen\"\n :items=\"menuItems\"\n position=\"left\"\n :title=\"title || 'Menu'\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\n\n// Audio state - single source of truth\nexport interface AudioState {\n // Audio metrics (0-1 normalized)\n inputLevel?: number\n outputLevel?: number\n\n // Real frequency data callback (optional - falls back to algorithmic)\n // Callback allows fetching fresh data every frame for real-time visualization\n getFrequencyData?: () => Uint8Array | undefined\n\n // State (determines visualization behavior)\n mode: 'idle' | 'listening' | 'speaking' | 'processing' | 'connected'\n}\n\ninterface FAudioVisualizerProps {\n audioState?: AudioState\n\n // Visual configuration\n color?: 'blue' | 'green' | 'cyan' | 'gray' | 'auto' // 'auto' = mode-based\n size?: 'sm' | 'md' | 'lg'\n\n // Advanced features\n enableWaveMotion?: boolean\n enableGlow?: boolean\n}\n\nconst props = withDefaults(defineProps<FAudioVisualizerProps>(), {\n color: 'auto',\n size: 'md',\n enableWaveMotion: true,\n enableGlow: false,\n})\n\n// Size configuration presets\n// IMPORTANT: bars must equal VOICE_FREQUENCIES.length (68) for proper frequency mapping\nconst SIZE_CONFIGS = {\n sm: { bars: 68, barWidth: 2, barSpacing: 1, minHeight: 3, maxHeight: 40 },\n md: { bars: 68, barWidth: 3, barSpacing: 1, minHeight: 4, maxHeight: 80 },\n lg: { bars: 68, barWidth: 4, barSpacing: 2, minHeight: 5, maxHeight: 120 },\n}\n\nconst config = computed(() => SIZE_CONFIGS[props.size])\n\n// Physics constants - balanced for smooth motion without jitter\nconst STIFFNESS = 0.25\nconst DAMPING = 0.35\n\n// Peak indicator constants\nconst PEAK_HOLD_TIME = 500 // ms to hold peak\nconst PEAK_DECAY_STIFFNESS = 0.15\nconst PEAK_DECAY_DAMPING = 0.4\n\n// Voice-optimized frequency bands\nconst VOICE_FREQUENCIES = [\n 85,\n 100,\n 120,\n 140,\n 155,\n 170,\n 185,\n 200,\n 215,\n 230,\n 245,\n 260,\n 275,\n 290,\n 315,\n 340,\n 355,\n 375,\n 400,\n 425,\n 450,\n 475,\n 500,\n 530,\n 560,\n 590,\n 630,\n 670,\n 700,\n 730,\n 780,\n 820,\n 880,\n 940,\n 1000,\n 1100,\n 1200,\n 1300,\n 1400,\n 1500,\n 1600,\n 1700,\n 1800,\n 1900,\n 2000,\n 2200,\n 2300,\n 2500,\n 2600,\n 2800,\n 3000,\n 3200,\n 3500,\n 3800,\n 4000,\n 4300,\n 4500,\n 4800,\n 5000,\n 5300,\n 5500,\n 5800,\n 6000,\n 6500,\n 7000,\n 7500,\n 8000,\n 8500,\n]\n\nconst canvasRef = ref<HTMLCanvasElement>()\nlet ctx: CanvasRenderingContext2D | null = null\nlet animationFrame: number | null = null\n\n// Mobile optimization\nconst isMobile = ref(false)\nconst isVisible = ref(true)\n\n// Gradient caching\nconst gradientCache = new Map<string, CanvasGradient>()\n\n// Physics state (dynamically sized)\nlet heights: Float32Array\nlet velocities: Float32Array\nlet targets: Float32Array\nlet smoothedTargets: Float32Array\nlet peaks: Float32Array\nlet peakHoldTime: Float32Array\nlet peakDecayVelocity: Float32Array\n\n// Initialize physics arrays\nfunction initPhysicsArrays(barCount: number) {\n const { minHeight } = config.value\n heights = new Float32Array(barCount).fill(minHeight)\n velocities = new Float32Array(barCount).fill(0)\n targets = new Float32Array(barCount).fill(minHeight)\n smoothedTargets = new Float32Array(barCount).fill(minHeight)\n peaks = new Float32Array(barCount).fill(minHeight)\n peakHoldTime = new Float32Array(barCount).fill(0)\n peakDecayVelocity = new Float32Array(barCount).fill(0)\n}\n\n// Auto color selection based on mode\nconst visualColor = computed(() => {\n if (props.color !== 'auto')\n return props.color\n\n const mode = props.audioState?.mode ?? 'idle'\n if (mode === 'listening')\n return 'blue' // User actively speaking\n if (mode === 'processing')\n return 'cyan' // Agent processing (waiting for response)\n if (mode === 'speaking')\n return 'green' // Agent speaking\n return 'gray' // Idle/connected\n})\n\n// Color values for each mode\nconst COLOR_CONFIGS = {\n blue: {\n primary: [59, 130, 246], // User speaking\n glow: 'rgba(59,130,246,0.4)',\n },\n cyan: {\n primary: [34, 211, 238], // Agent processing/thinking (Tailwind cyan-500)\n glow: 'rgba(34,211,238,0.4)',\n },\n green: {\n primary: [34, 197, 94], // Agent speaking\n glow: 'rgba(34,197,94,0.4)',\n },\n gray: {\n primary: [156, 163, 175], // Idle\n glow: 'rgba(156,163,175,0.2)',\n },\n}\n\n// Frequency-specific physics modifiers\nfunction getFrequencyPhysics(freq: number) {\n if (freq < 200)\n return { stiffnessMultiplier: 0.7, dampingMultiplier: 1.2 }\n if (freq < 1000)\n return { stiffnessMultiplier: 1.0, dampingMultiplier: 1.0 }\n if (freq < 4000)\n return { stiffnessMultiplier: 1.3, dampingMultiplier: 0.8 }\n return { stiffnessMultiplier: 1.5, dampingMultiplier: 0.6 }\n}\n\n// DPR scaling\nlet dpr = 1\nfunction resizeCanvas() {\n if (!canvasRef.value)\n return\n\n if (typeof window !== 'undefined') {\n dpr = Math.max(1, Math.min(2, window.devicePixelRatio || 1))\n }\n\n const { bars, barWidth, barSpacing, maxHeight } = config.value\n const cssW = (barWidth + barSpacing) * bars - barSpacing\n const cssH = maxHeight\n canvasRef.value.width = Math.floor(cssW * dpr)\n canvasRef.value.height = Math.floor(cssH * dpr)\n canvasRef.value.style.width = `${cssW}px`\n canvasRef.value.style.height = `${cssH}px`\n if (ctx)\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0)\n\n clearGradientCache()\n}\n\n// Map frequency data to voice-optimized bands\nfunction mapFrequencyDataToBands(frequencyData: Uint8Array): number[] {\n const bands = Array.from({ length: VOICE_FREQUENCIES.length }, (_, i) => {\n const targetFreq = VOICE_FREQUENCIES[i]\n const estimatedNyquist = 12000\n const binIndex = Math.floor((targetFreq / estimatedNyquist) * frequencyData.length)\n const binWidth = Math.max(1, Math.floor(frequencyData.length / VOICE_FREQUENCIES.length / 2))\n\n let amplitude = 0\n for (let j = 0; j < binWidth && (binIndex + j) < frequencyData.length; j++) {\n amplitude += frequencyData[binIndex + j]\n }\n amplitude = (amplitude / binWidth) / 255\n\n // Voice-specific frequency weighting\n let weight = 1.0\n if (targetFreq < 150) {\n weight = 0.1\n } else if (targetFreq < 200) {\n weight = 0.3\n } else if (targetFreq >= 400 && targetFreq <= 600) {\n weight = 1.4\n } else if (targetFreq >= 1400 && targetFreq <= 1600) {\n weight = 1.3\n } else if (targetFreq >= 2400 && targetFreq <= 2600) {\n weight = 1.2\n } else if (targetFreq >= 200 && targetFreq <= 2000) {\n weight = 1.1\n } else if (targetFreq >= 2000 && targetFreq <= 4000) {\n weight = 0.9\n } else if (targetFreq > 6000) {\n weight = 0.4\n } else {\n weight = 0.7\n }\n\n const compressed = amplitude ** 0.5\n const scaled = compressed * 0.6\n const finalAmplitude = scaled * weight\n\n return Math.min(0.85, finalAmplitude)\n })\n\n return bands\n}\n\n// Generate intensity-based bands (fallback when no real frequency data)\nfunction generateIntensityBasedBands(intensity: number): number[] {\n const bands = Array.from({ length: VOICE_FREQUENCIES.length }, () => 0)\n\n if (intensity <= 0) {\n return bands\n }\n\n for (let i = 0; i < VOICE_FREQUENCIES.length; i++) {\n const freq = VOICE_FREQUENCIES[i]\n let amplitude = 0\n\n if (freq >= 400 && freq <= 600) {\n amplitude = intensity * 0.9\n } else if (freq >= 1400 && freq <= 1600) {\n amplitude = intensity * 0.8\n } else if (freq >= 2400 && freq <= 2600) {\n amplitude = intensity * 0.7\n } else if (freq >= 200 && freq <= 2000) {\n amplitude = intensity * 0.6\n } else if (freq >= 85 && freq <= 300) {\n amplitude = intensity * 0.4\n } else {\n amplitude = intensity * 0.2\n }\n\n amplitude *= (0.8 + Math.random() * 0.4)\n bands[i] = Math.max(0, Math.min(1, amplitude))\n }\n\n return bands\n}\n\n// Add wave motion overlay\nfunction addWaveMotionOverlay(bands: number[], intensity: number, mode: AudioState['mode']): number[] {\n if (!props.enableWaveMotion || typeof window === 'undefined')\n return bands\n\n const time = performance.now() * 0.001\n const enhancedBands = [...bands]\n\n for (let i = 0; i < bands.length; i++) {\n const frequency = i * (2 * Math.PI) / bands.length\n let waveMotion = 0\n\n if (mode === 'listening' || mode === 'speaking') {\n const primaryWave = Math.sin(time * 4.2 + frequency * 0.6 - time * 2) * 0.15\n const secondaryWave = Math.sin(time * 6.8 + frequency * 1.2 - time * 1.5) * 0.08\n const breathing = Math.sin(time * 0.8) * 0.05\n waveMotion = primaryWave + secondaryWave + breathing\n } else if (mode === 'processing') {\n // Processing mode - slower, thoughtful wave pattern\n const primaryWave = Math.sin(time * 3.0 + frequency * 0.5 - time * 1.5) * 0.12\n const secondaryWave = Math.sin(time * 5.0 + frequency * 0.8 - time * 1.2) * 0.06\n const breathing = Math.sin(time * 0.6) * 0.04\n waveMotion = primaryWave + secondaryWave + breathing\n } else if (mode === 'connected') {\n const gentleBreath = Math.sin(time * 0.6) * 0.1\n const subtleWave = Math.sin(time * 2 + frequency * 0.3) * 0.05\n waveMotion = gentleBreath + subtleWave\n } else {\n // Idle state - simple algorithmic sine wave\n const sineWave = Math.sin(time * 1.5 + frequency) * 0.12\n const breathing = Math.sin(time * 0.4) * 0.05\n waveMotion = sineWave + breathing\n }\n\n const motionIntensity = Math.max(0.3, intensity)\n enhancedBands[i] = Math.max(0, Math.min(0.9, bands[i] + waveMotion * motionIntensity))\n }\n\n return enhancedBands\n}\n\n// Main frequency generation function\nfunction generateFrequencyBands(): number[] {\n const state = props.audioState\n if (!state)\n return Array.from({ length: VOICE_FREQUENCIES.length }, () => 0)\n\n let baseBands: number[] = []\n\n // Use real frequency data if available (fetch fresh every frame)\n if (state.getFrequencyData) {\n const frequencyData = state.getFrequencyData()\n if (frequencyData && frequencyData.length > 0) {\n const hasSignal = Array.from(frequencyData).some((val) => val > 5)\n if (hasSignal) {\n baseBands = mapFrequencyDataToBands(frequencyData)\n }\n }\n }\n\n // Fallback to intensity-based patterns\n if (!baseBands.length) {\n const intensity = state.mode === 'listening'\n ? (state.inputLevel ?? 0)\n : state.mode === 'speaking'\n ? (state.outputLevel ?? 0)\n : state.mode === 'connected'\n ? 0.02\n : 0\n\n baseBands = generateIntensityBasedBands(intensity)\n }\n\n // Add wave motion overlay\n const finalIntensity = Math.max(\n state.inputLevel ?? 0,\n state.outputLevel ?? 0,\n )\n return addWaveMotionOverlay(baseBands, finalIntensity, state.mode)\n}\n\nfunction detectMobile() {\n if (typeof window === 'undefined')\n return\n\n const userAgent = navigator.userAgent.toLowerCase()\n const mobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent)\n isMobile.value = mobile\n}\n\nfunction getGradient(key: string, createGradient: () => CanvasGradient): CanvasGradient {\n if (!gradientCache.has(key)) {\n gradientCache.set(key, createGradient())\n }\n return gradientCache.get(key)!\n}\n\nfunction clearGradientCache() {\n gradientCache.clear()\n}\n\nfunction startAnimation() {\n if (typeof window === 'undefined' || !ctx || !canvasRef.value)\n return\n\n detectMobile()\n\n const canvas = canvasRef.value\n const { bars, barWidth, barSpacing, minHeight, maxHeight } = config.value\n const width = canvas.width / dpr\n const height = canvas.height / dpr\n\n function animate(_currentTime: number) {\n if (!ctx)\n return\n\n if (!isVisible.value) {\n animationFrame = requestAnimationFrame(animate)\n return\n }\n\n ctx.clearRect(0, 0, width, height)\n\n const bandLevels = generateFrequencyBands()\n\n // Update target heights with frame-to-frame smoothing to prevent jitter\n const SMOOTHING_FACTOR = 0.3\n for (let i = 0; i < bars; i++) {\n const rawTarget = minHeight + bandLevels[i] * (maxHeight - minHeight)\n // Exponential smoothing: smooth = smooth + alpha * (new - smooth)\n smoothedTargets[i] = smoothedTargets[i] + SMOOTHING_FACTOR * (rawTarget - smoothedTargets[i])\n targets[i] = smoothedTargets[i]\n }\n\n // Physics simulation\n const deltaTime = 16.67\n\n for (let i = 0; i < bars; i++) {\n const freq = VOICE_FREQUENCIES[i]\n const physics = getFrequencyPhysics(freq)\n\n const delta = targets[i] - heights[i]\n const stiffness = STIFFNESS * physics.stiffnessMultiplier\n const damping = DAMPING * physics.dampingMultiplier\n const accel = delta * stiffness - velocities[i] * damping\n velocities[i] += accel\n heights[i] += velocities[i]\n\n // Peak tracking\n if (heights[i] > peaks[i]) {\n peaks[i] = heights[i]\n peakHoldTime[i] = PEAK_HOLD_TIME\n peakDecayVelocity[i] = 0\n } else {\n peakHoldTime[i] = Math.max(0, peakHoldTime[i] - deltaTime)\n\n if (peakHoldTime[i] <= 0) {\n const peakDelta = Math.max(minHeight, heights[i] * 1.1) - peaks[i]\n const peakAccel = peakDelta * PEAK_DECAY_STIFFNESS - peakDecayVelocity[i] * PEAK_DECAY_DAMPING\n peakDecayVelocity[i] += peakAccel\n peaks[i] = Math.max(minHeight, peaks[i] + peakDecayVelocity[i])\n }\n }\n }\n\n // Edge fade distance\n const edgeFadeDistance = bars * 0.15\n\n // Optional glow effect for active states\n const mode = props.audioState?.mode ?? 'idle'\n if ((mode === 'listening' || mode === 'speaking') && props.enableGlow && !isMobile.value) {\n const time = performance.now() * 0.001\n const glowIntensity = 0.1 + (Math.sin(time * 2) * 0.05)\n\n ctx.save()\n ctx.globalCompositeOperation = 'lighter'\n ctx.globalAlpha = glowIntensity\n\n const colorConfig = COLOR_CONFIGS[visualColor.value]\n ctx.fillStyle = colorConfig.glow\n\n for (let i = 0; i < bars; i++) {\n const x = i * (barWidth + barSpacing)\n const h = heights[i]\n const y = height - h\n ctx.beginPath()\n ctx.roundRect(x - 1, y - 1, barWidth + 2, h + 2, [2, 2, 0, 0])\n ctx.fill()\n }\n ctx.restore()\n }\n\n // Draw frequency bars\n const colorConfig = COLOR_CONFIGS[visualColor.value]\n const [r, g, b] = colorConfig.primary\n\n for (let i = 0; i < bars; i++) {\n const x = i * (barWidth + barSpacing)\n const h = heights[i]\n const y = height - h\n const freq = VOICE_FREQUENCIES[i]\n\n // Edge fading\n const distFromEdge = Math.min(i, bars - 1 - i)\n const edgeFade = Math.min(1, distFromEdge / edgeFadeDistance)\n\n const intensity = Math.min(1, h / maxHeight)\n const alpha1 = (0.8 + intensity * 0.2) * edgeFade\n const alpha2 = (0.6 + intensity * 0.2) * edgeFade\n const alpha3 = (0.3 + intensity * 0.1) * edgeFade\n\n const intensityKey = Math.round(intensity * 10) / 10\n const edgeKey = Math.round(edgeFade * 10) / 10\n const cacheKey = `${visualColor.value}-${intensityKey}-${edgeKey}-${h}`\n\n const gradient = getGradient(cacheKey, () => {\n const grad = ctx!.createLinearGradient(0, y, 0, y + h)\n\n if (mode === 'speaking') {\n grad.addColorStop(0, `rgba(${r}, ${g}, ${b}, ${alpha1})`)\n grad.addColorStop(0.5, `rgba(${r}, ${g}, ${b}, ${alpha2})`)\n grad.addColorStop(1, `rgba(${r}, ${g}, ${b}, ${alpha3})`)\n\n // Formant highlighting for vocal frequencies\n if ((freq >= 400 && freq <= 600) || (freq >= 1400 && freq <= 1600)) {\n grad.addColorStop(0, `rgba(74, 222, 128, ${Math.min(1, alpha1 + 0.2)})`)\n }\n } else if (mode === 'listening') {\n grad.addColorStop(0, `rgba(${r}, ${g}, ${b}, ${alpha1})`)\n grad.addColorStop(0.5, `rgba(${r}, ${g}, ${b}, ${alpha2})`)\n grad.addColorStop(1, `rgba(${r}, ${g}, ${b}, ${alpha3})`)\n } else {\n const a1 = 0.6 * edgeFade\n const a2 = 0.4 * edgeFade\n const a3 = 0.2 * edgeFade\n grad.addColorStop(0, `rgba(${r}, ${g}, ${b}, ${a1})`)\n grad.addColorStop(0.6, `rgba(${r}, ${g}, ${b}, ${a2})`)\n grad.addColorStop(1, `rgba(${r}, ${g}, ${b}, ${a3})`)\n }\n\n return grad\n })\n\n ctx.fillStyle = gradient\n ctx.beginPath()\n ctx.roundRect(x, y, barWidth, h, [1, 1, 0, 0])\n ctx.fill()\n\n // Peak indicators\n if (peaks[i] > minHeight + 2) {\n const peakY = height - peaks[i]\n const peakAlpha = peakHoldTime[i] > 0 ? 0.9 : Math.max(0.3, peakHoldTime[i] / PEAK_HOLD_TIME)\n\n ctx.fillStyle = `rgba(255, 255, 255, ${peakAlpha})`\n ctx.fillRect(x, peakY - 1, barWidth, 2)\n\n if (peakAlpha > 0.5 && !isMobile.value) {\n ctx.shadowColor = colorConfig.glow\n ctx.shadowBlur = 3\n ctx.fillRect(x, peakY - 1, barWidth, 2)\n ctx.shadowBlur = 0\n }\n }\n }\n\n animationFrame = requestAnimationFrame(animate)\n }\n\n animationFrame = requestAnimationFrame(animate)\n}\n\nonMounted(() => {\n initPhysicsArrays(config.value.bars)\n\n if (canvasRef.value) {\n ctx = canvasRef.value.getContext('2d')\n resizeCanvas()\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize, { passive: true })\n\n const handleVisibilityChange = () => {\n isVisible.value = !document.hidden\n }\n document.addEventListener('visibilitychange', handleVisibilityChange, { passive: true })\n }\n startAnimation()\n }\n})\n\nfunction onResize() {\n if (typeof window !== 'undefined') {\n const next = Math.max(1, Math.min(2, window.devicePixelRatio || 1))\n if (next !== dpr) { dpr = next }\n }\n resizeCanvas()\n}\n\nonUnmounted(() => {\n if (animationFrame)\n cancelAnimationFrame(animationFrame)\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', onResize)\n document.removeEventListener('visibilitychange', () => {\n isVisible.value = !document.hidden\n })\n }\n})\n\n// Restart animation when props change\nwatch(\n [() => props.audioState?.mode, () => props.size],\n () => {\n // Reinitialize physics arrays if bar count changed\n if (heights.length !== config.value.bars) {\n initPhysicsArrays(config.value.bars)\n }\n\n if (!ctx && canvasRef.value)\n ctx = canvasRef.value.getContext('2d')\n if (animationFrame)\n cancelAnimationFrame(animationFrame)\n\n resizeCanvas()\n startAnimation()\n },\n { immediate: false },\n)\n\nwatch(canvasRef, (c) => {\n if (c && !ctx) {\n ctx = c.getContext('2d')\n resizeCanvas()\n startAnimation()\n }\n})\n</script>\n\n<template>\n <div class=\"w-full max-w-full flex items-center justify-center\">\n <canvas\n ref=\"canvasRef\"\n class=\"w-full max-w-full [image-rendering:-webkit-optimize-contrast]\"\n :style=\"{ height: `${config.maxHeight}px` }\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { AudioState } from '@/ui/common/FAudioVisualizer.vue'\nimport FAudioVisualizer from '@/ui/common/FAudioVisualizer.vue'\nimport type { SelfController } from '../SelfController'\nimport { computed } from 'vue'\n\nconst { selfController, ...passThrough } = defineProps<{\n selfController?: SelfController\n size?: 'sm' | 'md' | 'lg'\n color?: 'blue' | 'green' | 'gray' | 'auto'\n enableWaveMotion?: boolean\n enableGlow?: boolean\n}>()\n\n// Single computed that builds the entire audio state object\nconst audioState = computed<AudioState>(() => {\n if (!selfController) {\n return { mode: 'idle' }\n }\n\n const voice = selfController.voiceState.value\n const levels = selfController.audioLevels.value\n\n // Determine mode from voice state (intelligent state detection from SelfController)\n const mode = voice.isSpeaking\n ? 'speaking' // Agent is speaking (green)\n : voice.isProcessing\n ? 'processing' // Agent is processing response (cyan)\n : voice.isListening\n ? 'listening' // User is speaking (blue)\n : voice.isConnected\n ? 'connected' // Connected but idle (gray)\n : 'idle' // Not connected (gray)\n\n // Create callback to fetch fresh frequency data every frame\n const getFrequencyData = (): Uint8Array | undefined => {\n try {\n // For speaking mode: get output frequency data from ElevenLabs\n if (voice.isSpeaking) {\n const data = selfController.getOutputFrequencyData()\n if (data && data.length > 0) {\n return data\n }\n }\n // For listening mode: get input frequency data (ElevenLabs or ClientAudio fallback)\n else if (voice.isListening) {\n const data = selfController.getInputFrequencyData()\n if (data && data.length > 0) {\n return data\n }\n }\n // For connected but idle: try output data anyway\n else if (voice.isConnected) {\n const data = selfController.getOutputFrequencyData()\n if (data && data.length > 0) {\n return data\n }\n }\n }\n catch (error) {\n if (import.meta.env.DEV) {\n console.warn('[ElSelfAudioVisualizer] Frequency data error:', error)\n }\n }\n return undefined\n }\n\n return {\n mode,\n inputLevel: levels.inputLevel,\n outputLevel: levels.outputLevel,\n getFrequencyData,\n }\n})\n</script>\n\n<template>\n <FAudioVisualizer\n :audio-state=\"audioState\"\n v-bind=\"passThrough\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { SelfController } from '../SelfController'\nimport { computed } from 'vue'\nimport ElSelfAudioVisualizer from './ElSelfAudioVisualizer.vue'\nimport ElSelfButton from './ElSelfButton.vue'\n\nconst { selfController } = defineProps<{\n selfController?: SelfController\n}>()\n\nconst state = computed(() => selfController?.voiceState.value)\n\nconst callButtonTheme = computed(() => {\n if (state.value?.isConnected) {\n return 'red' // End call - red for destructive action\n }\n return 'green' // Start call - green for positive action\n})\n\nconst callButtonIcon = computed(() => {\n if (state.value?.isConnected) {\n return 'i-heroicons-phone-x-mark'\n }\n return 'i-heroicons-phone'\n})\n\nconst callButtonText = computed(() => {\n if (state.value?.isConnected) {\n return 'End Call'\n }\n return 'Start a Call'\n})\n\nconst isButtonDisabled = computed(() => {\n const state = selfController?.voiceState.value\n return !!state?.error || state?.connectionStatus === 'connecting'\n})\n\nconst isButtonLoading = computed(() => {\n return state.value?.connectionStatus === 'connecting'\n})\n\nasync function toggleCall() {\n if (!selfController)\n return\n\n try {\n if (selfController.voiceState.value.isConnected) {\n await selfController.endConversation()\n } else {\n // End any existing conversation first\n if (selfController.isConnected()) {\n await selfController.endConversation()\n }\n await selfController.startVoiceConversation()\n selfController.agentMode.value = 'talk'\n }\n } catch (error) {\n console.error('Error toggling call:', error)\n }\n}\n</script>\n\n<template>\n <div class=\"flex flex-col h-full items-center justify-center gap-4\">\n <div class=\"flex-1 flex flex-col items-center justify-center space-y-8\">\n <div class=\"w-full max-w-md\">\n <ElSelfAudioVisualizer\n :self-controller=\"selfController\"\n enable-wave-motion\n enable-glow\n />\n </div>\n\n <div class=\"text-center flex gap-2 items-center text-xs\">\n <div class=\"flex items-center justify-center gap-2\">\n <div\n v-if=\"selfController?.voiceState.value.isListening\"\n class=\"size-2 bg-blue-500 rounded-full animate-pulse\"\n />\n <div\n v-else-if=\"selfController?.voiceState.value.isSpeaking\"\n class=\"size-2 bg-green-500 rounded-full animate-pulse\"\n />\n <div\n v-else-if=\"selfController?.voiceState.value.isConnected && !selfController?.voiceState.value.isListening && !selfController?.voiceState.value.isSpeaking\"\n class=\"size-2 bg-white/50 rounded-full\"\n />\n <div\n v-else-if=\"selfController?.voiceState.value.error\"\n class=\"size-2 bg-red-500 rounded-full\"\n />\n </div>\n <p class=\"text-white/70 text-sm max-w-xs leading-relaxed\">\n {{ selfController?.voiceState.value.error\n ? `Error: ${selfController.voiceState.value.error}`\n : (selfController?.voiceState.value.transcript || 'Ready to start a call...') }}\n </p>\n </div>\n </div>\n\n <div class=\"flex flex-col items-center space-y-6\">\n <ElSelfButton\n :theme=\"callButtonTheme\"\n :icon=\"callButtonIcon\"\n size=\"lg\"\n :loading=\"isButtonLoading\"\n :disabled=\"isButtonDisabled\"\n @click=\"toggleCall\"\n >\n {{ callButtonText }}\n </ElSelfButton>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { Self } from '@fiction/types'\nimport type { FictionSDK } from '../../sdkClient'\nimport type { ColorName } from '@/utils/color'\nimport { SOCIAL_PLATFORMS } from '../accounts'\nimport { computed, onMounted, onUnmounted, ref, shallowRef, watch } from 'vue'\nimport FSpinner from '@/ui/common/FSpinner.vue'\nimport { getColorSchemeOklch } from '@/utils/color'\nimport { AGENT_MODES } from '../schema'\nimport { SelfController } from '../SelfController'\nimport { getFallbackAvatarDataUrl, getSelfAvatarUrl } from '../utils'\nimport ElAuthGate from './ElAuthGate.vue'\nimport ElModeHeader from './ElModeHeader.vue'\nimport ElSelfAbout from './ElSelfAbout.vue'\nimport ElSelfButton from './ElSelfButton.vue'\nimport ElSelfChat from './ElSelfChat.vue'\nimport ElSelfHeader from './ElSelfHeader.vue'\nimport ElSelfModeSidebar from './ElSelfModeSidebar.vue'\nimport ElSelfSidebar from './ElSelfSidebar.vue'\nimport ElSelfVoice from './ElSelfVoice.vue'\n\nconst {\n sdk,\n self,\n context,\n firstMessage,\n hasClose = false,\n isActive = true,\n loading = false,\n theme = 'green',\n} = defineProps<{\n sdk: FictionSDK\n self: Self\n context?: string\n firstMessage?: string\n hasClose?: boolean\n isActive?: boolean\n loading?: boolean\n theme?: ColorName\n}>()\n\nconst emit = defineEmits<{\n close: [value: string]\n error: [message: string]\n}>()\n\nconst selfController = shallowRef<SelfController>()\nconst isSidebarOpen = ref(false)\nconst isModeSidebarOpen = ref(false)\nconst initError = ref<string>()\nconst rootElement = ref<HTMLElement>()\n\nconst agentMode = computed(() => selfController.value?.agentMode?.value ?? 'self')\n\n// Check if user is authenticated\nconst isAuthenticated = computed(() => sdk.activeUser.value !== undefined)\n\n// Current mode for button display\nconst currentMode = computed(() => {\n const m = AGENT_MODES.find((btn) => btn.mode === agentMode.value)\n return m\n})\n\nfunction createSelfController() {\n if (selfController.value) {\n selfController.value.destroy()\n }\n\n try {\n // SelfController validates agent configuration internally\n selfController.value = new SelfController({\n sdk,\n self,\n context,\n firstMessage,\n })\n } catch (error) {\n console.error('SelfController creation failed:', error)\n throw error\n }\n}\n\n// Set theme CSS variables\nfunction applyTheme(themeName: ColorName) {\n if (!rootElement.value)\n return\n\n const colorScheme = getColorSchemeOklch(themeName)\n\n // Set --primary-* CSS variables on component root for Shadow DOM compatibility\n Object.entries(colorScheme).forEach(([scale, value]) => {\n rootElement.value!.style.setProperty(`--primary-${scale}`, value)\n })\n}\n\nonMounted(() => {\n try {\n createSelfController()\n applyTheme(theme)\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to initialize digital self'\n initError.value = message\n emit('error', message)\n }\n})\n\nonUnmounted(() => {\n if (selfController.value) {\n selfController.value.destroy()\n }\n})\n\n// Watch theme changes and reapply\nwatch(() => theme, (newTheme) => {\n applyTheme(newTheme)\n})\n\n// Reset to self mode when user logs out\nwatch(() => sdk.activeUser.value, (newUser, oldUser) => {\n // User logged out (had user, now undefined)\n if (oldUser && !newUser && selfController.value) {\n selfController.value.setMode('self')\n }\n})\n\nconst isLowQuality = computed(() => {\n return self.cover?.src && self.cover?.quality === 'low' ? true : self.avatar?.src && self.avatar?.quality === 'low' ? true : false\n})\n\nconst backdropClass = computed(() => {\n const out = [isLowQuality.value ? 'backdrop-blur-sm' : '']\n\n if(isLowQuality.value && agentMode.value === 'self') {\n out.push('from-black/80 via-black/60 to-black/80')\n }\n else if (agentMode.value === 'self') {\n out.push('from-black/70 via-black/50 to-black/80')\n }\n else {\n out.push('from-black/90 via-black/90 to-black/100')\n }\n\n return out.join(' ')\n})\n</script>\n\n<template>\n <div\n ref=\"rootElement\"\n :key=\"getSelfAvatarUrl(self)\"\n class=\"fiction-sdk @container/agent self-agent w-full h-full overflow-hidden relative\"\n data-test=\"self-agent\"\n >\n <div v-if=\"loading\" class=\"absolute inset-0 flex items-center justify-center bg-gradient-to-br from-theme-800 to-theme-950 rounded-3xl z-10\">\n <FSpinner class=\"text-white size-8\" />\n </div>\n\n <div\n v-else-if=\"self && !initError\"\n class=\"absolute inset-0 bg-cover bg-center bg-no-repeat\"\n :style=\"{ backgroundImage: `url(${getSelfAvatarUrl(self) || getFallbackAvatarDataUrl()})` }\"\n :data-quality=\"self.avatar?.quality || 'none'\"\n >\n <div\n class=\"absolute inset-0 bg-gradient-to-br z-0\"\n :class=\"backdropClass\"\n />\n <div\n class=\"relative z-10 flex flex-col h-full transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] will-change-transform\"\n :class=\"isActive ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-2'\"\n >\n <div class=\"relative z-30 p-2 \" :class=\"agentMode !== 'self' ? 'backdrop-blur-lg' : ''\">\n <div class=\"flex items-center\" :class=\"hasClose ? '' : 'justify-between'\">\n <!-- Left side: Sidebar toggle with user avatar -->\n <div :class=\"hasClose ? 'flex-1 basis-0' : ''\">\n <button\n class=\"cursor-pointer p-2 flex items-center gap-2 rounded-2xl text-white/70 hover:bg-white/10 transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-105 active:scale-95\"\n @click=\"isSidebarOpen = true\"\n >\n <i class=\"i-tabler-menu size-7\" />\n </button>\n </div>\n\n <!-- Center: Mode selector button (centered when hasClose=true) -->\n <button\n class=\"flex items-center gap-2 px-3.5 py-3 rounded-2xl text-white/90 hover:bg-white/10 transition-all cursor-pointer flex-grow-0\"\n :class=\"{ 'bg-white/10': isModeSidebarOpen }\"\n @click=\"isModeSidebarOpen = true\"\n >\n <i :class=\"currentMode?.icon\" class=\"size-4 opacity-60\" />\n <span class=\"text-sm\">{{ currentMode?.label }}</span>\n <i class=\"i-tabler-chevron-down size-4\" />\n </button>\n\n <!-- Right side: Close button (only in widget mode) -->\n <div v-if=\"hasClose\" class=\"flex-1 basis-0 flex justify-end\">\n <button\n class=\"cursor-pointer flex items-center p-3 rounded-2xl text-white/70 hover:bg-white/10 transition-colors\"\n @click.stop=\"emit('close', 'button')\"\n >\n <i class=\"size-6 i-tabler-x\" />\n </button>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"agentMode === 'self'\"\n class=\"h-full pb-12 flex-1 flex flex-col relative z-20 min-h-0 px-4 @[480px]/agent:px-6 max-w-md mx-auto w-full\"\n >\n <!-- Top spacer -->\n <div class=\"flex-1 basis-0 mb-12\" />\n\n <!-- Avatar header -->\n <ElSelfHeader :self=\"self\" />\n\n <!-- Bottom section with button and social links -->\n <div class=\"flex-1 basis-0 flex flex-col justify-start pt-8 gap-7\">\n <ElSelfButton\n theme=\"primary\"\n size=\"lg\"\n class=\"w-full\"\n icon=\"i-heroicons-phone\"\n data-test=\"voice-button\"\n @click=\"selfController?.setMode('talk')\"\n >\n Talk to {{ self.name }}\n </ElSelfButton>\n\n <!-- Social icon links -->\n <div v-if=\"self.accounts && self.accounts.length > 0\" class=\"flex items-center justify-center gap-3\">\n <a\n v-for=\"account in self.accounts.filter(a => SOCIAL_PLATFORMS[a.platform])\"\n :key=\"`${account.platform}-${account.handle}`\"\n :href=\"SOCIAL_PLATFORMS[account.platform].getUrl(account.handle)\"\n target=\"_blank\"\n class=\"size-12 rounded-full text-white/60 hover:text-white hover:bg-white/5 border border-white/0 hover:border-white/10 flex items-center justify-center transition-all duration-200 hover:scale-105\"\n >\n <i :class=\"SOCIAL_PLATFORMS[account.platform].icon\" class=\"size-5 \" />\n </a>\n </div>\n </div>\n </div>\n <div\n v-else-if=\"agentMode === 'talk'\"\n class=\"flex-1 flex flex-col relative z-20 min-h-0 w-full gap-4 px-4\"\n >\n <ElAuthGate v-if=\"!isAuthenticated\" :sdk=\"sdk\" />\n <template v-else>\n <!-- Sticky header with backdrop blur - full width -->\n <div>\n <div class=\"max-w-md mx-auto\">\n <ElModeHeader :self=\"self\" />\n </div>\n </div>\n <ElSelfVoice\n :self-controller=\"selfController\"\n />\n </template>\n </div>\n <div\n v-else\n class=\"flex-1 flex flex-col relative z-20 min-h-0 w-full px-4 @[480px]/agent:px-6\"\n >\n <div class=\"flex-1 min-h-0 max-w-md mx-auto w-full\">\n <template v-if=\"agentMode === 'chat'\">\n <ElAuthGate v-if=\"!isAuthenticated\" :sdk=\"sdk\" />\n <ElSelfChat\n v-else\n :self-controller=\"selfController\"\n :self=\"self\"\n />\n </template>\n <ElSelfAbout\n v-else-if=\"agentMode === 'info'\"\n :self=\"self\"\n />\n </div>\n </div>\n\n <div class=\"relative z-20 text-center py-5 px-6\" :class=\"agentMode === 'info' ? 'hidden' : ''\">\n <a\n href=\"https://www.fiction.com\"\n class=\"flex items-center justify-center gap-1.5 text-[10px] font-sans font-normal text-white/50 hover:text-white/70 transition-colors\"\n >\n <span class=\"\">Digital Self&trade;</span>\n <span class=\"text-white/20\">by</span>\n <span>Fiction.com</span>\n </a>\n </div>\n </div>\n </div>\n <div v-else-if=\"initError\" class=\"bg-gradient-to-br from-theme-800 to-theme-950 text-white flex items-center justify-center h-full p-8\">\n <div class=\"text-center max-w-md space-y-4\">\n <div class=\"flex justify-center\">\n <div class=\"rounded-full bg-red-500/20 flex items-center justify-center size-10\">\n <i class=\"i-tabler-alert-circle size-6 text-red-400\" />\n </div>\n </div>\n <h3 class=\"text-lg font-medium\">\n Self Error\n </h3>\n <p class=\"text-sm text-white/70 leading-relaxed\">\n {{ initError }}\n </p>\n </div>\n </div>\n <div v-else class=\"bg-white/10 backdrop-blur-sm text-white/70 flex items-center justify-center h-full\">\n There was an error loading the digital self. Please try again later.\n </div>\n\n <!-- Self Sidebar (left) -->\n <ElSelfSidebar\n v-model=\"isSidebarOpen\"\n :self=\"self\"\n :sdk=\"sdk\"\n :title=\"self.name\"\n />\n\n <!-- Mode Sidebar (right) -->\n <ElSelfModeSidebar\n v-model=\"isModeSidebarOpen\"\n :self-controller=\"selfController\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { FictionSDK } from '../../sdkClient'\nimport type { Self } from '../schema'\nimport { onMounted, ref } from 'vue'\nimport { FictionSDK as FictionSDKClass } from '../../sdkClient'\nimport { createLogger } from '@/utils/logger'\n\nconst logger = createLogger('SelfWrap')\n\nconst props = defineProps<{\n sdk?: FictionSDK\n self?: Self\n handle?: string\n context?: string\n firstMessage?: string\n hasClose?: boolean\n apiBase?: string\n}>()\n\n// Create default SDK if not provided (singleton)\nconst sdk = props.sdk || FictionSDKClass.getInstance({\n isDev: typeof window !== 'undefined'\n ? window.location.hostname === 'localhost' || window.location.hostname.includes('127.0.0.1')\n : false,\n ...(props.apiBase && { apiBase: props.apiBase }),\n})\n\nconst loading = ref(!props.self)\nconst self = ref<Self | undefined>(props.self)\nconst error = ref<string>() // Internal only - not displayed in UI\n\nonMounted(async () => {\n // If self already provided, skip fetch\n if (props.self) {\n logger.debug('Self provided via props, skipping fetch', {\n selfId: props.self.selfId,\n handle: props.self.handle,\n })\n loading.value = false\n return\n }\n\n // Validate required props for fetch\n if (!props.handle) {\n error.value = 'No handle or self provided'\n logger.warn('SelfWrap mounted without handle or self', {\n propsReceived: {\n handle: props.handle,\n self: props.self,\n context: props.context,\n apiBase: props.apiBase,\n },\n sdkState: {\n isDev: sdk.isDev,\n apiBase: sdk.apiBase,\n },\n })\n loading.value = false\n return\n }\n\n try {\n loading.value = true\n logger.debug('Fetching public self', { handle: props.handle })\n\n // Use SDK's clean wrapper method instead of raw apiClient\n const result = await sdk.getPublicSelf({ handle: props.handle })\n\n if (result) {\n // SDK returns a compatible Self type from server\n self.value = result as Self\n logger.debug('Successfully fetched public self', {\n selfId: result.selfId,\n handle: result.handle,\n })\n\n // Track profile view\n if (result.selfId) {\n sdk.track({\n event: 'view_profile',\n selfId: result.selfId,\n properties: {\n viewSource: 'widget',\n },\n })\n }\n } else {\n // Fetch completed but returned no data\n error.value = sdk.error.value || 'Self not found'\n logger.error('Failed to fetch public self - no data returned', {\n handle: props.handle,\n sdkError: sdk.error.value,\n sdkState: {\n isDev: sdk.isDev,\n apiBase: sdk.apiBase,\n loading: sdk.loading.value,\n },\n })\n }\n } catch (err) {\n error.value = err instanceof Error ? err.message : 'Failed to fetch self'\n logger.error('Exception while fetching public self', {\n handle: props.handle,\n error: err instanceof Error ? {\n message: err.message,\n stack: err.stack,\n } : err,\n sdkState: {\n isDev: sdk.isDev,\n apiBase: sdk.apiBase,\n error: sdk.error.value,\n },\n })\n } finally {\n loading.value = false\n\n // Silent failure detection - component shows nothing but logs detailed state\n if (!self.value) {\n logger.debug('SelfWrap component will render empty (silent failure)', {\n state: {\n loading: loading.value,\n hasSelf: !!self.value,\n error: error.value,\n },\n props: {\n handle: props.handle,\n context: props.context,\n apiBase: props.apiBase,\n },\n sdkState: {\n isDev: sdk.isDev,\n apiBase: sdk.apiBase,\n error: sdk.error.value,\n },\n })\n }\n }\n})\n</script>\n\n<template>\n <div class=\"self-wrap\">\n <div v-if=\"loading\" class=\"flex items-center justify-center h-full\">\n <div class=\"animate-spin rounded-full size-6 border-b-2 border-white\" />\n </div>\n\n <template v-else-if=\"self\">\n <slot\n :sdk=\"sdk\"\n :self=\"self\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :loading=\"loading\"\n />\n </template>\n </div>\n</template>\n"],"names":["$constructor","name","initializer","params","init","inst","def","_a","k","_","__name","Parent","_Definition","Definition","fn","_$ZodAsyncError","$ZodAsyncError","_$ZodEncodeError","$ZodEncodeError","globalConfig","config","newConfig","getEnumValues","entries","numericValues","v","jsonStringifyReplacer","value","cached","getter","nullish","input","cleanRegex","source","start","end","EVALUATING","defineLazy","object","key","assignProp","target","prop","mergeDefs","defs","mergedDescriptors","descriptors","esc","str","captureStackTrace","_args","isObject","data","allowsEval","F","isPlainObject","o","ctor","prot","shallowClone","propertyKeyTypes","escapeRegex","clone","cl","normalizeParams","_params","optionalKeys","shape","pick","schema","mask","currDef","newShape","omit","extend","checks","_shape","safeExtend","merge","a","b","partial","Class","oldShape","required","aborted","x","startIndex","i","prefixIssues","path","issues","iss","unwrapMessage","message","finalizeIssue","ctx","full","getLengthableOrigin","issue","args","util.jsonStringifyReplacer","$ZodError","$ZodRealError","flattenError","error","mapper","fieldErrors","formErrors","sub","formatError","processError","curr","el","_parse","_Err","_ctx","result","core.$ZodAsyncError","e","util.finalizeIssue","core.config","util.captureStackTrace","_parseAsync","_safeParse","errors.$ZodError","safeParse","errors.$ZodRealError","_safeParseAsync","safeParseAsync","_encode","_decode","_encodeAsync","_decodeAsync","_safeEncode","_safeDecode","_safeEncodeAsync","_safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","uuid","version","email","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","hostname","e164","dateSource","date","timeSource","hhmm","time","datetime","opts","timeRegex","string","regex","lowercase","uppercase","$ZodCheck","core.$constructor","$ZodCheckMaxLength","payload","val","util.nullish","origin","util.getLengthableOrigin","$ZodCheckMinLength","$ZodCheckLengthEquals","bag","length","tooBig","$ZodCheckStringFormat","_b","$ZodCheckRegex","$ZodCheckLowerCase","regexes.lowercase","$ZodCheckUpperCase","regexes.uppercase","$ZodCheckIncludes","escapedRegex","util.escapeRegex","pattern","$ZodCheckStartsWith","$ZodCheckEndsWith","$ZodCheckOverwrite","_Doc","arg","lines","minIndent","dedented","line","Doc","$ZodType","ch","runChecks","isAborted","util.aborted","asyncResult","currLen","handleCanaryResult","canary","checkResult","r","$ZodString","regexes.string","$ZodStringFormat","checks.$ZodCheckStringFormat","$ZodGUID","regexes.guid","$ZodUUID","regexes.uuid","$ZodEmail","regexes.email","$ZodURL","trimmed","url","regexes.hostname","$ZodEmoji","regexes.emoji","$ZodNanoID","regexes.nanoid","$ZodCUID","regexes.cuid","$ZodCUID2","regexes.cuid2","$ZodULID","regexes.ulid","$ZodXID","regexes.xid","$ZodKSUID","regexes.ksuid","$ZodISODateTime","regexes.datetime","$ZodISODate","regexes.date","$ZodISOTime","regexes.time","$ZodISODuration","regexes.duration","$ZodIPv4","regexes.ipv4","$ZodIPv6","regexes.ipv6","$ZodCIDRv4","regexes.cidrv4","$ZodCIDRv6","regexes.cidrv6","parts","address","prefix","prefixNum","isValidBase64","$ZodBase64","regexes.base64","isValidBase64URL","regexes.base64url","c","padded","$ZodBase64URL","$ZodE164","regexes.e164","isValidJWT","token","algorithm","tokensParts","header","parsedHeader","$ZodJWT","$ZodUnknown","$ZodNever","handleArrayResult","final","index","util.prefixIssues","$ZodArray","proms","item","handlePropertyResult","normalizeDef","keys","okeys","util.optionalKeys","handleCatchall","unrecognized","keySet","_catchall","t","$ZodObject","sh","newSh","_normalized","util.cached","util.defineLazy","propValues","field","util.isObject","catchall","$ZodObjectJIT","superParse","generateFastpass","doc","normalized","parseStr","util.esc","ids","counter","id","fastpass","jit","core.globalConfig","fastEnabled","util.allowsEval","handleUnionResults","results","nonaborted","$ZodUnion","option","patterns","p","util.cleanRegex","single","first","async","$ZodIntersection","left","right","handleIntersectionResults","mergeValues","util.isPlainObject","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","merged","$ZodEnum","values","util.getEnumValues","valuesSet","util.propertyKeyTypes","$ZodTransform","core.$ZodEncodeError","_out","output","handleOptionalResult","$ZodOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodCatch","$ZodPipe","handlePipeResult","next","$ZodReadonly","handleReadonlyResult","$ZodCustom","checks.$ZodCheck","handleRefineResult","_iss","util.issue","_$ZodRegistry","_meta","meta","pm","f","$ZodRegistry","registry","globalRegistry","_string","util.normalizeParams","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","_isoDateTime","_isoDate","_isoTime","_isoDuration","_unknown","_never","_maxLength","maximum","checks.$ZodCheckMaxLength","_minLength","minimum","checks.$ZodCheckMinLength","_length","checks.$ZodCheckLengthEquals","_regex","checks.$ZodCheckRegex","_lowercase","checks.$ZodCheckLowerCase","_uppercase","checks.$ZodCheckUpperCase","_includes","includes","checks.$ZodCheckIncludes","_startsWith","checks.$ZodCheckStartsWith","_endsWith","suffix","checks.$ZodCheckEndsWith","_overwrite","tx","checks.$ZodCheckOverwrite","_normalize","form","_trim","_toLowerCase","_toUpperCase","_array","element","_refine","_superRefine","_check","_issue","ZodISODateTime","core.$ZodISODateTime","schemas.ZodStringFormat","core._isoDateTime","ZodISODate","core.$ZodISODate","core._isoDate","ZodISOTime","core.$ZodISOTime","core._isoTime","ZodISODuration","core.$ZodISODuration","core._isoDuration","core.formatError","core.flattenError","ZodRealError","parse","core._parse","parseAsync","core._parseAsync","core._safeParse","core._safeParseAsync","encode","core._encode","decode","core._decode","encodeAsync","core._encodeAsync","decodeAsync","core._decodeAsync","safeEncode","core._safeEncode","safeDecode","core._safeDecode","safeEncodeAsync","core._safeEncodeAsync","safeDecodeAsync","core._safeDecodeAsync","ZodType","core.$ZodType","util.mergeDefs","core.clone","reg","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","check","refine","refinement","superRefine","checks.overwrite","optional","nullable","nonoptional","array","union","intersection","pipe","transform","_default","prefault","_catch","readonly","description","core.globalRegistry","_ZodString","core.$ZodString","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","ZodString","core._email","ZodEmail","core._url","ZodURL","core._jwt","ZodJWT","core._emoji","ZodEmoji","core._guid","ZodGUID","core._uuid","ZodUUID","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","ZodNanoID","core._cuid","ZodCUID","core._cuid2","ZodCUID2","core._ulid","ZodULID","core._base64","ZodBase64","core._base64url","ZodBase64URL","core._xid","ZodXID","core._ksuid","ZodKSUID","core._ipv4","ZodIPv4","core._ipv6","ZodIPv6","core._cidrv4","ZodCIDRv4","core._cidrv6","ZodCIDRv6","core._e164","ZodE164","iso.datetime","iso.date","iso.time","iso.duration","core._string","ZodStringFormat","core.$ZodStringFormat","core.$ZodEmail","core.$ZodGUID","core.$ZodUUID","core.$ZodURL","core.$ZodEmoji","core.$ZodNanoID","core.$ZodCUID","core.$ZodCUID2","core.$ZodULID","core.$ZodXID","core.$ZodKSUID","core.$ZodIPv4","core.$ZodIPv6","core.$ZodCIDRv4","core.$ZodCIDRv6","core.$ZodBase64","core.$ZodBase64URL","core.$ZodE164","core.$ZodJWT","ZodUnknown","core.$ZodUnknown","unknown","core._unknown","ZodNever","core.$ZodNever","never","core._never","ZodArray","core.$ZodArray","minLength","maxLength","len","core._array","ZodObject","core.$ZodObjectJIT","_enum","incoming","util.extend","util.safeExtend","other","util.merge","util.pick","util.omit","util.partial","ZodOptional","util.required","ZodNonOptional","ZodUnion","core.$ZodUnion","options","ZodIntersection","core.$ZodIntersection","ZodEnum","core.$ZodEnum","newEntries","ZodTransform","core.$ZodTransform","core.$ZodOptional","innerType","ZodNullable","core.$ZodNullable","ZodDefault","core.$ZodDefault","defaultValue","util.shallowClone","ZodPrefault","core.$ZodPrefault","core.$ZodNonOptional","ZodCatch","core.$ZodCatch","catchValue","ZodPipe","core.$ZodPipe","in_","out","ZodReadonly","core.$ZodReadonly","ZodCustom","core.$ZodCustom","core._refine","core._superRefine","preprocess","SocialAccountSchema","z.object","z.enum","z.string","SocialAccountsSchema","z.preprocess","z.array","SOCIAL_PLATFORMS","handle","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_normalizeClass","__props","colorSchemes","getColorSchemeOklch","colorName","AGENT_MODES","AUDIO_FFT_SIZE","AUDIO_SMOOTHING","AUDIO_LEVEL_UPDATE_INTERVAL","VISUALIZER_CONFIG","VOICE_FREQUENCIES","_ClientAudio","SettingsObject","__publicField","ref","noiseSuppression","echoCancellation","autoGainControl","voiceIsolation","constraints","settings","inputLevel","isSpeaking","isConnected","onSilenceDetected","inputDataArray","updateLevels","inputAverage","sum","outputLevel","intervalWrapper","track","ClientAudio","getImageSrc","image","getSelfAvatarUrl","self","getFallbackAvatarDataUrl","handleImageError","event","img","parseVoiceMessage","senderMap","sender","parsers","msg","msgSender","parser","generateFirstMessage","context","_SelfController","analyser","dataArray","text","hash","now","isDupe","sdk","user","primarySelf","s","userContext","state","updates","isText","watch","newMode","oldMode","isVoice","parsed","participantId","err","mode","callbacks","dynamicSettings","agentId","Conversation","levels","errorMessage","PROCESSING_WINDOW","timeSinceUserSpeech","timeSinceUserMessage","hasRecentUserActivity","isProcessing","transcript","messageArgs","type","anonId","conversationData","objectId","SelfController","_createBlock","_TransitionGroup","_renderSlot","themeClasses","computed","sizeClasses","iconSizeClasses","_cache","emit","__emit","$event","props","inputs","justPasted","onMounted","onPaste","nums","newValues","idx","nextPos","onInput","onKeydown","onFocus","_Fragment","_renderList","_vModelText","step","isSubmitting","stepConfig","currentStep","_hoisted_3","_toDisplayString","_hoisted_4","_hoisted_5","_createVNode","EffectTransitionList","_hoisted_6","SelfInputEmail","_withKeys","_hoisted_7","SelfInputOneTimeCode","ElSelfButton","getAvatarSrc","_unref","CLASS_PART_SEPARATOR","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","themes","icons","componentTag","spinnerSize","getThemeConfig","buttonClass","baseClasses","linkPadding","roundingClasses","iconClass","_resolveDynamicComponent","FSpinner","ElModeHeader","_hoisted_8","FButton","_hoisted_9","_hoisted_10","account","_createTextVNode","messagesContainer","textarea","selfAvatarUrl","shouldShowAvatar","messages","currentMsg","nextMsg","sendMessage","messageText","scrollToBottom","handleKeydown","nextTick","container","adjustTextareaHeight","newHeight","m","_hoisted_11","inView","$emit","position","widthClasses","isOpen","visibleItems","handleItemClick","transitionClasses","_Transition","SelfSidebarClose","$slots","currentMode","modeItems","ElSidebar","menuItems","items","STIFFNESS","DAMPING","PEAK_HOLD_TIME","PEAK_DECAY_STIFFNESS","PEAK_DECAY_DAMPING","SIZE_CONFIGS","canvasRef","animationFrame","isMobile","isVisible","gradientCache","heights","velocities","targets","smoothedTargets","peaks","peakHoldTime","peakDecayVelocity","initPhysicsArrays","barCount","minHeight","visualColor","COLOR_CONFIGS","getFrequencyPhysics","freq","dpr","resizeCanvas","bars","barWidth","barSpacing","maxHeight","cssW","cssH","clearGradientCache","mapFrequencyDataToBands","frequencyData","targetFreq","binIndex","binWidth","amplitude","j","weight","finalAmplitude","generateIntensityBasedBands","intensity","bands","addWaveMotionOverlay","enhancedBands","frequency","waveMotion","primaryWave","secondaryWave","breathing","gentleBreath","subtleWave","sineWave","motionIntensity","generateFrequencyBands","baseBands","finalIntensity","detectMobile","userAgent","mobile","getGradient","createGradient","startAnimation","canvas","width","height","animate","_currentTime","bandLevels","SMOOTHING_FACTOR","rawTarget","deltaTime","physics","delta","stiffness","damping","accel","peakAccel","edgeFadeDistance","glowIntensity","colorConfig","h","y","g","distFromEdge","edgeFade","alpha1","alpha2","alpha3","intensityKey","edgeKey","cacheKey","gradient","grad","a1","a2","a3","peakY","peakAlpha","onResize","handleVisibilityChange","onUnmounted","_normalizeStyle","passThrough","_createPropsRestProxy","audioState","voice","getFrequencyData","FAudioVisualizer","_mergeProps","callButtonTheme","callButtonIcon","callButtonText","isButtonDisabled","isButtonLoading","toggleCall","ElSelfAudioVisualizer","selfController","shallowRef","isSidebarOpen","isModeSidebarOpen","initError","rootElement","agentMode","isAuthenticated","btn","createSelfController","applyTheme","themeName","colorScheme","scale","newTheme","newUser","oldUser","isLowQuality","backdropClass","ElSelfHeader","ElSelfVoice","ElAuthGate","_hoisted_12","ElSelfChat","ElSelfAbout","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","ElSelfSidebar","ElSelfModeSidebar","logger","createLogger","FictionSDKClass","loading"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,29]}