@create-flow/auth-ui 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/IAMConsole.d.ts +23 -0
- package/dist/components/Login.d.ts +10 -4
- package/dist/components/OAuthButtons.d.ts +1 -1
- package/dist/components/Profile.d.ts +13 -0
- package/dist/components/ResetPassword.d.ts +10 -0
- package/dist/components/Signup.d.ts +7 -1
- package/dist/components/UserMenu.d.ts +5 -1
- package/dist/components/VerifyEmail.d.ts +2 -1
- package/dist/components/iam/ConfirmDialog.d.ts +12 -0
- package/dist/components/iam/DropdownMenu.d.ts +20 -0
- package/dist/components/iam/GroupModal.d.ts +14 -0
- package/dist/components/iam/RoleModal.d.ts +15 -0
- package/dist/components/iam/UserModal.d.ts +14 -0
- package/dist/components/iam/icons.d.ts +22 -0
- package/dist/i18n/I18nContext.d.ts +23 -0
- package/dist/i18n/translations.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +21429 -180
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +21427 -182
- package/dist/index.modern.js.map +1 -1
- package/dist/utils/__tests__/authApi.test.d.ts +1 -0
- package/dist/utils/authApi.d.ts +3 -3
- package/dist/utils/iamApi.d.ts +209 -0
- package/package.json +20 -8
- package/src/index.css +0 -25
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Hello.tsx","../../../node_modules/.bun/babel-plugin-transform-async-to-promises@0.8.18/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/utils/authApi.ts","../src/components/OAuthButtons.tsx","../src/components/Login.tsx","../src/components/Signup.tsx","../src/components/VerifyEmail.tsx","../src/components/UserMenu.tsx"],"sourcesContent":["import * as React from 'react'\n\ninterface Props {\n text: string\n appId?: string\n}\n\nconst helloStyle: React.CSSProperties = {\n margin: '2em',\n padding: '0.5em',\n border: '2px solid #000',\n fontSize: '2em',\n textAlign: 'center',\n}\n\nexport const Hello = ({ text }: Props): JSX.Element => {\n return <div style={helloStyle}>Hello, {text}</div>\n}\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","const DEFAULT_AUTH_HOST = (() => {\n const envHost = process.env.NEXT_PUBLIC_AUTH_API_HOST?.trim()\n if (envHost && envHost.length > 0) {\n return envHost\n }\n\n return 'https://auth.create-flow.ai'\n})()\n\nconst DEFAULT_APP_ID = process.env.NEXT_PUBLIC_AUTH_APP_ID?.trim() ?? ''\n\nfunction normalizeHost(host?: string) {\n const value = (host ?? DEFAULT_AUTH_HOST).trim()\n if (!value) {\n throw new Error('Auth host is not configured')\n }\n\n if (/^https?:\\/\\//i.test(value)) {\n return value.replace(/\\/+$/g, '')\n }\n\n return `https://${value}`.replace(/\\/+$/g, '')\n}\n\nfunction buildAuthUrl(path: string, host?: string, query?: Record<string, string | undefined>) {\n const normalizedHost = normalizeHost(host)\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(normalizedPath, normalizedHost)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, value)\n }\n }\n }\n\n return url\n}\n\nasync function fetchWithCredentials(url: URL, init: RequestInit = {}) {\n const response = await fetch(url.toString(), {\n credentials: 'include',\n cache: 'no-store',\n ...init\n })\n let data: any = null\n\n try {\n data = await response.json()\n } catch {\n // Ignore JSON parse errors\n }\n\n return { response, data }\n}\n\nexport async function postAuthJson(path: string, body: unknown, host?: string) {\n const url = buildAuthUrl(path, host)\n return fetchWithCredentials(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(body)\n })\n}\n\nexport async function getAuthJson(path: string, host?: string, query?: Record<string, string | undefined>) {\n const url = buildAuthUrl(path, host, query)\n return fetchWithCredentials(url, { method: 'GET' })\n}\n\nfunction getResolvedAppId(appId?: string) {\n return (appId ?? DEFAULT_APP_ID).trim()\n}\n\nexport { DEFAULT_AUTH_HOST, DEFAULT_APP_ID, buildAuthUrl, getResolvedAppId }\n","\"use client\"\n\nimport * as React from 'react'\n\nimport { buildAuthUrl, getResolvedAppId } from '../utils/authApi'\n\ntype OAuthProvider = 'google' | 'github'\n\ninterface OAuthButtonsProps {\n appId?: string\n authHost?: string\n redirectTo?: string\n providers?: OAuthProvider[]\n className?: string\n}\n\nconst DEFAULT_PROVIDERS: OAuthProvider[] = ['google', 'github']\n\nfunction GoogleIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" className='h-4 w-4' aria-hidden='true'>\n <path d='M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z' fill='#4285F4' />\n <path d='M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z' fill='#34A853' />\n <path d='M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z' fill='#FBBC05' />\n <path d='M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z' fill='#EA4335' />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg role='img' viewBox='0 0 24 24' className='h-4 w-4' aria-hidden='true' fill='currentColor'>\n <path d='M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.93.58.11.79-.25.79-.56 0-.28-.01-1.02-.02-2-3.2.7-3.87-1.53-3.87-1.53-.53-1.35-1.3-1.71-1.3-1.71-1.06-.73.08-.72.08-.72 1.17.08 1.78 1.2 1.78 1.2 1.04 1.78 2.72 1.27 3.38.97.11-.75.41-1.27.74-1.56-2.56-.29-5.25-1.28-5.25-5.69 0-1.26.45-2.29 1.2-3.09-.12-.29-.52-1.47.11-3.06 0 0 .97-.31 3.18 1.18.92-.26 1.9-.39 2.88-.39.98 0 1.96.13 2.88.39 2.2-1.49 3.18-1.18 3.18-1.18.63 1.59.23 2.77.11 3.06.75.8 1.2 1.83 1.2 3.09 0 4.42-2.69 5.39-5.26 5.68.42.36.79 1.09.79 2.2 0 1.59-.01 2.87-.01 3.26 0 .31.21.68.8.56C20.71 21.39 24 17.08 24 12c0-6.35-5.15-11.5-11.5-11.5z' />\n </svg>\n )\n}\n\nexport function OAuthButtons({\n appId,\n authHost,\n redirectTo = '/dashboard',\n providers,\n className\n}: OAuthButtonsProps) {\n const [loadingProvider, setLoadingProvider] = React.useState<string | null>(null)\n const resolvedAppId = getResolvedAppId(appId)\n const providerList = providers && providers.length > 0 ? providers : DEFAULT_PROVIDERS\n\n if (!resolvedAppId || providerList.length === 0) {\n return null\n }\n\n function buildRedirectUrl(provider: OAuthProvider) {\n const url = buildAuthUrl('api/auth/oauth', authHost, {\n provider,\n appId: resolvedAppId,\n redirectTo\n })\n return url.toString()\n }\n\n function handleOAuth(provider: OAuthProvider) {\n setLoadingProvider(provider)\n window.location.assign(buildRedirectUrl(provider))\n }\n\n return (\n <div className={className ?? 'space-y-3'}>\n <div className='relative'>\n <div className='absolute inset-0 flex items-center'>\n <div className='w-full border-t border-zinc-200 dark:border-zinc-700' />\n </div>\n <div className='relative flex justify-center text-xs'>\n <span className='bg-white dark:bg-zinc-900 px-3 text-zinc-400'>\n or continue with\n </span>\n </div>\n </div>\n\n <div className='grid gap-2' style={{ gridTemplateColumns: providerList.length > 1 ? 'repeat(2, minmax(0, 1fr))' : '1fr' }}>\n {providerList.map((provider) => (\n <button\n key={provider}\n type='button'\n onClick={() => handleOAuth(provider)}\n disabled={loadingProvider !== null}\n className='flex items-center justify-center gap-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-4 py-2.5 text-sm font-medium text-zinc-700 dark:text-zinc-300 transition hover:bg-zinc-50 dark:hover:bg-zinc-700 disabled:opacity-50 disabled:cursor-not-allowed'\n >\n {loadingProvider === provider ? (\n <span className='h-4 w-4 animate-spin rounded-full border-2 border-zinc-300 border-t-zinc-600' />\n ) : provider === 'github' ? (\n <GitHubIcon />\n ) : (\n <GoogleIcon />\n )}\n {provider === 'github' ? 'GitHub' : 'Google'}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport Link from 'next/link'\nimport React, { useState } from 'react'\nimport { useRouter } from 'next/navigation'\n\nimport { getResolvedAppId, postAuthJson } from '../utils/authApi'\nimport { OAuthButtons } from './OAuthButtons'\n\ninterface LoginProps {\n appId?: string\n authHost?: string\n redirectTo?: string\n onSuccess?: () => void\n}\n\nconst defaultRedirect = '/dashboard'\n\nconst getLoginError = (status?: string): string => {\n switch (status) {\n case 'invalid_data':\n return 'Please provide a valid email and password.'\n case 'failed':\n default:\n return 'Invalid email or password.'\n }\n}\n\nexport const Login = ({\n appId,\n authHost,\n redirectTo = defaultRedirect,\n onSuccess\n}: LoginProps): JSX.Element => {\n const router = useRouter()\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n setIsLoading(true)\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n setError('Missing appId configuration for login.')\n setIsLoading(false)\n return\n }\n\n try {\n const { response, data } = await postAuthJson('api/auth/login', {\n email,\n password,\n appId: resolvedAppId\n }, authHost)\n\n if (!response.ok) {\n setError(getLoginError(data?.status))\n return\n }\n\n if (onSuccess) {\n onSuccess()\n } else {\n router.push(redirectTo)\n router.refresh()\n }\n } catch (err) {\n console.error(err)\n setError('Something went wrong. Please try again.')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n <div className='mb-8'>\n <div className='w-9 h-9 rounded-xl bg-zinc-100 dark:bg-zinc-900 mb-5 flex items-center justify-center'>\n <span className='text-zinc-900 dark:text-white font-bold text-sm'>\n W\n </span>\n </div>\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n Welcome back\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n Sign in to your account\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5'>\n Email\n </label>\n <input\n type='email'\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder='you@example.com'\n required\n autoComplete='email'\n className='w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:border-transparent text-sm transition-colors'\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5'>\n Password\n </label>\n <input\n type='password'\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder='••••••'\n required\n autoComplete='current-password'\n className='w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:border-transparent text-sm transition-colors'\n />\n </div>\n\n {error && (\n <p className='text-sm text-red-500 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading}\n className='w-full py-2.5 px-4 bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 rounded-lg text-sm font-medium hover:bg-zinc-700 dark:hover:bg-zinc-100 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? 'Signing in…' : 'Sign in'}\n </button>\n </form>\n\n <div className='mt-4'>\n <OAuthButtons appId={appId} authHost={authHost} redirectTo={redirectTo} />\n </div>\n\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n Don't have an account?{' '}\n <Link\n href='/signup'\n className='font-medium text-zinc-900 dark:text-white hover:underline underline-offset-4'\n >\n Sign up\n </Link>\n </p>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport Link from 'next/link'\nimport React, { useState } from 'react'\n\nimport { getResolvedAppId, postAuthJson } from '../utils/authApi'\nimport { OAuthButtons } from './OAuthButtons'\n\ninterface SignupProps {\n appId?: string\n authHost?: string\n onSuccess?: () => void\n}\n\nconst defaultError = 'Something went wrong. Please try again.'\n\nconst statusMessage = (status?: string) => {\n switch (status) {\n case 'invalid_data':\n return 'Please fill out all required fields.'\n case 'user_exists':\n return 'An account with that email already exists.'\n case 'sign_up_disabled':\n return 'Sign ups are disabled for this app.'\n case 'app_not_found':\n return 'We could not find the app configuration.'\n default:\n return defaultError\n }\n}\n\nexport const Signup = ({ appId, authHost, onSuccess }: SignupProps): JSX.Element => {\n const [name, setName] = useState('')\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [registered, setRegistered] = useState(false)\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n setIsLoading(true)\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n setError('Missing appId configuration for sign up.')\n setIsLoading(false)\n return\n }\n\n try {\n const { response, data } = await postAuthJson(\n 'api/auth/register',\n { name, email, password, appId: resolvedAppId },\n authHost\n )\n\n if (!response.ok) {\n setError(statusMessage(data?.status))\n return\n }\n\n setRegistered(true)\n onSuccess?.()\n } catch (err) {\n console.error(err)\n setError(defaultError)\n } finally {\n setIsLoading(false)\n }\n }\n\n if (registered) {\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8 text-center'>\n <div className='flex justify-center mb-5'>\n <div className='w-14 h-14 rounded-2xl bg-zinc-100 dark:bg-zinc-800 flex items-center justify-center text-2xl'>\n ✉️\n </div>\n </div>\n <h1 className='text-xl font-semibold text-zinc-900 dark:text-white tracking-tight mb-2'>\n Check your email\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm leading-relaxed mb-6'>\n We sent a verification link to{' '}\n <span className='font-medium text-zinc-700 dark:text-zinc-300'>\n {email}\n </span>\n . Click it to activate your account.\n </p>\n <p className='text-xs text-zinc-400'>\n Already verified?{' '}\n <Link\n href='/login'\n className='text-zinc-600 dark:text-zinc-300 underline underline-offset-2 hover:text-zinc-900 dark:hover:text-white'\n >\n Sign in\n </Link>\n </p>\n </div>\n </div>\n )\n }\n\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n <div className='mb-8'>\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n Create an account\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n Get started for free today\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5'>\n Name\n </label>\n <input\n type='text'\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder='Jane Smith'\n autoComplete='name'\n className='w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:border-transparent text-sm transition-colors'\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5'>\n Email\n </label>\n <input\n type='email'\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder='you@example.com'\n required\n autoComplete='email'\n className='w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:border-transparent text-sm transition-colors'\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5'>\n Password\n </label>\n <input\n type='password'\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder='Min. 6 characters'\n required\n autoComplete='new-password'\n className='w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-900 dark:focus:ring-zinc-300 focus:border-transparent text-sm transition-colors'\n />\n </div>\n\n {error && (\n <p className='text-sm text-red-500 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading}\n className='w-full py-2.5 px-4 bg-zinc-900 dark:bg-white text-white dark:text-zinc-900 rounded-lg text-sm font-medium hover:bg-zinc-700 dark:hover:bg-zinc-100 focus:outline-none focus:ring-2 focus:ring-zinc-900 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? 'Creating account…' : 'Create account'}\n </button>\n </form>\n\n <div className='mt-4'>\n <OAuthButtons appId={appId} authHost={authHost} />\n </div>\n\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n Already have an account?{' '}\n <Link\n href='/login'\n className='font-medium text-zinc-900 dark:text-white hover:underline underline-offset-4'\n >\n Sign in\n </Link>\n </p>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport Link from 'next/link'\n\nimport { getAuthJson, getResolvedAppId } from '../utils/authApi'\n\ninterface Props {\n searchParams: Promise<{ token?: string }>\n appId?: string\n authHost?: string\n}\n\nexport const VerifyEmail = async ({\n searchParams,\n appId,\n authHost\n}: Props): Promise<JSX.Element> => {\n const { token } = await searchParams\n\n if (!token) {\n return <VerifyResult status='invalid' />\n }\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n return (\n <VerifyResult status='error' message='Missing appId configuration for verification.' />\n )\n }\n\n try {\n const { response, data } = await getAuthJson(\n 'api/auth/verify-email',\n authHost,\n { token, appId: resolvedAppId }\n )\n\n if (!response.ok) {\n const message = data?.message ?? data?.status ?? 'Verification failed.'\n return <VerifyResult status='error' message={message} />\n }\n } catch (err) {\n console.error(err)\n return (\n <VerifyResult status='error' message='Unable to reach the verification service.' />\n )\n }\n\n return <VerifyResult status='success' />\n}\n\nfunction VerifyResult({\n status,\n message\n}: {\n status: 'success' | 'error' | 'invalid'\n message?: string\n}): JSX.Element {\n const isSuccess = status === 'success'\n\n return (\n <div className='fixed inset-0 flex flex-col md:flex-row bg-white dark:bg-zinc-950 overflow-auto'>\n <div className='hidden md:flex md:w-5/12 lg:w-[42%] flex-col bg-zinc-900 relative overflow-hidden'>\n <div className='absolute -top-32 -left-32 w-96 h-96 rounded-full bg-zinc-800 opacity-60' />\n <div className='absolute -bottom-24 -right-24 w-80 h-80 rounded-full bg-zinc-800 opacity-60' />\n <div\n className='absolute inset-0 opacity-[0.03]'\n style={{\n backgroundImage:\n 'radial-gradient(circle, #ffffff 1px, transparent 1px)',\n backgroundSize: '28px 28px'\n }}\n />\n\n <div className='relative z-10 p-8'>\n <div className='flex items-center gap-2.5'>\n <div className='w-8 h-8 rounded-lg bg-white flex items-center justify-center'>\n <span className='text-zinc-900 font-bold text-sm'>W</span>\n </div>\n <span className='text-white font-semibold tracking-tight'>\n YourApp\n </span>\n </div>\n </div>\n\n <div className='relative z-10 flex-1 flex flex-col items-center justify-center px-12 pb-16 text-center'>\n <div\n className={`mb-8 flex h-24 w-24 items-center justify-center rounded-3xl text-4xl font-bold shadow-2xl ${\n isSuccess ? 'bg-emerald-500 text-white' : 'bg-red-500 text-white'\n }`}\n >\n {isSuccess ? '✓' : '✕'}\n </div>\n\n <p className='mb-3 text-xs font-semibold uppercase tracking-widest text-zinc-500'>\n Email Verification\n </p>\n <h2 className='text-2xl font-bold leading-snug text-white max-w-xs'>\n {isSuccess\n ? \"You're all verified and ready to go.\"\n : 'Something went wrong with your link.'}\n </h2>\n </div>\n </div>\n\n <div className='flex flex-1 flex-col items-center justify-center px-8 py-12 md:px-16 lg:px-24'>\n <div className='mb-10 flex items-center gap-2.5 md:hidden'>\n <div className='w-8 h-8 rounded-lg bg-zinc-900 dark:bg-white flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>\n W\n </span>\n </div>\n <span className='font-semibold tracking-tight text-zinc-900 dark:text-white'>\n YourApp\n </span>\n </div>\n\n <div className='w-full max-w-md'>\n <div className='mb-7 flex justify-start md:hidden'>\n <div\n className={`flex h-16 w-16 items-center justify-center rounded-2xl text-3xl font-bold ${\n isSuccess\n ? 'bg-emerald-500 text-white'\n : 'bg-red-500 text-white'\n }`}\n >\n {isSuccess ? '✓' : '✕'}\n </div>\n </div>\n\n <p className='mb-3 text-xs font-semibold uppercase tracking-widest text-zinc-400 dark:text-zinc-500 hidden md:block'>\n Email Verification\n </p>\n\n <h1 className='mb-4 text-4xl font-bold tracking-tight text-zinc-900 dark:text-white leading-tight'>\n {isSuccess ? 'Email verified!' : 'Verification failed'}\n </h1>\n\n <p className='mb-10 text-base leading-relaxed text-zinc-500 dark:text-zinc-400 max-w-sm'>\n {isSuccess\n ? 'Your email address has been confirmed and your account is active. Sign in to get started.'\n : message ??\n 'This verification link is invalid or has expired. Links are only valid for 24 hours.'}\n </p>\n\n <Link\n href='/login'\n className='block w-full rounded-xl bg-zinc-900 dark:bg-white px-6 py-3.5 text-center text-sm font-semibold text-white dark:text-zinc-900 transition hover:bg-zinc-700 dark:hover:bg-zinc-100'\n >\n {isSuccess ? 'Sign in to your account →' : 'Back to login'}\n </Link>\n\n {!isSuccess && (\n <p className='mt-5 text-sm text-zinc-400 dark:text-zinc-500'>\n Need a new link?{' '}\n <Link\n href='/signup'\n className='text-zinc-600 dark:text-zinc-300 underline underline-offset-2 hover:text-zinc-900 dark:hover:text-white'\n >\n Sign up again\n </Link>\n </p>\n )}\n\n {isSuccess && (\n <p className='mt-5 text-sm text-zinc-400 dark:text-zinc-500'>\n Check your inbox — we've sent you a welcome email.\n </p>\n )}\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport React, { useState, useRef, useEffect } from \"react\"\nimport Link from \"next/link\"\nimport { useRouter } from \"next/navigation\"\n\nimport { getResolvedAppId, getAuthJson } from \"../utils/authApi\"\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type UserType = \"guest\" | \"regular\"\n\nexport interface AuthUser {\n id: string\n name?: string | null\n email?: string | null\n image?: string | null\n type: UserType\n appId: string\n isGuest: boolean\n}\n\nexport interface UserMenuProps {\n user?: AuthUser\n appId?: string\n authHost?: string\n logoutRedirectTo?: string\n profileHref?: string\n settingsHref?: string\n onLogout?: () => void\n}\n\n// ── Icons ─────────────────────────────────────────────────────────────────────\n\nfunction UserIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 20c0-4 3.6-7 8-7s8 3 8 7\" />\n </svg>\n )\n}\n\nfunction SettingsIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z\" />\n </svg>\n )\n}\n\nfunction LogOutIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4\" />\n <polyline points=\"16,17 21,12 16,7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n )\n}\n\nfunction ChevronsUpDownIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7 15l5 5 5-5M7 9l5-5 5 5\" />\n </svg>\n )\n}\n\n// ── Avatar ────────────────────────────────────────────────────────────────────\n\nconst AVATAR_COLORS = [\n \"bg-violet-600\",\n \"bg-indigo-600\",\n \"bg-sky-600\",\n \"bg-emerald-600\",\n \"bg-amber-600\",\n \"bg-rose-600\",\n]\n\nfunction getAvatarColor(name: string): string {\n let hash = 0\n for (let i = 0; i < name.length; i++) hash = name.charCodeAt(i) + ((hash << 5) - hash)\n return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length]\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .filter(Boolean)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n// ── UserMenu ──────────────────────────────────────────────────────────────────\n\nexport const UserMenu = ({\n user: userProp,\n appId,\n authHost,\n logoutRedirectTo = \"/\",\n profileHref = \"/profile\",\n settingsHref = \"/settings\",\n onLogout,\n}: UserMenuProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [fetchedUser, setFetchedUser] = useState<AuthUser | null>(null)\n const [isLoading, setIsLoading] = useState(!userProp)\n const router = useRouter()\n const menuRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (userProp) return\n\n let cancelled = false\n\n async function fetchSession() {\n try {\n const { response, data } = await getAuthJson(\"api/auth/session\", authHost)\n if (!cancelled && response.ok && data?.user) {\n setFetchedUser(data.user)\n }\n } catch (err) {\n console.error(\"Failed to fetch session:\", err)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n }\n\n fetchSession()\n return () => { cancelled = true }\n }, [authHost, userProp])\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => document.removeEventListener(\"mousedown\", handleClickOutside)\n }, [])\n\n const user = userProp || fetchedUser\n\n if (isLoading || !user) return null\n\n const displayName = user.name || user.email?.split(\"@\")[0] || \"User\"\n const initials = getInitials(displayName)\n const avatarColor = getAvatarColor(displayName)\n\n async function handleLogout() {\n const resolvedAppId = getResolvedAppId(appId)\n\n try {\n await getAuthJson(\"api/auth/logout\", authHost, resolvedAppId ? { appId: resolvedAppId } : undefined)\n } catch (err) {\n console.error(\"Logout error:\", err)\n }\n\n if (onLogout) {\n onLogout()\n } else {\n router.push(logoutRedirectTo)\n router.refresh()\n }\n }\n\n return (\n <div ref={menuRef} className=\"relative inline-block\">\n {/* Dropdown menu */}\n {isOpen && (\n <div\n className=\"absolute bottom-full mb-1 left-0 z-50 w-52\n bg-white border border-zinc-200\n rounded-xl shadow-lg shadow-zinc-200/50\n overflow-hidden\"\n >\n {/* User info */}\n <div className=\"px-3.5 py-3 border-b border-zinc-100\">\n <p className=\"text-sm font-medium text-zinc-900 truncate\">\n {displayName}\n </p>\n {user.email && (\n <p className=\"text-xs text-zinc-500 truncate mt-0.5\">\n {user.email}\n </p>\n )}\n </div>\n {/* Menu items */}\n <div className=\"p-1\">\n <Link\n href={profileHref}\n onClick={() => setIsOpen(false)}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors\"\n >\n <UserIcon className=\"w-4 h-4 text-zinc-400\" />\n Profile\n </Link>\n <Link\n href={settingsHref}\n onClick={() => setIsOpen(false)}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors\"\n >\n <SettingsIcon className=\"w-4 h-4 text-zinc-400\" />\n Settings\n </Link>\n <button\n onClick={handleLogout}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors text-left\"\n >\n <LogOutIcon className=\"w-4 h-4 text-zinc-400\" />\n Log out\n </button>\n </div>\n </div>\n )}\n\n {/* Trigger button */}\n <button\n onClick={() => setIsOpen((o) => !o)}\n title={displayName}\n className=\"flex items-center gap-2.5 p-2 rounded-lg\n hover:bg-zinc-50 transition-colors text-left\"\n >\n <div\n className={\"w-7 h-7 rounded-full flex items-center justify-center flex-shrink-0 \" + avatarColor}\n >\n <span className=\"text-xs font-semibold text-white leading-none\">\n {initials}\n </span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-zinc-900 truncate leading-tight\">\n {displayName}\n </p>\n </div>\n <ChevronsUpDownIcon className=\"w-3.5 h-3.5 text-zinc-400 flex-shrink-0\" />\n </button>\n </div>\n )\n}\n"],"names":["helloStyle","margin","padding","border","fontSize","textAlign","Hello","_ref","text","React","style","_iteratorSymbol","Symbol","iterator","_asyncIteratorSymbol","asyncIterator","_catch","body","recover","result","e","then","_finallyRethrows","finalizer","bind","getAuthJson","path","host","query","url","buildAuthUrl","fetchWithCredentials","method","Promise","reject","postAuthJson","headers","JSON","stringify","init","fetch","toString","_extends","credentials","cache","response","_temp2","data","_temp","resolve","json","_response$json","DEFAULT_AUTH_HOST","_process$env$NEXT_PUB","envHost","process","env","NEXT_PUBLIC_AUTH_API_HOST","trim","length","DEFAULT_APP_ID","_process$env$NEXT_PUB2","_process$env$NEXT_PUB3","NEXT_PUBLIC_AUTH_APP_ID","normalizeHost","value","Error","test","replace","normalizedHost","normalizedPath","startsWith","URL","_i","_Object$entries","Object","entries","_Object$entries$_i","key","undefined","searchParams","set","getResolvedAppId","appId","DEFAULT_PROVIDERS","GoogleIcon","viewBox","className","d","fill","GitHubIcon","role","OAuthButtons","authHost","_ref$redirectTo","redirectTo","providers","_React$useState","loadingProvider","setLoadingProvider","resolvedAppId","providerList","buildRedirectUrl","provider","handleOAuth","window","location","assign","gridTemplateColumns","map","type","onClick","disabled","defaultRedirect","getLoginError","status","Login","handleSubmit","preventDefault","setError","setIsLoading","email","password","_ref2","ok","onSuccess","router","push","refresh","err","console","error","_wasThrown","_result","useRouter","_useState","useState","setEmail","_useState2","setPassword","_useState3","_useState4","isLoading","onSubmit","onChange","target","placeholder","required","autoComplete","Link","href","defaultError","statusMessage","Signup","name","setRegistered","setName","_useState5","_useState6","registered","VerifyEmail","_exit","token","VerifyResult","message","_ref3","_ref4","_data$message","_React$createElement","_React$createElement2","_ref5","isSuccess","backgroundImage","backgroundSize","UserIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","SettingsIcon","LogOutIcon","points","x1","y1","x2","y2","ChevronsUpDownIcon","AVATAR_COLORS","getAvatarColor","hash","i","charCodeAt","Math","abs","getInitials","split","filter","Boolean","w","join","toUpperCase","slice","UserMenu","handleLogout","onLogout","logoutRedirectTo","_temp3","userProp","user","_ref5$logoutRedirectT","_ref5$profileHref","profileHref","_ref5$settingsHref","settingsHref","isOpen","setIsOpen","fetchedUser","setFetchedUser","menuRef","useRef","useEffect","fetchSession","_ref6","cancelled","handleClickOutside","current","contains","document","addEventListener","removeEventListener","displayName","_user$email","initials","avatarColor","ref","o","title"],"mappings":";;;;;;;AAOA,IAAMA,UAAU,GAAwB;EACtCC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAE,OAAO;EAChBC,MAAM,EAAE,gBAAgB;EACxBC,QAAQ,EAAE,KAAK;EACfC,SAAS,EAAE;CACZ;IAEYC,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA;MAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC1B,OAAOC;IAAKC,KAAK,EAAEV;gBAAoBQ,IAAI,CAAO;AACpD;;ACmJO,IAAMG,eAAe,gBAAiB,OAAOC,MAAM,KAAK,WAAW,GAAIA,MAAM,CAACC,QAAQ,KAAKD,MAAM,CAACC,QAAQ,GAAGD,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAI,YAAY;AAI9J,AAyDO,IAAME,oBAAoB,gBAAiB,OAAOF,MAAM,KAAK,WAAW,GAAIA,MAAM,CAACG,aAAa,KAAKH,MAAM,CAACG,aAAa,GAAGH,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAI,iBAAiB;AAGvL,AA8UO,SAASI,MAAMA,CAACC,IAAI,EAAEC,OAAO,EAAE;EACrC,IAAI;IACH,IAAIC,MAAM,GAAGF,IAAI,EAAE;GACnB,CAAC,OAAMG,CAAC,EAAE;IACV,OAAOF,OAAO,CAACE,CAAC,CAAC;;EAElB,IAAID,MAAM,IAAIA,MAAM,CAACE,IAAI,EAAE;IAC1B,OAAOF,MAAM,CAACE,IAAI,CAAC,KAAK,CAAC,EAAEH,OAAO,CAAC;;EAEpC,OAAOC,MAAM;AACd;AAGA,AAAO,SAASG,gBAAgBA,CAACL,IAAI,EAAEM,SAAS,EAAE;EACjD,IAAI;IACH,IAAIJ,MAAM,GAAGF,IAAI,EAAE;GACnB,CAAC,OAAOG,CAAC,EAAE;IACX,OAAOG,SAAS,CAAC,IAAI,EAAEH,CAAC,CAAC;;EAE1B,IAAID,MAAM,IAAIA,MAAM,CAACE,IAAI,EAAE;IAC1B,OAAOF,MAAM,CAACE,IAAI,CAACE,SAAS,CAACC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAED,SAAS,CAACC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;EAE5E,OAAOD,SAAS,CAAC,KAAK,EAAEJ,MAAM,CAAC;AAChC;;;;;;;;;;;;;ACrgBA,IAAsBM,WAAW,YAAXA,WAAWA,CAACC,IAAY,EAAEC,IAAa,EAAEC,KAA0C;EAAA;IACvG,IAAMC,GAAG,GAAGC,YAAY,CAACJ,IAAI,EAAEC,IAAI,EAAEC,KAAK,CAAC;IAC3C,OAAOG,oBAAoB,CAACF,GAAG,EAAE;MAAEG,MAAM,EAAE;KAAO,CAAC;GACpD,QAAAZ,CAAA;IAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;AAAA;AAdD,IAAsBe,YAAY,YAAZA,YAAYA,CAACT,IAAY,EAAET,IAAa,EAAEU,IAAa;EAAA;IAC3E,IAAME,GAAG,GAAGC,YAAY,CAACJ,IAAI,EAAEC,IAAI,CAAC;IACpC,OAAOI,oBAAoB,CAACF,GAAG,EAAE;MAC/BG,MAAM,EAAE,MAAM;MACdI,OAAO,EAAE;QACP,cAAc,EAAE;OACjB;MACDnB,IAAI,EAAEoB,IAAI,CAACC,SAAS,CAACrB,IAAI;KAC1B,CAAC;GACH,QAAAG,CAAA;IAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;AAAA;AAAA,IA1BcW,oBAAoB,YAApBA,oBAAoBA,CAACF,GAAQ,EAAEU;MAAAA;IAAAA,OAAoB,EAAE;;EAAA;2BAC3CC,KAAK,CAACX,GAAG,CAACY,QAAQ,EAAE,EAAAC,QAAA;MACzCC,WAAW,EAAE,SAAS;MACtBC,KAAK,EAAE;OACJL,IAAI,CACR,CAAC,EAAAlB,IAAA,WAJIwB,QAAQ;MAAA,SAAAC;QAad,OAAO;UAAED,QAAQ,EAARA,QAAQ;UAAEE,IAAI,EAAJA;SAAM;;MARzB,IAAIA,IAAI,GAAQ,IAAI;MAAA,IAAAC,KAAA,GAAAhC,MAAA,aAEhB;QAAA,OAAAiB,OAAA,CAAAgB,OAAA,CACWJ,QAAQ,CAACK,IAAI,EAAE,EAAA7B,IAAA,WAAA8B,cAAA;UAA5BJ,IAAI,GAAAI,cAAwB;;OAC7B;MAAA,OAAAH,KAAA,IAAAA,KAAA,CAAA3B,IAAA,GAAA2B,KAAA,CAAA3B,IAAA,CAAAyB,MAAA,IAAAA,MAAA,CAAAE,KAAA;;GAKF,QAAA5B,CAAA;IAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;AAAA;AAvDD,IAAMgC,iBAAiB,GAAI,UAAAC,qBAAA;EACzB,IAAMC,OAAO,IAAAD,qBAAA,GAAGE,OAAO,CAACC,GAAG,CAACC,yBAAyB,cAAAJ,qBAAA,uBAArCA,qBAAA,CAAuCK,IAAI,EAAE;EAC7D,IAAIJ,OAAO,IAAIA,OAAO,CAACK,MAAM,GAAG,CAAC,EAAE;IACjC,OAAOL,OAAO;;EAGhB,OAAO,6BAA6B;AACtC,CAAC,EAAG;AAEJ,IAAMM,cAAc,IAAAC,sBAAA,IAAAC,sBAAA,GAAGP,OAAO,CAACC,GAAG,CAACO,uBAAuB,cAAAD,sBAAA,uBAAnCA,sBAAA,CAAqCJ,IAAI,EAAE,YAAAG,sBAAA,GAAI,EAAE;AAExE,SAASG,aAAaA,CAACrC,IAAa;EAClC,IAAMsC,KAAK,GAAG,CAACtC,IAAI,WAAJA,IAAI,GAAIyB,iBAAiB,EAAEM,IAAI,EAAE;EAChD,IAAI,CAACO,KAAK,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,6BAA6B,CAAC;;EAGhD,IAAI,eAAe,CAACC,IAAI,CAACF,KAAK,CAAC,EAAE;IAC/B,OAAOA,KAAK,CAACG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;EAGnC,OAAO,cAAWH,KAAK,EAAGG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAChD;AAEA,SAAStC,YAAYA,CAACJ,IAAY,EAAEC,IAAa,EAAEC,KAA0C;EAC3F,IAAMyC,cAAc,GAAGL,aAAa,CAACrC,IAAI,CAAC;EAC1C,IAAM2C,cAAc,GAAG5C,IAAI,CAAC6C,UAAU,CAAC,GAAG,CAAC,GAAG7C,IAAI,SAAOA,IAAM;EAC/D,IAAMG,GAAG,GAAG,IAAI2C,GAAG,CAACF,cAAc,EAAED,cAAc,CAAC;EAEnD,IAAIzC,KAAK,EAAE;IACT,SAAA6C,EAAA,MAAAC,eAAA,GAA2BC,MAAM,CAACC,OAAO,CAAChD,KAAK,CAAC,EAAA6C,EAAA,GAAAC,eAAA,CAAAf,MAAA,EAAAc,EAAA,IAAE;MAA7C,IAAAI,kBAAA,GAAAH,eAAA,CAAAD,EAAA;QAAOK,GAAG,GAAAD,kBAAA;QAAEZ,KAAK,GAAAY,kBAAA;MACpB,IAAIZ,KAAK,KAAKc,SAAS,IAAId,KAAK,KAAK,IAAI,EAAE;QACzCpC,GAAG,CAACmD,YAAY,CAACC,GAAG,CAACH,GAAG,EAAEb,KAAK,CAAC;;;;EAKtC,OAAOpC,GAAG;AACZ;AAmCA,SAASqD,gBAAgBA,CAACC,KAAc;EACtC,OAAO,CAACA,KAAK,WAALA,KAAK,GAAIvB,cAAc,EAAEF,IAAI,EAAE;AACzC;;AC3DA,IAAM0B,iBAAiB,GAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAE/D,SAASC,UAAUA;EACjB,OACE5E;IAAK6E,OAAO,EAAC,WAAW;IAACC,SAAS,EAAC,SAAS;mBAAa;KACvD9E;IAAM+E,CAAC,EAAC,yHAAyH;IAACC,IAAI,EAAC;IAAY,EACnJhF;IAAM+E,CAAC,EAAC,uIAAuI;IAACC,IAAI,EAAC;IAAY,EACjKhF;IAAM+E,CAAC,EAAC,+HAA+H;IAACC,IAAI,EAAC;IAAY,EACzJhF;IAAM+E,CAAC,EAAC,qIAAqI;IAACC,IAAI,EAAC;IAAY,CAC3J;AAEV;AAEA,SAASC,UAAUA;EACjB,OACEjF;IAAKkF,IAAI,EAAC,KAAK;IAACL,OAAO,EAAC,WAAW;IAACC,SAAS,EAAC,SAAS;mBAAa,MAAM;IAACE,IAAI,EAAC;KAC9EhF;IAAM+E,CAAC,EAAC;IAA0mB,CAC9mB;AAEV;AAEA,SAAgBI,YAAYA,CAAArF,IAAA;MAC1B4E,KAAK,GAAA5E,IAAA,CAAL4E,KAAK;IACLU,QAAQ,GAAAtF,IAAA,CAARsF,QAAQ;IAAAC,eAAA,GAAAvF,IAAA,CACRwF,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,YAAY,GAAAA,eAAA;IACzBE,SAAS,GAAAzF,IAAA,CAATyF,SAAS;IACTT,SAAS,GAAAhF,IAAA,CAATgF,SAAS;EAET,IAAAU,eAAA,GAA8CxF,cAAc,CAAgB,IAAI,CAAC;IAA1EyF,eAAe,GAAAD,eAAA;IAAEE,kBAAkB,GAAAF,eAAA;EAC1C,IAAMG,aAAa,GAAGlB,gBAAgB,CAACC,KAAK,CAAC;EAC7C,IAAMkB,YAAY,GAAGL,SAAS,IAAIA,SAAS,CAACrC,MAAM,GAAG,CAAC,GAAGqC,SAAS,GAAGZ,iBAAiB;EAEtF,IAAI,CAACgB,aAAa,IAAIC,YAAY,CAAC1C,MAAM,KAAK,CAAC,EAAE;IAC/C,OAAO,IAAI;;EAGb,SAAS2C,gBAAgBA,CAACC,QAAuB;IAC/C,IAAM1E,GAAG,GAAGC,YAAY,CAAC,gBAAgB,EAAE+D,QAAQ,EAAE;MACnDU,QAAQ,EAARA,QAAQ;MACRpB,KAAK,EAAEiB,aAAa;MACpBL,UAAU,EAAVA;KACD,CAAC;IACF,OAAOlE,GAAG,CAACY,QAAQ,EAAE;;EAGvB,SAAS+D,WAAWA,CAACD,QAAuB;IAC1CJ,kBAAkB,CAACI,QAAQ,CAAC;IAC5BE,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACL,gBAAgB,CAACC,QAAQ,CAAC,CAAC;;EAGpD,OACE9F;IAAK8E,SAAS,EAAEA,SAAS,WAATA,SAAS,GAAI;KAC3B9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;IAAyD,CACpE,EACN9E;IAAK8E,SAAS,EAAC;KACb9E;IAAM8E,SAAS,EAAC;wBAET,CACH,CACF,EAEN9E;IAAK8E,SAAS,EAAC,YAAY;IAAC7E,KAAK,EAAE;MAAEkG,mBAAmB,EAAEP,YAAY,CAAC1C,MAAM,GAAG,CAAC,GAAG,2BAA2B,GAAG;;KAC/G0C,YAAY,CAACQ,GAAG,CAAC,UAACN,QAAQ;IAAA,OACzB9F;MACEqE,GAAG,EAAEyB,QAAQ;MACbO,IAAI,EAAC,QAAQ;MACbC,OAAO,EAAE,SAATA,OAAOA;QAAA,OAAQP,WAAW,CAACD,QAAQ,CAAC;;MACpCS,QAAQ,EAAEd,eAAe,KAAK,IAAI;MAClCX,SAAS,EAAC;OAETW,eAAe,KAAKK,QAAQ,GAC3B9F;MAAM8E,SAAS,EAAC;MAAiF,GAC/FgB,QAAQ,KAAK,QAAQ,GACvB9F,oBAACiF,UAAU,OAAG,GAEdjF,oBAAC4E,UAAU,OACZ,EACAkB,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CACrC;GACV,CAAC,CACE,CACF;AAEV;;ACrFA,IAAMU,eAAe,GAAG,YAAY;AAEpC,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,MAAe;EACpC,QAAQA,MAAM;IACZ,KAAK,cAAc;MACjB,OAAO,4CAA4C;IACrD,KAAK,QAAQ;IACb;MACE,OAAO,4BAA4B;;AAEzC,CAAC;AAED,IAAaC,KAAK,GAAG,SAARA,KAAKA,CAAA7G,IAAA;MAYD8G,YAAY,YAAZA,YAAYA,CAACjG,CAAkB;IAAA;MAC5CA,CAAC,CAACkG,cAAc,EAAE;MAClBC,QAAQ,CAAC,EAAE,CAAC;MACZC,YAAY,CAAC,IAAI,CAAC;MAElB,IAAMpB,aAAa,GAAGlB,gBAAgB,CAACC,KAAK,CAAC;MAC7C,IAAI,CAACiB,aAAa,EAAE;QAClBmB,QAAQ,CAAC,wCAAwC,CAAC;QAClDC,YAAY,CAAC,KAAK,CAAC;QACnB,OAAAvF,OAAA,CAAAgB,OAAA;;MACD,OAAAhB,OAAA,CAAAgB,OAAA,CAAA3B,gBAAA;QAAA,OAAAN,MAAA,aAEG;UAAA,OAAAiB,OAAA,CAAAgB,OAAA,CAC+Bd,YAAY,CAAC,gBAAgB,EAAE;YAC9DsF,KAAK,EAALA,KAAK;YACLC,QAAQ,EAARA,QAAQ;YACRvC,KAAK,EAAEiB;WACR,EAAEP,QAAQ,CAAC,EAAAxE,IAAA,WAAAsG,KAAA;YAAA,IAJJ9E,QAAQ,GAAA8E,KAAA,CAAR9E,QAAQ;cAAEE,IAAI,GAAA4E,KAAA,CAAJ5E,IAAI;YAMtB,IAAI,CAACF,QAAQ,CAAC+E,EAAE,EAAE;cAChBL,QAAQ,CAACL,aAAa,CAACnE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoE,MAAM,CAAC,CAAC;cACrC;;YACD,IAEGU,SAAS;cACXA,SAAS,EAAE;;cAEXC,MAAM,CAACC,IAAI,CAAChC,UAAU,CAAC;cACvB+B,MAAM,CAACE,OAAO,EAAE;;;SAEnB,YAAQC,GAAG,EAAE;UACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;UAClBV,QAAQ,CAAC,yCAAyC,CAAC;SACpD;mBAAAa,UAAA,EAAAC,OAAA;QACCb,YAAY,CAAC,KAAK,CAAC;QAAA,IAAAY,UAAA,QAAAC,OAAA;QAAA,OAAAA,OAAA;;KAEtB,QAAAjH,CAAA;MAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;;EAAA,IA/CD+D,KAAK,GAAA5E,IAAA,CAAL4E,KAAK;IACLU,QAAQ,GAAAtF,IAAA,CAARsF,QAAQ;IAAAC,eAAA,GAAAvF,IAAA,CACRwF,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAGmB,eAAe,GAAAnB,eAAA;IAC5B+B,SAAS,GAAAtH,IAAA,CAATsH,SAAS;EAET,IAAMC,MAAM,GAAGQ,oBAAS,EAAE;EAC1B,IAAAC,SAAA,GAA0BC,cAAQ,CAAC,EAAE,CAAC;IAA/Bf,KAAK,GAAAc,SAAA;IAAEE,QAAQ,GAAAF,SAAA;EACtB,IAAAG,UAAA,GAAgCF,cAAQ,CAAC,EAAE,CAAC;IAArCd,QAAQ,GAAAgB,UAAA;IAAEC,WAAW,GAAAD,UAAA;EAC5B,IAAAE,UAAA,GAA0BJ,cAAQ,CAAC,EAAE,CAAC;IAA/BL,KAAK,GAAAS,UAAA;IAAErB,QAAQ,GAAAqB,UAAA;EACtB,IAAAC,UAAA,GAAkCL,cAAQ,CAAC,KAAK,CAAC;IAA1CM,SAAS,GAAAD,UAAA;IAAErB,YAAY,GAAAqB,UAAA;EAwC9B,OACEpI;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAM8E,SAAS,EAAC;SAET,CACH,EACN9E;IAAI8E,SAAS,EAAC;oBAET,EACL9E;IAAG8E,SAAS,EAAC;+BAET,CACA,EAEN9E;IAAMsI,QAAQ,EAAE1B,YAAY;IAAE9B,SAAS,EAAC;KACtC9E,0CACEA;IAAO8E,SAAS,EAAC;aAET,EACR9E;IACEqG,IAAI,EAAC,OAAO;IACZ7C,KAAK,EAAEwD,KAAK;IACZuB,QAAQ,EAAE,SAAVA,QAAQA,CAAG5H,CAAC;MAAA,OAAKqH,QAAQ,CAACrH,CAAC,CAAC6H,MAAM,CAAChF,KAAK,CAAC;;IACzCiF,WAAW,EAAC,iBAAiB;IAC7BC,QAAQ;IACRC,YAAY,EAAC,OAAO;IACpB7D,SAAS,EAAC;IACV,CACE,EAEN9E,0CACEA;IAAO8E,SAAS,EAAC;gBAET,EACR9E;IACEqG,IAAI,EAAC,UAAU;IACf7C,KAAK,EAAEyD,QAAQ;IACfsB,QAAQ,EAAE,SAAVA,QAAQA,CAAG5H,CAAC;MAAA,OAAKuH,WAAW,CAACvH,CAAC,CAAC6H,MAAM,CAAChF,KAAK,CAAC;;IAC5CiF,WAAW,EAAC,sCAAQ;IACpBC,QAAQ;IACRC,YAAY,EAAC,kBAAkB;IAC/B7D,SAAS,EAAC;IACV,CACE,EAEL4C,KAAK,IACJ1H;IAAG8E,SAAS,EAAC;KACV4C,KAAK,CAET,EAED1H;IACEqG,IAAI,EAAC,QAAQ;IACbE,QAAQ,EAAE8B,SAAS;IACnBvD,SAAS,EAAC;KAETuD,SAAS,GAAG,aAAa,GAAG,SAAS,CAC/B,CACJ,EAEPrI;IAAK8E,SAAS,EAAC;KACb9E,6BAACmF,YAAY;IAACT,KAAK,EAAEA,KAAK;IAAEU,QAAQ,EAAEA,QAAQ;IAAEE,UAAU,EAAEA;IAAc,CACtE,EAENtF;IAAG8E,SAAS,EAAC;+BACiB,GAAG,EAC/B9E,6BAAC4I,IAAI;IACHC,IAAI,EAAC,SAAS;IACd/D,SAAS,EAAC;eAGL,CACL,CACA,CACF;AAEV,CAAC;;AC/ID,IAAMgE,YAAY,GAAG,yCAAyC;AAE9D,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIrC,MAAe;EACpC,QAAQA,MAAM;IACZ,KAAK,cAAc;MACjB,OAAO,sCAAsC;IAC/C,KAAK,aAAa;MAChB,OAAO,4CAA4C;IACrD,KAAK,kBAAkB;MACrB,OAAO,qCAAqC;IAC9C,KAAK,eAAe;MAClB,OAAO,0CAA0C;IACnD;MACE,OAAOoC,YAAY;;AAEzB,CAAC;AAED,IAAaE,MAAM,GAAG,SAATA,MAAMA,CAAAlJ,IAAA;MAQF8G,YAAY,YAAZA,YAAYA,CAACjG,CAAkB;IAAA;MAC5CA,CAAC,CAACkG,cAAc,EAAE;MAClBC,QAAQ,CAAC,EAAE,CAAC;MACZC,YAAY,CAAC,IAAI,CAAC;MAElB,IAAMpB,aAAa,GAAGlB,gBAAgB,CAACC,KAAK,CAAC;MAC7C,IAAI,CAACiB,aAAa,EAAE;QAClBmB,QAAQ,CAAC,0CAA0C,CAAC;QACpDC,YAAY,CAAC,KAAK,CAAC;QACnB,OAAAvF,OAAA,CAAAgB,OAAA;;MACD,OAAAhB,OAAA,CAAAgB,OAAA,CAAA3B,gBAAA;QAAA,OAAAN,MAAA,aAEG;UAAA,OAAAiB,OAAA,CAAAgB,OAAA,CAC+Bd,YAAY,CAC3C,mBAAmB,EACnB;YAAEuH,IAAI,EAAJA,IAAI;YAAEjC,KAAK,EAALA,KAAK;YAAEC,QAAQ,EAARA,QAAQ;YAAEvC,KAAK,EAAEiB;WAAe,EAC/CP,QAAQ,CACT,EAAAxE,IAAA,WAAAsG,KAAA;YAAA,IAJO9E,QAAQ,GAAA8E,KAAA,CAAR9E,QAAQ;cAAEE,IAAI,GAAA4E,KAAA,CAAJ5E,IAAI;YAMtB,IAAI,CAACF,QAAQ,CAAC+E,EAAE,EAAE;cAChBL,QAAQ,CAACiC,aAAa,CAACzG,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoE,MAAM,CAAC,CAAC;cACrC;;YAGFwC,aAAa,CAAC,IAAI,CAAC;YACnB9B,SAAS,aAATA,SAAS,uBAATA,SAAS,EAAI;;SACd,YAAQI,GAAG,EAAE;UACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;UAClBV,QAAQ,CAACgC,YAAY,CAAC;SACvB;mBAAAnB,UAAA,EAAAC,OAAA;QACCb,YAAY,CAAC,KAAK,CAAC;QAAA,IAAAY,UAAA,QAAAC,OAAA;QAAA,OAAAA,OAAA;;KAEtB,QAAAjH,CAAA;MAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;;EAAA,IAxCsB+D,KAAK,GAAA5E,IAAA,CAAL4E,KAAK;IAAEU,QAAQ,GAAAtF,IAAA,CAARsF,QAAQ;IAAEgC,SAAS,GAAAtH,IAAA,CAATsH,SAAS;EACjD,IAAAU,SAAA,GAAwBC,cAAQ,CAAC,EAAE,CAAC;IAA7BkB,IAAI,GAAAnB,SAAA;IAAEqB,OAAO,GAAArB,SAAA;EACpB,IAAAG,UAAA,GAA0BF,cAAQ,CAAC,EAAE,CAAC;IAA/Bf,KAAK,GAAAiB,UAAA;IAAED,QAAQ,GAAAC,UAAA;EACtB,IAAAE,UAAA,GAAgCJ,cAAQ,CAAC,EAAE,CAAC;IAArCd,QAAQ,GAAAkB,UAAA;IAAED,WAAW,GAAAC,UAAA;EAC5B,IAAAC,UAAA,GAA0BL,cAAQ,CAAC,EAAE,CAAC;IAA/BL,KAAK,GAAAU,UAAA;IAAEtB,QAAQ,GAAAsB,UAAA;EACtB,IAAAgB,UAAA,GAAkCrB,cAAQ,CAAC,KAAK,CAAC;IAA1CM,SAAS,GAAAe,UAAA;IAAErC,YAAY,GAAAqC,UAAA;EAC9B,IAAAC,UAAA,GAAoCtB,cAAQ,CAAC,KAAK,CAAC;IAA5CuB,UAAU,GAAAD,UAAA;IAAEH,aAAa,GAAAG,UAAA;EAoChC,IAAIC,UAAU,EAAE;IACd,OACEtJ;MAAK8E,SAAS,EAAC;OACb9E;MAAK8E,SAAS,EAAC;OACb9E;MAAK8E,SAAS,EAAC;OACb9E;MAAK8E,SAAS,EAAC;sBAET,CACF,EACN9E;MAAI8E,SAAS,EAAC;0BAET,EACL9E;MAAG8E,SAAS,EAAC;yCACoB,GAAG,EAClC9E;MAAM8E,SAAS,EAAC;OACbkC,KAAK,CACD,yCAEL,EACJhH;MAAG8E,SAAS,EAAC;4BACO,GAAG,EACrB9E,6BAAC4I,IAAI;MACHC,IAAI,EAAC,QAAQ;MACb/D,SAAS,EAAC;iBAGL,CACL,CACA,CACF;;EAIV,OACE9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAI8E,SAAS,EAAC;yBAET,EACL9E;IAAG8E,SAAS,EAAC;kCAET,CACA,EAEN9E;IAAMsI,QAAQ,EAAE1B,YAAY;IAAE9B,SAAS,EAAC;KACtC9E,0CACEA;IAAO8E,SAAS,EAAC;YAET,EACR9E;IACEqG,IAAI,EAAC,MAAM;IACX7C,KAAK,EAAEyF,IAAI;IACXV,QAAQ,EAAE,SAAVA,QAAQA,CAAG5H,CAAC;MAAA,OAAKwI,OAAO,CAACxI,CAAC,CAAC6H,MAAM,CAAChF,KAAK,CAAC;;IACxCiF,WAAW,EAAC,YAAY;IACxBE,YAAY,EAAC,MAAM;IACnB7D,SAAS,EAAC;IACV,CACE,EAEN9E,0CACEA;IAAO8E,SAAS,EAAC;aAET,EACR9E;IACEqG,IAAI,EAAC,OAAO;IACZ7C,KAAK,EAAEwD,KAAK;IACZuB,QAAQ,EAAE,SAAVA,QAAQA,CAAG5H,CAAC;MAAA,OAAKqH,QAAQ,CAACrH,CAAC,CAAC6H,MAAM,CAAChF,KAAK,CAAC;;IACzCiF,WAAW,EAAC,iBAAiB;IAC7BC,QAAQ;IACRC,YAAY,EAAC,OAAO;IACpB7D,SAAS,EAAC;IACV,CACE,EAEN9E,0CACEA;IAAO8E,SAAS,EAAC;gBAET,EACR9E;IACEqG,IAAI,EAAC,UAAU;IACf7C,KAAK,EAAEyD,QAAQ;IACfsB,QAAQ,EAAE,SAAVA,QAAQA,CAAG5H,CAAC;MAAA,OAAKuH,WAAW,CAACvH,CAAC,CAAC6H,MAAM,CAAChF,KAAK,CAAC;;IAC5CiF,WAAW,EAAC,mBAAmB;IAC/BC,QAAQ;IACRC,YAAY,EAAC,cAAc;IAC3B7D,SAAS,EAAC;IACV,CACE,EAEL4C,KAAK,IACJ1H;IAAG8E,SAAS,EAAC;KACV4C,KAAK,CAET,EAED1H;IACEqG,IAAI,EAAC,QAAQ;IACbE,QAAQ,EAAE8B,SAAS;IACnBvD,SAAS,EAAC;KAETuD,SAAS,GAAG,mBAAmB,GAAG,gBAAgB,CAC5C,CACJ,EAEPrI;IAAK8E,SAAS,EAAC;KACb9E,6BAACmF,YAAY;IAACT,KAAK,EAAEA,KAAK;IAAEU,QAAQ,EAAEA;IAAY,CAC9C,EAENpF;IAAG8E,SAAS,EAAC;iCACc,GAAG,EAC5B9E,6BAAC4I,IAAI;IACHC,IAAI,EAAC,QAAQ;IACb/D,SAAS,EAAC;eAGL,CACL,CACA,CACF;AAEV,CAAC;;ICvLYyE,WAAW,YAAXA,WAAWA,CAAAzJ,IAAA;MACtByE,YAAY,GAAAzE,IAAA,CAAZyE,YAAY;IACZG,KAAK,GAAA5E,IAAA,CAAL4E,KAAK;IACLU,QAAQ,GAAAtF,IAAA,CAARsF,QAAQ;EAAA,OAAA5D,OAAA,CAAAgB,OAAA,CAEgB+B,YAAY,EAAA3D,IAAA,WAAAsG,KAAA;IAAA,IAAAsC,KAAA;IAAA,IAA5BC,KAAK,GAAAvC,KAAA,CAALuC,KAAK;IAAA,SAAApH,OAAAuF,OAAA;MAAA,OAAA4B,KAAA,GAAA5B,OAAA,GA+BN5H,6BAAC0J,YAAY;QAAChD,MAAM,EAAC;QAAY;;IA7BxC,IAAI,CAAC+C,KAAK,EAAE;MACV,OAAOzJ,6BAAC0J,YAAY;QAAChD,MAAM,EAAC;QAAY;;IAG1C,IAAMf,aAAa,GAAGlB,gBAAgB,CAACC,KAAK,CAAC;IAC7C,IAAI,CAACiB,aAAa,EAAE;MAClB,OACE3F,6BAAC0J,YAAY;QAAChD,MAAM,EAAC,OAAO;QAACiD,OAAO,EAAC;QAAkD;;IAE1F,IAAApH,KAAA,GAAAhC,MAAA,aAEG;MAAA,OAAAiB,OAAA,CAAAgB,OAAA,CAC+BxB,WAAW,CAC1C,uBAAuB,EACvBoE,QAAQ,EACR;QAAEqE,KAAK,EAALA,KAAK;QAAE/E,KAAK,EAAEiB;OAAe,CAChC,EAAA/E,IAAA,WAAAgJ,KAAA;QAAA,IAJOxH,QAAQ,GAAAwH,KAAA,CAARxH,QAAQ;UAAEE,IAAI,GAAAsH,KAAA,CAAJtH,IAAI;QAAA,IAMlB,CAACF,QAAQ,CAAC+E,EAAE;UAAA,IAAA0C,KAAA,EAAAC,aAAA;UACd,IAAMH,OAAO,IAAAE,KAAA,IAAAC,aAAA,GAAGxH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEqH,OAAO,YAAAG,aAAA,GAAIxH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoE,MAAM,YAAAmD,KAAA,GAAI,sBAAsB;UAAA,IAAAE,oBAAA,GAChE/J,6BAAC0J,YAAY;YAAChD,MAAM,EAAC,OAAO;YAACiD,OAAO,EAAEA;YAAW;UAAAH,KAAA;UAAA,OAAAO,oBAAA;;;KAE3D,YAAQvC,GAAG,EAAE;MACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAAA,IAAAwC,qBAAA,GAEhBhK,6BAAC0J,YAAY;QAAChD,MAAM,EAAC,OAAO;QAACiD,OAAO,EAAC;QAA8C;MAAAH,KAAA;MAAA,OAAAQ,qBAAA;KAEtF;IAAA,OAAAzH,KAAA,IAAAA,KAAA,CAAA3B,IAAA,GAAA2B,KAAA,CAAA3B,IAAA,CAAAyB,MAAA,IAAAA,MAAA,CAAAE,KAAA;;AAGH,CAAC;AAED,SAASmH,YAAYA,CAAAO,KAAA;MACnBvD,MAAM,GAAAuD,KAAA,CAANvD,MAAM;IACNiD,OAAO,GAAAM,KAAA,CAAPN,OAAO;EAKP,IAAMO,SAAS,GAAGxD,MAAM,KAAK,SAAS;EAEtC,OACE1G;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;IAA4E,EAC3F9E;IAAK8E,SAAS,EAAC;IAAgF,EAC/F9E;IACE8E,SAAS,EAAC,iCAAiC;IAC3C7E,KAAK,EAAE;MACLkK,eAAe,EACb,uDAAuD;MACzDC,cAAc,EAAE;;IAElB,EAEFpK;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAM8E,SAAS,EAAC;SAA0C,CACtD,EACN9E;IAAM8E,SAAS,EAAC;eAET,CACH,CACF,EAEN9E;IAAK8E,SAAS,EAAC;KACb9E;IACE8E,SAAS,kGACPoF,SAAS,GAAG,2BAA2B,GAAG,uBAC5C;KAECA,SAAS,GAAG,GAAG,GAAG,GAAG,CAClB,EAENlK;IAAG8E,SAAS,EAAC;0BAET,EACJ9E;IAAI8E,SAAS,EAAC;KACXoF,SAAS,GACN,sCAAsC,GACtC,sCAAsC,CACvC,CACD,CACF,EAENlK;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IAAM8E,SAAS,EAAC;SAET,CACH,EACN9E;IAAM8E,SAAS,EAAC;eAET,CACH,EAEN9E;IAAK8E,SAAS,EAAC;KACb9E;IAAK8E,SAAS,EAAC;KACb9E;IACE8E,SAAS,kFACPoF,SAAS,GACL,2BAA2B,GAC3B,uBACN;KAECA,SAAS,GAAG,GAAG,GAAG,GAAG,CAClB,CACF,EAENlK;IAAG8E,SAAS,EAAC;0BAET,EAEJ9E;IAAI8E,SAAS,EAAC;KACXoF,SAAS,GAAG,iBAAiB,GAAG,qBAAqB,CACnD,EAELlK;IAAG8E,SAAS,EAAC;KACVoF,SAAS,GACN,2FAA2F,GAC3FP,OAAO,WAAPA,OAAO,GACP,sFAAsF,CACxF,EAEJ3J,6BAAC4I,IAAI;IACHC,IAAI,EAAC,QAAQ;IACb/D,SAAS,EAAC;KAEToF,SAAS,GAAG,2BAA2B,GAAG,eAAe,CACrD,EAEN,CAACA,SAAS,IACTlK;IAAG8E,SAAS,EAAC;yBACM,GAAG,EACpB9E,6BAAC4I,IAAI;IACHC,IAAI,EAAC,SAAS;IACd/D,SAAS,EAAC;qBAGL,CAEV,EAEAoF,SAAS,IACRlK;IAAG8E,SAAS,EAAC;+DAGd,CACG,CACF,CACF;AAEV;;AC1IA,SAASuF,QAAQA,CAAAvK,IAAA;MAAGgF,SAAS,GAAAhF,IAAA,CAATgF,SAAS;EAC3B,OACE9E;IAAK8E,SAAS,EAAEA,SAAS;IAAED,OAAO,EAAC,WAAW;IAACG,IAAI,EAAC,MAAM;IAACsF,MAAM,EAAC,cAAc;IAACC,WAAW,EAAC,MAAM;IAACC,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;KACvIzK;IAAQ0K,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,CAAC,EAAC;IAAM,EAC/B5K;IAAM+E,CAAC,EAAC;IAAgC,CACpC;AAEV;AAEA,SAAS8F,YAAYA,CAAA3D,KAAA;MAAGpC,SAAS,GAAAoC,KAAA,CAATpC,SAAS;EAC/B,OACE9E;IAAK8E,SAAS,EAAEA,SAAS;IAAED,OAAO,EAAC,WAAW;IAACG,IAAI,EAAC,MAAM;IAACsF,MAAM,EAAC,cAAc;IAACC,WAAW,EAAC,MAAM;IAACC,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;KACvIzK;IAAQ0K,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,IAAI;IAACC,CAAC,EAAC;IAAM,EAChC5K;IAAM+E,CAAC,EAAC;IAAglB,CACplB;AAEV;AAEA,SAAS+F,UAAUA,CAAAlB,KAAA;MAAG9E,SAAS,GAAA8E,KAAA,CAAT9E,SAAS;EAC7B,OACE9E;IAAK8E,SAAS,EAAEA,SAAS;IAAED,OAAO,EAAC,WAAW;IAACG,IAAI,EAAC,MAAM;IAACsF,MAAM,EAAC,cAAc;IAACC,WAAW,EAAC,MAAM;IAACC,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;KACvIzK;IAAM+E,CAAC,EAAC;IAAyC,EACjD/E;IAAU+K,MAAM,EAAC;IAAqB,EACtC/K;IAAMgL,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,GAAG;IAACC,EAAE,EAAC;IAAO,CACnC;AAEV;AAEA,SAASC,kBAAkBA,CAAAvB,KAAA;MAAG/E,SAAS,GAAA+E,KAAA,CAAT/E,SAAS;EACrC,OACE9E;IAAK8E,SAAS,EAAEA,SAAS;IAAED,OAAO,EAAC,WAAW;IAACG,IAAI,EAAC,MAAM;IAACsF,MAAM,EAAC,cAAc;IAACC,WAAW,EAAC,GAAG;IAACC,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;KACpIzK;IAAM+E,CAAC,EAAC;IAA8B,CAClC;AAEV;AAIA,IAAMsG,aAAa,GAAG,CACpB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,CACd;AAED,SAASC,cAAcA,CAACrC,IAAY;EAClC,IAAIsC,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvC,IAAI,CAAC/F,MAAM,EAAEsI,CAAC,EAAE,EAAED,IAAI,GAAGtC,IAAI,CAACwC,UAAU,CAACD,CAAC,CAAC,IAAI,CAACD,IAAI,IAAI,CAAC,IAAIA,IAAI,CAAC;EACtF,OAAOF,aAAa,CAACK,IAAI,CAACC,GAAG,CAACJ,IAAI,CAAC,GAAGF,aAAa,CAACnI,MAAM,CAAC;AAC7D;AAEA,SAAS0I,WAAWA,CAAC3C,IAAY;EAC/B,OAAOA,IAAI,CACR4C,KAAK,CAAC,GAAG,CAAC,CACVC,MAAM,CAACC,OAAO,CAAC,CACf3F,GAAG,CAAC,UAAC4F,CAAC;IAAA,OAAKA,CAAC,CAAC,CAAC,CAAC;IAAC,CAChBC,IAAI,CAAC,EAAE,CAAC,CACRC,WAAW,EAAE,CACbC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB;AAIA,IAAaC,QAAQ,GAAG,SAAXA,QAAQA,CAAAnC,KAAA;;MAuDJoC,YAAY,YAAZA,YAAYA;IAAA;;YASrBC,QAAQ;UACVA,QAAQ,EAAE;;UAEVjF,MAAM,CAACC,IAAI,CAACiF,gBAAgB,CAAC;UAC7BlF,MAAM,CAACE,OAAO,EAAE;;;MAZlB,IAAM5B,aAAa,GAAGlB,gBAAgB,CAACC,KAAK,CAAC;MAAA,IAAArC,MAAA,GAAA9B,MAAA,aAEzC;QAAA,OAAAiB,OAAA,CAAAgB,OAAA,CACIxB,WAAW,CAAC,iBAAiB,EAAEoE,QAAQ,EAAEO,aAAa,GAAG;UAAEjB,KAAK,EAAEiB;SAAe,GAAGrB,SAAS,CAAC,EAAA1D,IAAA;OACrG,YAAQ4G,GAAG,EAAE;QACZC,OAAO,CAACC,KAAK,CAAC,eAAe,EAAEF,GAAG,CAAC;OACpC;MAAA,OAAAhG,OAAA,CAAAgB,OAAA,CAAAH,MAAA,IAAAA,MAAA,CAAAzB,IAAA,GAAAyB,MAAA,CAAAzB,IAAA,CAAA4L,MAAA,IAAAA,MAAA,CAAAnK,MAAA;KAQF,QAAA1B,CAAA;MAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;;EAAA,IArEK8L,QAAQ,GAAAxC,KAAA,CAAdyC,IAAI;IACJhI,KAAK,GAAAuF,KAAA,CAALvF,KAAK;IACLU,QAAQ,GAAA6E,KAAA,CAAR7E,QAAQ;IAAAuH,qBAAA,GAAA1C,KAAA,CACRsC,gBAAgB;IAAhBA,gBAAgB,GAAAI,qBAAA,cAAG,GAAG,GAAAA,qBAAA;IAAAC,iBAAA,GAAA3C,KAAA,CACtB4C,WAAW;IAAXA,WAAW,GAAAD,iBAAA,cAAG,UAAU,GAAAA,iBAAA;IAAAE,kBAAA,GAAA7C,KAAA,CACxB8C,YAAY;IAAZA,YAAY,GAAAD,kBAAA,cAAG,WAAW,GAAAA,kBAAA;IAC1BR,QAAQ,GAAArC,KAAA,CAARqC,QAAQ;EAER,IAAAxE,SAAA,GAA4BC,cAAQ,CAAC,KAAK,CAAC;IAApCiF,MAAM,GAAAlF,SAAA;IAAEmF,SAAS,GAAAnF,SAAA;EACxB,IAAAG,UAAA,GAAsCF,cAAQ,CAAkB,IAAI,CAAC;IAA9DmF,WAAW,GAAAjF,UAAA;IAAEkF,cAAc,GAAAlF,UAAA;EAClC,IAAAE,UAAA,GAAkCJ,cAAQ,CAAC,CAAC0E,QAAQ,CAAC;IAA9CpE,SAAS,GAAAF,UAAA;IAAEpB,YAAY,GAAAoB,UAAA;EAC9B,IAAMd,MAAM,GAAGQ,oBAAS,EAAE;EAC1B,IAAMuF,OAAO,GAAGC,YAAM,CAAiB,IAAI,CAAC;EAE5CC,eAAS,CAAC;QAKOC,YAAY,YAAZA,YAAYA;MAAA;;oCACrB;YAAA,OAAA/L,OAAA,CAAAgB,OAAA,CAC+BxB,WAAW,CAAC,kBAAkB,EAAEoE,QAAQ,CAAC,EAAAxE,IAAA,WAAA4M,KAAA;cAAA,IAAlEpL,QAAQ,GAAAoL,KAAA,CAARpL,QAAQ;gBAAEE,IAAI,GAAAkL,KAAA,CAAJlL,IAAI;cAAA,IAClB,CAACmL,SAAS,IAAIrL,QAAQ,CAAC+E,EAAE,IAAI7E,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEoK,IAAI;gBACzCS,cAAc,CAAC7K,IAAI,CAACoK,IAAI,CAAC;;;WAE5B,YAAQlF,GAAG,EAAE;YACZC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;WAC/C;qBAAAG,UAAA,EAAAC,OAAA;UACC,IAAI,CAAC6F,SAAS,EAAE1G,YAAY,CAAC,KAAK,CAAC;UAAA,IAAAY,UAAA,QAAAC,OAAA;UAAA,OAAAA,OAAA;;QAAA,OAAApG,OAAA,CAAAgB,OAAA,CAAAD,KAAA,IAAAA,KAAA,CAAA3B,IAAA,GAAA2B,KAAA,CAAA3B,IAAA;OAEtC,QAAAD,CAAA;QAAA,OAAAa,OAAA,CAAAC,MAAA,CAAAd,CAAA;;;IAfD,IAAI8L,QAAQ,EAAE;IAEd,IAAIgB,SAAS,GAAG,KAAK;IAerBF,YAAY,EAAE;IACd,OAAO;MAAQE,SAAS,GAAG,IAAI;KAAE;GAClC,EAAE,CAACrI,QAAQ,EAAEqH,QAAQ,CAAC,CAAC;EAExBa,eAAS,CAAC;IACR,SAASI,kBAAkBA,CAAC/M,CAAa;MACvC,IAAIyM,OAAO,CAACO,OAAO,IAAI,CAACP,OAAO,CAACO,OAAO,CAACC,QAAQ,CAACjN,CAAC,CAAC6H,MAAc,CAAC,EAAE;QAClEyE,SAAS,CAAC,KAAK,CAAC;;;IAGpBY,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAEJ,kBAAkB,CAAC;IAC1D,OAAO;MAAA,OAAMG,QAAQ,CAACE,mBAAmB,CAAC,WAAW,EAAEL,kBAAkB,CAAC;;GAC3E,EAAE,EAAE,CAAC;EAEN,IAAMhB,IAAI,GAAGD,QAAQ,IAAIS,WAAW;EAEpC,IAAI7E,SAAS,IAAI,CAACqE,IAAI,EAAE,OAAO,IAAI;EAEnC,IAAMsB,WAAW,GAAGtB,IAAI,CAACzD,IAAI,MAAAgF,WAAA,GAAIvB,IAAI,CAAC1F,KAAK,cAAAiH,WAAA,uBAAVA,WAAA,CAAYpC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAI,MAAM;EACpE,IAAMqC,QAAQ,GAAGtC,WAAW,CAACoC,WAAW,CAAC;EACzC,IAAMG,WAAW,GAAG7C,cAAc,CAAC0C,WAAW,CAAC;EAmB/C,OACEhO;IAAKoO,GAAG,EAAEhB,OAAO;IAAEtI,SAAS,EAAC;KAE1BkI,MAAM,IACLhN;IACE8E,SAAS,EAAC;KAMV9E;IAAK8E,SAAS,EAAC;KACb9E;IAAG8E,SAAS,EAAC;KACVkJ,WAAW,CACV,EACHtB,IAAI,CAAC1F,KAAK,IACThH;IAAG8E,SAAS,EAAC;KACV4H,IAAI,CAAC1F,KAAK,CAEd,CACG,EAENhH;IAAK8E,SAAS,EAAC;KACb9E,6BAAC4I,IAAI;IACHC,IAAI,EAAEgE,WAAW;IACjBvG,OAAO,EAAE,SAATA,OAAOA;MAAA,OAAQ2G,SAAS,CAAC,KAAK,CAAC;;IAC/BnI,SAAS,EAAC;KAEV9E,6BAACqK,QAAQ;IAACvF,SAAS,EAAC;IAA0B,YAEzC,EACP9E,6BAAC4I,IAAI;IACHC,IAAI,EAAEkE,YAAY;IAClBzG,OAAO,EAAE,SAATA,OAAOA;MAAA,OAAQ2G,SAAS,CAAC,KAAK,CAAC;;IAC/BnI,SAAS,EAAC;KAEV9E,6BAAC6K,YAAY;IAAC/F,SAAS,EAAC;IAA0B,aAE7C,EACP9E;IACEsG,OAAO,EAAE+F,YAAY;IACrBvH,SAAS,EAAC;KAEV9E,6BAAC8K,UAAU;IAAChG,SAAS,EAAC;IAA0B,YAEzC,CACL,CAET,EAGD9E;IACEsG,OAAO,EAAE,SAATA,OAAOA;MAAA,OAAQ2G,SAAS,CAAC,UAACoB,CAAC;QAAA,OAAK,CAACA,CAAC;QAAC;;IACnCC,KAAK,EAAEN,WAAW;IAClBlJ,SAAS,EAAC;KAGV9E;IACE8E,SAAS,EAAE,sEAAsE,GAAGqJ;KAEpFnO;IAAM8E,SAAS,EAAC;KACboJ,QAAQ,CACJ,CACH,EACNlO;IAAK8E,SAAS,EAAC;KACb9E;IAAG8E,SAAS,EAAC;KACVkJ,WAAW,CACV,CACA,EACNhO,6BAACoL,kBAAkB;IAACtG,SAAS,EAAC;IAA4C,CACnE,CACL;AAEV,CAAC;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.bun/babel-plugin-transform-async-to-promises@0.8.18/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/utils/authApi.ts","../src/i18n/translations.ts","../src/i18n/I18nContext.tsx","../src/components/OAuthButtons.tsx","../src/components/Login.tsx","../src/components/Signup.tsx","../src/components/VerifyEmail.tsx","../src/components/ResetPassword.tsx","../src/components/UserMenu.tsx","../src/utils/iamApi.ts","../src/components/iam/icons.tsx","../src/components/iam/DropdownMenu.tsx","../src/components/iam/ConfirmDialog.tsx","../src/components/iam/UserModal.tsx","../src/components/iam/RoleModal.tsx","../src/components/iam/GroupModal.tsx","../src/components/IAMConsole.tsx","../src/components/Profile.tsx"],"sourcesContent":["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","const DEFAULT_AUTH_HOST = (() => {\n const envHost = process.env.NEXT_PUBLIC_AUTH_API_HOST?.trim()\n if (envHost && envHost.length > 0) {\n return envHost\n }\n\n return 'https://auth.create-flow.ai'\n})()\n\nconst DEFAULT_APP_ID = process.env.NEXT_PUBLIC_AUTH_APP_ID?.trim() ?? ''\n\nfunction normalizeHost(host?: string) {\n const value = (host ?? DEFAULT_AUTH_HOST).trim()\n\n // Empty host = same-origin (relative URLs via proxy/rewrite)\n if (!value) return ''\n\n if (/^https?:\\/\\//i.test(value)) {\n return value.replace(/\\/+$/g, '')\n }\n\n return `https://${value}`.replace(/\\/+$/g, '')\n}\n\nfunction buildAuthUrl(path: string, host?: string, query?: Record<string, string | undefined>) {\n const normalizedHost = normalizeHost(host)\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n\n // For relative URLs (same-origin proxy mode), build path + query string manually\n if (!normalizedHost) {\n const params = new URLSearchParams()\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n params.set(key, value)\n }\n }\n }\n const qs = params.toString()\n return normalizedPath + (qs ? '?' + qs : '')\n }\n\n const url = new URL(normalizedPath, normalizedHost)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, value)\n }\n }\n }\n\n return url.toString()\n}\n\nasync function fetchWithCredentials(url: string, init: RequestInit = {}) {\n const response = await fetch(url, {\n credentials: 'include',\n cache: 'no-store',\n ...init\n })\n let data: any = null\n\n try {\n data = await response.json()\n } catch {\n // Ignore JSON parse errors\n }\n\n return { response, data }\n}\n\nexport async function postAuthJson(path: string, body: unknown, host?: string, authToken?: string) {\n const url = buildAuthUrl(path, host)\n const headers: Record<string, string> = { 'Content-Type': 'application/json' }\n if (authToken) headers['Authorization'] = `Bearer ${authToken}`\n return fetchWithCredentials(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n })\n}\n\nexport async function getAuthJson(path: string, host?: string, query?: Record<string, string | undefined>, authToken?: string) {\n const url = buildAuthUrl(path, host, query)\n const headers: Record<string, string> = {}\n if (authToken) headers['Authorization'] = `Bearer ${authToken}`\n return fetchWithCredentials(url, { method: 'GET', headers })\n}\n\nfunction getResolvedAppId(appId?: string) {\n return (appId ?? DEFAULT_APP_ID).trim()\n}\n\nexport { DEFAULT_AUTH_HOST, DEFAULT_APP_ID, buildAuthUrl, getResolvedAppId }\n","import enUS from '../locales/en-US.json'\nimport enGB from '../locales/en-GB.json'\nimport enAU from '../locales/en-AU.json'\nimport enCA from '../locales/en-CA.json'\nimport esES from '../locales/es-ES.json'\nimport esMX from '../locales/es-MX.json'\nimport esAR from '../locales/es-AR.json'\nimport frFR from '../locales/fr-FR.json'\nimport frCA from '../locales/fr-CA.json'\nimport deDE from '../locales/de-DE.json'\nimport deAT from '../locales/de-AT.json'\nimport itIT from '../locales/it-IT.json'\nimport ptBR from '../locales/pt-BR.json'\nimport ptPT from '../locales/pt-PT.json'\nimport roRO from '../locales/ro-RO.json'\nimport ruRU from '../locales/ru-RU.json'\nimport plPL from '../locales/pl-PL.json'\nimport ukUA from '../locales/uk-UA.json'\nimport csCZ from '../locales/cs-CZ.json'\nimport nlNL from '../locales/nl-NL.json'\nimport svSE from '../locales/sv-SE.json'\nimport daDK from '../locales/da-DK.json'\nimport noNO from '../locales/no-NO.json'\nimport fiFI from '../locales/fi-FI.json'\nimport jaJP from '../locales/ja-JP.json'\nimport koKR from '../locales/ko-KR.json'\nimport zhCN from '../locales/zh-CN.json'\nimport zhTW from '../locales/zh-TW.json'\nimport thTH from '../locales/th-TH.json'\nimport viVN from '../locales/vi-VN.json'\nimport idID from '../locales/id-ID.json'\nimport msMY from '../locales/ms-MY.json'\nimport hiIN from '../locales/hi-IN.json'\nimport bnIN from '../locales/bn-IN.json'\nimport taIN from '../locales/ta-IN.json'\nimport teIN from '../locales/te-IN.json'\nimport trTR from '../locales/tr-TR.json'\nimport elGR from '../locales/el-GR.json'\nimport arSA from '../locales/ar-SA.json'\nimport arEG from '../locales/ar-EG.json'\n\nexport const translations: Record<string, Record<string, string>> = {\n 'en-US': enUS,\n 'en-GB': enGB,\n 'en-AU': enAU,\n 'en-CA': enCA,\n 'es-ES': esES,\n 'es-MX': esMX,\n 'es-AR': esAR,\n 'fr-FR': frFR,\n 'fr-CA': frCA,\n 'de-DE': deDE,\n 'de-AT': deAT,\n 'it-IT': itIT,\n 'pt-BR': ptBR,\n 'pt-PT': ptPT,\n 'ro-RO': roRO,\n 'ru-RU': ruRU,\n 'pl-PL': plPL,\n 'uk-UA': ukUA,\n 'cs-CZ': csCZ,\n 'nl-NL': nlNL,\n 'sv-SE': svSE,\n 'da-DK': daDK,\n 'no-NO': noNO,\n 'fi-FI': fiFI,\n 'ja-JP': jaJP,\n 'ko-KR': koKR,\n 'zh-CN': zhCN,\n 'zh-TW': zhTW,\n 'th-TH': thTH,\n 'vi-VN': viVN,\n 'id-ID': idID,\n 'ms-MY': msMY,\n 'hi-IN': hiIN,\n 'bn-IN': bnIN,\n 'ta-IN': taIN,\n 'te-IN': teIN,\n 'tr-TR': trTR,\n 'el-GR': elGR,\n 'ar-SA': arSA,\n 'ar-EG': arEG,\n}\n","import React, { createContext, useContext, useState, useMemo, useCallback } from 'react'\nimport { translations } from './translations'\nimport enUS from '../locales/en-US.json'\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport interface LocaleInfo {\n code: string\n name: string\n nativeName: string\n direction: 'ltr' | 'rtl'\n}\n\nexport interface I18nContextValue {\n locale: string\n setLocale: (locale: string) => void\n t: (key: string, vars?: Record<string, string | number>) => string\n availableLocales: LocaleInfo[]\n isRtl: boolean\n}\n\n// ── Constants ─────────────────────────────────────────────────────────────────\n\nconst RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur'])\n\nconst LOCALE_AFFINITY: Record<string, string[]> = {\n en: ['en-US', 'en-GB'],\n es: ['es-ES', 'es-MX'],\n fr: ['fr-FR', 'fr-CA'],\n pt: ['pt-BR', 'pt-PT'],\n de: ['de-DE', 'de-AT'],\n zh: ['zh-CN', 'zh-TW'],\n ar: ['ar-SA', 'ar-EG'],\n it: ['it-IT'],\n ro: ['ro-RO'],\n ru: ['ru-RU'],\n pl: ['pl-PL'],\n uk: ['uk-UA'],\n cs: ['cs-CZ'],\n nl: ['nl-NL'],\n sv: ['sv-SE'],\n da: ['da-DK'],\n no: ['no-NO'],\n fi: ['fi-FI'],\n ja: ['ja-JP'],\n ko: ['ko-KR'],\n th: ['th-TH'],\n vi: ['vi-VN'],\n id: ['id-ID'],\n ms: ['ms-MY'],\n hi: ['hi-IN'],\n bn: ['bn-IN'],\n ta: ['ta-IN'],\n te: ['te-IN'],\n tr: ['tr-TR'],\n el: ['el-GR'],\n}\n\nconst LOCALE_META: LocaleInfo[] = [\n { code: 'ar-EG', name: 'Arabic (Egypt)', nativeName: 'العربية (مصر)', direction: 'rtl' },\n { code: 'ar-SA', name: 'Arabic (Saudi Arabia)', nativeName: 'العربية (السعودية)', direction: 'rtl' },\n { code: 'bn-IN', name: 'Bengali', nativeName: 'বাংলা', direction: 'ltr' },\n { code: 'cs-CZ', name: 'Czech', nativeName: 'Čeština', direction: 'ltr' },\n { code: 'da-DK', name: 'Danish', nativeName: 'Dansk', direction: 'ltr' },\n { code: 'de-AT', name: 'German (Austria)', nativeName: 'Deutsch (Österreich)', direction: 'ltr' },\n { code: 'de-DE', name: 'German (Germany)', nativeName: 'Deutsch (Deutschland)', direction: 'ltr' },\n { code: 'el-GR', name: 'Greek', nativeName: 'Ελληνικά', direction: 'ltr' },\n { code: 'en-AU', name: 'English (Australia)', nativeName: 'English (Australia)', direction: 'ltr' },\n { code: 'en-CA', name: 'English (Canada)', nativeName: 'English (Canada)', direction: 'ltr' },\n { code: 'en-GB', name: 'English (UK)', nativeName: 'English (UK)', direction: 'ltr' },\n { code: 'en-US', name: 'English (US)', nativeName: 'English (US)', direction: 'ltr' },\n { code: 'es-AR', name: 'Spanish (Argentina)', nativeName: 'Español (Argentina)', direction: 'ltr' },\n { code: 'es-ES', name: 'Spanish (Spain)', nativeName: 'Español (España)', direction: 'ltr' },\n { code: 'es-MX', name: 'Spanish (Mexico)', nativeName: 'Español (México)', direction: 'ltr' },\n { code: 'fi-FI', name: 'Finnish', nativeName: 'Suomi', direction: 'ltr' },\n { code: 'fr-CA', name: 'French (Canada)', nativeName: 'Français (Canada)', direction: 'ltr' },\n { code: 'fr-FR', name: 'French (France)', nativeName: 'Français (France)', direction: 'ltr' },\n { code: 'hi-IN', name: 'Hindi', nativeName: 'हिन्दी', direction: 'ltr' },\n { code: 'id-ID', name: 'Indonesian', nativeName: 'Bahasa Indonesia', direction: 'ltr' },\n { code: 'it-IT', name: 'Italian', nativeName: 'Italiano', direction: 'ltr' },\n { code: 'ja-JP', name: 'Japanese', nativeName: '日本語', direction: 'ltr' },\n { code: 'ko-KR', name: 'Korean', nativeName: '한국어', direction: 'ltr' },\n { code: 'ms-MY', name: 'Malay', nativeName: 'Bahasa Melayu', direction: 'ltr' },\n { code: 'nl-NL', name: 'Dutch', nativeName: 'Nederlands', direction: 'ltr' },\n { code: 'no-NO', name: 'Norwegian', nativeName: 'Norsk', direction: 'ltr' },\n { code: 'pl-PL', name: 'Polish', nativeName: 'Polski', direction: 'ltr' },\n { code: 'pt-BR', name: 'Portuguese (Brazil)', nativeName: 'Português (Brasil)', direction: 'ltr' },\n { code: 'pt-PT', name: 'Portuguese (Portugal)', nativeName: 'Português (Portugal)', direction: 'ltr' },\n { code: 'ro-RO', name: 'Romanian', nativeName: 'Română', direction: 'ltr' },\n { code: 'ru-RU', name: 'Russian', nativeName: 'Русский', direction: 'ltr' },\n { code: 'sv-SE', name: 'Swedish', nativeName: 'Svenska', direction: 'ltr' },\n { code: 'ta-IN', name: 'Tamil', nativeName: 'தமிழ்', direction: 'ltr' },\n { code: 'te-IN', name: 'Telugu', nativeName: 'తెలుగు', direction: 'ltr' },\n { code: 'th-TH', name: 'Thai', nativeName: 'ไทย', direction: 'ltr' },\n { code: 'tr-TR', name: 'Turkish', nativeName: 'Türkçe', direction: 'ltr' },\n { code: 'uk-UA', name: 'Ukrainian', nativeName: 'Українська', direction: 'ltr' },\n { code: 'vi-VN', name: 'Vietnamese', nativeName: 'Tiếng Việt', direction: 'ltr' },\n { code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '中文 (简体)', direction: 'ltr' },\n { code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '中文 (繁體)', direction: 'ltr' },\n]\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction normalizeLocale(raw: string): string {\n const parts = raw.trim().replace(/_/g, '-').split('-')\n if (parts.length === 0) return 'en-US'\n parts[0] = parts[0].toLowerCase()\n for (let i = 1; i < parts.length; i++) {\n if (parts[i].length === 2) parts[i] = parts[i].toUpperCase()\n else if (parts[i].length === 4) parts[i] = parts[i][0].toUpperCase() + parts[i].slice(1).toLowerCase()\n }\n return parts.join('-')\n}\n\nfunction findBestLocale(raw: string): string {\n if (raw === 'auto') {\n const browser = typeof navigator !== 'undefined' ? navigator.language : 'en-US'\n return findBestLocale(browser)\n }\n\n const locale = normalizeLocale(raw)\n if (translations[locale]) return locale\n\n const lang = locale.split('-')[0]\n const affinities = LOCALE_AFFINITY[lang]\n if (affinities) {\n for (const aff of affinities) {\n if (translations[aff]) return aff\n }\n }\n\n return 'en-US'\n}\n\n// ── Default t() for use without provider ──────────────────────────────────────\n\nconst fallbackDict = enUS as Record<string, string>\n\nfunction defaultT(key: string, vars?: Record<string, string | number>): string {\n let value = fallbackDict[key] ?? key\n if (vars) {\n for (const [k, v] of Object.entries(vars)) {\n value = value.split(`{${k}}`).join(String(v))\n }\n }\n return value\n}\n\n// ── Context ───────────────────────────────────────────────────────────────────\n\nconst I18nContext = createContext<I18nContextValue>({\n locale: 'en-US',\n setLocale: () => {},\n t: defaultT,\n availableLocales: LOCALE_META,\n isRtl: false,\n})\n\n// ── Provider ──────────────────────────────────────────────────────────────────\n\nexport interface I18nProviderProps {\n defaultLocale?: string\n /** When set, only these locale codes appear in availableLocales (from SiteSettings). */\n supportedLocales?: string[]\n children: React.ReactNode\n onLocaleChange?: (locale: string) => void\n}\n\nexport function I18nProvider({\n defaultLocale = 'en-US',\n supportedLocales,\n children,\n onLocaleChange,\n}: I18nProviderProps) {\n const [locale, setLocaleState] = useState(() => findBestLocale(defaultLocale))\n\n const setLocale = useCallback(\n (newLocale: string) => {\n const best = findBestLocale(newLocale)\n setLocaleState(best)\n if (onLocaleChange) onLocaleChange(newLocale)\n },\n [onLocaleChange]\n )\n\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => {\n const dict = translations[locale] || translations['en-US']\n let value = dict[key] ?? fallbackDict[key] ?? key\n if (vars) {\n for (const [k, v] of Object.entries(vars)) {\n value = value.split(`{${k}}`).join(String(v))\n }\n }\n return value\n },\n [locale]\n )\n\n const isRtl = RTL_LANGUAGES.has(locale.split('-')[0])\n\n const filteredLocales = useMemo(\n () =>\n supportedLocales && supportedLocales.length > 0\n ? LOCALE_META.filter((l) => supportedLocales.includes(l.code))\n : LOCALE_META,\n [supportedLocales]\n )\n\n const value = useMemo(\n () => ({ locale, setLocale, t, availableLocales: filteredLocales, isRtl }),\n [locale, setLocale, t, filteredLocales, isRtl]\n )\n\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>\n}\n\n// ── Hook ──────────────────────────────────────────────────────────────────────\n\nexport function useI18n(): I18nContextValue {\n return useContext(I18nContext)\n}\n","import * as React from 'react'\n\nimport { buildAuthUrl, getResolvedAppId } from '../utils/authApi'\nimport { useI18n } from '../i18n/I18nContext'\n\nexport type OAuthProvider = 'google' | 'github' | 'microsoft'\n\ninterface OAuthButtonsProps {\n appId?: string\n authHost?: string\n redirectTo?: string\n providers?: OAuthProvider[]\n className?: string\n}\n\nconst DEFAULT_PROVIDERS: OAuthProvider[] = ['google', 'microsoft']\n\nfunction GoogleIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" className='h-4 w-4' aria-hidden='true'>\n <path d='M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z' fill='#4285F4' />\n <path d='M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z' fill='#34A853' />\n <path d='M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z' fill='#FBBC05' />\n <path d='M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z' fill='#EA4335' />\n </svg>\n )\n}\n\nfunction MicrosoftIcon() {\n return (\n <svg viewBox='0 0 21 21' className='h-4 w-4' aria-hidden='true'>\n <rect x='1' y='1' width='9' height='9' fill='#F25022' />\n <rect x='11' y='1' width='9' height='9' fill='#7FBA00' />\n <rect x='1' y='11' width='9' height='9' fill='#00A4EF' />\n <rect x='11' y='11' width='9' height='9' fill='#FFB900' />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg role='img' viewBox='0 0 24 24' className='h-4 w-4' aria-hidden='true' fill='currentColor'>\n <path d='M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.93.58.11.79-.25.79-.56 0-.28-.01-1.02-.02-2-3.2.7-3.87-1.53-3.87-1.53-.53-1.35-1.3-1.71-1.3-1.71-1.06-.73.08-.72.08-.72 1.17.08 1.78 1.2 1.78 1.2 1.04 1.78 2.72 1.27 3.38.97.11-.75.41-1.27.74-1.56-2.56-.29-5.25-1.28-5.25-5.69 0-1.26.45-2.29 1.2-3.09-.12-.29-.52-1.47.11-3.06 0 0 .97-.31 3.18 1.18.92-.26 1.9-.39 2.88-.39.98 0 1.96.13 2.88.39 2.2-1.49 3.18-1.18 3.18-1.18.63 1.59.23 2.77.11 3.06.75.8 1.2 1.83 1.2 3.09 0 4.42-2.69 5.39-5.26 5.68.42.36.79 1.09.79 2.2 0 1.59-.01 2.87-.01 3.26 0 .31.21.68.8.56C20.71 21.39 24 17.08 24 12c0-6.35-5.15-11.5-11.5-11.5z' />\n </svg>\n )\n}\n\nexport function OAuthButtons({\n appId,\n authHost,\n redirectTo = '/dashboard',\n providers,\n className\n}: OAuthButtonsProps) {\n const { t } = useI18n()\n const [loadingProvider, setLoadingProvider] = React.useState<string | null>(null)\n const resolvedAppId = getResolvedAppId(appId)\n const providerList = providers !== undefined ? providers : DEFAULT_PROVIDERS\n\n if (!resolvedAppId || providerList.length === 0) {\n return null\n }\n\n function buildRedirectUrl(provider: OAuthProvider) {\n const url = buildAuthUrl('api/auth/oauth', authHost, {\n provider,\n appId: resolvedAppId,\n redirectTo\n })\n return url.toString()\n }\n\n function handleOAuth(provider: OAuthProvider) {\n setLoadingProvider(provider)\n window.location.assign(buildRedirectUrl(provider))\n }\n\n return (\n <div className={className ?? 'space-y-3'}>\n <div className='flex items-center gap-3'>\n <div className='flex-1 border-t border-zinc-200 dark:border-zinc-700' />\n <span className='text-xs text-zinc-400'>{t('auth.oauth.continueWith')}</span>\n <div className='flex-1 border-t border-zinc-200 dark:border-zinc-700' />\n </div>\n\n <div className='grid gap-2' style={{ gridTemplateColumns: providerList.length > 1 ? 'repeat(2, minmax(0, 1fr))' : '1fr' }}>\n {providerList.map((provider) => (\n <button\n key={provider}\n type='button'\n onClick={() => handleOAuth(provider)}\n disabled={loadingProvider !== null}\n className='flex items-center justify-center gap-2 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-4 py-2.5 text-sm font-medium text-zinc-900 dark:text-white transition-colors hover:bg-zinc-50 dark:hover:bg-zinc-750 hover:border-zinc-300 dark:hover:border-zinc-600 disabled:opacity-50 disabled:cursor-not-allowed'\n >\n {loadingProvider === provider ? (\n <span className='h-4 w-4 animate-spin rounded-full border-2 border-zinc-300 border-t-zinc-600' />\n ) : provider === 'microsoft' ? (\n <MicrosoftIcon />\n ) : provider === 'github' ? (\n <GitHubIcon />\n ) : (\n <GoogleIcon />\n )}\n {provider === 'microsoft' ? t('auth.oauth.microsoft') : provider === 'github' ? t('auth.oauth.github') : t('auth.oauth.google')}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import Link from 'next/link'\nimport React, { useState, useEffect } from 'react'\nimport { useRouter } from 'next/navigation'\n\nimport { getResolvedAppId, postAuthJson, getAuthJson } from '../utils/authApi'\nimport { useI18n } from '../i18n/I18nContext'\nimport { OAuthButtons } from './OAuthButtons'\nimport type { OAuthProvider } from './OAuthButtons'\n\nexport interface LoginProps {\n appId?: string\n authHost?: string\n redirectTo?: string\n title?: string\n logo?: string\n hideSignUpMessage?: boolean\n hideLogo?: boolean\n variant?: 'card' | 'flat'\n oauthProviders?: OAuthProvider[]\n onSuccess?: (token?: string) => void\n}\n\nconst defaultRedirect = '/dashboard'\n\nconst getLoginError = (status: string | undefined, t: (key: string) => string): string => {\n switch (status) {\n case 'invalid_data':\n return t('auth.login.validationError')\n case 'failed':\n default:\n return t('auth.login.invalidCredentials')\n }\n}\n\nexport const Login = ({\n appId,\n authHost,\n redirectTo = defaultRedirect,\n title,\n logo,\n hideSignUpMessage,\n hideLogo,\n variant = 'card',\n oauthProviders,\n onSuccess\n}: LoginProps): JSX.Element => {\n const router = useRouter()\n const { t } = useI18n()\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [allowSignUp, setAllowSignUp] = useState(false)\n\n const appName = title || 'Workspace'\n const appInitial = appName.charAt(0).toUpperCase()\n const resolvedAppId = getResolvedAppId(appId)\n\n useEffect(function () {\n if (!resolvedAppId) return\n getAuthJson('api/auth/password-requirements', authHost, { appId: resolvedAppId })\n .then(function (result) {\n if (result.data) {\n setAllowSignUp(result.data.allowSignUp ?? false)\n }\n })\n .catch(function () {})\n }, [resolvedAppId, authHost])\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n setIsLoading(true)\n\n if (!resolvedAppId) {\n setError(t('auth.login.missingAppId'))\n setIsLoading(false)\n return\n }\n\n try {\n const { response, data } = await postAuthJson('api/auth/login', {\n email,\n password,\n appId: resolvedAppId\n }, authHost)\n\n if (!response.ok) {\n setError(getLoginError(data?.status, t))\n return\n }\n\n if (onSuccess) {\n onSuccess(data?.token)\n } else {\n router.push(redirectTo)\n router.refresh()\n }\n } catch (err) {\n console.error(err)\n setError(t('auth.login.genericError'))\n } finally {\n setIsLoading(false)\n }\n }\n\n const isFlat = variant === 'flat'\n\n const content = (\n <React.Fragment>\n <div className='mb-8'>\n {!hideLogo && (logo ? (\n <img src={logo} alt={appName} className='h-9 w-9 rounded-xl object-contain mb-5' />\n ) : (\n <div className='w-9 h-9 rounded-xl bg-zinc-900 dark:bg-zinc-100 mb-5 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>\n {appInitial}\n </span>\n </div>\n ))}\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n {t('auth.login.title')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n {t('auth.login.subtitle')}\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.login.emailLabel')}\n </label>\n <input\n type='email'\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={t('auth.login.emailPlaceholder')}\n required\n autoComplete='email'\n className={'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')}\n />\n </div>\n\n <div>\n <div className='flex items-center justify-between mb-1.5'>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200'>\n {t('auth.login.passwordLabel')}\n </label>\n <Link\n href='/reset-password'\n className='text-xs font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.login.forgotPassword')}\n </Link>\n </div>\n <input\n type='password'\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder={t('auth.login.passwordPlaceholder')}\n required\n autoComplete='current-password'\n className={'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')}\n />\n </div>\n\n {error && (\n <p className='text-sm text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading}\n className='w-full py-2.5 px-4 bg-indigo-600 text-white rounded-lg text-sm font-medium shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? t('auth.login.submitting') : t('auth.login.submitButton')}\n </button>\n </form>\n\n <div className='mt-4'>\n <OAuthButtons appId={appId} authHost={authHost} redirectTo={redirectTo} providers={oauthProviders} />\n </div>\n\n {allowSignUp && !hideSignUpMessage && (\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n {t('auth.login.noAccount')}{' '}\n <Link\n href='/signup'\n className='font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.login.signUpLink')}\n </Link>\n </p>\n )}\n </React.Fragment>\n )\n\n if (isFlat) {\n return <div className='w-full'>{content}</div>\n }\n\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {content}\n </div>\n </div>\n )\n}\n","import Link from 'next/link'\nimport React, { useState, useEffect } from 'react'\n\nimport { getResolvedAppId, postAuthJson, getAuthJson } from '../utils/authApi'\nimport { useI18n } from '../i18n/I18nContext'\nimport { OAuthButtons } from './OAuthButtons'\nimport type { OAuthProvider } from './OAuthButtons'\n\ninterface PasswordPolicy {\n passwordMinLength: number\n passwordRequireUppercase: boolean\n passwordRequireLowercase: boolean\n passwordRequireNumbers: boolean\n passwordRequireSpecialChars: boolean\n allowGuest: boolean\n allowSignUp: boolean\n requireSignupApproval: boolean\n}\n\ninterface SignupProps {\n appId?: string\n authHost?: string\n title?: string\n logo?: string\n hideLogo?: boolean\n variant?: 'card' | 'flat'\n oauthProviders?: OAuthProvider[]\n onSuccess?: () => void\n}\n\ntype TFn = (key: string, vars?: Record<string, string | number>) => string\n\nconst statusMessage = (status: string | undefined, errors: string[] | undefined, t: TFn) => {\n switch (status) {\n case 'invalid_data':\n return t('auth.signup.validationError')\n case 'user_exists':\n return t('auth.signup.userExists')\n case 'sign_up_disabled':\n return t('auth.signup.signUpDisabled')\n case 'app_not_found':\n return t('auth.signup.appNotFound')\n case 'password_policy_violation':\n return errors && errors.length > 0 ? errors.join('. ') + '.' : t('auth.signup.passwordPolicyError')\n default:\n return t('auth.signup.genericError')\n }\n}\n\nfunction validatePassword(password: string, policy: PasswordPolicy | null, t: TFn) {\n if (!policy) return []\n var checks = [\n {\n label: t('auth.signup.policyMinLength', { minLength: policy.passwordMinLength }),\n met: password.length >= policy.passwordMinLength,\n required: true\n }\n ]\n if (policy.passwordRequireUppercase) {\n checks.push({ label: t('auth.signup.policyUppercase'), met: /[A-Z]/.test(password), required: true })\n }\n if (policy.passwordRequireLowercase) {\n checks.push({ label: t('auth.signup.policyLowercase'), met: /[a-z]/.test(password), required: true })\n }\n if (policy.passwordRequireNumbers) {\n checks.push({ label: t('auth.signup.policyNumber'), met: /[0-9]/.test(password), required: true })\n }\n if (policy.passwordRequireSpecialChars) {\n checks.push({ label: t('auth.signup.policySpecialChar'), met: /[^A-Za-z0-9]/.test(password), required: true })\n }\n return checks\n}\n\nexport const Signup = ({ appId, authHost, title, logo, hideLogo, variant = 'card', oauthProviders, onSuccess }: SignupProps): JSX.Element => {\n const { t } = useI18n()\n const [name, setName] = useState('')\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [registered, setRegistered] = useState(false)\n const [pendingApproval, setPendingApproval] = useState(false)\n const [policy, setPolicy] = useState<PasswordPolicy | null>(null)\n\n const appName = title || 'Workspace'\n const appInitial = appName.charAt(0).toUpperCase()\n const resolvedAppId = getResolvedAppId(appId)\n\n useEffect(function () {\n if (!resolvedAppId) return\n getAuthJson('api/auth/password-requirements', authHost, { appId: resolvedAppId })\n .then(function (result) {\n if (result.data) {\n setPolicy(result.data)\n }\n })\n .catch(function () {\n // Use defaults if endpoint unavailable\n })\n }, [resolvedAppId, authHost])\n\n const passwordChecks = validatePassword(password, policy, t)\n const allChecksMet = passwordChecks.length === 0 || passwordChecks.every(function (c) { return c.met })\n const hasPasswordRequirements = passwordChecks.length > 1 // More than just min length\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n\n if (!resolvedAppId) {\n setError(t('auth.login.missingAppId'))\n return\n }\n\n if (!allChecksMet) {\n setError(t('auth.signup.passwordPolicyError'))\n return\n }\n\n setIsLoading(true)\n\n try {\n const { response, data } = await postAuthJson(\n 'api/auth/register',\n { name, email, password, appId: resolvedAppId },\n authHost\n )\n\n if (!response.ok) {\n setError(statusMessage(data?.status, data?.errors, t))\n return\n }\n\n // Check if the response indicates pending approval\n if (data?.status === 'pending_approval') {\n setPendingApproval(true)\n return\n }\n\n setRegistered(true)\n onSuccess?.()\n } catch (err) {\n console.error(err)\n setError(t('auth.signup.genericError'))\n } finally {\n setIsLoading(false)\n }\n }\n\n function handleGuestSignIn() {\n if (!resolvedAppId) return\n var guestUrl = (authHost ? authHost.replace(/\\/+$/, '') : '') + '/api/auth/guest?appId=' + encodeURIComponent(resolvedAppId) + '&redirectUrl=' + encodeURIComponent('/')\n window.location.href = guestUrl\n }\n\n const isFlat = variant === 'flat'\n const inputClassName = 'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')\n\n if (pendingApproval) {\n var pendingContent = (\n <div className='text-center'>\n <div className='flex justify-center mb-5'>\n <div className='w-14 h-14 rounded-2xl bg-amber-50 dark:bg-amber-950/30 flex items-center justify-center text-2xl'>\n ⏲\n </div>\n </div>\n <h1 className='text-xl font-semibold text-zinc-900 dark:text-white tracking-tight mb-2'>\n {t('auth.signup.pendingApprovalTitle')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm leading-relaxed mb-4'>\n {t('auth.signup.pendingApprovalMessage')}\n </p>\n <div className='inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-amber-50 dark:bg-amber-950/30 text-amber-700 dark:text-amber-400 text-xs font-medium mb-6'>\n <span className='w-2 h-2 rounded-full bg-amber-500' />\n {t('auth.signup.pendingApprovalStatus')}\n </div>\n <p className='text-xs text-zinc-400'>\n {t('auth.signup.pendingApprovalFooter')}{' '}\n <Link\n href='/login'\n className='text-indigo-600 dark:text-indigo-400 underline underline-offset-2 hover:text-indigo-700 dark:hover:text-indigo-300'\n >\n {t('auth.signup.signInLink')}\n </Link>\n </p>\n </div>\n )\n\n if (isFlat) return <div className='w-full'>{pendingContent}</div>\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {pendingContent}\n </div>\n </div>\n )\n }\n\n if (registered) {\n var registeredContent = (\n <div className='text-center'>\n <div className='flex justify-center mb-5'>\n <div className='w-14 h-14 rounded-2xl bg-indigo-50 dark:bg-indigo-950/30 flex items-center justify-center text-2xl'>\n ✉\n </div>\n </div>\n <h1 className='text-xl font-semibold text-zinc-900 dark:text-white tracking-tight mb-2'>\n {t('auth.signup.checkEmail')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm leading-relaxed mb-6'>\n {t('auth.signup.verificationSent', { email })}\n </p>\n <p className='text-xs text-zinc-400'>\n {t('auth.signup.alreadyVerified')}{' '}\n <Link\n href='/login'\n className='text-indigo-600 dark:text-indigo-400 underline underline-offset-2 hover:text-indigo-700 dark:hover:text-indigo-300'\n >\n {t('auth.signup.signInLink')}\n </Link>\n </p>\n </div>\n )\n\n if (isFlat) return <div className='w-full'>{registeredContent}</div>\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {registeredContent}\n </div>\n </div>\n )\n }\n\n var content = (\n <React.Fragment>\n <div className='mb-8'>\n {!hideLogo && (logo ? (\n <img src={logo} alt={appName} className='h-9 w-9 rounded-xl object-contain mb-5' />\n ) : (\n <div className='w-9 h-9 rounded-xl bg-zinc-900 dark:bg-zinc-100 mb-5 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>\n {appInitial}\n </span>\n </div>\n ))}\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n {t('auth.signup.title')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n {t('auth.signup.subtitle')}\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.signup.nameLabel')}\n </label>\n <input\n type='text'\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t('auth.signup.namePlaceholder')}\n autoComplete='name'\n className={inputClassName}\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.signup.emailLabel')}\n </label>\n <input\n type='email'\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={t('auth.signup.emailPlaceholder')}\n required\n autoComplete='email'\n className={inputClassName}\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.signup.passwordLabel')}\n </label>\n <input\n type='password'\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder={t('auth.signup.passwordHint', { minLength: policy?.passwordMinLength ?? 6 })}\n required\n autoComplete='new-password'\n className={inputClassName}\n />\n {password.length > 0 && hasPasswordRequirements && (\n <ul className='mt-2 space-y-1'>\n {passwordChecks.map(function (check) {\n return (\n <li key={check.label} className={'text-xs flex items-center gap-1.5 ' + (check.met ? 'text-green-600 dark:text-green-400' : 'text-zinc-400 dark:text-zinc-500')}>\n <span className='flex-shrink-0 w-3.5 text-center'>\n {check.met ? '\\u2713' : '\\u2717'}\n </span>\n {check.label}\n </li>\n )\n })}\n </ul>\n )}\n </div>\n\n {error && (\n <p className='text-sm text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading || (password.length > 0 && !allChecksMet)}\n className='w-full py-2.5 px-4 bg-indigo-600 text-white rounded-lg text-sm font-medium shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? t('auth.signup.submitting') : t('auth.signup.submitButton')}\n </button>\n </form>\n\n <div className='mt-4'>\n <OAuthButtons appId={appId} authHost={authHost} providers={oauthProviders} />\n </div>\n\n {policy && policy.allowGuest && (\n <div className='mt-4'>\n <div className='relative flex items-center py-2'>\n <div className='flex-grow border-t border-zinc-200 dark:border-zinc-700' />\n <span className='flex-shrink-0 px-3 text-xs text-zinc-400 dark:text-zinc-500'>{t('auth.signup.or')}</span>\n <div className='flex-grow border-t border-zinc-200 dark:border-zinc-700' />\n </div>\n <button\n type='button'\n onClick={handleGuestSignIn}\n className='w-full py-2.5 px-4 bg-transparent text-zinc-600 dark:text-zinc-400 rounded-lg text-sm font-medium border border-zinc-200 dark:border-zinc-700 hover:bg-zinc-50 dark:hover:bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-zinc-300 dark:focus:ring-zinc-600 transition-colors'\n >\n {t('auth.signup.guestButton')}\n </button>\n </div>\n )}\n\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n {t('auth.signup.hasAccount')}{' '}\n <Link\n href='/login'\n className='font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.signup.signInLink')}\n </Link>\n </p>\n </React.Fragment>\n )\n\n if (isFlat) {\n return <div className='w-full'>{content}</div>\n }\n\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {content}\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport Link from 'next/link'\n\nimport { getAuthJson, getResolvedAppId } from '../utils/authApi'\nimport { useI18n } from '../i18n/I18nContext'\n\ninterface Props {\n searchParams: Promise<{ token?: string }>\n appId?: string\n authHost?: string\n title?: string\n}\n\nexport const VerifyEmail = async ({\n searchParams,\n appId,\n authHost,\n title\n}: Props): Promise<JSX.Element> => {\n const { token } = await searchParams\n\n if (!token) {\n return <VerifyResult status='invalid' title={title} />\n }\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n return (\n <VerifyResult status='error' title={title} message='Missing appId configuration for verification.' />\n )\n }\n\n try {\n const { response, data } = await getAuthJson(\n 'api/auth/verify-email',\n authHost,\n { token, appId: resolvedAppId }\n )\n\n if (!response.ok) {\n const message = data?.message ?? data?.status ?? 'Verification failed.'\n return <VerifyResult status='error' title={title} message={message} />\n }\n } catch (err) {\n console.error(err)\n return (\n <VerifyResult status='error' title={title} message='Unable to reach the verification service.' />\n )\n }\n\n return <VerifyResult status='success' title={title} />\n}\n\nfunction VerifyResult({\n status,\n title,\n message\n}: {\n status: 'success' | 'error' | 'invalid'\n title?: string\n message?: string\n}): JSX.Element {\n const { t } = useI18n()\n const isSuccess = status === 'success'\n const appName = title || 'Workspace'\n const appInitial = appName.charAt(0).toUpperCase()\n\n return (\n <div className='fixed inset-0 flex flex-col md:flex-row bg-white dark:bg-zinc-950 overflow-auto'>\n <div className='hidden md:flex md:w-5/12 lg:w-[42%] flex-col bg-zinc-900 relative overflow-hidden'>\n <div className='absolute -top-32 -left-32 w-96 h-96 rounded-full bg-zinc-800 opacity-60' />\n <div className='absolute -bottom-24 -right-24 w-80 h-80 rounded-full bg-zinc-800 opacity-60' />\n <div\n className='absolute inset-0 opacity-[0.03]'\n style={{\n backgroundImage:\n 'radial-gradient(circle, #ffffff 1px, transparent 1px)',\n backgroundSize: '28px 28px'\n }}\n />\n\n <div className='relative z-10 p-8'>\n <div className='flex items-center gap-2.5'>\n <div className='w-8 h-8 rounded-lg bg-white flex items-center justify-center'>\n <span className='text-zinc-900 font-bold text-sm'>{appInitial}</span>\n </div>\n <span className='text-white font-semibold tracking-tight'>\n {appName}\n </span>\n </div>\n </div>\n\n <div className='relative z-10 flex-1 flex flex-col items-center justify-center px-12 pb-16 text-center'>\n <div\n className={`mb-8 flex h-24 w-24 items-center justify-center rounded-3xl text-4xl font-bold shadow-2xl ${\n isSuccess ? 'bg-emerald-500 text-white' : 'bg-red-500 text-white'\n }`}\n >\n {isSuccess ? '✓' : '✕'}\n </div>\n\n <p className='mb-3 text-xs font-semibold uppercase tracking-widest text-zinc-500'>\n {t('auth.verifyEmail.sectionLabel')}\n </p>\n <h2 className='text-2xl font-bold leading-snug text-white max-w-xs'>\n {isSuccess\n ? t('auth.verifyEmail.successSubtitle')\n : t('auth.verifyEmail.errorSubtitle')}\n </h2>\n </div>\n </div>\n\n <div className='flex flex-1 flex-col items-center justify-center px-8 py-12 md:px-16 lg:px-24'>\n <div className='mb-10 flex items-center gap-2.5 md:hidden'>\n <div className='w-8 h-8 rounded-lg bg-zinc-900 dark:bg-zinc-100 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>\n {appInitial}\n </span>\n </div>\n <span className='font-semibold tracking-tight text-zinc-900 dark:text-white'>\n {appName}\n </span>\n </div>\n\n <div className='w-full max-w-md'>\n <div className='mb-7 flex justify-start md:hidden'>\n <div\n className={`flex h-16 w-16 items-center justify-center rounded-2xl text-3xl font-bold ${\n isSuccess\n ? 'bg-emerald-500 text-white'\n : 'bg-red-500 text-white'\n }`}\n >\n {isSuccess ? '✓' : '✕'}\n </div>\n </div>\n\n <p className='mb-3 text-xs font-semibold uppercase tracking-widest text-zinc-400 dark:text-zinc-500 hidden md:block'>\n {t('auth.verifyEmail.sectionLabel')}\n </p>\n\n <h1 className='mb-4 text-4xl font-bold tracking-tight text-zinc-900 dark:text-white leading-tight'>\n {isSuccess ? t('auth.verifyEmail.successTitle') : t('auth.verifyEmail.errorTitle')}\n </h1>\n\n <p className='mb-10 text-base leading-relaxed text-zinc-500 dark:text-zinc-400 max-w-sm'>\n {isSuccess\n ? t('auth.verifyEmail.successMessage')\n : message ?? t('auth.verifyEmail.expiredMessage')}\n </p>\n\n <Link\n href='/login'\n className='block w-full rounded-xl bg-indigo-600 px-6 py-3.5 text-center text-sm font-medium text-white transition hover:bg-indigo-700'\n >\n {isSuccess ? t('auth.verifyEmail.successAction') : t('auth.verifyEmail.backToLogin')}\n </Link>\n\n {!isSuccess && (\n <p className='mt-5 text-sm text-zinc-400 dark:text-zinc-500'>\n {t('auth.verifyEmail.needNewLink')}{' '}\n <Link\n href='/signup'\n className='text-indigo-600 dark:text-indigo-400 underline underline-offset-2 hover:text-indigo-700 dark:hover:text-indigo-300'\n >\n {t('auth.verifyEmail.signUpAgain')}\n </Link>\n </p>\n )}\n\n {isSuccess && (\n <p className='mt-5 text-sm text-zinc-400 dark:text-zinc-500'>\n {t('auth.verifyEmail.welcomeEmailNote')}\n </p>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import Link from 'next/link'\nimport React, { useState } from 'react'\nimport { useRouter, useSearchParams } from 'next/navigation'\n\nimport { getResolvedAppId, postAuthJson } from '../utils/authApi'\nimport { useI18n } from '../i18n/I18nContext'\n\nexport interface ResetPasswordProps {\n appId?: string\n authHost?: string\n redirectTo?: string\n title?: string\n hideLogo?: boolean\n variant?: 'card' | 'flat'\n}\n\nexport const ResetPassword = ({\n appId,\n authHost,\n redirectTo = '/',\n title,\n hideLogo,\n variant = 'card'\n}: ResetPasswordProps): JSX.Element => {\n const searchParams = useSearchParams()\n const token = searchParams.get('token')\n const queryAppId = searchParams.get('appId')\n\n if (token) {\n return (\n <NewPasswordForm\n token={token}\n appId={queryAppId || appId}\n authHost={authHost}\n redirectTo={redirectTo}\n title={title}\n hideLogo={hideLogo}\n variant={variant}\n />\n )\n }\n\n return (\n <RequestResetForm\n appId={appId}\n authHost={authHost}\n title={title}\n hideLogo={hideLogo}\n variant={variant}\n />\n )\n}\n\n// ── Request reset (enter email) ─────────────────────────────────\n\nfunction RequestResetForm({\n appId,\n authHost,\n title,\n hideLogo,\n variant\n}: {\n appId?: string\n authHost?: string\n title?: string\n hideLogo?: boolean\n variant?: 'card' | 'flat'\n}) {\n const { t } = useI18n()\n const [email, setEmail] = useState('')\n const [error, setError] = useState('')\n const [sent, setSent] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const appName = title || 'Workspace'\n const appInitial = appName.charAt(0).toUpperCase()\n const isFlat = variant === 'flat'\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n setIsLoading(true)\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n setError(t('auth.resetPassword.missingConfig'))\n setIsLoading(false)\n return\n }\n\n try {\n // Build the resetPageUrl from the current page URL\n const resetPageUrl = window.location.origin + window.location.pathname\n\n const { response, data } = await postAuthJson(\n 'api/apps/' + resolvedAppId + '/users/reset-password',\n { email, resetPageUrl },\n authHost\n )\n\n if (!response.ok) {\n if (data?.status === 'email_not_configured') {\n setError(t('auth.resetPassword.notAvailable'))\n } else {\n setError(t('auth.resetPassword.genericError'))\n }\n return\n }\n\n setSent(true)\n } catch (err) {\n console.error(err)\n setError(t('auth.resetPassword.genericError'))\n } finally {\n setIsLoading(false)\n }\n }\n\n if (sent) {\n const sentContent = (\n <React.Fragment>\n <div className='mb-6'>\n {!hideLogo && (\n <div className='w-9 h-9 rounded-xl bg-zinc-900 dark:bg-zinc-100 mb-5 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>{appInitial}</span>\n </div>\n )}\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n {t('auth.resetPassword.sentTitle')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-2 leading-relaxed'>\n {t('auth.resetPassword.sentMessage', { email })}\n </p>\n </div>\n <Link\n href='/login'\n className='inline-block text-sm font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.resetPassword.backToSignIn')}\n </Link>\n </React.Fragment>\n )\n\n if (isFlat) return <div className='w-full'>{sentContent}</div>\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {sentContent}\n </div>\n </div>\n )\n }\n\n const content = (\n <React.Fragment>\n <div className='mb-8'>\n {!hideLogo && (\n <div className='w-9 h-9 rounded-xl bg-zinc-900 dark:bg-zinc-100 mb-5 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>{appInitial}</span>\n </div>\n )}\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n {t('auth.resetPassword.title')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n {t('auth.resetPassword.subtitle')}\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.resetPassword.emailLabel')}\n </label>\n <input\n type='email'\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={t('auth.resetPassword.emailPlaceholder')}\n required\n autoComplete='email'\n className={'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')}\n />\n </div>\n\n {error && (\n <p className='text-sm text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading}\n className='w-full py-2.5 px-4 bg-indigo-600 text-white rounded-lg text-sm font-medium shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? t('auth.resetPassword.submitting') : t('auth.resetPassword.submitButton')}\n </button>\n </form>\n\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n {t('auth.resetPassword.rememberPassword')}{' '}\n <Link\n href='/login'\n className='font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.resetPassword.signInLink')}\n </Link>\n </p>\n </React.Fragment>\n )\n\n if (isFlat) return <div className='w-full'>{content}</div>\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {content}\n </div>\n </div>\n )\n}\n\n// ── New password form (has token) ───────────────────────────────\n\nfunction NewPasswordForm({\n token,\n appId,\n authHost,\n redirectTo,\n title,\n hideLogo,\n variant\n}: {\n token: string\n appId?: string\n authHost?: string\n redirectTo: string\n title?: string\n hideLogo?: boolean\n variant?: 'card' | 'flat'\n}) {\n const router = useRouter()\n const { t } = useI18n()\n const [password, setPassword] = useState('')\n const [confirmPassword, setConfirmPassword] = useState('')\n const [error, setError] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n\n const appName = title || 'Workspace'\n const appInitial = appName.charAt(0).toUpperCase()\n const isFlat = variant === 'flat'\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n setError('')\n\n if (password.length < 6) {\n setError(t('auth.resetPassword.minLengthError'))\n return\n }\n\n if (password !== confirmPassword) {\n setError(t('auth.resetPassword.mismatchError'))\n return\n }\n\n setIsLoading(true)\n\n const resolvedAppId = getResolvedAppId(appId)\n if (!resolvedAppId) {\n setError(t('auth.resetPassword.missingConfig'))\n setIsLoading(false)\n return\n }\n\n try {\n const { response, data } = await postAuthJson(\n 'api/auth/reset-password',\n { token, appId: resolvedAppId, password },\n authHost\n )\n\n if (!response.ok) {\n if (data?.status === 'invalid_token') {\n setError(t('auth.resetPassword.expiredLink'))\n } else {\n setError(t('auth.resetPassword.genericError'))\n }\n return\n }\n\n // Success — user is signed in, redirect\n router.push(redirectTo)\n router.refresh()\n } catch (err) {\n console.error(err)\n setError(t('auth.resetPassword.genericError'))\n } finally {\n setIsLoading(false)\n }\n }\n\n const content = (\n <React.Fragment>\n <div className='mb-8'>\n {!hideLogo && (\n <div className='w-9 h-9 rounded-xl bg-zinc-900 dark:bg-zinc-100 mb-5 flex items-center justify-center'>\n <span className='text-white dark:text-zinc-900 font-bold text-sm'>{appInitial}</span>\n </div>\n )}\n <h1 className='text-2xl font-semibold text-zinc-900 dark:text-white tracking-tight'>\n {t('auth.resetPassword.newPasswordTitle')}\n </h1>\n <p className='text-zinc-500 dark:text-zinc-400 text-sm mt-1'>\n {t('auth.resetPassword.newPasswordSubtitle')}\n </p>\n </div>\n\n <form onSubmit={handleSubmit} className='space-y-4'>\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.resetPassword.newPasswordLabel')}\n </label>\n <input\n type='password'\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder={t('auth.resetPassword.newPasswordHint')}\n required\n autoComplete='new-password'\n className={'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')}\n />\n </div>\n\n <div>\n <label className='block text-sm font-medium text-zinc-900 dark:text-zinc-200 mb-1.5'>\n {t('auth.resetPassword.confirmPasswordLabel')}\n </label>\n <input\n type='password'\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n placeholder={t('auth.resetPassword.confirmPasswordPlaceholder')}\n required\n autoComplete='new-password'\n className={'w-full px-3 py-2.5 rounded-lg border text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 dark:focus:ring-indigo-400 dark:focus:border-indigo-400 text-sm transition-colors ' + (isFlat ? 'border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800' : 'border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800')}\n />\n </div>\n\n {error && (\n <p className='text-sm text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/20 px-3 py-2 rounded-lg'>\n {error}\n </p>\n )}\n\n <button\n type='submit'\n disabled={isLoading}\n className='w-full py-2.5 px-4 bg-indigo-600 text-white rounded-lg text-sm font-medium shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors'\n >\n {isLoading ? t('auth.resetPassword.resetting') : t('auth.resetPassword.resetButton')}\n </button>\n </form>\n\n <p className='mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400'>\n <Link\n href='/login'\n className='font-medium text-indigo-600 dark:text-indigo-400 hover:underline underline-offset-4'\n >\n {t('auth.resetPassword.backToSignIn')}\n </Link>\n </p>\n </React.Fragment>\n )\n\n if (isFlat) return <div className='w-full'>{content}</div>\n return (\n <div className='w-full max-w-sm'>\n <div className='bg-white dark:bg-zinc-900 rounded-2xl shadow-xl border border-zinc-200 dark:border-zinc-800 p-8'>\n {content}\n </div>\n </div>\n )\n}\n","import React, { useState, useRef, useEffect } from \"react\"\nimport Link from \"next/link\"\nimport { useRouter } from \"next/navigation\"\n\nimport { getResolvedAppId, getAuthJson } from \"../utils/authApi\"\nimport { useI18n } from '../i18n/I18nContext'\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type UserType = \"guest\" | \"regular\"\n\nexport interface AuthUser {\n id: string\n name?: string | null\n email?: string | null\n image?: string | null\n type: UserType\n appId: string\n isGuest: boolean\n}\n\nexport interface UserMenuProps {\n user?: AuthUser\n appId?: string\n authHost?: string\n authToken?: string\n logoutRedirectTo?: string\n profileHref?: string\n settingsHref?: string\n siteSettingsHref?: string\n onLogout?: () => void\n /** When true, only shows the avatar (hides name + chevron). Used by collapsed sidebars. */\n compact?: boolean\n}\n\n// ── Icons ─────────────────────────────────────────────────────────────────────\n\nfunction UserIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 20c0-4 3.6-7 8-7s8 3 8 7\" />\n </svg>\n )\n}\n\nfunction SettingsIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z\" />\n </svg>\n )\n}\n\nfunction SlidersIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\" /><line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\" /><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\" />\n <line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\" /><line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\" />\n <line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\" />\n <line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\" />\n <line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\" />\n </svg>\n )\n}\n\nfunction LogOutIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4\" />\n <polyline points=\"16,17 21,12 16,7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n )\n}\n\nfunction ChevronsUpDownIcon({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7 15l5 5 5-5M7 9l5-5 5 5\" />\n </svg>\n )\n}\n\n// ── Avatar ────────────────────────────────────────────────────────────────────\n\nconst AVATAR_COLORS = [\n \"bg-violet-600\",\n \"bg-indigo-600\",\n \"bg-sky-600\",\n \"bg-emerald-600\",\n \"bg-amber-600\",\n \"bg-rose-600\",\n]\n\nfunction getAvatarColor(name: string): string {\n let hash = 0\n for (let i = 0; i < name.length; i++) hash = name.charCodeAt(i) + ((hash << 5) - hash)\n return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length]\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .filter(Boolean)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n// ── UserMenu ──────────────────────────────────────────────────────────────────\n\nexport const UserMenu = ({\n user: userProp,\n appId,\n authHost,\n authToken,\n logoutRedirectTo = \"/\",\n profileHref = \"/profile\",\n settingsHref = \"/settings\",\n siteSettingsHref,\n onLogout,\n compact,\n}: UserMenuProps) => {\n const { t } = useI18n()\n const [isOpen, setIsOpen] = useState(false)\n const [fetchedUser, setFetchedUser] = useState<AuthUser | null>(null)\n const [isLoading, setIsLoading] = useState(!userProp)\n const router = useRouter()\n const menuRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (userProp) return\n\n let cancelled = false\n\n async function fetchSession() {\n try {\n const { response, data } = await getAuthJson(\"api/auth/session\", authHost, undefined, authToken)\n if (!cancelled && response.ok && data?.user) {\n setFetchedUser(data.user)\n }\n } catch (err) {\n console.error(\"Failed to fetch session:\", err)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n }\n\n fetchSession()\n return () => { cancelled = true }\n }, [authHost, userProp])\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => document.removeEventListener(\"mousedown\", handleClickOutside)\n }, [])\n\n const user = userProp || fetchedUser\n\n if (isLoading || !user) return null\n\n const displayName = user.name || user.email?.split(\"@\")[0] || \"User\"\n const initials = getInitials(displayName)\n const avatarColor = getAvatarColor(displayName)\n\n async function handleLogout() {\n const resolvedAppId = getResolvedAppId(appId)\n\n try {\n await getAuthJson(\"api/auth/logout\", authHost, resolvedAppId ? { appId: resolvedAppId } : undefined, authToken)\n } catch (err) {\n console.error(\"Logout error:\", err)\n }\n\n if (onLogout) {\n onLogout()\n } else {\n router.push(logoutRedirectTo)\n router.refresh()\n }\n }\n\n return (\n <div ref={menuRef} className=\"relative w-full\">\n {/* Dropdown menu */}\n {isOpen && (\n <div\n className=\"absolute bottom-full mb-1 left-0 z-50 w-52\n bg-white border border-zinc-200\n rounded-xl shadow-lg shadow-zinc-200/50\n overflow-hidden\"\n >\n {/* User info */}\n <div className=\"px-3.5 py-3 border-b border-zinc-100\">\n <p className=\"text-sm font-medium text-zinc-900 truncate\">\n {displayName}\n </p>\n {user.email && (\n <p className=\"text-xs text-zinc-500 truncate mt-0.5\">\n {user.email}\n </p>\n )}\n </div>\n {/* Menu items */}\n <div className=\"p-1\">\n <Link\n href={profileHref}\n onClick={() => setIsOpen(false)}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors\"\n >\n <UserIcon className=\"w-4 h-4 text-zinc-400\" />\n {t(\"userMenu.profile\")}\n </Link>\n <Link\n href={settingsHref}\n onClick={() => setIsOpen(false)}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors\"\n >\n <SettingsIcon className=\"w-4 h-4 text-zinc-400\" />\n {t(\"userMenu.settings\")}\n </Link>\n {siteSettingsHref && (\n <Link\n href={siteSettingsHref}\n onClick={() => setIsOpen(false)}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors\"\n >\n <SlidersIcon className=\"w-4 h-4 text-zinc-400\" />\n {t(\"userMenu.siteSettings\")}\n </Link>\n )}\n <button\n onClick={handleLogout}\n className=\"flex items-center gap-2.5 w-full px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 rounded-lg transition-colors text-left\"\n >\n <LogOutIcon className=\"w-4 h-4 text-zinc-400\" />\n {t(\"userMenu.logOut\")}\n </button>\n </div>\n </div>\n )}\n\n {/* Trigger button */}\n <button\n onClick={() => setIsOpen((o) => !o)}\n title={displayName}\n className=\"flex items-center gap-2.5 w-full p-2 rounded-lg\n hover:bg-zinc-800/60 transition-colors text-left\"\n >\n <div\n className={\"w-7 h-7 rounded-full flex items-center justify-center flex-shrink-0 \" + avatarColor}\n >\n <span className=\"text-xs font-semibold text-white leading-none\">\n {initials}\n </span>\n </div>\n {!compact && (\n <React.Fragment>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-zinc-300 truncate leading-tight\">\n {displayName}\n </p>\n </div>\n <ChevronsUpDownIcon className=\"w-3.5 h-3.5 text-zinc-400 flex-shrink-0\" />\n </React.Fragment>\n )}\n </button>\n </div>\n )\n}\n","import { buildAuthUrl } from './authApi'\n\n// ── Types matching the database schema ──────────────────────────────\n\nexport interface IAMUser {\n id: string\n email: string\n name?: string\n title?: string\n phone?: string\n role?: string\n roles?: Array<{ id: string; name: string }>\n groups?: Array<{ id: string; name: string }>\n permissions?: string[]\n permissionDetails?: Array<{ id: string; name: string; module: string }>\n isActive: boolean\n approvalStatus?: 'approved' | 'pending' | 'rejected'\n createdAt: string\n lastLoginAt?: string | null\n}\n\nexport interface IAMRole {\n id: string\n name: string\n description?: string\n isBuiltIn: boolean\n isActive: boolean\n createdAt: string\n permissions?: string[]\n permissionDetails?: Array<{\n id: string\n name: string\n module: string\n isBuiltIn: boolean\n }>\n}\n\nexport interface IAMPermission {\n id: string\n name: string\n module: string\n description?: string\n isBuiltIn: boolean\n createdAt: string\n}\n\nexport interface IAMGroup {\n id: string\n name: string\n description?: string\n createdAt: string\n userCount?: number\n permissions?: string[]\n permissionDetails?: Array<{\n id: string\n name: string\n module: string\n isBuiltIn: boolean\n }>\n}\n\nexport interface IAMPolicy {\n id: string\n appId: string\n sessionTimeoutMinutes: number\n allowGuest: boolean\n allowSignUp: boolean\n requireSignupApproval: boolean\n passwordMinLength: number\n passwordRequireUppercase: boolean\n passwordRequireLowercase: boolean\n passwordRequireNumbers: boolean\n passwordRequireSpecialChars: boolean\n createdAt: string\n updatedAt: string\n}\n\nexport interface PaginationInfo {\n page: number\n limit: number\n totalCount: number\n totalPages: number\n hasNext: boolean\n hasPrev: boolean\n}\n\n// ── Error class ─────────────────────────────────────────────────────\n\nexport class ApiError extends Error {\n public status: number\n public code?: string\n\n constructor(message: string, status: number, code?: string) {\n super(message)\n this.name = 'ApiError'\n this.status = status\n this.code = code\n }\n}\n\n// ── Generic API request ─────────────────────────────────────────────\n\nasync function iamRequest<T>(\n path: string,\n options: RequestInit,\n authHost?: string,\n authToken?: string\n): Promise<T> {\n const url = buildAuthUrl(path, authHost)\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json'\n }\n if (authToken) {\n headers['Authorization'] = 'Bearer ' + authToken\n }\n\n try {\n const response = await fetch(url, {\n ...options,\n headers: {\n ...headers,\n ...(options.headers as Record<string, string> || {})\n },\n credentials: 'include',\n cache: 'no-store'\n })\n\n if (response.status === 401) {\n throw new ApiError('Authentication required', 401)\n }\n\n if (!response.ok) {\n const errorData = await response.json().catch(function () { return {} as Record<string, string> })\n throw new ApiError(\n errorData.error || 'HTTP ' + response.status + ': ' + response.statusText,\n response.status,\n errorData.code\n )\n }\n\n return await response.json()\n } catch (error) {\n if (error instanceof ApiError) {\n throw error\n }\n if (error instanceof TypeError && error.message.includes('fetch')) {\n throw new ApiError('Network error - please check your connection', 0)\n }\n throw new ApiError('An unexpected error occurred', 500)\n }\n}\n\n// ── Users API ───────────────────────────────────────────────────────\n\nexport const usersApi = {\n getAll: function (\n appId: string,\n authHost?: string,\n authToken?: string,\n options?: { excludeGuests?: boolean; page?: number; limit?: number }\n ) {\n var params = new URLSearchParams()\n if (options && options.excludeGuests) params.append('excludeGuests', 'true')\n if (options && options.page) params.append('page', options.page.toString())\n if (options && options.limit) params.append('limit', options.limit.toString())\n\n var qs = params.toString()\n var endpoint = '/api/apps/' + appId + '/users' + (qs ? '?' + qs : '')\n\n return iamRequest<{ users: IAMUser[]; pagination: PaginationInfo }>(\n endpoint,\n { method: 'GET' },\n authHost,\n authToken\n )\n },\n\n create: function (\n appId: string,\n userData: Partial<IAMUser> & {\n password: string\n roleIds?: string[]\n groupIds?: string[]\n permissionIds?: string[]\n },\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMUser>(\n '/api/apps/' + appId + '/users',\n { method: 'POST', body: JSON.stringify(userData) },\n authHost,\n authToken\n )\n },\n\n update: function (\n appId: string,\n userId: string,\n userData: Partial<IAMUser>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMUser>(\n '/api/apps/' + appId + '/users/' + userId,\n { method: 'PUT', body: JSON.stringify(userData) },\n authHost,\n authToken\n )\n },\n\n delete: function (appId: string, userId: string, authHost?: string, authToken?: string) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/users/' + userId,\n { method: 'DELETE' },\n authHost,\n authToken\n )\n },\n\n updateRole: function (\n appId: string,\n userId: string,\n roleIds: string[],\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/users/' + userId + '/roles',\n { method: 'POST', body: JSON.stringify({ roleIds: roleIds }) },\n authHost,\n authToken\n )\n },\n\n updateGroup: function (\n appId: string,\n userId: string,\n groupIds: string[],\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/users/' + userId + '/groups',\n { method: 'POST', body: JSON.stringify({ groupIds: groupIds }) },\n authHost,\n authToken\n )\n },\n\n updatePermission: function (\n appId: string,\n userId: string,\n permissionIds: string[],\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/users/' + userId + '/permissions',\n { method: 'POST', body: JSON.stringify({ permissionIds: permissionIds }) },\n authHost,\n authToken\n )\n },\n\n resetPassword: function (appId: string, userId: string, authHost?: string, authToken?: string) {\n return iamRequest<{ message: string }>(\n '/api/apps/' + appId + '/users/' + userId + '/reset-password',\n { method: 'POST' },\n authHost,\n authToken\n )\n },\n\n getLastLogins: function (\n appId: string,\n userIds: string[],\n authHost?: string,\n authToken?: string\n ) {\n var params = new URLSearchParams()\n userIds.forEach(function (id) {\n params.append('userIds', id)\n })\n var qs = params.toString()\n var endpoint = '/api/apps/' + appId + '/users/last-logins' + (qs ? '?' + qs : '')\n return iamRequest<{ lastLogins: Record<string, string | null> }>(\n endpoint,\n { method: 'GET' },\n authHost,\n authToken\n )\n }\n}\n\n// ── Roles API ───────────────────────────────────────────────────────\n\nexport const rolesApi = {\n getAll: function (\n appId: string,\n authHost?: string,\n authToken?: string,\n options?: { page?: number; limit?: number }\n ) {\n var params = new URLSearchParams()\n if (options && options.page) params.append('page', options.page.toString())\n if (options && options.limit) params.append('limit', options.limit.toString())\n\n var qs = params.toString()\n var endpoint = '/api/apps/' + appId + '/roles' + (qs ? '?' + qs : '')\n\n return iamRequest<{ roles: IAMRole[]; pagination: PaginationInfo }>(\n endpoint,\n { method: 'GET' },\n authHost,\n authToken\n )\n },\n\n create: function (\n appId: string,\n roleData: Partial<IAMRole>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMRole>(\n '/api/apps/' + appId + '/roles',\n { method: 'POST', body: JSON.stringify(roleData) },\n authHost,\n authToken\n )\n },\n\n update: function (\n appId: string,\n roleId: string,\n roleData: Partial<IAMRole>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMRole>(\n '/api/apps/' + appId + '/roles/' + roleId,\n { method: 'PUT', body: JSON.stringify(roleData) },\n authHost,\n authToken\n )\n },\n\n delete: function (appId: string, roleId: string, authHost?: string, authToken?: string) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/roles/' + roleId,\n { method: 'DELETE' },\n authHost,\n authToken\n )\n }\n}\n\n// ── Permissions API ─────────────────────────────────────────────────\n\nexport const permissionsApi = {\n getAll: function (appId: string, authHost?: string, authToken?: string) {\n return iamRequest<{ permissions: IAMPermission[] }>(\n '/api/apps/' + appId + '/permissions',\n { method: 'GET' },\n authHost,\n authToken\n )\n },\n\n create: function (\n appId: string,\n permissionData: Partial<IAMPermission>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMPermission>(\n '/api/apps/' + appId + '/permissions',\n { method: 'POST', body: JSON.stringify(permissionData) },\n authHost,\n authToken\n )\n }\n}\n\n// ── Groups API ──────────────────────────────────────────────────────\n\nexport const groupsApi = {\n getAll: function (appId: string, authHost?: string, authToken?: string) {\n return iamRequest<{ groups: IAMGroup[] }>(\n '/api/apps/' + appId + '/groups',\n { method: 'GET' },\n authHost,\n authToken\n )\n },\n\n create: function (\n appId: string,\n groupData: Partial<IAMGroup>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMGroup>(\n '/api/apps/' + appId + '/groups',\n { method: 'POST', body: JSON.stringify(groupData) },\n authHost,\n authToken\n )\n },\n\n update: function (\n appId: string,\n groupId: string,\n groupData: Partial<IAMGroup>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMGroup>(\n '/api/apps/' + appId + '/groups/' + groupId,\n { method: 'PUT', body: JSON.stringify(groupData) },\n authHost,\n authToken\n )\n },\n\n delete: function (appId: string, groupId: string, authHost?: string, authToken?: string) {\n return iamRequest<void>(\n '/api/apps/' + appId + '/groups/' + groupId,\n { method: 'DELETE' },\n authHost,\n authToken\n )\n }\n}\n\n// ── Policy API ──────────────────────────────────────────────────────\n\nexport const policyApi = {\n get: function (appId: string, authHost?: string, authToken?: string) {\n return iamRequest<IAMPolicy>(\n '/api/iam/policy?appId=' + encodeURIComponent(appId),\n { method: 'GET' },\n authHost,\n authToken\n )\n },\n\n update: function (\n appId: string,\n policyData: Partial<IAMPolicy>,\n authHost?: string,\n authToken?: string\n ) {\n return iamRequest<IAMPolicy>(\n '/api/iam/policy',\n { method: 'PUT', body: JSON.stringify({ appId: appId, ...policyData }) },\n authHost,\n authToken\n )\n }\n}\n\n// ── Composite export ────────────────────────────────────────────────\n\nexport const iamApi = {\n users: usersApi,\n roles: rolesApi,\n permissions: permissionsApi,\n groups: groupsApi,\n policy: policyApi\n}\n\n// ── Auth token fetching ─────────────────────────────────────────────\n\nexport async function fetchIamAuthToken(authHost?: string): Promise<string | null> {\n try {\n var url = buildAuthUrl('/api/auth/token', authHost)\n var response = await fetch(url, {\n credentials: 'include',\n cache: 'no-store'\n })\n if (!response.ok) return null\n var data = await response.json()\n return data.token ?? null\n } catch (_e) {\n return null\n }\n}\n\nexport async function fetchIamSession(authHost?: string): Promise<Record<string, any> | null> {\n try {\n var url = buildAuthUrl('/api/auth/session', authHost)\n var response = await fetch(url, {\n credentials: 'include',\n cache: 'no-store'\n })\n if (!response.ok) return null\n var data = await response.json()\n return data && data.user ? data : null\n } catch (_e) {\n return null\n }\n}\n","import React from 'react'\n\ninterface IconProps {\n className?: string\n}\n\nexport function IconX({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n )\n}\n\nexport function IconPlus({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M5 12h14\" /><path d=\"M12 5v14\" />\n </svg>\n )\n}\n\nexport function IconTrash2({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M3 6h18\" /><path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" /><path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" /><line x1=\"10\" x2=\"10\" y1=\"11\" y2=\"17\" /><line x1=\"14\" x2=\"14\" y1=\"11\" y2=\"17\" />\n </svg>\n )\n}\n\nexport function IconSave({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\" /><path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\" /><path d=\"M7 3v4a1 1 0 0 0 1 1h7\" />\n </svg>\n )\n}\n\nexport function IconShield({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n </svg>\n )\n}\n\nexport function IconUsers({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" /><circle cx=\"9\" cy=\"7\" r=\"4\" /><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" /><path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n )\n}\n\nexport function IconSettings({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" /><circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )\n}\n\nexport function IconEdit({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" /><path d=\"m15 5 4 4\" />\n </svg>\n )\n}\n\nexport function IconKey({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\" /><path d=\"m21 2-9.6 9.6\" /><circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n </svg>\n )\n}\n\nexport function IconLock({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" /><path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n )\n}\n\nexport function IconUserPlus({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" /><circle cx=\"9\" cy=\"7\" r=\"4\" /><line x1=\"19\" x2=\"19\" y1=\"8\" y2=\"14\" /><line x1=\"22\" x2=\"16\" y1=\"11\" y2=\"11\" />\n </svg>\n )\n}\n\nexport function IconAlertTriangle({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" /><path d=\"M12 9v4\" /><path d=\"M12 17h.01\" />\n </svg>\n )\n}\n\nexport function IconChevronLeft({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n )\n}\n\nexport function IconChevronRight({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )\n}\n\nexport function IconMoreHorizontal({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"1\" /><circle cx=\"19\" cy=\"12\" r=\"1\" /><circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n )\n}\n\nexport function IconUserX({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" /><circle cx=\"9\" cy=\"7\" r=\"4\" /><line x1=\"17\" x2=\"22\" y1=\"8\" y2=\"13\" /><line x1=\"22\" x2=\"17\" y1=\"8\" y2=\"13\" />\n </svg>\n )\n}\n\nexport function IconUserCheck({ className }: IconProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" /><circle cx=\"9\" cy=\"7\" r=\"4\" /><polyline points=\"16 11 18 13 22 9\" />\n </svg>\n )\n}\n","\nimport React, { useState, useRef, useEffect, useCallback } from 'react'\nimport ReactDOM from 'react-dom'\n\ninterface DropdownMenuProps {\n trigger: React.ReactNode\n children: React.ReactNode\n align?: 'start' | 'end'\n}\n\nexport default function DropdownMenu({ trigger, children, align }: DropdownMenuProps) {\n var _align = align || 'end'\n var _a = useState(false)\n var isOpen = _a[0]\n var setIsOpen = _a[1]\n var triggerRef = useRef<HTMLDivElement>(null)\n var menuRef = useRef<HTMLDivElement>(null)\n var _b = useState({ top: 0, left: 0 })\n var position = _b[0]\n var setPosition = _b[1]\n\n var updatePosition = useCallback(function () {\n if (!triggerRef.current) return\n var rect = triggerRef.current.getBoundingClientRect()\n var top = rect.bottom + 4\n var left = _align === 'end' ? rect.right : rect.left\n setPosition({ top: top, left: left })\n }, [_align])\n\n useEffect(function () {\n if (!isOpen) return\n\n updatePosition()\n\n function handleClickOutside(event: MouseEvent) {\n var target = event.target as Node\n if (\n triggerRef.current && !triggerRef.current.contains(target) &&\n menuRef.current && !menuRef.current.contains(target)\n ) {\n setIsOpen(false)\n }\n }\n\n function handleScroll() {\n updatePosition()\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', updatePosition)\n\n return function () {\n document.removeEventListener('mousedown', handleClickOutside)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', updatePosition)\n }\n }, [isOpen, updatePosition])\n\n var menu = isOpen\n ? ReactDOM.createPortal(\n React.createElement('div', {\n ref: menuRef,\n className: 'fixed z-[9999] min-w-[160px] bg-zinc-800 border border-zinc-700 rounded-md shadow-lg py-1',\n style: {\n top: position.top + 'px',\n left: _align === 'end' ? 'auto' : position.left + 'px',\n right: _align === 'end' ? (window.innerWidth - position.left) + 'px' : 'auto'\n }\n },\n React.createElement('div', { onClick: function () { setIsOpen(false) } }, children)\n ),\n document.body\n )\n : null\n\n return React.createElement('div', { className: 'relative inline-block', ref: triggerRef },\n React.createElement('div', { onClick: function () { setIsOpen(!isOpen) } }, trigger),\n menu\n )\n}\n\ninterface DropdownItemProps {\n onClick?: (e: React.MouseEvent) => void\n className?: string\n disabled?: boolean\n children: React.ReactNode\n preventClose?: boolean\n}\n\nexport function DropdownItem({ onClick, className, disabled, children, preventClose }: DropdownItemProps) {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={\n 'w-full text-left px-3 py-2 text-sm flex items-center hover:bg-zinc-700 disabled:opacity-50 disabled:cursor-not-allowed ' +\n (className || 'text-zinc-300')\n }\n onClick={function (e) {\n if (preventClose) {\n e.stopPropagation()\n }\n if (onClick) onClick(e)\n }}\n >\n {children}\n </button>\n )\n}\n\nexport function DropdownSeparator() {\n return <div className=\"my-1 border-t border-zinc-700\" />\n}\n","\nimport React from 'react'\nimport { useI18n } from '../../i18n/I18nContext'\n\ninterface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description: string\n confirmLabel?: string\n confirmClassName?: string\n onConfirm: () => void\n}\n\nexport default function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel,\n confirmClassName,\n onConfirm\n}: ConfirmDialogProps) {\n var { t } = useI18n()\n if (!open) return null\n\n return (\n <div className=\"fixed inset-0 z-[60] flex items-center justify-center\">\n <div\n className=\"fixed inset-0 bg-black bg-opacity-50\"\n onClick={function () { onOpenChange(false) }}\n />\n <div className=\"relative bg-zinc-900 rounded-lg shadow-xl w-full max-w-md mx-4 p-6\">\n <h3 className=\"text-lg font-semibold text-zinc-200\">{title}</h3>\n <p className=\"mt-2 text-sm text-zinc-400\">{description}</p>\n <div className=\"mt-6 flex justify-end space-x-2\">\n <button\n type=\"button\"\n onClick={function () { onOpenChange(false) }}\n className=\"px-4 py-2 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700\"\n >\n {t('common.cancel')}\n </button>\n <button\n type=\"button\"\n onClick={function () {\n onConfirm()\n onOpenChange(false)\n }}\n className={confirmClassName || 'px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700'}\n >\n {confirmLabel || t('common.confirm')}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","\nimport React, { useState, useEffect } from 'react'\nimport { IAMUser, IAMRole, IAMGroup, IAMPermission } from '../../utils/iamApi'\nimport { IconX, IconSave, IconTrash2, IconShield, IconUsers, IconKey } from './icons'\nimport ConfirmDialog from './ConfirmDialog'\nimport { useI18n } from '../../i18n/I18nContext'\n\ninterface UserModalProps {\n user?: IAMUser | null\n isOpen: boolean\n onClose: () => void\n onSave: (userData: Partial<IAMUser>, roleIds?: string[], groupIds?: string[], permissionIds?: string[]) => void\n onDelete?: (userId: string) => void\n availableRoles: IAMRole[]\n availableGroups: IAMGroup[]\n availablePermissions: IAMPermission[]\n}\n\nexport default function UserModal({\n user,\n isOpen,\n onClose,\n onSave,\n onDelete,\n availableRoles,\n availableGroups,\n availablePermissions\n}: UserModalProps) {\n var { t } = useI18n()\n var _form = useState({ email: '', name: '', title: '', phone: '' })\n var formData = _form[0]\n var setFormData = _form[1]\n var _roles = useState<string[]>([])\n var selectedRoles = _roles[0]\n var setSelectedRoles = _roles[1]\n var _groups = useState<string[]>([])\n var selectedGroups = _groups[0]\n var setSelectedGroups = _groups[1]\n var _perms = useState<string[]>([])\n var selectedPermissions = _perms[0]\n var setSelectedPermissions = _perms[1]\n var _del = useState(false)\n var showDeleteConfirm = _del[0]\n var setShowDeleteConfirm = _del[1]\n var _sub = useState(false)\n var isSubmitting = _sub[0]\n var setIsSubmitting = _sub[1]\n\n useEffect(function () {\n if (user) {\n setFormData({ email: user.email || '', name: user.name || '', title: user.title || '', phone: user.phone || '' })\n setSelectedRoles(user.roles && user.roles.length > 0 ? user.roles.map(function (r) { return r.id }) : [])\n if (user.permissionDetails && user.permissionDetails.length > 0) {\n setSelectedPermissions(user.permissionDetails.map(function (p) { return p.id }))\n } else if (user.permissions && user.permissions.length > 0) {\n setSelectedPermissions(user.permissions)\n } else {\n setSelectedPermissions([])\n }\n setSelectedGroups(user.groups && user.groups.length > 0 ? user.groups.map(function (g) { return g.id }) : [])\n } else {\n setFormData({ email: '', name: '', title: '', phone: '' })\n setSelectedRoles([])\n setSelectedGroups([])\n setSelectedPermissions([])\n }\n }, [user, isOpen])\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n if (!formData.email.trim()) return\n setIsSubmitting(true)\n try {\n await onSave(formData, selectedRoles, selectedGroups, selectedPermissions)\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n async function handleDelete() {\n if (!user || !user.id) return\n setIsSubmitting(true)\n try {\n if (onDelete) await onDelete(user.id)\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n function addRole(roleId: string) {\n if (!selectedRoles.includes(roleId)) setSelectedRoles(selectedRoles.concat([roleId]))\n }\n function removeRole(roleId: string) {\n setSelectedRoles(selectedRoles.filter(function (id) { return id !== roleId }))\n }\n function addGroup(groupId: string) {\n if (!selectedGroups.includes(groupId)) setSelectedGroups(selectedGroups.concat([groupId]))\n }\n function removeGroup(groupId: string) {\n setSelectedGroups(selectedGroups.filter(function (id) { return id !== groupId }))\n }\n function addPermission(permissionId: string) {\n if (!selectedPermissions.includes(permissionId)) setSelectedPermissions(selectedPermissions.concat([permissionId]))\n }\n function removePermission(permissionId: string) {\n setSelectedPermissions(selectedPermissions.filter(function (id) { return id !== permissionId }))\n }\n\n if (!isOpen) return null\n\n var availRoles = availableRoles.filter(function (r) { return !selectedRoles.includes(r.id) })\n var availGroups = availableGroups.filter(function (g) { return !selectedGroups.includes(g.id) })\n var availPerms = availablePermissions.filter(function (p) { return !selectedPermissions.includes(p.id) })\n\n return (\n <React.Fragment>\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\n <div className=\"bg-zinc-900 rounded-lg shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between p-6 border-b border-zinc-700\">\n <h2 className=\"text-lg font-semibold text-zinc-200\">\n {user ? t('iam.userModal.editTitle') : t('iam.userModal.addTitle')}\n </h2>\n <button type=\"button\" onClick={onClose} className=\"p-1 text-zinc-500 hover:text-zinc-300 rounded\">\n <IconX className=\"h-4 w-4\" />\n </button>\n </div>\n\n <form onSubmit={handleSubmit} className=\"p-6 space-y-6\">\n {/* User Information */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2\">{t('iam.userModal.infoSection')}</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-user-email\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.userModal.emailLabel')}</label>\n <input id=\"iam-user-email\" type=\"email\" value={formData.email}\n onChange={function (e) { setFormData({ ...formData, email: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.userModal.emailPlaceholder')} required disabled={!!user} />\n </div>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-user-name\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.userModal.nameLabel')}</label>\n <input id=\"iam-user-name\" type=\"text\" value={formData.name}\n onChange={function (e) { setFormData({ ...formData, name: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.userModal.namePlaceholder')} />\n </div>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-user-title\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.userModal.titleLabel')}</label>\n <input id=\"iam-user-title\" type=\"text\" value={formData.title}\n onChange={function (e) { setFormData({ ...formData, title: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.userModal.titlePlaceholder')} />\n </div>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-user-phone\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.userModal.phoneLabel')}</label>\n <input id=\"iam-user-phone\" type=\"tel\" value={formData.phone}\n onChange={function (e) { setFormData({ ...formData, phone: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.userModal.phonePlaceholder')} />\n </div>\n </div>\n </div>\n\n {/* Roles */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2 flex items-center\">\n <IconShield className=\"h-4 w-4 mr-2\" /> {t('iam.userModal.rolesSection')}\n </h3>\n {selectedRoles.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedRoles.map(function (roleId) {\n var role = availableRoles.find(function (r) { return r.id === roleId })\n if (!role) return null\n return (\n <div key={roleId} className=\"inline-flex items-center gap-1 px-3 py-1.5 bg-blue-900/40 text-blue-300 rounded-full text-sm font-medium\">\n {role.name}\n <button type=\"button\" onClick={function () { removeRole(roleId) }} className=\"ml-1 text-blue-400 hover:text-blue-200\">\n <IconX className=\"h-3 w-3\" />\n </button>\n </div>\n )\n })}\n </div>\n )}\n <select className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500\" style={{ paddingRight: '2rem' }} onChange={function (e) { addRole(e.target.value) }} value=\"\">\n <option value=\"\" disabled>{t('iam.userModal.selectRoles')}</option>\n {availRoles.map(function (role) {\n return <option key={role.id} value={role.id}>{role.name}</option>\n })}\n </select>\n {availableRoles.length === 0 && <p className=\"text-sm text-zinc-400\">{t('iam.userModal.noRolesAvailable')}</p>}\n </div>\n\n {/* Groups */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2 flex items-center\">\n <IconUsers className=\"h-4 w-4 mr-2\" /> {t('iam.userModal.groupsSection')}\n </h3>\n {selectedGroups.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedGroups.map(function (groupId) {\n var group = availableGroups.find(function (g) { return g.id === groupId })\n if (!group) return null\n return (\n <div key={groupId} className=\"inline-flex items-center gap-1 px-3 py-1.5 bg-green-900/40 text-green-300 rounded-full text-sm font-medium\">\n {group.name}\n <button type=\"button\" onClick={function () { removeGroup(groupId) }} className=\"ml-1 text-green-400 hover:text-green-200\">\n <IconX className=\"h-3 w-3\" />\n </button>\n </div>\n )\n })}\n </div>\n )}\n <select className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n style={{ paddingRight: '2rem' }}\n onChange={function (e) { addGroup(e.target.value) }}\n disabled={availableGroups.every(function (g) { return selectedGroups.includes(g.id) })}\n value=\"\">\n <option value=\"\" disabled>{t('iam.userModal.selectGroups')}</option>\n {availGroups.map(function (group) {\n return <option key={group.id} value={group.id}>{group.name} ({group.userCount || 0} users)</option>\n })}\n </select>\n {availableGroups.length === 0 && <p className=\"text-sm text-zinc-400\">{t('iam.userModal.noGroupsAvailable')}</p>}\n </div>\n\n {/* Permissions */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2 flex items-center\">\n <IconKey className=\"h-4 w-4 mr-2\" /> {t('iam.userModal.permissionsSection')}\n </h3>\n <div className=\"space-y-2\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-zinc-400 flex items-center gap-1\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-zinc-500\" />Assigned permissions\n </div>\n {selectedPermissions.length > 0 ? (\n <div className=\"rounded-lg border border-zinc-700 divide-y divide-zinc-700 bg-zinc-900 overflow-hidden\">\n <div className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-2 text-[11px] font-semibold uppercase tracking-wide text-zinc-400 bg-zinc-800\">\n <span>{t('iam.userModal.colName')}</span><span>{t('iam.userModal.colModule')}</span><span className=\"text-right\">{t('iam.userModal.colAction')}</span>\n </div>\n {selectedPermissions.map(function (permId) {\n var perm = availablePermissions.find(function (p) { return p.id === permId })\n if (!perm) return null\n return (\n <div key={permId} className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-3 items-center text-sm text-zinc-300\">\n <div>\n <p className=\"font-medium text-zinc-200\">{perm.name}</p>\n {perm.description && <p className=\"text-xs text-zinc-400\">{perm.description}</p>}\n </div>\n <div className=\"text-zinc-400\">{perm.module}</div>\n <div className=\"flex justify-end\">\n <button type=\"button\" onClick={function () { removePermission(permId) }} className=\"text-zinc-400 hover:text-zinc-200 text-sm font-semibold\">Remove</button>\n </div>\n </div>\n )\n })}\n </div>\n ) : (\n <p className=\"text-sm text-zinc-400\">{t('iam.userModal.noPermissions')}</p>\n )}\n </div>\n <select className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n style={{ paddingRight: '2rem' }}\n onChange={function (e) { addPermission(e.target.value) }}\n disabled={availablePermissions.every(function (p) { return selectedPermissions.includes(p.id) })}\n value=\"\">\n <option value=\"\" disabled>{t('iam.userModal.selectPermissions')}</option>\n {availPerms.map(function (perm) {\n return <option key={perm.id} value={perm.id}>{perm.name} ({perm.module})</option>\n })}\n </select>\n </div>\n\n {/* Actions */}\n <div className=\"flex justify-between pt-4 border-t border-zinc-700\">\n <div>\n {user && onDelete && (\n <button type=\"button\" onClick={function () { setShowDeleteConfirm(true) }}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-red-400 bg-zinc-800 border border-red-800 rounded-md hover:bg-red-900/30\">\n <IconTrash2 className=\"h-4 w-4 mr-2\" /> {t('iam.userModal.delete')}\n </button>\n )}\n </div>\n <div className=\"flex space-x-2\">\n <button type=\"button\" onClick={onClose}\n className=\"px-4 py-2 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700\">\n {t('iam.userModal.cancel')}\n </button>\n <button type=\"submit\" disabled={isSubmitting || !formData.email.trim()}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50\">\n {isSubmitting ? t('iam.userModal.saving') : (\n <React.Fragment><IconSave className=\"h-4 w-4 mr-2\" />{user ? t('iam.userModal.update') : t('iam.userModal.create')}</React.Fragment>\n )}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <ConfirmDialog\n open={showDeleteConfirm}\n onOpenChange={setShowDeleteConfirm}\n title={t('iam.confirm.deleteTitle', { type: 'User' })}\n description={t('iam.confirm.deleteMessage', { type: 'user', name: user ? user.email : '' })}\n confirmLabel={t('iam.confirm.deleteConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n","\nimport React, { useState, useEffect } from 'react'\nimport { IAMRole, IAMPermission } from '../../utils/iamApi'\nimport { IconX, IconSave, IconTrash2, IconKey } from './icons'\nimport ConfirmDialog from './ConfirmDialog'\nimport { useI18n } from '../../i18n/I18nContext'\n\ninterface RoleModalProps {\n role?: IAMRole | null\n isOpen: boolean\n onClose: () => void\n onSave: (roleData: Partial<IAMRole> & { permissionIds?: string[] }) => void\n onDelete?: (roleId: string) => void\n isBuiltIn?: boolean\n availablePermissions: IAMPermission[]\n}\n\nexport default function RoleModal({\n role,\n isOpen,\n onClose,\n onSave,\n onDelete,\n isBuiltIn,\n availablePermissions\n}: RoleModalProps) {\n var { t } = useI18n()\n var _form = useState({ name: '', description: '', isActive: true })\n var formData = _form[0]\n var setFormData = _form[1]\n var _del = useState(false)\n var showDeleteConfirm = _del[0]\n var setShowDeleteConfirm = _del[1]\n var _sub = useState(false)\n var isSubmitting = _sub[0]\n var setIsSubmitting = _sub[1]\n var _perms = useState<string[]>([])\n var selectedPermissions = _perms[0]\n var setSelectedPermissions = _perms[1]\n\n useEffect(function () {\n if (role) {\n setFormData({ name: role.name || '', description: role.description || '', isActive: role.isActive !== false })\n if (role.permissionDetails && role.permissionDetails.length > 0) {\n setSelectedPermissions(role.permissionDetails.map(function (p) { return p.id }))\n } else if (role.permissions && role.permissions.length > 0) {\n var matchedByName = availablePermissions\n .filter(function (p) { return role.permissions ? role.permissions.indexOf(p.name) >= 0 : false })\n .map(function (p) { return p.id })\n setSelectedPermissions(matchedByName)\n } else {\n setSelectedPermissions([])\n }\n } else {\n setFormData({ name: '', description: '', isActive: true })\n setSelectedPermissions([])\n }\n }, [role, isOpen, availablePermissions])\n\n function addPermission(permissionId: string) {\n if (!selectedPermissions.includes(permissionId)) setSelectedPermissions(selectedPermissions.concat([permissionId]))\n }\n function removePermission(permissionId: string) {\n setSelectedPermissions(selectedPermissions.filter(function (id) { return id !== permissionId }))\n }\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n if (!formData.name.trim()) return\n setIsSubmitting(true)\n try {\n await onSave({ ...formData, permissionIds: selectedPermissions })\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n async function handleDelete() {\n if (!role || !role.id) return\n setIsSubmitting(true)\n try {\n if (onDelete) await onDelete(role.id)\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n if (!isOpen) return null\n\n var availPerms = availablePermissions.filter(function (p) { return !selectedPermissions.includes(p.id) })\n\n return (\n <React.Fragment>\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\n <div className=\"bg-zinc-900 rounded-lg shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between p-6 border-b border-zinc-700\">\n <h2 className=\"text-lg font-semibold text-zinc-200\">{role ? t('iam.roleModal.editTitle') : t('iam.roleModal.addTitle')}</h2>\n <button type=\"button\" onClick={onClose} className=\"p-1 text-zinc-500 hover:text-zinc-300 rounded\">\n <IconX className=\"h-4 w-4\" />\n </button>\n </div>\n\n <form onSubmit={handleSubmit} className=\"p-6 space-y-6\">\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2\">{t('iam.roleModal.infoSection')}</h3>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-role-name\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.roleModal.nameLabel')}</label>\n <input id=\"iam-role-name\" type=\"text\" value={formData.name}\n onChange={function (e) { setFormData({ ...formData, name: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.roleModal.namePlaceholder')} required disabled={isBuiltIn} />\n {isBuiltIn && <p className=\"text-xs text-zinc-400\">{t('iam.roleModal.builtInRename')}</p>}\n </div>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-role-desc\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.roleModal.descLabel')}</label>\n <textarea id=\"iam-role-desc\" value={formData.description}\n onChange={function (e) { setFormData({ ...formData, description: e.target.value }) }}\n className=\"w-full min-h-[80px] px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none placeholder:text-zinc-500\"\n placeholder={t('iam.roleModal.descPlaceholder')} />\n </div>\n <div className=\"flex items-center space-x-2\">\n <input id=\"iam-role-active\" type=\"checkbox\" checked={formData.isActive}\n onChange={function (e) { setFormData({ ...formData, isActive: e.target.checked }) }}\n className=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-zinc-700 rounded\"\n disabled={isBuiltIn} />\n <label htmlFor=\"iam-role-active\" className=\"text-sm font-medium text-zinc-300\">{t('iam.roleModal.activeLabel')}</label>\n {isBuiltIn && <p className=\"text-xs text-zinc-400\">{t('iam.roleModal.builtInDeactivate')}</p>}\n </div>\n </div>\n\n {/* Permissions */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2 flex items-center\">\n <IconKey className=\"h-4 w-4 mr-2\" /> {t('iam.roleModal.permissionsSection')}\n </h3>\n <div className=\"space-y-2\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-zinc-400 flex items-center gap-1\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-zinc-500\" />Assigned permissions\n </div>\n {selectedPermissions.length > 0 ? (\n <div className=\"rounded-lg border border-zinc-700 divide-y divide-zinc-700 bg-zinc-900 overflow-hidden\">\n <div className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-2 text-[11px] font-semibold uppercase tracking-wide text-zinc-400 bg-zinc-800\">\n <span>{t('iam.roleModal.colName')}</span><span>{t('iam.roleModal.colModule')}</span><span className=\"text-right\">{t('iam.roleModal.colAction')}</span>\n </div>\n {selectedPermissions.map(function (permId) {\n var perm = availablePermissions.find(function (p) { return p.id === permId })\n if (!perm) return null\n return (\n <div key={permId} className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-3 items-center text-sm text-zinc-300\">\n <div>\n <p className=\"font-medium text-zinc-200\">{perm.name}</p>\n {perm.description && <p className=\"text-xs text-zinc-400\">{perm.description}</p>}\n </div>\n <div className=\"text-zinc-400\">{perm.module}</div>\n <div className=\"flex justify-end\">\n <button type=\"button\" onClick={function () { removePermission(permId) }} className=\"text-zinc-400 hover:text-zinc-200 text-sm font-semibold\">Remove</button>\n </div>\n </div>\n )\n })}\n </div>\n ) : (\n <p className=\"text-sm text-zinc-400\">{t('iam.roleModal.noPermissions')}</p>\n )}\n </div>\n <select className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n style={{ paddingRight: '2rem' }}\n onChange={function (e) { addPermission(e.target.value) }}\n disabled={availablePermissions.every(function (p) { return selectedPermissions.includes(p.id) })}\n value=\"\">\n <option value=\"\" disabled>{t('iam.userModal.selectPermissions')}</option>\n {availPerms.map(function (perm) {\n return <option key={perm.id} value={perm.id}>{perm.name} ({perm.module})</option>\n })}\n </select>\n {availablePermissions.length === 0 && <p className=\"text-sm text-zinc-400 mt-1\">{t('iam.roleModal.noPermissionsAvailable')}</p>}\n </div>\n\n {/* Actions */}\n <div className=\"flex justify-between pt-4 border-t border-zinc-700\">\n <div>\n {role && !isBuiltIn && onDelete && (\n <button type=\"button\" onClick={function () { setShowDeleteConfirm(true) }}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-red-400 bg-zinc-800 border border-red-800 rounded-md hover:bg-red-900/30\">\n <IconTrash2 className=\"h-4 w-4 mr-2\" /> {t('iam.roleModal.delete')}\n </button>\n )}\n </div>\n <div className=\"flex space-x-2\">\n <button type=\"button\" onClick={onClose}\n className=\"px-4 py-2 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700\">\n {t('iam.roleModal.cancel')}\n </button>\n <button type=\"submit\" disabled={isSubmitting || !formData.name.trim()}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50\">\n {isSubmitting ? t('iam.roleModal.saving') : (\n <React.Fragment><IconSave className=\"h-4 w-4 mr-2\" />{role ? t('iam.roleModal.update') : t('iam.roleModal.create')}</React.Fragment>\n )}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <ConfirmDialog\n open={showDeleteConfirm}\n onOpenChange={setShowDeleteConfirm}\n title={t('iam.confirm.deleteTitle', { type: 'Role' })}\n description={t('iam.confirm.deleteMessage', { type: 'role', name: role ? role.name : '' })}\n confirmLabel={t('iam.confirm.deleteConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n","\nimport React, { useState, useEffect } from 'react'\nimport { IAMGroup, IAMPermission } from '../../utils/iamApi'\nimport { IconX, IconSave, IconTrash2, IconKey } from './icons'\nimport ConfirmDialog from './ConfirmDialog'\nimport { useI18n } from '../../i18n/I18nContext'\n\ninterface GroupModalProps {\n group?: IAMGroup | null\n isOpen: boolean\n onClose: () => void\n onSave: (groupData: Partial<IAMGroup> & { permissionIds?: string[] }) => void\n onDelete?: (groupId: string) => void\n availablePermissions: IAMPermission[]\n}\n\nexport default function GroupModal({\n group,\n isOpen,\n onClose,\n onSave,\n onDelete,\n availablePermissions\n}: GroupModalProps) {\n var { t } = useI18n()\n var _form = useState({ name: '', description: '' })\n var formData = _form[0]\n var setFormData = _form[1]\n var _del = useState(false)\n var showDeleteConfirm = _del[0]\n var setShowDeleteConfirm = _del[1]\n var _sub = useState(false)\n var isSubmitting = _sub[0]\n var setIsSubmitting = _sub[1]\n var _perms = useState<string[]>([])\n var selectedPermissions = _perms[0]\n var setSelectedPermissions = _perms[1]\n\n useEffect(function () {\n if (group) {\n setFormData({ name: group.name || '', description: group.description || '' })\n if (group.permissionDetails && group.permissionDetails.length > 0) {\n setSelectedPermissions(group.permissionDetails.map(function (p) { return p.id }))\n } else if (group.permissions && group.permissions.length > 0) {\n var matchedByName = availablePermissions\n .filter(function (p) { return group.permissions ? group.permissions.indexOf(p.name) >= 0 : false })\n .map(function (p) { return p.id })\n setSelectedPermissions(matchedByName)\n } else {\n setSelectedPermissions([])\n }\n } else {\n setFormData({ name: '', description: '' })\n setSelectedPermissions([])\n }\n }, [group, isOpen, availablePermissions])\n\n function addPermission(permissionId: string) {\n if (!selectedPermissions.includes(permissionId)) setSelectedPermissions(selectedPermissions.concat([permissionId]))\n }\n function removePermission(permissionId: string) {\n setSelectedPermissions(selectedPermissions.filter(function (id) { return id !== permissionId }))\n }\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n if (!formData.name.trim()) return\n setIsSubmitting(true)\n try {\n await onSave({ ...formData, permissionIds: selectedPermissions })\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n async function handleDelete() {\n if (!group || !group.id) return\n setIsSubmitting(true)\n try {\n if (onDelete) await onDelete(group.id)\n onClose()\n } finally {\n setIsSubmitting(false)\n }\n }\n\n if (!isOpen) return null\n\n var availPerms = availablePermissions.filter(function (p) { return !selectedPermissions.includes(p.id) })\n\n return (\n <React.Fragment>\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\n <div className=\"bg-zinc-900 rounded-lg shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between p-6 border-b border-zinc-700\">\n <h2 className=\"text-lg font-semibold text-zinc-200\">{group ? t('iam.groupModal.editTitle') : t('iam.groupModal.addTitle')}</h2>\n <button type=\"button\" onClick={onClose} className=\"p-1 text-zinc-500 hover:text-zinc-300 rounded\">\n <IconX className=\"h-4 w-4\" />\n </button>\n </div>\n\n <form onSubmit={handleSubmit} className=\"p-6 space-y-6\">\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2\">{t('iam.groupModal.infoSection')}</h3>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-group-name\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.groupModal.nameLabel')}</label>\n <input id=\"iam-group-name\" type=\"text\" value={formData.name}\n onChange={function (e) { setFormData({ ...formData, name: e.target.value }) }}\n className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 placeholder:text-zinc-500\"\n placeholder={t('iam.groupModal.namePlaceholder')} required />\n </div>\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-group-desc\" className=\"block text-sm font-medium text-zinc-300\">{t('iam.groupModal.descLabel')}</label>\n <textarea id=\"iam-group-desc\" value={formData.description}\n onChange={function (e) { setFormData({ ...formData, description: e.target.value }) }}\n className=\"w-full min-h-[80px] px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none placeholder:text-zinc-500\"\n placeholder={t('iam.groupModal.descPlaceholder')} />\n </div>\n </div>\n\n {/* Permissions */}\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-medium text-zinc-200 border-b border-zinc-700 pb-2 flex items-center\">\n <IconKey className=\"h-4 w-4 mr-2\" /> {t('iam.groupModal.permissionsSection')}\n </h3>\n <div className=\"space-y-2\">\n <div className=\"text-xs font-semibold uppercase tracking-wide text-zinc-400 flex items-center gap-1\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-zinc-500\" />Assigned permissions\n </div>\n {selectedPermissions.length > 0 ? (\n <div className=\"rounded-lg border border-zinc-700 divide-y divide-zinc-700 bg-zinc-900 overflow-hidden\">\n <div className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-2 text-[11px] font-semibold uppercase tracking-wide text-zinc-400 bg-zinc-800\">\n <span>{t('iam.groupModal.colName')}</span><span>{t('iam.groupModal.colModule')}</span><span className=\"text-right\">{t('iam.groupModal.colAction')}</span>\n </div>\n {selectedPermissions.map(function (permId) {\n var perm = availablePermissions.find(function (p) { return p.id === permId })\n if (!perm) return null\n return (\n <div key={permId} className=\"grid grid-cols-[1.5fr_1fr_auto] gap-4 px-3 py-3 items-center text-sm text-zinc-300\">\n <div>\n <p className=\"font-medium text-zinc-200\">{perm.name}</p>\n {perm.description && <p className=\"text-xs text-zinc-400\">{perm.description}</p>}\n </div>\n <div className=\"text-zinc-400\">{perm.module}</div>\n <div className=\"flex justify-end\">\n <button type=\"button\" onClick={function () { removePermission(permId) }} className=\"text-zinc-400 hover:text-zinc-200 text-sm font-semibold\">Remove</button>\n </div>\n </div>\n )\n })}\n </div>\n ) : (\n <p className=\"text-sm text-zinc-400\">{t('iam.groupModal.noPermissions')}</p>\n )}\n </div>\n <select className=\"w-full h-10 px-3 py-2 text-sm text-zinc-200 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n style={{ paddingRight: '2rem' }}\n onChange={function (e) { addPermission(e.target.value) }}\n disabled={availablePermissions.every(function (p) { return selectedPermissions.includes(p.id) })}\n value=\"\">\n <option value=\"\" disabled>{t('iam.userModal.selectPermissions')}</option>\n {availPerms.map(function (perm) {\n return <option key={perm.id} value={perm.id}>{perm.name} ({perm.module})</option>\n })}\n </select>\n {availablePermissions.length === 0 && <p className=\"text-sm text-zinc-400 mt-1\">{t('iam.groupModal.noPermissionsAvailable')}</p>}\n </div>\n\n {/* Actions */}\n <div className=\"flex justify-between pt-4 border-t border-zinc-700\">\n <div>\n {group && onDelete && (\n <button type=\"button\" onClick={function () { setShowDeleteConfirm(true) }}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-red-400 bg-zinc-800 border border-red-800 rounded-md hover:bg-red-900/30\">\n <IconTrash2 className=\"h-4 w-4 mr-2\" /> {t('iam.groupModal.delete')}\n </button>\n )}\n </div>\n <div className=\"flex space-x-2\">\n <button type=\"button\" onClick={onClose}\n className=\"px-4 py-2 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700\">\n {t('iam.groupModal.cancel')}\n </button>\n <button type=\"submit\" disabled={isSubmitting || !formData.name.trim()}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50\">\n {isSubmitting ? t('iam.groupModal.saving') : (\n <React.Fragment><IconSave className=\"h-4 w-4 mr-2\" />{group ? t('iam.groupModal.update') : t('iam.groupModal.create')}</React.Fragment>\n )}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <ConfirmDialog\n open={showDeleteConfirm}\n onOpenChange={setShowDeleteConfirm}\n title={t('iam.confirm.deleteTitle', { type: 'Group' })}\n description={t('iam.confirm.deleteMessage', { type: 'group', name: group ? group.name : '' })}\n confirmLabel={t('iam.confirm.deleteConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n","\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\nimport {\n IAMUser, IAMRole, IAMGroup, IAMPolicy, IAMPermission,\n ApiError, iamApi, fetchIamAuthToken, fetchIamSession\n} from '../utils/iamApi'\nimport {\n IconShield, IconUsers, IconSettings, IconPlus, IconEdit, IconKey,\n IconLock, IconUserPlus, IconAlertTriangle, IconChevronLeft, IconChevronRight,\n IconMoreHorizontal, IconUserX, IconUserCheck, IconTrash2\n} from './iam/icons'\nimport DropdownMenu, { DropdownItem, DropdownSeparator } from './iam/DropdownMenu'\nimport ConfirmDialog from './iam/ConfirmDialog'\nimport UserModal from './iam/UserModal'\nimport RoleModal from './iam/RoleModal'\nimport GroupModal from './iam/GroupModal'\nimport { useI18n } from '../i18n/I18nContext'\n\n// ── Types ───────────────────────────────────────────────────────────\n\nexport interface IAMNotification {\n title: string\n description: string\n variant?: 'default' | 'destructive'\n}\n\nexport interface IAMExtraTab {\n id: string\n label: string\n icon?: React.ReactNode\n content: React.ReactNode\n}\n\nexport interface IAMConsoleProps {\n appId: string\n authHost?: string\n authToken?: string\n onNotification?: (notification: IAMNotification) => void\n onSessionExpired?: () => void\n loginUrl?: string\n /** Additional tabs rendered after the built-in Users/Roles/Groups/Settings tabs */\n extraTabs?: IAMExtraTab[]\n}\n\n// ── Helpers ─────────────────────────────────────────────────────────\n\nfunction notify(\n onNotification: ((n: IAMNotification) => void) | undefined,\n title: string,\n description: string,\n variant?: 'default' | 'destructive'\n) {\n if (onNotification) {\n onNotification({ title: title, description: description, variant: variant || 'default' })\n }\n}\n\nfunction formatLastLogin(value: string | null | undefined, t: (key: string, vars?: Record<string, string | number>) => string): string {\n if (!value) return t('time.never')\n var parsed = Date.parse(value)\n if (isNaN(parsed)) return t('time.invalidDate')\n var seconds = Math.floor((Date.now() - parsed) / 1000)\n if (seconds < 60) return t('time.justNow')\n var minutes = Math.floor(seconds / 60)\n if (minutes < 60) return minutes === 1 ? t('time.minuteAgo', { n: minutes }) : t('time.minutesAgo', { n: minutes })\n var hours = Math.floor(minutes / 60)\n if (hours < 24) return hours === 1 ? t('time.hourAgo', { n: hours }) : t('time.hoursAgo', { n: hours })\n var days = Math.floor(hours / 24)\n if (days < 30) return days === 1 ? t('time.dayAgo', { n: days }) : t('time.daysAgo', { n: days })\n var months = Math.floor(days / 30)\n if (months < 12) return months === 1 ? t('time.monthAgo', { n: months }) : t('time.monthsAgo', { n: months })\n var years = Math.floor(months / 12)\n return years === 1 ? t('time.yearAgo', { n: years }) : t('time.yearsAgo', { n: years })\n}\n\n// ── Policy Tab ──────────────────────────────────────────────────────\n\nvar policyInputCls = 'w-full h-10 px-3 py-2 text-sm text-zinc-300 border border-zinc-700 rounded-md bg-zinc-800 focus:outline-none focus:border-blue-500 placeholder:text-zinc-500'\nvar selectPaddingStyle = { paddingRight: '2rem' }\n\nfunction PolicyToggle({ checked, onChange, label, description }: {\n checked: boolean\n onChange: (v: boolean) => void\n label: string\n description?: string\n}) {\n return (\n <div className=\"flex items-center justify-between py-3 border-b border-zinc-700/50 last:border-b-0\">\n <div>\n <span className=\"text-sm font-medium text-zinc-200\">{label}</span>\n {description && <p className=\"text-xs text-zinc-400 mt-0.5\">{description}</p>}\n </div>\n <label className=\"flex-shrink-0 ml-4 inline-flex items-center cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={function (e) { onChange(e.target.checked) }}\n className=\"sr-only peer\"\n />\n <span\n className={\"relative w-10 h-6 rounded-full transition-colors after:content-[''] after:absolute after:top-1 after:left-1 after:w-4 after:h-4 after:rounded-full after:bg-white after:shadow-sm after:transition-all peer-checked:after:left-5 \" + (checked ? 'bg-blue-500' : 'bg-zinc-600')}\n />\n </label>\n </div>\n )\n}\n\nfunction PolicyTab({ policy, loading, onUpdate }: {\n policy: IAMPolicy | null\n loading: boolean\n onUpdate: (data: Partial<IAMPolicy>) => Promise<void>\n}) {\n var { t } = useI18n()\n var _form = useState<Partial<IAMPolicy>>({})\n var form = _form[0]\n var setForm = _form[1]\n var _dirty = useState(false)\n var dirty = _dirty[0]\n var setDirty = _dirty[1]\n var _saving = useState(false)\n var saving = _saving[0]\n var setSaving = _saving[1]\n\n // Sync form when policy loads\n useEffect(function () {\n if (policy) {\n setForm({\n sessionTimeoutMinutes: policy.sessionTimeoutMinutes,\n allowGuest: policy.allowGuest,\n allowSignUp: policy.allowSignUp,\n requireSignupApproval: policy.requireSignupApproval,\n passwordMinLength: policy.passwordMinLength,\n passwordRequireUppercase: policy.passwordRequireUppercase,\n passwordRequireLowercase: policy.passwordRequireLowercase,\n passwordRequireNumbers: policy.passwordRequireNumbers,\n passwordRequireSpecialChars: policy.passwordRequireSpecialChars\n })\n setDirty(false)\n }\n }, [policy])\n\n function updateField(field: string, value: unknown) {\n setForm(function (prev) {\n var next = { ...prev } as Record<string, unknown>\n next[field] = value\n return next\n })\n setDirty(true)\n }\n\n async function handleSave() {\n if (!dirty || saving) return\n setSaving(true)\n try {\n await onUpdate(form)\n setDirty(false)\n } finally {\n setSaving(false)\n }\n }\n\n if (loading) {\n return (\n <div className=\"bg-zinc-900 rounded-lg border border-zinc-700\">\n <div className=\"flex items-center justify-center py-16\">\n <div className=\"flex items-center gap-3 text-zinc-400 text-sm\">\n <div className=\"w-4 h-4 border-2 border-zinc-600 border-t-zinc-300 rounded-full animate-spin\" />\n {t('iam.policy.loading')}\n </div>\n </div>\n </div>\n )\n }\n\n if (!policy) {\n return (\n <div className=\"bg-zinc-900 rounded-lg border border-zinc-700\">\n <div className=\"text-center py-16\">\n <IconSettings className=\"mx-auto h-12 w-12 text-zinc-500\" />\n <h3 className=\"mt-2 text-sm font-medium text-zinc-200\">{t('iam.policy.noPolicy')}</h3>\n <p className=\"mt-1 text-sm text-zinc-400\">{t('iam.policy.noPolicyMessage')}</p>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-5\">\n {/* ── Session ───────────────────────────────────────────── */}\n <div className=\"rounded-lg border border-zinc-700\">\n <div className=\"px-4 sm:px-6 py-4 border-b border-zinc-700/50\">\n <h3 className=\"text-sm font-semibold text-zinc-200\">{t('iam.policy.sessionTitle')}</h3>\n <p className=\"text-xs text-zinc-400 mt-0.5\">{t('iam.policy.sessionDesc')}</p>\n </div>\n <div className=\"px-4 sm:px-6 py-5\">\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-timeout\" className=\"block text-sm font-medium text-zinc-300\">\n {t('iam.policy.sessionTimeout')}\n </label>\n <select\n id=\"iam-timeout\"\n value={form.sessionTimeoutMinutes ?? 480}\n onChange={function (e) { updateField('sessionTimeoutMinutes', parseInt(e.target.value, 10)) }}\n className={policyInputCls + ' max-w-[240px]'}\n style={selectPaddingStyle}\n >\n <option value={0}>{t('iam.policy.timeoutNever')}</option>\n <option value={1440}>{t('iam.policy.timeout1Day')}</option>\n <option value={43200}>{t('iam.policy.timeout1Month')}</option>\n <option value={129600}>{t('iam.policy.timeout3Months')}</option>\n <option value={525600}>{t('iam.policy.timeout1Year')}</option>\n </select>\n <p className=\"text-xs text-zinc-500\">\n {t('iam.policy.sessionTimeoutHelp')}\n </p>\n </div>\n </div>\n </div>\n\n {/* ── Access Control ────────────────────────────────────── */}\n <div className=\"rounded-lg border border-zinc-700\">\n <div className=\"px-4 sm:px-6 py-4 border-b border-zinc-700/50\">\n <h3 className=\"text-sm font-semibold text-zinc-200\">{t('iam.policy.accessTitle')}</h3>\n <p className=\"text-xs text-zinc-400 mt-0.5\">{t('iam.policy.accessDesc')}</p>\n </div>\n <div className=\"px-4 sm:px-6\">\n <PolicyToggle\n checked={form.allowGuest ?? true}\n onChange={function (v) { updateField('allowGuest', v) }}\n label={t('iam.policy.allowGuest')}\n description={t('iam.policy.allowGuestDesc')}\n />\n <PolicyToggle\n checked={form.allowSignUp ?? true}\n onChange={function (v) { updateField('allowSignUp', v) }}\n label={t('iam.policy.allowSignUp')}\n description={t('iam.policy.allowSignUpDesc')}\n />\n <PolicyToggle\n checked={form.requireSignupApproval ?? false}\n onChange={function (v) { updateField('requireSignupApproval', v) }}\n label={t('iam.policy.requireSignupApproval')}\n description={t('iam.policy.requireSignupApprovalDesc')}\n />\n </div>\n </div>\n\n {/* ── Password Policy ───────────────────────────────────── */}\n <div className=\"rounded-lg border border-zinc-700\">\n <div className=\"px-4 sm:px-6 py-4 border-b border-zinc-700/50\">\n <h3 className=\"text-sm font-semibold text-zinc-200\">{t('iam.policy.passwordTitle')}</h3>\n <p className=\"text-xs text-zinc-400 mt-0.5\">{t('iam.policy.passwordDesc')}</p>\n </div>\n <div className=\"px-4 sm:px-6 py-5\">\n <div className=\"space-y-2\">\n <label htmlFor=\"iam-pw-min\" className=\"block text-sm font-medium text-zinc-300\">\n {t('iam.policy.minLength')}\n </label>\n <select\n id=\"iam-pw-min\"\n value={form.passwordMinLength ?? 8}\n onChange={function (e) { updateField('passwordMinLength', parseInt(e.target.value, 10)) }}\n className={policyInputCls + ' max-w-[160px]'}\n style={selectPaddingStyle}\n >\n <option value={8}>{t('iam.policy.minLength8')}</option>\n <option value={10}>{t('iam.policy.minLength10')}</option>\n <option value={12}>{t('iam.policy.minLength12')}</option>\n </select>\n </div>\n </div>\n <div className=\"px-4 sm:px-6 pb-5\">\n <PolicyToggle\n checked={form.passwordRequireUppercase ?? true}\n onChange={function (v) { updateField('passwordRequireUppercase', v) }}\n label={t('iam.policy.requireUppercase')}\n description={t('iam.policy.requireUppercaseDesc')}\n />\n <PolicyToggle\n checked={form.passwordRequireLowercase ?? true}\n onChange={function (v) { updateField('passwordRequireLowercase', v) }}\n label={t('iam.policy.requireLowercase')}\n description={t('iam.policy.requireLowercaseDesc')}\n />\n <PolicyToggle\n checked={form.passwordRequireNumbers ?? true}\n onChange={function (v) { updateField('passwordRequireNumbers', v) }}\n label={t('iam.policy.requireNumbers')}\n description={t('iam.policy.requireNumbersDesc')}\n />\n <PolicyToggle\n checked={form.passwordRequireSpecialChars ?? false}\n onChange={function (v) { updateField('passwordRequireSpecialChars', v) }}\n label={t('iam.policy.requireSpecialChars')}\n description={t('iam.policy.requireSpecialCharsDesc')}\n />\n </div>\n </div>\n\n {/* ── Save ──────────────────────────────────────────────── */}\n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || !dirty}\n className={'px-4 py-2 rounded-lg text-sm font-medium transition-colors ' + (saving || !dirty ? 'bg-zinc-700 text-zinc-500 cursor-not-allowed' : 'bg-blue-600 text-white hover:bg-blue-500')}\n >\n {saving ? t('iam.policy.saving') : t('iam.policy.savePolicy')}\n </button>\n </div>\n </div>\n )\n}\n\n// ── Component ───────────────────────────────────────────────────────\n\nexport function IAMConsole({\n appId,\n authHost,\n authToken: authTokenProp,\n onNotification,\n onSessionExpired,\n loginUrl,\n extraTabs,\n}: IAMConsoleProps) {\n var { t } = useI18n()\n var _loginUrl = loginUrl || '/login'\n\n // Auth state\n var tokenRef = useRef<string | null>(authTokenProp || null)\n var _session = useState<Record<string, any> | null>(null)\n var session = _session[0]\n var setSession = _session[1]\n var _authReady = useState(!!authTokenProp)\n var authReady = _authReady[0]\n var setAuthReady = _authReady[1]\n\n // Data state\n var _tab = useState('users')\n var activeTab = _tab[0]\n var setActiveTab = _tab[1]\n var _users = useState<IAMUser[]>([])\n var users = _users[0]\n var setUsers = _users[1]\n var _roles = useState<IAMRole[]>([])\n var roles = _roles[0]\n var setRoles = _roles[1]\n var _groups = useState<IAMGroup[]>([])\n var groups = _groups[0]\n var setGroups = _groups[1]\n var _permissions = useState<IAMPermission[]>([])\n var permissions = _permissions[0]\n var setPermissions = _permissions[1]\n var _policy = useState<IAMPolicy | null>(null)\n var policy = _policy[0]\n var setPolicy = _policy[1]\n var _loading = useState(true)\n var loading = _loading[0]\n var setLoading = _loading[1]\n\n // Modal state\n var _editUser = useState<IAMUser | null>(null)\n var editingUser = _editUser[0]\n var setEditingUser = _editUser[1]\n var _editRole = useState<IAMRole | null>(null)\n var editingRole = _editRole[0]\n var setEditingRole = _editRole[1]\n var _editGroup = useState<IAMGroup | null>(null)\n var editingGroup = _editGroup[0]\n var setEditingGroup = _editGroup[1]\n var _addRole = useState(false)\n var isAddingRole = _addRole[0]\n var setIsAddingRole = _addRole[1]\n var _addGroup = useState(false)\n var isAddingGroup = _addGroup[0]\n var setIsAddingGroup = _addGroup[1]\n var _addUser = useState(false)\n var isAddingUser = _addUser[0]\n var setIsAddingUser = _addUser[1]\n\n // Confirm dialogs\n var _confirmDelete = useState<{ type: string; id: string; name: string } | null>(null)\n var confirmDelete = _confirmDelete[0]\n var setConfirmDelete = _confirmDelete[1]\n var _confirmToggle = useState<IAMUser | null>(null)\n var confirmToggle = _confirmToggle[0]\n var setConfirmToggle = _confirmToggle[1]\n var _confirmReset = useState<IAMUser | null>(null)\n var confirmResetPassword = _confirmReset[0]\n var setConfirmResetPassword = _confirmReset[1]\n var _confirmApprove = useState<IAMUser | null>(null)\n var confirmApprove = _confirmApprove[0]\n var setConfirmApprove = _confirmApprove[1]\n var _confirmReject = useState<IAMUser | null>(null)\n var confirmReject = _confirmReject[0]\n var setConfirmReject = _confirmReject[1]\n\n // Pagination\n var _userPage = useState({ page: 1, limit: 20, totalCount: 0, totalPages: 0, hasNext: false, hasPrev: false })\n var userPagination = _userPage[0]\n var setUserPagination = _userPage[1]\n var _rolePage = useState({ page: 1, limit: 20, totalCount: 0, totalPages: 0, hasNext: false, hasPrev: false })\n var rolePagination = _rolePage[0]\n var setRolePagination = _rolePage[1]\n\n // ── Auth initialization ──\n useEffect(function () {\n if (authTokenProp) {\n tokenRef.current = authTokenProp\n setSession({ user: { token: authTokenProp } })\n setAuthReady(true)\n return\n }\n\n var cancelled = false\n async function init() {\n var sess = await fetchIamSession(authHost)\n if (cancelled) return\n setSession(sess)\n if (sess) {\n var token = await fetchIamAuthToken(authHost)\n if (!cancelled) {\n tokenRef.current = token\n setAuthReady(true)\n }\n } else {\n setAuthReady(true)\n }\n }\n init()\n return function () { cancelled = true }\n }, [authTokenProp, authHost])\n\n // Handle 401 errors\n var handleApiError = useCallback(function (error: unknown) {\n if (error instanceof ApiError && error.status === 401) {\n if (onSessionExpired) {\n onSessionExpired()\n } else {\n window.location.href = _loginUrl\n }\n }\n throw error\n }, [onSessionExpired, _loginUrl])\n\n // ── Reset pagination on tab switch ──\n useEffect(function () {\n if (activeTab !== 'users') setUserPagination(function (prev) { return { ...prev, page: 1 } })\n if (activeTab !== 'roles') setRolePagination(function (prev) { return { ...prev, page: 1 } })\n }, [activeTab])\n\n // ── Data fetching helpers ──\n var ensurePermissionsLoaded = useCallback(async function () {\n if (permissions.length === 0) {\n try {\n var resp = await iamApi.permissions.getAll(appId, authHost, tokenRef.current || undefined)\n setPermissions(resp.permissions || [])\n } catch (e) { handleApiError(e) }\n }\n }, [appId, authHost, permissions.length, handleApiError])\n\n var fetchGroups = useCallback(async function () {\n try {\n var resp = await iamApi.groups.getAll(appId, authHost, tokenRef.current || undefined)\n setGroups(resp.groups || [])\n } catch (error) {\n console.log('Groups endpoint not available:', error)\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n setGroups([])\n }\n }, [appId, authHost, onNotification])\n\n var refreshUsers = useCallback(async function () {\n try {\n var resp = await iamApi.users.getAll(appId, authHost, tokenRef.current || undefined, { excludeGuests: true, page: 1, limit: 50 })\n setUsers(resp.users || [])\n } catch (_e) { /* ignore */ }\n }, [appId, authHost])\n\n var refreshRoles = useCallback(async function () {\n try {\n var resp = await iamApi.roles.getAll(appId, authHost, tokenRef.current || undefined, { page: 1, limit: 50 })\n setRoles(resp.roles || [])\n } catch (_e) { /* ignore */ }\n }, [appId, authHost])\n\n // ── Fetch data based on active tab ──\n useEffect(function () {\n if (!authReady || !session || !appId) return\n\n var cancelled = false\n async function fetchData() {\n setLoading(true)\n try {\n switch (activeTab) {\n case 'users': {\n var usersResp = await iamApi.users.getAll(appId, authHost, tokenRef.current || undefined, {\n excludeGuests: true, page: userPagination.page, limit: userPagination.limit\n })\n if (!cancelled) {\n setUsers(usersResp.users || [])\n if (usersResp.pagination) {\n setUserPagination(function (prev) { return { ...prev, totalCount: usersResp.pagination.totalCount, totalPages: usersResp.pagination.totalPages, hasNext: usersResp.pagination.hasNext, hasPrev: usersResp.pagination.hasPrev } })\n }\n }\n break\n }\n case 'roles': {\n var rolesResp = await iamApi.roles.getAll(appId, authHost, tokenRef.current || undefined, {\n page: rolePagination.page, limit: rolePagination.limit\n })\n if (!cancelled) {\n setRoles(rolesResp.roles || [])\n if (rolesResp.pagination) {\n setRolePagination(function (prev) { return { ...prev, totalCount: rolesResp.pagination.totalCount, totalPages: rolesResp.pagination.totalPages, hasNext: rolesResp.pagination.hasNext, hasPrev: rolesResp.pagination.hasPrev } })\n }\n }\n break\n }\n case 'groups': {\n try {\n var groupsResp = await iamApi.groups.getAll(appId, authHost, tokenRef.current || undefined)\n if (!cancelled) setGroups(groupsResp.groups || [])\n } catch (_e) { if (!cancelled) setGroups([]) }\n break\n }\n case 'policy': {\n try {\n var policyResp = await iamApi.policy.get(appId, authHost, tokenRef.current || undefined)\n if (!cancelled) setPolicy(policyResp)\n } catch (_e) { if (!cancelled) setPolicy(null) }\n break\n }\n }\n } catch (err) {\n if (!cancelled) {\n if (err instanceof ApiError) {\n if (err.status === 401) {\n handleApiError(err)\n return\n }\n notify(onNotification, 'Error', err.message, 'destructive')\n } else {\n notify(onNotification, 'Error', 'Failed to fetch data', 'destructive')\n }\n }\n } finally {\n if (!cancelled) setLoading(false)\n }\n }\n\n fetchData()\n return function () { cancelled = true }\n }, [authReady, session, appId, activeTab, userPagination.page, userPagination.limit, rolePagination.page, rolePagination.limit, authHost, handleApiError, onNotification])\n\n // ── Modal open handlers ──\n async function handleEditUser(user: IAMUser) {\n try {\n if (roles.length === 0) {\n var rolesResp = await iamApi.roles.getAll(appId, authHost, tokenRef.current || undefined)\n setRoles(rolesResp.roles || [])\n }\n if (groups.length === 0) {\n var groupsResp = await iamApi.groups.getAll(appId, authHost, tokenRef.current || undefined)\n setGroups(groupsResp.groups || [])\n }\n if (permissions.length === 0) {\n var permsResp = await iamApi.permissions.getAll(appId, authHost, tokenRef.current || undefined)\n setPermissions(permsResp.permissions || [])\n }\n } catch (_error) {\n notify(onNotification, 'Warning', 'Could not load roles, groups, and permissions. Please try again.', 'destructive')\n }\n setEditingUser(user)\n }\n\n async function handleAddUser() {\n try {\n if (roles.length === 0) {\n var rolesResp = await iamApi.roles.getAll(appId, authHost, tokenRef.current || undefined)\n setRoles(rolesResp.roles || [])\n }\n if (groups.length === 0) {\n var groupsResp = await iamApi.groups.getAll(appId, authHost, tokenRef.current || undefined)\n setGroups(groupsResp.groups || [])\n }\n if (permissions.length === 0) {\n var permsResp = await iamApi.permissions.getAll(appId, authHost, tokenRef.current || undefined)\n setPermissions(permsResp.permissions || [])\n }\n } catch (_error) {\n notify(onNotification, 'Warning', 'Could not load roles, groups, and permissions. Please try again.', 'destructive')\n return\n }\n setIsAddingUser(true)\n }\n\n async function handleEditRole(role: IAMRole) {\n try { await ensurePermissionsLoaded() } catch (_e) {\n notify(onNotification, 'Warning', 'Could not load permissions. Please try again.', 'destructive')\n }\n setEditingRole(role)\n }\n\n async function handleAddRole() {\n try { await ensurePermissionsLoaded() } catch (_e) {\n notify(onNotification, 'Warning', 'Could not load permissions. Please try again.', 'destructive')\n return\n }\n setIsAddingRole(true)\n }\n\n async function handleEditGroup(group: IAMGroup) {\n try { await ensurePermissionsLoaded() } catch (_e) {\n notify(onNotification, 'Warning', 'Could not load permissions. Please try again.', 'destructive')\n }\n setEditingGroup(group)\n }\n\n async function handleAddGroup() {\n try { await ensurePermissionsLoaded() } catch (_e) {\n notify(onNotification, 'Warning', 'Could not load permissions. Please try again.', 'destructive')\n return\n }\n setIsAddingGroup(true)\n }\n\n // ── CRUD handlers ──\n function canDeleteUser(userId: string) {\n if (users.length <= 1) return false\n var adminOwnerUsers = users.filter(function (u) {\n return u.roles && u.roles.some(function (r) { return r.name === 'admin' || r.name === 'owner' })\n })\n var currentUser = users.find(function (u) { return u.id === userId })\n var isAdmin = currentUser && currentUser.roles && currentUser.roles.some(function (r) { return r.name === 'admin' || r.name === 'owner' })\n if (isAdmin && adminOwnerUsers.length <= 1) return false\n return true\n }\n\n async function deleteUser(userId: string) {\n try {\n await iamApi.users.delete(appId, userId, authHost, tokenRef.current || undefined)\n setUsers(users.filter(function (u) { return u.id !== userId }))\n notify(onNotification, 'Success', t('iam.users.deletedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToDelete'), 'destructive')\n }\n }\n\n async function toggleUserActive(user: IAMUser) {\n try {\n await iamApi.users.update(appId, user.id, { isActive: !user.isActive }, authHost, tokenRef.current || undefined)\n await refreshUsers()\n notify(onNotification, 'Success', user.isActive ? t('iam.users.inactivatedSuccess') : t('iam.users.activatedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', user.isActive ? t('iam.users.failedToInactivate') : t('iam.users.failedToActivate'), 'destructive')\n }\n }\n\n async function approveUser(user: IAMUser) {\n try {\n await iamApi.users.update(appId, user.id, { approvalStatus: 'approved' } as any, authHost, tokenRef.current || undefined)\n await refreshUsers()\n notify(onNotification, 'Success', t('iam.users.approvedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToApprove'), 'destructive')\n }\n }\n\n async function rejectUser(user: IAMUser) {\n try {\n await iamApi.users.update(appId, user.id, { approvalStatus: 'rejected' } as any, authHost, tokenRef.current || undefined)\n await refreshUsers()\n notify(onNotification, 'Success', t('iam.users.rejectedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToReject'), 'destructive')\n }\n }\n\n async function updateUserWithRolesAndGroups(userData: Partial<IAMUser>, roleIds?: string[], groupIds?: string[], permissionIds?: string[]) {\n if (!editingUser || !editingUser.id) return\n try {\n await iamApi.users.update(appId, editingUser.id, userData, authHost, tokenRef.current || undefined)\n if (roleIds) await iamApi.users.updateRole(appId, editingUser.id, roleIds, authHost, tokenRef.current || undefined)\n if (groupIds) await iamApi.users.updateGroup(appId, editingUser.id, groupIds, authHost, tokenRef.current || undefined)\n if (permissionIds) await iamApi.users.updatePermission(appId, editingUser.id, permissionIds, authHost, tokenRef.current || undefined)\n await refreshUsers()\n notify(onNotification, 'Success', t('iam.users.updatedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToUpdate'), 'destructive')\n }\n }\n\n async function createUser(userData: Partial<IAMUser>, roleIds?: string[], groupIds?: string[], permissionIds?: string[]) {\n try {\n await iamApi.users.create(appId, {\n email: userData.email, password: 'temp-password-' + Date.now(),\n name: userData.name, title: userData.title, phone: userData.phone,\n roleIds: roleIds, groupIds: groupIds, permissionIds: permissionIds\n }, authHost, tokenRef.current || undefined)\n await refreshUsers()\n notify(onNotification, 'Success', t('iam.users.createdSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToCreate'), 'destructive')\n }\n }\n\n async function resetUserPassword(userId: string) {\n try {\n var resp = await iamApi.users.resetPassword(appId, userId, authHost, tokenRef.current || undefined)\n notify(onNotification, 'Success', resp.message || t('iam.users.passwordResetEmailSent'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.users.failedToResetPassword'), 'destructive')\n }\n }\n\n async function createRole(roleData: Partial<IAMRole> & { permissionIds?: string[] }) {\n try {\n await iamApi.roles.create(appId, roleData, authHost, tokenRef.current || undefined)\n await refreshRoles()\n notify(onNotification, 'Success', t('iam.roles.createdSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.roles.failedToCreate'), 'destructive')\n }\n }\n\n async function updateRole(roleId: string, roleData: Partial<IAMRole> & { permissionIds?: string[] }) {\n try {\n await iamApi.roles.update(appId, roleId, roleData, authHost, tokenRef.current || undefined)\n await refreshRoles()\n notify(onNotification, 'Success', t('iam.roles.updatedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.roles.failedToUpdate'), 'destructive')\n }\n }\n\n async function deleteRole(roleId: string) {\n try {\n await iamApi.roles.delete(appId, roleId, authHost, tokenRef.current || undefined)\n setRoles(roles.filter(function (r) { return r.id !== roleId }))\n notify(onNotification, 'Success', t('iam.roles.deletedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.roles.failedToDelete'), 'destructive')\n }\n }\n\n async function createGroup(groupData: Partial<IAMGroup> & { permissionIds?: string[] }) {\n try {\n await iamApi.groups.create(appId, groupData, authHost, tokenRef.current || undefined)\n await fetchGroups()\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.groups.failedToCreate'), 'destructive')\n }\n }\n\n async function updateGroup(groupId: string, groupData: Partial<IAMGroup> & { permissionIds?: string[] }) {\n try {\n await iamApi.groups.update(appId, groupId, groupData, authHost, tokenRef.current || undefined)\n await fetchGroups()\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.groups.failedToUpdate'), 'destructive')\n }\n }\n\n async function deleteGroup(groupId: string) {\n try {\n await iamApi.groups.delete(appId, groupId, authHost, tokenRef.current || undefined)\n setGroups(groups.filter(function (g) { return g.id !== groupId }))\n notify(onNotification, 'Success', t('iam.groups.deletedSuccess'))\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', t('iam.groups.failedToDelete'), 'destructive')\n }\n }\n\n async function updatePolicy(policyData: Partial<IAMPolicy>) {\n try {\n var updated = await iamApi.policy.update(appId, policyData, authHost, tokenRef.current || undefined)\n if (updated) setPolicy(updated)\n } catch (error) {\n if (error instanceof ApiError) notify(onNotification, 'Error', error.message, 'destructive')\n else notify(onNotification, 'Error', 'Failed to update policy', 'destructive')\n }\n }\n\n // ── Loading / Auth checks ──\n if (!authReady) {\n return <div className=\"flex items-center justify-center min-h-[400px]\"><div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-zinc-600 border-t-zinc-300\" /></div>\n }\n\n if (!session) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"w-full max-w-md bg-zinc-900 rounded-lg border border-zinc-700 shadow-sm p-6\">\n <div className=\"text-center\">\n <IconLock className=\"mx-auto h-12 w-12 text-zinc-500\" />\n <h2 className=\"mt-4 text-2xl font-bold text-zinc-200\">{t('iam.authRequired.title')}</h2>\n <p className=\"mt-2 text-zinc-400\">{t('iam.authRequired.message')}</p>\n <button onClick={function () { window.location.href = _loginUrl }} className=\"mt-4 px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700\">\n {t('iam.authRequired.signIn')}\n </button>\n </div>\n </div>\n </div>\n )\n }\n\n if (!appId) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"w-full max-w-md bg-zinc-900 rounded-lg border border-zinc-700 shadow-sm p-6\">\n <div className=\"text-center\">\n <IconAlertTriangle className=\"mx-auto h-12 w-12 text-zinc-500\" />\n <h2 className=\"mt-4 text-2xl font-bold text-zinc-200\">{t('iam.noApp.title')}</h2>\n <p className=\"mt-2 text-zinc-400\">{t('iam.noApp.message')}</p>\n <button onClick={function () { window.location.href = _loginUrl }} className=\"mt-4 px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700\">\n {t('iam.noApp.signIn')}\n </button>\n </div>\n </div>\n </div>\n )\n }\n\n // ── Tab button styles ──\n var tabCls = 'inline-flex items-center justify-center whitespace-nowrap px-4 py-2 text-sm font-medium transition-all focus:outline-none border-b-2'\n var addBtnCls = 'inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 transition-colors'\n\n // ── Render ──\n return (\n <div>\n {/* Main Content */}\n <div className=\"w-full\">\n {/* Tabs */}\n <div className=\"flex gap-0 mb-4 sm:mb-6 overflow-x-auto border-b\" style={{ borderColor: 'var(--border-primary, #3f3f46)' }}>\n <button type=\"button\" className={tabCls} style={{ color: activeTab === 'users' ? 'var(--accent, #3b82f6)' : 'var(--text-tertiary, #a1a1aa)', borderBottomColor: activeTab === 'users' ? 'var(--accent, #3b82f6)' : 'transparent' }} onClick={function () { setActiveTab('users') }}>\n <IconUsers className=\"h-4 w-4 mr-1.5 flex-shrink-0\" /> {t('iam.tabs.users')}\n </button>\n <button type=\"button\" className={tabCls} style={{ color: activeTab === 'roles' ? 'var(--accent, #3b82f6)' : 'var(--text-tertiary, #a1a1aa)', borderBottomColor: activeTab === 'roles' ? 'var(--accent, #3b82f6)' : 'transparent' }} onClick={function () { setActiveTab('roles') }}>\n <IconShield className=\"h-4 w-4 mr-1.5 flex-shrink-0\" /> {t('iam.tabs.roles')}\n </button>\n <button type=\"button\" className={tabCls} style={{ color: activeTab === 'groups' ? 'var(--accent, #3b82f6)' : 'var(--text-tertiary, #a1a1aa)', borderBottomColor: activeTab === 'groups' ? 'var(--accent, #3b82f6)' : 'transparent' }} onClick={function () { setActiveTab('groups') }}>\n <IconUserPlus className=\"h-4 w-4 mr-1.5 flex-shrink-0\" /> {t('iam.tabs.groups')}\n </button>\n <button type=\"button\" className={tabCls} style={{ color: activeTab === 'policy' ? 'var(--accent, #3b82f6)' : 'var(--text-tertiary, #a1a1aa)', borderBottomColor: activeTab === 'policy' ? 'var(--accent, #3b82f6)' : 'transparent' }} onClick={function () { setActiveTab('policy') }}>\n <IconSettings className=\"h-4 w-4 mr-1.5 flex-shrink-0\" /> {t('iam.tabs.settings')}\n </button>\n {extraTabs && extraTabs.map(function (tab) {\n return (\n <button key={tab.id} type=\"button\" className={tabCls} style={{ color: activeTab === tab.id ? 'var(--accent, #3b82f6)' : 'var(--text-tertiary, #a1a1aa)', borderBottomColor: activeTab === tab.id ? 'var(--accent, #3b82f6)' : 'transparent' }} onClick={function () { setActiveTab(tab.id) }}>\n {tab.icon && <span className=\"mr-1.5 flex-shrink-0\">{tab.icon}</span>}\n {tab.label}\n </button>\n )\n })}\n </div>\n\n {/* Users Tab */}\n {activeTab === 'users' && (\n <div className=\"bg-zinc-900 rounded-lg border border-zinc-700 shadow-sm\">\n <div className=\"border-b border-zinc-700 px-4 sm:px-6 py-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <h2 className=\"text-lg font-semibold text-zinc-200\">{t('iam.users.title')}</h2>\n <p className=\"text-sm text-zinc-400 mt-1\">{t('iam.users.description')}</p>\n </div>\n <button onClick={handleAddUser} className={addBtnCls}>\n <IconPlus className=\"h-4 w-4 mr-2\" /> {t('iam.users.addUser')}\n </button>\n </div>\n </div>\n <div className=\"p-4 sm:p-6\">\n {loading ? (\n <div className=\"text-center py-8\">{t('iam.users.loading')}</div>\n ) : (\n <React.Fragment>\n {/* Desktop table */}\n <div className=\"hidden md:block overflow-x-auto\">\n <table className=\"min-w-full\">\n <thead className=\"border-b border-zinc-700\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colEmail')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colName')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colTitle')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colRole')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colGroups')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colStatus')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colLastLogin')}</th>\n <th className=\"px-6 py-3 text-right text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.users.colActions')}</th>\n </tr>\n </thead>\n <tbody className=\"bg-zinc-900\">\n {users.map(function (user) {\n return (\n <tr key={user.id} className=\"border-b border-zinc-700 last:border-b-0 hover:bg-zinc-800/50\">\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm font-medium text-zinc-200\">{user.email}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm text-zinc-200\">{user.name || '-'}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm text-zinc-400\">{user.title || '-'}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n {user.roles && user.roles.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {user.roles.map(function (r) {\n return <span key={r.id} className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-900/40 text-blue-300\">{r.name}</span>\n })}\n </div>\n ) : <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-zinc-700 text-zinc-300\">{t('iam.users.noRoles')}</span>}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n {user.groups && user.groups.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {user.groups.map(function (g) {\n return <span key={g.id} className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-900/40 text-green-300\">{g.name}</span>\n })}\n </div>\n ) : <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-zinc-700 text-zinc-300\">{t('iam.users.noGroups')}</span>}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span className={'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ' + (user.approvalStatus === 'pending' ? 'bg-amber-900/40 text-amber-300' : user.approvalStatus === 'rejected' ? 'bg-red-900/40 text-red-300' : user.isActive ? 'bg-green-900/40 text-green-300' : 'bg-red-900/40 text-red-300')}>\n {user.approvalStatus === 'pending' ? t('iam.users.statusPending') : user.approvalStatus === 'rejected' ? t('iam.users.statusRejected') : user.isActive ? t('iam.users.statusActive') : t('iam.users.statusInactive')}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm text-zinc-300\">{formatLastLogin(user.lastLoginAt, t)}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium\">\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditUser(user) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.users.editInfo')}</DropdownItem>\n {user.approvalStatus === 'pending' && (\n <React.Fragment>\n <DropdownItem onClick={function () { setConfirmApprove(user) }} className=\"text-green-600\">\n <IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.approveUser')}\n </DropdownItem>\n <DropdownItem onClick={function () { setConfirmReject(user) }} className=\"text-red-600\">\n <IconUserX className=\"mr-2 h-4 w-4\" /> {t('iam.users.rejectUser')}\n </DropdownItem>\n </React.Fragment>\n )}\n {user.approvalStatus === 'rejected' && (\n <DropdownItem onClick={function () { setConfirmApprove(user) }} className=\"text-green-600\">\n <IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.approveUser')}\n </DropdownItem>\n )}\n {user.approvalStatus !== 'pending' && user.approvalStatus !== 'rejected' && (\n <DropdownItem onClick={function () { setConfirmToggle(user) }}\n className={user.isActive ? 'text-red-600' : 'text-green-600'}>\n {user.isActive ? <React.Fragment><IconUserX className=\"mr-2 h-4 w-4\" /> {t('iam.users.inactivateUser')}</React.Fragment> : <React.Fragment><IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.activateUser')}</React.Fragment>}\n </DropdownItem>\n )}\n <DropdownItem onClick={function () { setConfirmResetPassword(user) }}><IconKey className=\"mr-2 h-4 w-4\" /> {t('iam.users.resetPassword')}</DropdownItem>\n <DropdownSeparator />\n <DropdownItem\n onClick={function () { setConfirmDelete({ type: 'user', id: user.id, name: user.email }) }}\n className=\"text-red-600\"\n disabled={!canDeleteUser(user.id)}>\n <IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.users.deleteUser')}\n </DropdownItem>\n </DropdownMenu>\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n\n {/* Mobile card layout */}\n <div className=\"md:hidden space-y-3\">\n {users.map(function (user) {\n return (\n <div key={user.id} className=\"rounded-lg border border-zinc-700 p-4 hover:bg-zinc-800/50\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-zinc-200 truncate\">{user.email}</div>\n {user.name && <div className=\"text-sm text-zinc-400 mt-0.5\">{user.name}{user.title ? ' · ' + user.title : ''}</div>}\n </div>\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700 flex-shrink-0\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditUser(user) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.users.editInfo')}</DropdownItem>\n {user.approvalStatus === 'pending' && (\n <React.Fragment>\n <DropdownItem onClick={function () { setConfirmApprove(user) }} className=\"text-green-600\"><IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.approveUser')}</DropdownItem>\n <DropdownItem onClick={function () { setConfirmReject(user) }} className=\"text-red-600\"><IconUserX className=\"mr-2 h-4 w-4\" /> {t('iam.users.rejectUser')}</DropdownItem>\n </React.Fragment>\n )}\n {user.approvalStatus === 'rejected' && (\n <DropdownItem onClick={function () { setConfirmApprove(user) }} className=\"text-green-600\"><IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.approveUser')}</DropdownItem>\n )}\n {user.approvalStatus !== 'pending' && user.approvalStatus !== 'rejected' && (\n <DropdownItem onClick={function () { setConfirmToggle(user) }} className={user.isActive ? 'text-red-600' : 'text-green-600'}>\n {user.isActive ? <React.Fragment><IconUserX className=\"mr-2 h-4 w-4\" /> {t('iam.users.inactivateUser')}</React.Fragment> : <React.Fragment><IconUserCheck className=\"mr-2 h-4 w-4\" /> {t('iam.users.activateUser')}</React.Fragment>}\n </DropdownItem>\n )}\n <DropdownItem onClick={function () { setConfirmResetPassword(user) }}><IconKey className=\"mr-2 h-4 w-4\" /> {t('iam.users.resetPassword')}</DropdownItem>\n <DropdownSeparator />\n <DropdownItem onClick={function () { setConfirmDelete({ type: 'user', id: user.id, name: user.email }) }} className=\"text-red-600\" disabled={!canDeleteUser(user.id)}>\n <IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.users.deleteUser')}\n </DropdownItem>\n </DropdownMenu>\n </div>\n <div className=\"flex flex-wrap items-center gap-1.5 mt-2\">\n {user.roles && user.roles.length > 0 ? user.roles.map(function (r) {\n return <span key={r.id} className=\"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-blue-900/40 text-blue-300\">{r.name}</span>\n }) : null}\n {user.groups && user.groups.length > 0 ? user.groups.map(function (g) {\n return <span key={g.id} className=\"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-green-900/40 text-green-300\">{g.name}</span>\n }) : null}\n </div>\n <div className=\"flex items-center gap-3 mt-2 text-xs text-zinc-400\">\n <span className={'inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ' + (user.approvalStatus === 'pending' ? 'bg-amber-900/40 text-amber-300' : user.approvalStatus === 'rejected' ? 'bg-red-900/40 text-red-300' : user.isActive ? 'bg-green-900/40 text-green-300' : 'bg-red-900/40 text-red-300')}>\n {user.approvalStatus === 'pending' ? t('iam.users.statusPending') : user.approvalStatus === 'rejected' ? t('iam.users.statusRejected') : user.isActive ? t('iam.users.statusActive') : t('iam.users.statusInactive')}\n </span>\n <span>{formatLastLogin(user.lastLoginAt, t)}</span>\n </div>\n </div>\n )\n })}\n </div>\n\n {userPagination.totalPages > 1 && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between gap-3 px-2 sm:px-6 py-4 border-t border-zinc-700 bg-zinc-800/50 mt-4 rounded-b-lg\">\n <span className=\"text-sm text-zinc-300\">\n {t('iam.users.showingRange', { from: ((userPagination.page - 1) * userPagination.limit) + 1, to: Math.min(userPagination.page * userPagination.limit, userPagination.totalCount), total: userPagination.totalCount })}\n </span>\n <div className=\"flex items-center space-x-2\">\n <select value={userPagination.limit} onChange={function (e) { setUserPagination(function (prev) { return { ...prev, limit: Number(e.target.value), page: 1 } }) }}\n className=\"text-sm border border-zinc-700 rounded-md px-3 py-1.5 bg-zinc-800 text-zinc-200 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n style={selectPaddingStyle}>\n <option value={10}>{t('iam.users.perPage10')}</option><option value={20}>{t('iam.users.perPage20')}</option><option value={50}>{t('iam.users.perPage50')}</option>\n </select>\n <button onClick={function () { setUserPagination(function (prev) { return { ...prev, page: prev.page - 1 } }) }} disabled={!userPagination.hasPrev}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700 disabled:opacity-50\">\n <IconChevronLeft className=\"h-4 w-4 mr-1\" /> {t('iam.users.previous')}\n </button>\n <span className=\"text-sm text-zinc-300\">{t('iam.users.pageOf', { page: userPagination.page, totalPages: userPagination.totalPages })}</span>\n <button onClick={function () { setUserPagination(function (prev) { return { ...prev, page: prev.page + 1 } }) }} disabled={!userPagination.hasNext}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700 disabled:opacity-50\">\n {t('iam.users.next')} <IconChevronRight className=\"h-4 w-4 ml-1\" />\n </button>\n </div>\n </div>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n )}\n\n {/* Roles Tab */}\n {activeTab === 'roles' && (\n <div className=\"bg-zinc-900 rounded-lg border border-zinc-700 shadow-sm\">\n <div className=\"border-b border-zinc-700 px-4 sm:px-6 py-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <h2 className=\"text-lg font-semibold text-zinc-200\">{t('iam.roles.title')}</h2>\n <p className=\"text-sm text-zinc-400 mt-1\">{t('iam.roles.description')}</p>\n </div>\n <button onClick={handleAddRole} className={addBtnCls}>\n <IconPlus className=\"h-4 w-4 mr-2\" /> {t('iam.roles.addRole')}\n </button>\n </div>\n </div>\n <div className=\"p-4 sm:p-6\">\n {loading ? (\n <div className=\"flex items-center justify-center py-12\"><div className=\"flex items-center space-x-2 text-zinc-400\"><div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-zinc-600 border-t-zinc-300\" /><span>{t('iam.roles.loading')}</span></div></div>\n ) : roles.length === 0 ? (\n <div className=\"text-center py-12\"><IconLock className=\"mx-auto h-12 w-12 text-zinc-500\" /><h3 className=\"mt-2 text-sm font-medium text-zinc-200\">{t('iam.roles.empty')}</h3><p className=\"mt-1 text-sm text-zinc-400\">{t('iam.roles.emptyMessage')}</p></div>\n ) : (\n <React.Fragment>\n {/* Desktop table */}\n <div className=\"hidden md:block overflow-x-auto\">\n <table className=\"min-w-full\">\n <thead className=\"border-b border-zinc-700\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.roles.colRoleName')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.roles.colDescription')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.roles.colStatus')}</th>\n <th className=\"px-6 py-3 text-right text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.roles.colActions')}</th>\n </tr>\n </thead>\n <tbody className=\"bg-zinc-900\">\n {roles.map(function (role) {\n return (\n <tr key={role.id} className=\"border-b border-zinc-700 last:border-b-0 hover:bg-zinc-800/50\">\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm font-medium text-zinc-200\">{role.name}</div></td>\n <td className=\"px-6 py-4\"><div className=\"text-sm text-zinc-400\">{role.description || '-'}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span className={'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ' + (role.isActive ? 'bg-green-900/40 text-green-300' : 'bg-red-900/40 text-red-300')}>\n {role.isActive ? t('iam.roles.statusActive') : t('iam.roles.statusInactive')}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium\">\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditRole(role) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.roles.editRole')}</DropdownItem>\n {!role.isBuiltIn && (\n <React.Fragment>\n <DropdownSeparator />\n <DropdownItem onClick={function () { setConfirmDelete({ type: 'role', id: role.id, name: role.name }) }} className=\"text-red-600\">\n <IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.roles.deleteRole')}\n </DropdownItem>\n </React.Fragment>\n )}\n </DropdownMenu>\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n\n {/* Mobile card layout */}\n <div className=\"md:hidden space-y-3\">\n {roles.map(function (role) {\n return (\n <div key={role.id} className=\"rounded-lg border border-zinc-700 p-4 hover:bg-zinc-800/50\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-zinc-200\">{role.name}</div>\n {role.description && <div className=\"text-sm text-zinc-400 mt-0.5\">{role.description}</div>}\n </div>\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700 flex-shrink-0\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditRole(role) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.roles.editRole')}</DropdownItem>\n {!role.isBuiltIn && (\n <React.Fragment>\n <DropdownSeparator />\n <DropdownItem onClick={function () { setConfirmDelete({ type: 'role', id: role.id, name: role.name }) }} className=\"text-red-600\"><IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.roles.deleteRole')}</DropdownItem>\n </React.Fragment>\n )}\n </DropdownMenu>\n </div>\n <div className=\"mt-2\">\n <span className={'inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ' + (role.isActive ? 'bg-green-900/40 text-green-300' : 'bg-red-900/40 text-red-300')}>\n {role.isActive ? t('iam.roles.statusActive') : t('iam.roles.statusInactive')}\n </span>\n {role.isBuiltIn && <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-zinc-700 text-zinc-300 ml-1.5\">{t('iam.roles.builtIn')}</span>}\n </div>\n </div>\n )\n })}\n </div>\n\n {rolePagination.totalPages > 1 && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between gap-3 px-2 py-4 mt-4 border-t border-zinc-700\">\n <span className=\"text-sm text-zinc-400\">\n {t('iam.users.showingRange', { from: ((rolePagination.page - 1) * rolePagination.limit) + 1, to: Math.min(rolePagination.page * rolePagination.limit, rolePagination.totalCount), total: rolePagination.totalCount })}\n </span>\n <div className=\"flex items-center space-x-2\">\n <select value={rolePagination.limit} onChange={function (e) { setRolePagination(function (prev) { return { ...prev, limit: Number(e.target.value), page: 1 } }) }}\n className=\"text-sm border border-zinc-700 rounded px-2 py-1 bg-zinc-800 text-zinc-200\"\n style={selectPaddingStyle}>\n <option value={10}>{t('iam.users.perPage10')}</option><option value={20}>{t('iam.users.perPage20')}</option><option value={50}>{t('iam.users.perPage50')}</option>\n </select>\n <button onClick={function () { setRolePagination(function (prev) { return { ...prev, page: prev.page - 1 } }) }} disabled={!rolePagination.hasPrev}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700 disabled:opacity-50\">\n <IconChevronLeft className=\"h-4 w-4\" /> {t('iam.users.previous')}\n </button>\n <span className=\"text-sm text-zinc-300\">{t('iam.users.pageOf', { page: rolePagination.page, totalPages: rolePagination.totalPages })}</span>\n <button onClick={function () { setRolePagination(function (prev) { return { ...prev, page: prev.page + 1 } }) }} disabled={!rolePagination.hasNext}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-zinc-300 bg-zinc-800 border border-zinc-700 rounded-md hover:bg-zinc-700 disabled:opacity-50\">\n {t('iam.users.next')} <IconChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n )}\n\n {/* Groups Tab */}\n {activeTab === 'groups' && (\n <div className=\"bg-zinc-900 rounded-lg border border-zinc-700 shadow-sm\">\n <div className=\"border-b border-zinc-700 px-4 sm:px-6 py-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <h2 className=\"text-lg font-semibold text-zinc-200\">{t('iam.groups.title')}</h2>\n <p className=\"text-sm text-zinc-400 mt-1\">{t('iam.groups.description')}</p>\n </div>\n <button onClick={handleAddGroup} className={addBtnCls}>\n <IconPlus className=\"h-4 w-4 mr-2\" /> {t('iam.groups.addGroup')}\n </button>\n </div>\n </div>\n <div className=\"p-4 sm:p-6\">\n {loading ? (\n <div className=\"flex items-center justify-center py-12\"><div className=\"flex items-center space-x-2 text-zinc-400\"><div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-zinc-600 border-t-zinc-300\" /><span>{t('iam.groups.loading')}</span></div></div>\n ) : groups.length === 0 ? (\n <div className=\"text-center py-12\"><IconUserPlus className=\"mx-auto h-12 w-12 text-zinc-500\" /><h3 className=\"mt-2 text-sm font-medium text-zinc-200\">{t('iam.groups.empty')}</h3><p className=\"mt-1 text-sm text-zinc-400\">{t('iam.groups.emptyMessage')}</p></div>\n ) : (\n <React.Fragment>\n {/* Desktop table */}\n <div className=\"hidden md:block overflow-x-auto\">\n <table className=\"min-w-full\">\n <thead className=\"border-b border-zinc-700\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.groups.colGroupName')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.groups.colDescription')}</th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.groups.colUsers')}</th>\n <th className=\"px-6 py-3 text-right text-xs font-medium text-zinc-400 uppercase tracking-wider\">{t('iam.groups.colActions')}</th>\n </tr>\n </thead>\n <tbody className=\"bg-zinc-900\">\n {groups.map(function (group) {\n return (\n <tr key={group.id} className=\"border-b border-zinc-700 last:border-b-0 hover:bg-zinc-800/50\">\n <td className=\"px-6 py-4 whitespace-nowrap\"><div className=\"text-sm font-medium text-zinc-200\">{group.name}</div></td>\n <td className=\"px-6 py-4\"><div className=\"text-sm text-zinc-400\">{group.description || '-'}</div></td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-zinc-700 text-zinc-300\">{t('iam.groups.userCount', { count: group.userCount || 0 })}</span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium\">\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditGroup(group) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.groups.editGroup')}</DropdownItem>\n <DropdownSeparator />\n <DropdownItem onClick={function () { setConfirmDelete({ type: 'group', id: group.id, name: group.name }) }} className=\"text-red-600\">\n <IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.groups.deleteGroup')}\n </DropdownItem>\n </DropdownMenu>\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n\n {/* Mobile card layout */}\n <div className=\"md:hidden space-y-3\">\n {groups.map(function (group) {\n return (\n <div key={group.id} className=\"rounded-lg border border-zinc-700 p-4 hover:bg-zinc-800/50\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-zinc-200\">{group.name}</div>\n {group.description && <div className=\"text-sm text-zinc-400 mt-0.5\">{group.description}</div>}\n </div>\n <DropdownMenu\n trigger={<button type=\"button\" className=\"h-8 w-8 p-0 inline-flex items-center justify-center rounded hover:bg-zinc-700 flex-shrink-0\"><IconMoreHorizontal className=\"h-4 w-4\" /></button>}\n >\n <DropdownItem onClick={function () { handleEditGroup(group) }}><IconEdit className=\"mr-2 h-4 w-4\" /> {t('iam.groups.editGroup')}</DropdownItem>\n <DropdownSeparator />\n <DropdownItem onClick={function () { setConfirmDelete({ type: 'group', id: group.id, name: group.name }) }} className=\"text-red-600\"><IconTrash2 className=\"mr-2 h-4 w-4\" /> {t('iam.groups.deleteGroup')}</DropdownItem>\n </DropdownMenu>\n </div>\n <div className=\"mt-2\">\n <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-zinc-700 text-zinc-300\">{t('iam.groups.userCount', { count: group.userCount || 0 })}</span>\n </div>\n </div>\n )\n })}\n </div>\n </React.Fragment>\n )}\n </div>\n </div>\n )}\n\n {/* Policy Tab */}\n {activeTab === 'policy' && (\n <PolicyTab\n policy={policy}\n loading={loading}\n onUpdate={updatePolicy}\n />\n )}\n {extraTabs && extraTabs.map(function (tab) {\n return activeTab === tab.id ? <React.Fragment key={tab.id}>{tab.content}</React.Fragment> : null\n })}\n </div>\n\n {/* Modals */}\n {(isAddingUser || editingUser) && (\n <UserModal\n user={editingUser}\n isOpen={isAddingUser || !!editingUser}\n onClose={function () { setIsAddingUser(false); setEditingUser(null) }}\n onSave={editingUser ? updateUserWithRolesAndGroups : createUser}\n onDelete={editingUser ? deleteUser : undefined}\n availableRoles={roles}\n availableGroups={groups}\n availablePermissions={permissions}\n />\n )}\n\n {(editingRole || isAddingRole) && (\n <RoleModal\n role={editingRole}\n isOpen={!!editingRole || isAddingRole}\n onClose={function () { setEditingRole(null); setIsAddingRole(false) }}\n onSave={editingRole ? function (roleData) { var id = editingRole ? editingRole.id : ''; return updateRole(id, roleData) } : createRole}\n onDelete={deleteRole}\n isBuiltIn={editingRole ? editingRole.isBuiltIn : false}\n availablePermissions={permissions}\n />\n )}\n\n {(editingGroup || isAddingGroup) && (\n <GroupModal\n group={editingGroup}\n isOpen={!!editingGroup || isAddingGroup}\n onClose={function () { setEditingGroup(null); setIsAddingGroup(false) }}\n onSave={editingGroup ? function (groupData) { var id = editingGroup ? editingGroup.id : ''; return updateGroup(id, groupData) } : createGroup}\n onDelete={deleteGroup}\n availablePermissions={permissions}\n />\n )}\n\n {/* Confirm Delete Dialog */}\n <ConfirmDialog\n open={!!confirmDelete}\n onOpenChange={function (open) { if (!open) setConfirmDelete(null) }}\n title={t('iam.confirm.deleteTitle', { type: confirmDelete ? confirmDelete.type.charAt(0).toUpperCase() + confirmDelete.type.slice(1) : '' })}\n description={t('iam.confirm.deleteMessage', { type: confirmDelete ? confirmDelete.type : '', name: confirmDelete ? confirmDelete.name : '' })}\n confirmLabel={t('iam.confirm.deleteConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={function () {\n if (!confirmDelete) return\n if (confirmDelete.type === 'user') deleteUser(confirmDelete.id)\n else if (confirmDelete.type === 'role') deleteRole(confirmDelete.id)\n else if (confirmDelete.type === 'group') deleteGroup(confirmDelete.id)\n }}\n />\n\n {/* Confirm Reset Password Dialog */}\n <ConfirmDialog\n open={!!confirmResetPassword}\n onOpenChange={function (open) { if (!open) setConfirmResetPassword(null) }}\n title={t('iam.confirm.resetPasswordTitle')}\n description={confirmResetPassword\n ? t('iam.confirm.resetPasswordMessage', { email: confirmResetPassword.email })\n : ''}\n confirmLabel={t('iam.confirm.resetPasswordConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={function () {\n if (confirmResetPassword) resetUserPassword(confirmResetPassword.id)\n }}\n />\n\n {/* Confirm Toggle Active Dialog */}\n <ConfirmDialog\n open={!!confirmToggle}\n onOpenChange={function (open) { if (!open) setConfirmToggle(null) }}\n title={confirmToggle && confirmToggle.isActive ? t('iam.confirm.inactivateTitle') : t('iam.confirm.activateTitle')}\n description={confirmToggle\n ? (confirmToggle.isActive\n ? t('iam.confirm.inactivateMessage', { email: confirmToggle.email })\n : t('iam.confirm.activateMessage', { email: confirmToggle.email }))\n : ''}\n confirmLabel={confirmToggle && confirmToggle.isActive ? t('iam.confirm.inactivateConfirm') : t('iam.confirm.activateConfirm')}\n confirmClassName={confirmToggle && confirmToggle.isActive\n ? 'px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700'\n : 'px-4 py-2 text-sm font-medium text-white bg-green-600 rounded-md hover:bg-green-700'}\n onConfirm={function () {\n if (confirmToggle) toggleUserActive(confirmToggle)\n }}\n />\n\n {/* Confirm Approve User Dialog */}\n <ConfirmDialog\n open={!!confirmApprove}\n onOpenChange={function (open) { if (!open) setConfirmApprove(null) }}\n title={t('iam.confirm.approveTitle')}\n description={confirmApprove\n ? t('iam.confirm.approveMessage', { email: confirmApprove.email })\n : ''}\n confirmLabel={t('iam.confirm.approveConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-green-600 rounded-md hover:bg-green-700\"\n onConfirm={function () {\n if (confirmApprove) approveUser(confirmApprove)\n }}\n />\n\n {/* Confirm Reject User Dialog */}\n <ConfirmDialog\n open={!!confirmReject}\n onOpenChange={function (open) { if (!open) setConfirmReject(null) }}\n title={t('iam.confirm.rejectTitle')}\n description={confirmReject\n ? t('iam.confirm.rejectMessage', { email: confirmReject.email })\n : ''}\n confirmLabel={t('iam.confirm.rejectConfirm')}\n confirmClassName=\"px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-md hover:bg-red-700\"\n onConfirm={function () {\n if (confirmReject) rejectUser(confirmReject)\n }}\n />\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { getResolvedAppId, getAuthJson, postAuthJson } from \"../utils/authApi\"\nimport { useI18n } from \"../i18n/I18nContext\"\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\ninterface ProfileData {\n id: string\n email: string\n name: string | null\n phone: string | null\n language: string | null\n address: string | null\n theme: string | null\n}\n\nexport interface ProfileProps {\n appId?: string\n authHost?: string\n /** common-be host — used to fetch the app's supported locales */\n host?: string\n authToken?: string\n title?: string\n onThemeChange?: (theme: string | null) => void\n onTextSizeChange?: (size: string) => void\n textSize?: string\n}\n\n// ── Constants ─────────────────────────────────────────────────────────────────\n\nconst THEME_KEYS: { value: string | null; labelKey: string; descKey: string; preview: string }[] = [\n { value: null, labelKey: \"profile.theme.appDefault\", descKey: \"profile.theme.appDefaultDesc\", preview: \"bg-gradient-to-br from-zinc-400 to-zinc-600 border-zinc-500\" },\n { value: \"light\", labelKey: \"profile.theme.light\", descKey: \"profile.theme.lightDesc\", preview: \"bg-white border-[#e0e6eb]\" },\n { value: \"dark\", labelKey: \"profile.theme.dark\", descKey: \"profile.theme.darkDesc\", preview: \"bg-[#14171D] border-[#2B3039]\" },\n { value: \"flat\", labelKey: \"profile.theme.flat\", descKey: \"profile.theme.flatDesc\", preview: \"bg-white border-[#DF1B41]\" },\n { value: \"dusk\", labelKey: \"profile.theme.dusk\", descKey: \"profile.theme.duskDesc\", preview: \"bg-[#0A2540] border-[#FFCE48]\" },\n { value: \"ember\", labelKey: \"profile.theme.ember\", descKey: \"profile.theme.emberDesc\", preview: \"bg-[#0A2540] border-[#EFC078]\" },\n { value: \"retro\", labelKey: \"profile.theme.retro\", descKey: \"profile.theme.retroDesc\", preview: \"bg-[#dfdfdf] border-[#808080]\" },\n { value: \"minimal\", labelKey: \"profile.theme.minimal\", descKey: \"profile.theme.minimalDesc\", preview: \"bg-white border-[#d1d5db]\" },\n]\n\n// Map bare language codes from old profiles to full locale codes\nconst BARE_CODE_MAP: Record<string, string> = {\n en: \"en-US\", es: \"es-ES\", fr: \"fr-FR\", de: \"de-DE\",\n it: \"it-IT\", pt: \"pt-BR\", ru: \"ru-RU\", ja: \"ja-JP\",\n ko: \"ko-KR\", zh: \"zh-CN\", ar: \"ar-SA\", hi: \"hi-IN\",\n}\n\nfunction normalizeStoredLanguage(lang: string | null): string {\n if (!lang) return \"auto\"\n if (lang === \"auto\") return \"auto\"\n if (lang.includes(\"-\")) return lang\n return BARE_CODE_MAP[lang] || \"en-US\"\n}\n\n// ── Section wrapper ───────────────────────────────────────────────────────────\n\nfunction Section({\n title,\n description,\n children,\n}: {\n title: string\n description?: string\n children: React.ReactNode\n}) {\n return (\n <div className=\"rounded-lg border border-zinc-700 mb-5\">\n <div className=\"px-6 py-4 border-b border-zinc-700/50\">\n <h2 className=\"text-sm font-semibold text-zinc-200\">{title}</h2>\n {description && (\n <p className=\"mt-0.5 text-xs text-zinc-400\">{description}</p>\n )}\n </div>\n <div className=\"px-6 py-5 space-y-5\">{children}</div>\n </div>\n )\n}\n\n// ── Field wrapper ─────────────────────────────────────────────────────────────\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div>\n <label className=\"block text-sm font-medium text-zinc-300 mb-1.5\">\n {label}\n </label>\n {children}\n </div>\n )\n}\n\n// ── Input style ───────────────────────────────────────────────────────────────\n\nconst inputCls =\n \"w-full px-3 py-2 rounded-lg border border-zinc-700 bg-zinc-800 text-zinc-300 placeholder-zinc-500 focus:outline-none focus:border-blue-500 text-sm transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n\n// ── Profile ───────────────────────────────────────────────────────────────────\n\nconst TEXT_SIZE_OPTIONS = [\n { value: \"xs\", label: \"XS\" },\n { value: \"sm\", label: \"S\" },\n { value: \"base\", label: \"M\" },\n { value: \"lg\", label: \"L\" },\n { value: \"xl\", label: \"XL\" },\n { value: \"xxl\", label: \"XXL\" },\n] as const\n\nexport const Profile = ({ appId, authHost, host, authToken, title, onThemeChange, onTextSizeChange, textSize: textSizeProp }: ProfileProps) => {\n const { t, setLocale, availableLocales } = useI18n()\n\n const [profile, setProfile] = useState<ProfileData | null>(null)\n const [isLoading, setIsLoading] = useState(true)\n const [error, setError] = useState(\"\")\n const [appSupportedLocales, setAppSupportedLocales] = useState<string[] | null>(null)\n\n // Form state\n const [name, setName] = useState(\"\")\n const [phone, setPhone] = useState(\"\")\n const [language, setLanguage] = useState(\"auto\")\n const [address, setAddress] = useState(\"\")\n const [theme, setTheme] = useState<string | null>(null)\n const [textSize, setTextSize] = useState(textSizeProp ?? \"base\")\n const [isSaving, setIsSaving] = useState(false)\n const [saveStatus, setSaveStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\")\n\n // Password change state\n const [currentPassword, setCurrentPassword] = useState(\"\")\n const [newPassword, setNewPassword] = useState(\"\")\n const [confirmPassword, setConfirmPassword] = useState(\"\")\n const [isChangingPassword, setIsChangingPassword] = useState(false)\n const [passwordStatus, setPasswordStatus] = useState<\"idle\" | \"success\" | \"error\">(\"idle\")\n const [passwordError, setPasswordError] = useState(\"\")\n\n const appName = title || \"Profile\"\n\n // Filter locales to only those the admin enabled in SiteSettings\n const localeOptions = appSupportedLocales && appSupportedLocales.length > 0\n ? availableLocales.filter((l) => appSupportedLocales.includes(l.code))\n : availableLocales\n\n // Detect browser locale name for the \"Use browser settings\" option\n const browserLocaleName = (() => {\n if (typeof navigator === \"undefined\") return \"English\"\n const browserCode = navigator.language\n const match = availableLocales.find((l) => l.code === browserCode)\n if (match) return match.nativeName\n const lang = browserCode.split(\"-\")[0]\n const langMatch = availableLocales.find((l) => l.code.startsWith(lang + \"-\"))\n return langMatch ? langMatch.nativeName : browserCode\n })()\n\n // Fetch profile + app supported locales on mount\n useEffect(() => {\n let cancelled = false\n\n async function fetchProfile() {\n try {\n const resolvedAppId = getResolvedAppId(appId)\n\n // Fetch app settings for supported locales (fire-and-forget)\n if (host && resolvedAppId) {\n fetch(`${host.replace(/\\/+$/, \"\")}/api/apps/${resolvedAppId}/public`, {\n credentials: \"include\",\n })\n .then((r) => r.ok ? r.json() : null)\n .then((data) => {\n if (!cancelled && data?.app?.settings?.supportedLocales) {\n setAppSupportedLocales(data.app.settings.supportedLocales)\n }\n })\n .catch(() => {})\n }\n\n const { response, data } = await getAuthJson(\n \"api/auth/profile\",\n authHost,\n resolvedAppId ? { appId: resolvedAppId } : undefined,\n authToken\n )\n\n if (!cancelled && response.ok && data) {\n setProfile(data)\n setName(data.name ?? \"\")\n setPhone(data.phone ?? \"\")\n const storedLang = normalizeStoredLanguage(data.language)\n setLanguage(storedLang)\n setAddress(data.address ?? \"\")\n setTheme(data.theme ?? null)\n setTextSize(data.textSize ?? \"base\")\n setLocale(storedLang)\n } else if (!cancelled) {\n setError(\"Failed to load profile.\")\n }\n } catch (err) {\n if (!cancelled) {\n console.error(\"Failed to fetch profile:\", err)\n setError(\"Failed to load profile.\")\n }\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n }\n\n fetchProfile()\n return () => { cancelled = true }\n }, [appId, authHost])\n\n async function handleSave(e: React.FormEvent) {\n e.preventDefault()\n setIsSaving(true)\n setSaveStatus(\"idle\")\n\n try {\n const { response, data } = await postAuthJson(\n \"api/auth/profile\",\n { name, phone, language, address, theme, textSize },\n authHost,\n authToken\n )\n\n if (response.ok && data) {\n setProfile(data)\n setSaveStatus(\"success\")\n setTimeout(() => setSaveStatus(\"idle\"), 3000)\n } else {\n setSaveStatus(\"error\")\n }\n } catch (err) {\n console.error(\"Failed to save profile:\", err)\n setSaveStatus(\"error\")\n } finally {\n setIsSaving(false)\n }\n }\n\n async function handleChangePassword(e: React.FormEvent) {\n e.preventDefault()\n setPasswordStatus(\"idle\")\n setPasswordError(\"\")\n\n if (newPassword !== confirmPassword) {\n setPasswordStatus(\"error\")\n setPasswordError(t(\"profile.passwordMismatch\"))\n return\n }\n\n if (newPassword.length < 6) {\n setPasswordStatus(\"error\")\n setPasswordError(t(\"profile.passwordMinLength\"))\n return\n }\n\n setIsChangingPassword(true)\n\n try {\n const { response, data } = await postAuthJson(\n \"api/auth/change-password\",\n { currentPassword, newPassword },\n authHost,\n authToken\n )\n\n if (response.ok) {\n setPasswordStatus(\"success\")\n setCurrentPassword(\"\")\n setNewPassword(\"\")\n setConfirmPassword(\"\")\n setTimeout(() => setPasswordStatus(\"idle\"), 3000)\n } else {\n setPasswordStatus(\"error\")\n setPasswordError(data?.error || t(\"profile.failedToChangePassword\"))\n }\n } catch (err) {\n console.error(\"Failed to change password:\", err)\n setPasswordStatus(\"error\")\n setPasswordError(t(\"profile.failedToChangePassword\"))\n } finally {\n setIsChangingPassword(false)\n }\n }\n\n if (isLoading) {\n return (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"flex items-center gap-3 text-zinc-400 text-sm\">\n <div className=\"w-4 h-4 border-2 border-zinc-600 border-t-zinc-300 rounded-full animate-spin\" />\n {t(\"profile.loadingProfile\")}\n </div>\n </div>\n )\n }\n\n if (error && !profile) {\n return (\n <div className=\"rounded-lg border border-zinc-700 p-6\">\n <p className=\"text-sm text-red-400\">{error}</p>\n </div>\n )\n }\n\n return (\n <div className=\"w-full max-w-2xl\">\n <div className=\"mb-6\">\n <h1 className=\"text-xl font-semibold text-zinc-200 tracking-tight\">\n {appName}\n </h1>\n {profile?.email && (\n <p className=\"text-sm text-zinc-400 mt-1\">\n {profile.email}\n </p>\n )}\n </div>\n\n <form onSubmit={handleSave}>\n {/* ── Personal ───────────────────────────────────────────────────── */}\n <Section title={t(\"profile.sectionPersonal\")} description={t(\"profile.sectionPersonalDesc\")}>\n <Field label={t(\"profile.fullName\")}>\n <input\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t(\"profile.fullNamePlaceholder\")}\n autoComplete=\"name\"\n className={inputCls}\n />\n </Field>\n\n <Field label={t(\"profile.language\")}>\n <select\n value={language}\n onChange={(e) => {\n const val = e.target.value\n setLanguage(val)\n setLocale(val)\n }}\n className={inputCls}\n style={{ paddingRight: '2rem' }}\n >\n <option value=\"auto\">\n {t(\"profile.useBrowserSettings\")} ({browserLocaleName})\n </option>\n {localeOptions.map((l) => (\n <option key={l.code} value={l.code}>\n {l.nativeName}\n </option>\n ))}\n </select>\n </Field>\n </Section>\n\n {/* ── Appearance ─────────────────────────────────────────────────── */}\n <Section title={t(\"profile.sectionAppearance\")} description={t(\"profile.sectionAppearanceDesc\")}>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-2\">\n {THEME_KEYS.map((opt) => {\n const active = theme === opt.value\n return (\n <button\n key={opt.value ?? \"default\"}\n type=\"button\"\n onClick={() => {\n setTheme(opt.value)\n if (onThemeChange) onThemeChange(opt.value)\n }}\n className={\n \"flex flex-col items-center gap-1.5 p-3 rounded-lg border transition-colors text-center \" +\n (active\n ? \"border-blue-500 bg-blue-500/10 text-blue-400\"\n : \"border-zinc-700 bg-zinc-800/50 text-zinc-400 hover:border-zinc-600 hover:text-zinc-300\")\n }\n >\n <div className={\"w-8 h-8 rounded-full border-2 \" + opt.preview} />\n <span className=\"text-xs font-medium\">{t(opt.labelKey)}</span>\n <span className=\"text-[10px] text-zinc-500 leading-tight\">{t(opt.descKey)}</span>\n </button>\n )\n })}\n </div>\n\n {/* Text Size Slider */}\n <div className=\"mt-6\">\n <label className=\"block text-sm font-medium text-zinc-300 mb-3\">\n {t(\"profile.textSize\")}\n </label>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-zinc-500 w-6 text-center\">A</span>\n <div className=\"flex-1 relative\">\n <input\n type=\"range\"\n min={0}\n max={TEXT_SIZE_OPTIONS.length - 1}\n value={TEXT_SIZE_OPTIONS.findIndex((o) => o.value === textSize)}\n onChange={(e) => {\n const opt = TEXT_SIZE_OPTIONS[Number(e.target.value)]\n setTextSize(opt.value)\n if (onTextSizeChange) onTextSizeChange(opt.value)\n }}\n className=\"w-full h-1.5 rounded-full appearance-none cursor-pointer bg-zinc-700 accent-blue-500\"\n />\n <div className=\"flex justify-between mt-1.5 px-0.5\">\n {TEXT_SIZE_OPTIONS.map((opt) => (\n <span\n key={opt.value}\n className={\"text-[10px] \" + (opt.value === textSize ? \"text-blue-400 font-medium\" : \"text-zinc-600\")}\n >\n {opt.label}\n </span>\n ))}\n </div>\n </div>\n <span className=\"text-lg text-zinc-500 w-6 text-center\">A</span>\n </div>\n </div>\n </Section>\n\n {/* ── Contact ────────────────────────────────────────────────────── */}\n <Section\n title={t(\"profile.sectionContact\")}\n description={t(\"profile.sectionContactDesc\")}\n >\n <Field label={t(\"profile.phoneNumber\")}>\n <input\n type=\"tel\"\n value={phone}\n onChange={(e) => setPhone(e.target.value)}\n placeholder={t(\"profile.phoneNumberPlaceholder\")}\n autoComplete=\"tel\"\n className={inputCls}\n />\n <p className=\"mt-1.5 text-xs text-zinc-500\">\n {t(\"profile.phoneNumberHelp\")}\n </p>\n </Field>\n\n <Field label={t(\"profile.address\")}>\n <input\n type=\"text\"\n value={address}\n onChange={(e) => setAddress(e.target.value)}\n placeholder={t(\"profile.addressPlaceholder\")}\n autoComplete=\"street-address\"\n className={inputCls}\n />\n </Field>\n </Section>\n\n {/* ── Footer ─────────────────────────────────────────────────────── */}\n <div className=\"flex items-center justify-between\">\n <button\n type=\"submit\"\n disabled={isSaving}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium rounded-lg transition-colors bg-blue-600 text-white hover:bg-blue-500 disabled:bg-zinc-700 disabled:text-zinc-500 disabled:cursor-not-allowed\"\n >\n {isSaving ? t(\"profile.saving\") : t(\"profile.saveChanges\")}\n </button>\n\n {saveStatus === \"success\" && (\n <p className=\"text-sm text-emerald-400 font-medium\">\n {t(\"profile.changesSaved\")}\n </p>\n )}\n {saveStatus === \"error\" && (\n <p className=\"text-sm text-red-400\">\n {t(\"profile.failedToSave\")}\n </p>\n )}\n </div>\n </form>\n\n {/* ── Password (separate form) ──────────────────────────────────── */}\n <form onSubmit={handleChangePassword} className=\"mt-5\">\n <Section title={t(\"profile.sectionPassword\")} description={t(\"profile.sectionPasswordDesc\")}>\n <Field label={t(\"profile.currentPassword\")}>\n <input\n type=\"password\"\n value={currentPassword}\n onChange={(e) => setCurrentPassword(e.target.value)}\n placeholder={t(\"profile.currentPasswordPlaceholder\")}\n autoComplete=\"current-password\"\n required\n className={inputCls}\n />\n </Field>\n\n <Field label={t(\"profile.newPassword\")}>\n <input\n type=\"password\"\n value={newPassword}\n onChange={(e) => setNewPassword(e.target.value)}\n placeholder={t(\"profile.newPasswordPlaceholder\")}\n autoComplete=\"new-password\"\n required\n minLength={6}\n className={inputCls}\n />\n </Field>\n\n <Field label={t(\"profile.confirmNewPassword\")}>\n <input\n type=\"password\"\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n placeholder={t(\"profile.confirmNewPasswordPlaceholder\")}\n autoComplete=\"new-password\"\n required\n minLength={6}\n className={inputCls}\n />\n </Field>\n </Section>\n\n <div className=\"flex items-center justify-between\">\n <button\n type=\"submit\"\n disabled={isChangingPassword || !currentPassword || !newPassword || !confirmPassword}\n className=\"inline-flex items-center px-4 py-2 text-sm font-medium rounded-lg transition-colors bg-blue-600 text-white hover:bg-blue-500 disabled:bg-zinc-700 disabled:text-zinc-500 disabled:cursor-not-allowed\"\n >\n {isChangingPassword ? t(\"profile.changingPassword\") : t(\"profile.changePassword\")}\n </button>\n\n {passwordStatus === \"success\" && (\n <p className=\"text-sm text-emerald-400 font-medium\">\n {t(\"profile.passwordChanged\")}\n </p>\n )}\n {passwordStatus === \"error\" && (\n <p className=\"text-sm text-red-400\">\n {passwordError}\n </p>\n )}\n </div>\n </form>\n </div>\n )\n}\n"],"names":["_Pact","prototype","then","onFulfilled","onRejected","result","state","s","callback","_settle","v","e","o","_this","value","pact","bind","observer","_iteratorSymbol","Symbol","iterator","_asyncIteratorSymbol","asyncIterator","_switch","discriminant","cases","dispatchIndex","awaitBody","outer","i","length","test","testValue","body","fallthroughCheck","reject","_resumeAfterBody","_resumeAfterTest","_catch","recover","_finallyRethrows","finalizer","getAuthJson","path","host","query","authToken","url","buildAuthUrl","headers","fetchWithCredentials","method","Promise","postAuthJson","JSON","stringify","init","fetch","_extends","credentials","cache","response","_temp2","data","_temp","resolve","json","_response$json","DEFAULT_AUTH_HOST","_process$env$NEXT_PUB","envHost","process","env","NEXT_PUBLIC_AUTH_API_HOST","trim","DEFAULT_APP_ID","_process$env$NEXT_PUB2","_process$env$NEXT_PUB3","NEXT_PUBLIC_AUTH_APP_ID","normalizeHost","replace","normalizedHost","normalizedPath","startsWith","params","URLSearchParams","_i","_Object$entries","Object","entries","_Object$entries$_i","key","undefined","set","qs","toString","URL","_i2","_Object$entries2","_Object$entries2$_i","searchParams","getResolvedAppId","appId","translations","enUS","enGB","enAU","enCA","esES","esMX","esAR","frFR","frCA","deDE","deAT","itIT","ptBR","ptPT","roRO","ruRU","plPL","ukUA","csCZ","nlNL","svSE","daDK","noNO","fiFI","jaJP","koKR","zhCN","zhTW","thTH","viVN","idID","msMY","hiIN","bnIN","taIN","teIN","trTR","elGR","arSA","arEG","RTL_LANGUAGES","Set","LOCALE_AFFINITY","en","es","fr","pt","de","zh","ar","it","ro","ru","pl","uk","cs","nl","sv","da","no","fi","ja","ko","th","vi","id","ms","hi","bn","ta","te","tr","el","LOCALE_META","code","name","nativeName","direction","normalizeLocale","raw","parts","split","toLowerCase","toUpperCase","slice","join","findBestLocale","browser","navigator","language","locale","lang","affinities","_iterator","_createForOfIteratorHelperLoose","_step","done","aff","fallbackDict","defaultT","vars","_fallbackDict$key","k","String","I18nContext","createContext","setLocale","t","availableLocales","isRtl","I18nProvider","_ref","defaultLocale","_ref$defaultLocale","supportedLocales","children","onLocaleChange","_useState","useState","setLocaleState","useCallback","newLocale","best","dict","_ref2","_dict$key","has","filteredLocales","useMemo","filter","l","includes","React","Provider","useI18n","useContext","DEFAULT_PROVIDERS","GoogleIcon","viewBox","className","d","fill","MicrosoftIcon","x","y","width","height","GitHubIcon","role","OAuthButtons","authHost","_ref$redirectTo","redirectTo","providers","_useI18n","_React$useState","loadingProvider","setLoadingProvider","resolvedAppId","providerList","buildRedirectUrl","provider","handleOAuth","window","location","assign","style","gridTemplateColumns","map","type","onClick","disabled","defaultRedirect","getLoginError","status","Login","handleSubmit","preventDefault","setError","setIsLoading","email","password","ok","onSuccess","token","router","push","refresh","err","console","error","_wasThrown","_result","title","logo","hideSignUpMessage","hideLogo","_ref$variant","variant","oauthProviders","useRouter","setEmail","_useState2","setPassword","_useState3","_useState4","isLoading","_useState5","allowSignUp","setAllowSignUp","appName","appInitial","charAt","useEffect","_result$data$allowSig","isFlat","content","Fragment","src","alt","onSubmit","onChange","target","placeholder","required","autoComplete","Link","href","statusMessage","errors","validatePassword","policy","checks","label","minLength","passwordMinLength","met","passwordRequireUppercase","passwordRequireLowercase","passwordRequireNumbers","passwordRequireSpecialChars","Signup","allChecksMet","setPendingApproval","setRegistered","setName","_useState6","registered","_useState7","pendingApproval","_useState8","setPolicy","passwordChecks","every","c","hasPasswordRequirements","handleGuestSignIn","guestUrl","encodeURIComponent","inputClassName","pendingContent","registeredContent","_policy$passwordMinLe","check","allowGuest","VerifyEmail","_exit","VerifyResult","message","_ref3","_ref4","_data$message","_React$createElement","_React$createElement2","_ref5","isSuccess","backgroundImage","backgroundSize","ResetPassword","useSearchParams","get","queryAppId","NewPasswordForm","RequestResetForm","resetPageUrl","origin","pathname","setSent","sent","sentContent","confirmPassword","_wasThrown2","_result2","_useI18n2","setConfirmPassword","UserIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","SettingsIcon","SlidersIcon","x1","y1","x2","y2","LogOutIcon","points","ChevronsUpDownIcon","AVATAR_COLORS","getAvatarColor","hash","charCodeAt","Math","abs","getInitials","Boolean","w","UserMenu","_ref6","handleLogout","onLogout","logoutRedirectTo","_temp3","userProp","user","_ref6$logoutRedirectT","_ref6$profileHref","profileHref","_ref6$settingsHref","settingsHref","siteSettingsHref","compact","isOpen","setIsOpen","fetchedUser","setFetchedUser","menuRef","useRef","fetchSession","_ref7","cancelled","handleClickOutside","current","contains","document","addEventListener","removeEventListener","displayName","_user$email","initials","avatarColor","ref","fetchIamSession","fetchIamAuthToken","_data$token","iamRequest","options","ApiError","errorData","statusText","TypeError","_Error","call","_inheritsLoose","_wrapNativeSuper","Error","usersApi","getAll","excludeGuests","append","page","limit","endpoint","create","userData","update","userId","delete","updateRole","roleIds","updateGroup","groupIds","updatePermission","permissionIds","resetPassword","getLastLogins","userIds","forEach","rolesApi","roleData","roleId","permissionsApi","permissionData","groupsApi","groupData","groupId","policyApi","policyData","iamApi","users","roles","permissions","groups","IconX","xmlns","IconPlus","IconTrash2","IconSave","IconShield","IconUsers","IconSettings","IconEdit","_ref8","IconKey","_ref9","IconLock","_ref0","rx","ry","IconUserPlus","_ref1","IconAlertTriangle","_ref10","IconChevronLeft","_ref11","IconChevronRight","_ref12","IconMoreHorizontal","_ref13","IconUserX","_ref14","IconUserCheck","_ref15","DropdownMenu","trigger","align","_align","_a","triggerRef","_b","top","left","position","setPosition","updatePosition","rect","getBoundingClientRect","bottom","right","event","handleScroll","menu","ReactDOM","createPortal","createElement","innerWidth","DropdownItem","preventClose","stopPropagation","DropdownSeparator","ConfirmDialog","open","onOpenChange","description","confirmLabel","confirmClassName","onConfirm","UserModal","handleDelete","setIsSubmitting","onClose","onDelete","formData","_temp4","onSave","selectedRoles","selectedGroups","selectedPermissions","availableRoles","availableGroups","availablePermissions","_form","phone","setFormData","_roles","setSelectedRoles","_groups","setSelectedGroups","_perms","setSelectedPermissions","_del","showDeleteConfirm","setShowDeleteConfirm","_sub","isSubmitting","permissionDetails","p","g","addRole","concat","removeRole","addGroup","removeGroup","addPermission","permissionId","removePermission","availRoles","availGroups","availPerms","htmlFor","find","paddingRight","group","userCount","permId","perm","module","RoleModal","isBuiltIn","isActive","matchedByName","indexOf","checked","GroupModal","notify","onNotification","formatLastLogin","parsed","Date","parse","isNaN","seconds","floor","now","minutes","n","hours","days","months","years","policyInputCls","selectPaddingStyle","PolicyToggle","PolicyTab","handleSave","dirty","saving","setSaving","_temp52","onUpdate","form","setDirty","_result5","loading","setForm","_dirty","_saving","sessionTimeoutMinutes","requireSignupApproval","updateField","field","prev","next","_form$sessionTimeoutM","parseInt","_form$allowGuest","_form$allowSignUp","_form$requireSignupAp","_form$passwordMinLeng","_form$passwordRequire","_form$passwordRequire2","_form$passwordRequire3","_form$passwordRequire4","IAMConsole","updatePolicy","tokenRef","updated","_temp44","deleteGroup","setGroups","_temp43","fetchGroups","_temp42","createGroup","_temp41","deleteRole","setRoles","_temp40","refreshRoles","_temp39","createRole","_temp38","resetUserPassword","resp","_temp37","createUser","refreshUsers","_temp36","updateUserWithRolesAndGroups","editingUser","_temp35","_temp34","_temp32","_temp30","_temp29","_temp31","_temp33","rejectUser","approvalStatus","_temp28","approveUser","_temp27","toggleUserActive","_temp26","deleteUser","setUsers","u","_temp25","handleAddGroup","setIsAddingGroup","_exit3","_temp23","ensurePermissionsLoaded","_temp24","handleEditGroup","setEditingGroup","_temp21","_temp22","handleAddRole","setIsAddingRole","_exit2","_temp19","_temp20","handleEditRole","setEditingRole","_temp17","_temp18","handleAddUser","setIsAddingUser","_temp15","_temp14","_temp12","_temp10","permsResp","setPermissions","_temp11","groupsResp","_temp13","rolesResp","_temp16","handleEditUser","setEditingUser","_temp50","_temp49","_temp47","_temp45","_temp46","_temp48","_temp51","authTokenProp","onSessionExpired","loginUrl","extraTabs","_loginUrl","_session","session","setSession","_authReady","authReady","setAuthReady","_tab","activeTab","setActiveTab","_users","_permissions","_policy","_loading","setLoading","_editUser","_editRole","editingRole","_editGroup","editingGroup","_addRole","isAddingRole","_addGroup","isAddingGroup","_addUser","isAddingUser","_confirmDelete","confirmDelete","setConfirmDelete","_confirmToggle","confirmToggle","setConfirmToggle","_confirmReset","confirmResetPassword","setConfirmResetPassword","_confirmApprove","confirmApprove","setConfirmApprove","_confirmReject","confirmReject","setConfirmReject","_userPage","totalCount","totalPages","hasNext","hasPrev","userPagination","setUserPagination","_rolePage","rolePagination","setRolePagination","sess","handleApiError","log","_temp5","_temp6","fetchData","_interrupt","_temp1","usersResp","pagination","_temp8","_temp7","_temp0","_temp9","policyResp","canDeleteUser","adminOwnerUsers","some","currentUser","isAdmin","tabCls","addBtnCls","borderColor","color","borderBottomColor","tab","icon","lastLoginAt","from","to","min","total","Number","count","THEME_KEYS","labelKey","descKey","preview","BARE_CODE_MAP","normalizeStoredLanguage","Section","Field","inputCls","TEXT_SIZE_OPTIONS","Profile","handleChangePassword","setPasswordStatus","setPasswordError","newPassword","setIsChangingPassword","currentPassword","setCurrentPassword","setNewPassword","setTimeout","setIsSaving","setSaveStatus","address","theme","textSize","setProfile","_wasThrown3","_result3","onThemeChange","onTextSizeChange","textSizeProp","profile","appSupportedLocales","setAppSupportedLocales","setPhone","setLanguage","setAddress","_useState9","setTheme","_useState0","setTextSize","_useState1","isSaving","_useState10","saveStatus","_useState11","_useState12","_useState13","_useState14","isChangingPassword","_useState15","passwordStatus","_useState16","passwordError","localeOptions","browserLocaleName","browserCode","match","langMatch","fetchProfile","_data$app","app","_data$app$settings","settings","_data$name","_data$phone","_data$address","_data$theme","_data$textSize","storedLang","val","opt","active","_opt$value","max","findIndex"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDO,IAAM6B,YAAY,GAA2C;EAClE,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAEC,IAAI;EACb,OAAO,EAAE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"}
|