@create-flow/auth-ui 0.0.1 → 0.0.4

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/Hello.tsx"],"sourcesContent":["import * as React from 'react'\nimport styles from './Hello.module.css'\n\ninterface Props {\n text: string\n}\n\nexport const Hello = ({ text }: Props): JSX.Element => {\n return <div className={styles.test}>Hello, {text}</div>\n}\n"],"names":["Hello","_ref","text","React","className","styles","test"],"mappings":";;;;IAOaA,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA;MAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC1B,OAAOC;IAAKC,SAAS,EAAEC,MAAM,CAACC;gBAAcJ,IAAI,CAAO;AACzD,CAAC;;;;"}
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&apos;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":"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"}