@stackframe/stack 2.4.20 → 2.4.22
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/CHANGELOG.md +18 -0
- package/dist/components/message-cards/known-error-message-card.d.mts +9 -0
- package/dist/components/message-cards/known-error-message-card.d.ts +9 -0
- package/dist/components/message-cards/known-error-message-card.js +67 -0
- package/dist/components/message-cards/known-error-message-card.js.map +1 -0
- package/dist/components/{message-card.d.mts → message-cards/message-card.d.mts} +5 -1
- package/dist/components/{message-card.d.ts → message-cards/message-card.d.ts} +5 -1
- package/dist/components/{message-card.js → message-cards/message-card.js} +10 -6
- package/dist/components/message-cards/message-card.js.map +1 -0
- package/dist/components/{redirect-message-card.d.mts → message-cards/predefined-message-card.d.mts} +3 -3
- package/dist/components/{redirect-message-card.d.ts → message-cards/predefined-message-card.d.ts} +3 -3
- package/dist/components/{redirect-message-card.js → message-cards/predefined-message-card.js} +32 -29
- package/dist/components/message-cards/predefined-message-card.js.map +1 -0
- package/dist/components/password-reset-inner.js +3 -3
- package/dist/components/password-reset-inner.js.map +1 -1
- package/dist/components-core/index.d.mts +4 -4
- package/dist/components-core/index.d.ts +4 -4
- package/dist/components-core-joy/text.d.mts +2 -2
- package/dist/components-core-joy/text.d.ts +2 -2
- package/dist/components-page/account-settings.js +2 -2
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.js +2 -2
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/email-verification.js +3 -3
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/error-page.d.mts +8 -0
- package/dist/components-page/error-page.d.ts +8 -0
- package/dist/components-page/error-page.js +85 -0
- package/dist/components-page/error-page.js.map +1 -0
- package/dist/components-page/forgot-password.js +3 -3
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/magic-link-callback.js +3 -3
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/oauth-callback.js +4 -3
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/password-reset.js +1 -1
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/sign-out.js +2 -2
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/stack-handler.js +5 -1
- package/dist/components-page/stack-handler.js.map +1 -1
- package/dist/esm/components/message-cards/known-error-message-card.js +37 -0
- package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -0
- package/dist/esm/components/message-cards/message-card.js +21 -0
- package/dist/esm/components/message-cards/message-card.js.map +1 -0
- package/dist/esm/components/{redirect-message-card.js → message-cards/predefined-message-card.js} +30 -27
- package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -0
- package/dist/esm/components/password-reset-inner.js +3 -3
- package/dist/esm/components/password-reset-inner.js.map +1 -1
- package/dist/esm/components-page/account-settings.js +2 -2
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.js +2 -2
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/email-verification.js +3 -3
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/error-page.js +55 -0
- package/dist/esm/components-page/error-page.js.map +1 -0
- package/dist/esm/components-page/forgot-password.js +3 -3
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/magic-link-callback.js +3 -3
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +4 -3
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/password-reset.js +1 -1
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/sign-out.js +1 -1
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/stack-handler.js +5 -1
- package/dist/esm/components-page/stack-handler.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/auth.js +30 -14
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/stack-app.js +142 -68
- package/dist/esm/lib/stack-app.js.map +1 -1
- package/dist/esm/providers/stack-provider-client.js +1 -1
- package/dist/esm/providers/stack-provider-client.js.map +1 -1
- package/dist/esm/providers/styled-components-registry.js +1 -1
- package/dist/esm/providers/styled-components-registry.js.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.d.mts +13 -3
- package/dist/lib/auth.d.ts +13 -3
- package/dist/lib/auth.js +31 -14
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/stack-app.d.mts +111 -65
- package/dist/lib/stack-app.d.ts +111 -65
- package/dist/lib/stack-app.js +139 -65
- package/dist/lib/stack-app.js.map +1 -1
- package/dist/providers/component-provider.d.mts +6 -6
- package/dist/providers/component-provider.d.ts +6 -6
- package/dist/providers/joy-provider.d.mts +2 -2
- package/dist/providers/joy-provider.d.ts +2 -2
- package/dist/providers/stack-provider-client.js +1 -1
- package/dist/providers/stack-provider-client.js.map +1 -1
- package/dist/providers/styled-components-registry.js +1 -1
- package/dist/providers/styled-components-registry.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/message-card.js.map +0 -1
- package/dist/components/redirect-message-card.js.map +0 -1
- package/dist/esm/components/message-card.js +0 -17
- package/dist/esm/components/message-card.js.map +0 -1
- package/dist/esm/components/redirect-message-card.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport MessageCard from \"../components/message-card\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport MessageCard from \"../components/message-cards/message-card\";\nimport PredefinedMessageCard from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport default function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(code));\n\n if (error instanceof KnownErrors.EmailVerificationCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.EmailVerificationCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.EmailVerificationCodeAlreadyUsed) {\n // everything fine, continue\n } else if (error) {\n throw error;\n }\n\n return <PredefinedMessageCard type='emailVerified' fullPage={fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoB;AACpB,eAA4B;AAC5B,0BAAwB;AACxB,qCAAkC;AAClC,0BAA4B;AAetB;AAbS,SAAR,kBAAmC;AAAA,EACxC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAE7B,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,6BAA4B,UAC7C,sDAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,6BAA4B,UAC7C,sDAAC,OAAE,0HAA4G,GACjH;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,SAAS,YAAY,IAAI,CAAC;AAE5C,MAAI,iBAAiB,gCAAY,+BAA+B;AAC9D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,kCAAkC;AAAA,EAE1E,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,4CAAC,+BAAAC,SAAA,EAAsB,MAAK,iBAAgB,UAAoB;AACzE;","names":["MessageCard","PredefinedMessageCard"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
"use client";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// src/components-page/error-page.tsx
|
|
33
|
+
var error_page_exports = {};
|
|
34
|
+
__export(error_page_exports, {
|
|
35
|
+
default: () => ErrorPage
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(error_page_exports);
|
|
38
|
+
var import__ = require("..");
|
|
39
|
+
var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
|
|
40
|
+
var import_components_core = require("../components-core");
|
|
41
|
+
var import_stack_shared = require("@stackframe/stack-shared");
|
|
42
|
+
var import_known_error_message_card = __toESM(require("../components/message-cards/known-error-message-card"));
|
|
43
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
44
|
+
function ErrorPage({ fullPage = false, searchParams }) {
|
|
45
|
+
const stackApp = (0, import__.useStackApp)();
|
|
46
|
+
const errorCode = searchParams.errorCode;
|
|
47
|
+
const message = searchParams.message;
|
|
48
|
+
const details = searchParams.details;
|
|
49
|
+
const unknownErrorCard = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "unknownError", fullPage });
|
|
50
|
+
if (!errorCode || !message || !details) {
|
|
51
|
+
return unknownErrorCard;
|
|
52
|
+
}
|
|
53
|
+
let error;
|
|
54
|
+
try {
|
|
55
|
+
error = import_stack_shared.KnownError.fromJson({ code: errorCode, message, details });
|
|
56
|
+
} catch (e) {
|
|
57
|
+
return unknownErrorCard;
|
|
58
|
+
}
|
|
59
|
+
if (error instanceof import_stack_shared.KnownErrors.OAuthConnectionAlreadyConnectedToAnotherUser) {
|
|
60
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
|
+
import__.MessageCard,
|
|
62
|
+
{
|
|
63
|
+
title: "Failed to connect account",
|
|
64
|
+
fullPage,
|
|
65
|
+
primaryButtonText: "Go to Home",
|
|
66
|
+
primaryAction: () => stackApp.redirectToHome(),
|
|
67
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { children: "This account is already connected to another user. Please connect a different account." })
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
if (error instanceof import_stack_shared.KnownErrors.UserAlreadyConnectedToAnotherOAuthConnection) {
|
|
72
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
73
|
+
import__.MessageCard,
|
|
74
|
+
{
|
|
75
|
+
title: "Failed to connect account",
|
|
76
|
+
fullPage,
|
|
77
|
+
primaryButtonText: "Go to Home",
|
|
78
|
+
primaryAction: () => stackApp.redirectToHome(),
|
|
79
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { children: "The user is already connected to another OAuth account. Did you maybe selected the wrong account on the OAuth provider page?" })
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_known_error_message_card.default, { error, fullPage });
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=error-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/error-page.tsx"],"sourcesContent":["'use client';\n\nimport { MessageCard, useStackApp, useUser } from \"..\";\nimport PredefinedMessageCard from \"../components/message-cards/predefined-message-card\";\nimport { Text } from \"../components-core\";\nimport { KnownError, KnownErrors } from \"@stackframe/stack-shared\";\nimport KnownErrorMessageCard from \"../components/message-cards/known-error-message-card\";\n\n\nexport default function ErrorPage({ fullPage=false, searchParams }: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const stackApp = useStackApp();\n const errorCode = searchParams.errorCode;\n const message = searchParams.message;\n const details = searchParams.details;\n\n const unknownErrorCard = <PredefinedMessageCard type='unknownError' fullPage={fullPage} />;\n\n if (!errorCode || !message || !details) {\n return unknownErrorCard;\n }\n\n let error;\n try {\n error = KnownError.fromJson({ code: errorCode, message, details });\n } catch (e) {\n return unknownErrorCard;\n }\n\n if (error instanceof KnownErrors.OAuthConnectionAlreadyConnectedToAnotherUser) {\n // TODO: add \"Connect a different account\" button\n return (\n <MessageCard \n title=\"Failed to connect account\" \n fullPage={fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => stackApp.redirectToHome()}\n >\n <Text>\n This account is already connected to another user. Please connect a different account.\n </Text>\n </MessageCard>\n );\n }\n\n if (error instanceof KnownErrors.UserAlreadyConnectedToAnotherOAuthConnection) {\n // TODO: add \"Connect again\" button\n return (\n <MessageCard \n title=\"Failed to connect account\" \n fullPage={fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => stackApp.redirectToHome()}\n >\n <Text>\n The user is already connected to another OAuth account. Did you maybe selected the wrong account on the OAuth provider page?\n </Text>\n </MessageCard>\n );\n }\n\n return <KnownErrorMessageCard error={error} fullPage={fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,eAAkD;AAClD,qCAAkC;AAClC,6BAAqB;AACrB,0BAAwC;AACxC,sCAAkC;AASP;AANZ,SAAR,UAA2B,EAAE,WAAS,OAAO,aAAa,GAAiE;AAChI,QAAM,eAAW,sBAAY;AAC7B,QAAM,YAAY,aAAa;AAC/B,QAAM,UAAU,aAAa;AAC7B,QAAM,UAAU,aAAa;AAE7B,QAAM,mBAAmB,4CAAC,+BAAAA,SAAA,EAAsB,MAAK,gBAAe,UAAoB;AAExF,MAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS;AACtC,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACF,YAAQ,+BAAW,SAAS,EAAE,MAAM,WAAW,SAAS,QAAQ,CAAC;AAAA,EACnE,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,gCAAY,8CAA8C;AAE7E,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN;AAAA,QACA,mBAAkB;AAAA,QAClB,eAAe,MAAM,SAAS,eAAe;AAAA,QAE7C,sDAAC,+BAAK,oGAEN;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,MAAI,iBAAiB,gCAAY,8CAA8C;AAE7E,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN;AAAA,QACA,mBAAkB;AAAA,QAClB,eAAe,MAAM,SAAS,eAAe;AAAA,QAE7C,sDAAC,+BAAK,0IAEN;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO,4CAAC,gCAAAC,SAAA,EAAsB,OAAc,UAAoB;AAClE;","names":["PredefinedMessageCard","KnownErrorMessageCard"]}
|
|
@@ -38,7 +38,7 @@ module.exports = __toCommonJS(forgot_password_exports);
|
|
|
38
38
|
var import_forgot_password = __toESM(require("../components/forgot-password"));
|
|
39
39
|
var import_maybe_full_page = __toESM(require("../components/maybe-full-page"));
|
|
40
40
|
var import__ = require("..");
|
|
41
|
-
var
|
|
41
|
+
var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
|
|
42
42
|
var import_react = require("react");
|
|
43
43
|
var import_components_core = require("../components-core");
|
|
44
44
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -47,10 +47,10 @@ function ForgotPassword({ fullPage = false }) {
|
|
|
47
47
|
const user = (0, import__.useUser)();
|
|
48
48
|
const [sent, setSent] = (0, import_react.useState)(false);
|
|
49
49
|
if (user) {
|
|
50
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
50
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "signedIn", fullPage });
|
|
51
51
|
}
|
|
52
52
|
if (sent) {
|
|
53
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "emailSent", fullPage });
|
|
54
54
|
}
|
|
55
55
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_maybe_full_page.default, { fullPage, children: [
|
|
56
56
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\nimport ForgotPasswordElement from \"../components/forgot-password\";\nimport MaybeFullPage from \"../components/maybe-full-page\";\nimport { useUser, useStackApp } from \"..\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\nimport ForgotPasswordElement from \"../components/forgot-password\";\nimport MaybeFullPage from \"../components/maybe-full-page\";\nimport { useUser, useStackApp } from \"..\";\nimport PredefinedMessageCard from \"../components/message-cards/predefined-message-card\";\nimport { useState } from \"react\";\nimport { Link, Text } from \"../components-core\";\n\n\nexport default function ForgotPassword({ fullPage=false }: { fullPage?: boolean }) {\n const stackApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n if (sent) {\n return <PredefinedMessageCard type='emailSent' fullPage={fullPage} />;\n }\n\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>Reset Your Password</Text>\n <Text>\n {\"Don't need to reset? \"}\n <Link href={stackApp.urls['signUp']}>\n Sign In\n </Link>\n </Text>\n </div>\n <ForgotPasswordElement onSent={() => setSent(true)} />\n </MaybeFullPage>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,6BAAkC;AAClC,6BAA0B;AAC1B,eAAqC;AACrC,qCAAkC;AAClC,mBAAyB;AACzB,6BAA2B;AAShB;AANI,SAAR,eAAgC,EAAE,WAAS,MAAM,GAA2B;AACjF,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AACrB,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AAEtC,MAAI,MAAM;AACR,WAAO,4CAAC,+BAAAA,SAAA,EAAsB,MAAK,YAAW,UAAoB;AAAA,EACpE;AAEA,MAAI,MAAM;AACR,WAAO,4CAAC,+BAAAA,SAAA,EAAsB,MAAK,aAAY,UAAoB;AAAA,EACrE;AAEA,SACE,6CAAC,uBAAAC,SAAA,EAAc,UACb;AAAA,iDAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,kDAAC,+BAAK,MAAK,MAAK,IAAG,MAAK,iCAAmB;AAAA,MAC3C,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,GAAG,qBAErC;AAAA,SACF;AAAA,OACF;AAAA,IACA,4CAAC,uBAAAC,SAAA,EAAsB,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAAA,KACtD;AAEJ;","names":["PredefinedMessageCard","MaybeFullPage","ForgotPasswordElement"]}
|
|
@@ -37,8 +37,8 @@ __export(magic_link_callback_exports, {
|
|
|
37
37
|
module.exports = __toCommonJS(magic_link_callback_exports);
|
|
38
38
|
var import_react = require("react");
|
|
39
39
|
var import__ = require("..");
|
|
40
|
-
var import_message_card = __toESM(require("../components/message-card"));
|
|
41
|
-
var
|
|
40
|
+
var import_message_card = __toESM(require("../components/message-cards/message-card"));
|
|
41
|
+
var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
|
|
42
42
|
var import_stack_shared = require("@stackframe/stack-shared");
|
|
43
43
|
var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
44
44
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -51,7 +51,7 @@ function MagicLinkCallback({
|
|
|
51
51
|
const stackApp = (0, import__.useStackApp)();
|
|
52
52
|
const user = (0, import__.useUser)();
|
|
53
53
|
if (user) {
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
54
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "signedIn", fullPage });
|
|
55
55
|
}
|
|
56
56
|
const invalidJsx = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Invalid Magic Link", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Please check if you have the correct link. If you continue to have issues, please contact support." }) });
|
|
57
57
|
const expiredJsx = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Expired Magic Link", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Your magic link has expired. Please request a new magic link if you need to sign-in." }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport MessageCard from \"../components/message-card\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport MessageCard from \"../components/message-cards/message-card\";\nimport PredefinedMessageCard from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport default function MagicLinkCallback({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Magic Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Magic Link\" fullPage={fullPage}>\n <p>Your magic link has expired. Please request a new magic link if you need to sign-in.</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title=\"Magic Link Already Used\" fullPage={fullPage}>\n <p>The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.signInWithMagicLink(code));\n\n if (error instanceof KnownErrors.MagicLinkCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.MagicLinkCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.MagicLinkCodeAlreadyUsed) {\n return alreadyUsedJsx;\n } else if (error) {\n throw error;\n }\n\n use(neverResolve());\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoB;AACpB,eAAqC;AACrC,0BAAwB;AACxB,qCAAkC;AAClC,0BAA4B;AAC5B,sBAA6B;AAelB;AAbI,SAAR,kBAAmC;AAAA,EACxC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AAErB,MAAI,MAAM;AACR,WAAO,4CAAC,+BAAAA,SAAA,EAAsB,MAAK,YAAW,UAAoB;AAAA,EACpE;AAEA,QAAM,aACJ,4CAAC,oBAAAC,SAAA,EAAY,OAAM,sBAAqB,UACtC,sDAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,sBAAqB,UACtC,sDAAC,OAAE,kGAAoF,GACzF;AAGF,QAAM,iBACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,2BAA0B,UAC3C,sDAAC,OAAE,iJAAmI,GACxI;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,SAAS,oBAAoB,IAAI,CAAC;AAEpD,MAAI,iBAAiB,gCAAY,uBAAuB;AACtD,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,sBAAsB;AAC5D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,0BAA0B;AAChE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,4BAAI,8BAAa,CAAC;AACpB;","names":["PredefinedMessageCard","MessageCard"]}
|
|
@@ -38,7 +38,8 @@ module.exports = __toCommonJS(oauth_callback_exports);
|
|
|
38
38
|
var import_react = require("react");
|
|
39
39
|
var import__ = require("..");
|
|
40
40
|
var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
41
|
-
var import_message_card = __toESM(require("../components/message-card"));
|
|
41
|
+
var import_message_card = __toESM(require("../components/message-cards/message-card"));
|
|
42
|
+
var import_link = require("../components-core/link");
|
|
42
43
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
43
44
|
function OAuthCallback(props) {
|
|
44
45
|
const app = (0, import__.useStackApp)();
|
|
@@ -55,7 +56,7 @@ function OAuthCallback(props) {
|
|
|
55
56
|
} catch (e) {
|
|
56
57
|
setError(e);
|
|
57
58
|
}
|
|
58
|
-
if (!hasRedirected) {
|
|
59
|
+
if (!hasRedirected && process.env.NODE_ENV === "production") {
|
|
59
60
|
await app.redirectToSignIn();
|
|
60
61
|
}
|
|
61
62
|
}), []);
|
|
@@ -65,7 +66,7 @@ function OAuthCallback(props) {
|
|
|
65
66
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_message_card.default, { title: "Redirecting...", fullPage: props.fullPage, children: [
|
|
66
67
|
showRedirectLink ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
|
|
67
68
|
"If you are not redirected automatically, ",
|
|
68
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.Link, { href: app.urls.home, children: "click here" }),
|
|
69
70
|
"."
|
|
70
71
|
] }) : null,
|
|
71
72
|
error ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/oauth-callback.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useEffect, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport MessageCard from \"../components/message-card\";\n\nexport default function OAuthCallback(props: { fullPage?: boolean }) {\n const app = useStackApp();\n const called = useRef(false);\n const [error, setError] = useState<unknown>(null);\n const [showRedirectLink, setShowRedirectLink] = useState(false);\n\n useEffect(() => runAsynchronously(async () => {\n if (called.current) return;\n called.current = true;\n let hasRedirected = false;\n try {\n hasRedirected = await app.callOAuthCallback();\n } catch (e: any) {\n setError(e);\n }\n if (!hasRedirected) {\n await app.redirectToSignIn();\n }\n }), []);\n\n useEffect(() => {\n setTimeout(() => setShowRedirectLink(true), 3000);\n }, []);\n\n return <MessageCard title='Redirecting...' fullPage={props.fullPage}>\n {showRedirectLink ? <p>If you are not redirected automatically, <
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/oauth-callback.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useEffect, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport MessageCard from \"../components/message-cards/message-card\";\nimport { Link } from \"../components-core/link\";\n\nexport default function OAuthCallback(props: { fullPage?: boolean }) {\n const app = useStackApp();\n const called = useRef(false);\n const [error, setError] = useState<unknown>(null);\n const [showRedirectLink, setShowRedirectLink] = useState(false);\n\n useEffect(() => runAsynchronously(async () => {\n if (called.current) return;\n called.current = true;\n let hasRedirected = false;\n try {\n hasRedirected = await app.callOAuthCallback();\n } catch (e: any) {\n setError(e);\n }\n if (!hasRedirected && process.env.NODE_ENV === 'production') {\n await app.redirectToSignIn();\n }\n }), []);\n\n useEffect(() => {\n setTimeout(() => setShowRedirectLink(true), 3000);\n }, []);\n\n return <MessageCard title='Redirecting...' fullPage={props.fullPage}>\n {showRedirectLink ? <p>If you are not redirected automatically, <Link href={app.urls.home}>click here</Link>.</p> : null}\n {error ? <div>\n <p>Something went wrong while processing the OAuth callback:</p>\n <pre>{JSON.stringify(error, null, 2)}</pre>\n <p>This is most likely an error in Stack. Please report it.</p>\n </div> : null}\n </MessageCard>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA4C;AAC5C,eAA4B;AAC5B,sBAAkC;AAClC,0BAAwB;AACxB,kBAAqB;AA2BG;AAzBT,SAAR,cAA+B,OAA+B;AACnE,QAAM,UAAM,sBAAY;AACxB,QAAM,aAAS,qBAAO,KAAK;AAC3B,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAkB,IAAI;AAChD,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,KAAK;AAE9D,8BAAU,UAAM,mCAAkB,YAAY;AAC5C,QAAI,OAAO;AAAS;AACpB,WAAO,UAAU;AACjB,QAAI,gBAAgB;AACpB,QAAI;AACF,sBAAgB,MAAM,IAAI,kBAAkB;AAAA,IAC9C,SAAS,GAAQ;AACf,eAAS,CAAC;AAAA,IACZ;AACA,QAAI,CAAC,iBAAiB,QAAQ,IAAI,aAAa,cAAc;AAC3D,YAAM,IAAI,iBAAiB;AAAA,IAC7B;AAAA,EACF,CAAC,GAAG,CAAC,CAAC;AAEN,8BAAU,MAAM;AACd,eAAW,MAAM,oBAAoB,IAAI,GAAG,GAAI;AAAA,EAClD,GAAG,CAAC,CAAC;AAEL,SAAO,6CAAC,oBAAAA,SAAA,EAAY,OAAM,kBAAiB,UAAU,MAAM,UACxD;AAAA,uBAAmB,6CAAC,OAAE;AAAA;AAAA,MAAyC,4CAAC,oBAAK,MAAM,IAAI,KAAK,MAAM,wBAAU;AAAA,MAAO;AAAA,OAAC,IAAO;AAAA,IACnH,QAAQ,6CAAC,SACR;AAAA,kDAAC,OAAE,uEAAyD;AAAA,MAC5D,4CAAC,SAAK,eAAK,UAAU,OAAO,MAAM,CAAC,GAAE;AAAA,MACrC,4CAAC,OAAE,sEAAwD;AAAA,OAC7D,IAAS;AAAA,KACX;AACF;","names":["MessageCard"]}
|
|
@@ -35,7 +35,7 @@ __export(password_reset_exports, {
|
|
|
35
35
|
default: () => PasswordReset
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(password_reset_exports);
|
|
38
|
-
var import_message_card = __toESM(require("../components/message-card"));
|
|
38
|
+
var import_message_card = __toESM(require("../components/message-cards/message-card"));
|
|
39
39
|
var import__ = require("..");
|
|
40
40
|
var import_react = require("react");
|
|
41
41
|
var import_password_reset_inner = __toESM(require("../components/password-reset-inner"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport MessageCard from \"../components/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetInner from \"../components/password-reset-inner\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { Text } from \"../components-core\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyPasswordResetCode(code);\n});\n\nexport default function PasswordReset({\n searchParams,\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Password Reset Link\" fullPage={fullPage}>\n <Text>Please double check if you have the correct password reset link.</Text>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Password Reset Link\" fullPage={fullPage}>\n <Text>Your password reset link has expired. Please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title=\"Used Password Reset Link\" fullPage={fullPage}>\n <Text>This password reset link has already been used. If you need to reset your password again, please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const code = searchParams?.code;\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.PasswordResetCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeAlreadyUsed) {\n return usedJsx;\n } else if (error) {\n throw error;\n }\n\n return <PasswordResetInner code={code} fullPage={fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAwB;AACxB,eAA4C;AAC5C,mBAAoB;AACpB,kCAA+B;AAC/B,oBAA8B;AAC9B,6BAAqB;AACrB,0BAA4B;AAiBtB;AAfN,IAAM,oCAAgC,6BAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEc,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAE7B,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,+BAA8B,UAC/C,sDAAC,+BAAK,8EAAgE,GACxE;AAGF,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,+BAA8B,UAC/C,sDAAC,+BAAK,iHAAmG,GAC3G;AAGF,QAAM,UACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,4BAA2B,UAC5C,sDAAC,+BAAK,qKAAuJ,GAC/J;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,gCAAY,2BAA2B;AAC1D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,0BAA0B;AAChE,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,4CAAC,4BAAAC,SAAA,EAAmB,MAAY,UAAoB;AAC7D;","names":["MessageCard","PasswordResetInner"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport MessageCard from \"../components/message-cards/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetInner from \"../components/password-reset-inner\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { Text } from \"../components-core\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyPasswordResetCode(code);\n});\n\nexport default function PasswordReset({\n searchParams,\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Password Reset Link\" fullPage={fullPage}>\n <Text>Please double check if you have the correct password reset link.</Text>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Password Reset Link\" fullPage={fullPage}>\n <Text>Your password reset link has expired. Please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title=\"Used Password Reset Link\" fullPage={fullPage}>\n <Text>This password reset link has already been used. If you need to reset your password again, please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const code = searchParams?.code;\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.PasswordResetCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeAlreadyUsed) {\n return usedJsx;\n } else if (error) {\n throw error;\n }\n\n return <PasswordResetInner code={code} fullPage={fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAwB;AACxB,eAA4C;AAC5C,mBAAoB;AACpB,kCAA+B;AAC/B,oBAA8B;AAC9B,6BAAqB;AACrB,0BAA4B;AAiBtB;AAfN,IAAM,oCAAgC,6BAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEc,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAE7B,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,+BAA8B,UAC/C,sDAAC,+BAAK,8EAAgE,GACxE;AAGF,QAAM,aACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,+BAA8B,UAC/C,sDAAC,+BAAK,iHAAmG,GAC3G;AAGF,QAAM,UACJ,4CAAC,oBAAAA,SAAA,EAAY,OAAM,4BAA2B,UAC5C,sDAAC,+BAAK,qKAAuJ,GAC/J;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,gCAAY,2BAA2B;AAC1D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,0BAA0B;AAChE,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,4CAAC,4BAAAC,SAAA,EAAmB,MAAY,UAAoB;AAC7D;","names":["MessageCard","PasswordResetInner"]}
|
|
@@ -37,13 +37,13 @@ __export(sign_out_exports, {
|
|
|
37
37
|
module.exports = __toCommonJS(sign_out_exports);
|
|
38
38
|
var import_react = require("react");
|
|
39
39
|
var import__ = require("..");
|
|
40
|
-
var
|
|
40
|
+
var import_predefined_message_card = __toESM(require("../components/message-cards/predefined-message-card"));
|
|
41
41
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
42
42
|
function SignOut(props) {
|
|
43
43
|
const user = (0, import__.useUser)();
|
|
44
44
|
if (user) {
|
|
45
45
|
(0, import_react.use)(user.signOut());
|
|
46
46
|
}
|
|
47
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_predefined_message_card.default, { type: "signedOut", fullPage: props.fullPage });
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=sign-out.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/sign-out.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useUser } from \"..\";\nimport GoHomeMessageCard from \"../components/
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/sign-out.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useUser } from \"..\";\nimport GoHomeMessageCard from \"../components/message-cards/predefined-message-card\";\n\nexport default function SignOut(props: { fullPage?: boolean }) {\n const user = useUser();\n \n if (user) {\n use(user.signOut());\n }\n \n return <GoHomeMessageCard type='signedOut' fullPage={props.fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoB;AACpB,eAAwB;AACxB,qCAA8B;AASrB;AAPM,SAAR,QAAyB,OAA+B;AAC7D,QAAM,WAAO,kBAAQ;AAErB,MAAI,MAAM;AACR,0BAAI,KAAK,QAAQ,CAAC;AAAA,EACpB;AAEA,SAAO,4CAAC,+BAAAA,SAAA,EAAkB,MAAK,aAAY,UAAU,MAAM,UAAU;AACvE;","names":["GoHomeMessageCard"]}
|
|
@@ -38,12 +38,13 @@ var import_sign_in = __toESM(require("./sign-in"));
|
|
|
38
38
|
var import_navigation = require("next/navigation");
|
|
39
39
|
var import_email_verification = __toESM(require("./email-verification"));
|
|
40
40
|
var import__ = require("..");
|
|
41
|
-
var import_message_card = __toESM(require("../components/message-card"));
|
|
41
|
+
var import_message_card = __toESM(require("../components/message-cards/message-card"));
|
|
42
42
|
var import_sign_out = __toESM(require("./sign-out"));
|
|
43
43
|
var import_forgot_password = __toESM(require("./forgot-password"));
|
|
44
44
|
var import_oauth_callback = __toESM(require("./oauth-callback"));
|
|
45
45
|
var import_account_settings = __toESM(require("./account-settings"));
|
|
46
46
|
var import_magic_link_callback = __toESM(require("./magic-link-callback"));
|
|
47
|
+
var import_error_page = __toESM(require("./error-page"));
|
|
47
48
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
48
49
|
async function StackHandler({
|
|
49
50
|
app,
|
|
@@ -113,6 +114,9 @@ async function StackHandler({
|
|
|
113
114
|
redirectIfNotHandler("magicLinkCallback");
|
|
114
115
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_callback.default, { searchParams, fullPage });
|
|
115
116
|
}
|
|
117
|
+
case "error": {
|
|
118
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_error_page.default, { searchParams, fullPage });
|
|
119
|
+
}
|
|
116
120
|
default: {
|
|
117
121
|
return (0, import_navigation.notFound)();
|
|
118
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/stack-handler.tsx"],"sourcesContent":["import SignUp from \"./sign-up\";\nimport SignIn from \"./sign-in\";\nimport { RedirectType, notFound, redirect } from 'next/navigation';\nimport EmailVerification from \"./email-verification\";\nimport { PasswordReset, StackServerApp } from \"..\";\nimport MessageCard from \"../components/message-card\";\nimport { HandlerUrls } from \"../lib/stack-app\";\nimport SignOut from \"./sign-out\";\nimport ForgotPassword from \"./forgot-password\";\nimport OAuthCallback from \"./oauth-callback\";\nimport AccountSettings from \"./account-settings\";\nimport MagicLinkCallback from \"./magic-link-callback\";\n\nexport default async function StackHandler<HasTokenStore extends boolean>({\n app,\n params: { stack } = {},\n searchParams = {},\n // TODO set default to false like on the other components (may break old code)\n fullPage = \"deprecated-unset\",\n}: { \n app: StackServerApp<HasTokenStore>,\n params?: { stack?: string[] }, \n searchParams?: Record<string, string>,\n fullPage?: boolean | \"deprecated-unset\",\n}) {\n if (fullPage === \"deprecated-unset\") {\n console.warn(\"You are not passing `fullPage` to Stack's Handler. The default behaviour will soon change from `true` to `false`. Please update your Handler component in handler/[...stack]/page.tsx by adding the `fullPage` prop.\");\n fullPage = true;\n }\n\n if (!stack) {\n return (\n <MessageCard title=\"Invalid Stack Handler Setup\" fullPage={fullPage}>\n <p>Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack].</p>\n </MessageCard>\n );\n }\n\n function redirectIfNotHandler(name: keyof HandlerUrls) {\n const url = app.urls[name];\n const handlerUrl = app.urls.handler;\n\n if (url.startsWith(handlerUrl)) {\n // don't redirect if the url is a handler url\n return;\n }\n\n redirect(url, RedirectType.replace);\n }\n\n async function redirectIfHasUser() {\n const user = await app.getServerUser();\n if (user) {\n redirect(app.urls.afterSignIn);\n }\n }\n\n const path = stack.join('/');\n switch (path) {\n case 'signin': {\n redirectIfNotHandler('signIn');\n await redirectIfHasUser();\n return <SignIn fullPage={fullPage} />;\n }\n case 'signup': {\n redirectIfNotHandler('signUp');\n await redirectIfHasUser();\n return <SignUp fullPage={fullPage} />;\n }\n case 'email-verification': {\n redirectIfNotHandler('emailVerification');\n return <EmailVerification searchParams={searchParams} fullPage={fullPage} />;\n }\n case 'password-reset': {\n redirectIfNotHandler('passwordReset');\n return <PasswordReset searchParams={searchParams} fullPage={fullPage} />;\n }\n case 'forgot-password': {\n redirectIfNotHandler('forgotPassword');\n return <ForgotPassword fullPage={fullPage} />;\n }\n case 'signout': {\n redirectIfNotHandler('signOut');\n return <SignOut fullPage={fullPage} />;\n }\n case 'oauth-callback': {\n redirectIfNotHandler('oauthCallback');\n return <OAuthCallback fullPage={fullPage} />;\n }\n case 'account-settings': {\n redirectIfNotHandler('accountSettings');\n return <AccountSettings fullPage={fullPage} />;\n }\n case 'magic-link-callback': {\n redirectIfNotHandler('magicLinkCallback');\n return <MagicLinkCallback searchParams={searchParams} fullPage={fullPage} />;\n }\n default: {\n return notFound();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmB;AACnB,qBAAmB;AACnB,wBAAiD;AACjD,gCAA8B;AAC9B,eAA8C;AAC9C,0BAAwB;AAExB,sBAAoB;AACpB,6BAA2B;AAC3B,4BAA0B;AAC1B,8BAA4B;AAC5B,iCAA8B;
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/stack-handler.tsx"],"sourcesContent":["import SignUp from \"./sign-up\";\nimport SignIn from \"./sign-in\";\nimport { RedirectType, notFound, redirect } from 'next/navigation';\nimport EmailVerification from \"./email-verification\";\nimport { PasswordReset, StackServerApp } from \"..\";\nimport MessageCard from \"../components/message-cards/message-card\";\nimport { HandlerUrls } from \"../lib/stack-app\";\nimport SignOut from \"./sign-out\";\nimport ForgotPassword from \"./forgot-password\";\nimport OAuthCallback from \"./oauth-callback\";\nimport AccountSettings from \"./account-settings\";\nimport MagicLinkCallback from \"./magic-link-callback\";\nimport ErrorPage from \"./error-page\";\n\nexport default async function StackHandler<HasTokenStore extends boolean>({\n app,\n params: { stack } = {},\n searchParams = {},\n // TODO set default to false like on the other components (may break old code)\n fullPage = \"deprecated-unset\",\n}: { \n app: StackServerApp<HasTokenStore>,\n params?: { stack?: string[] }, \n searchParams?: Record<string, string>,\n fullPage?: boolean | \"deprecated-unset\",\n}) {\n if (fullPage === \"deprecated-unset\") {\n console.warn(\"You are not passing `fullPage` to Stack's Handler. The default behaviour will soon change from `true` to `false`. Please update your Handler component in handler/[...stack]/page.tsx by adding the `fullPage` prop.\");\n fullPage = true;\n }\n\n if (!stack) {\n return (\n <MessageCard title=\"Invalid Stack Handler Setup\" fullPage={fullPage}>\n <p>Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack].</p>\n </MessageCard>\n );\n }\n\n function redirectIfNotHandler(name: keyof HandlerUrls) {\n const url = app.urls[name];\n const handlerUrl = app.urls.handler;\n\n if (url.startsWith(handlerUrl)) {\n // don't redirect if the url is a handler url\n return;\n }\n\n redirect(url, RedirectType.replace);\n }\n\n async function redirectIfHasUser() {\n const user = await app.getServerUser();\n if (user) {\n redirect(app.urls.afterSignIn);\n }\n }\n\n const path = stack.join('/');\n switch (path) {\n case 'signin': {\n redirectIfNotHandler('signIn');\n await redirectIfHasUser();\n return <SignIn fullPage={fullPage} />;\n }\n case 'signup': {\n redirectIfNotHandler('signUp');\n await redirectIfHasUser();\n return <SignUp fullPage={fullPage} />;\n }\n case 'email-verification': {\n redirectIfNotHandler('emailVerification');\n return <EmailVerification searchParams={searchParams} fullPage={fullPage} />;\n }\n case 'password-reset': {\n redirectIfNotHandler('passwordReset');\n return <PasswordReset searchParams={searchParams} fullPage={fullPage} />;\n }\n case 'forgot-password': {\n redirectIfNotHandler('forgotPassword');\n return <ForgotPassword fullPage={fullPage} />;\n }\n case 'signout': {\n redirectIfNotHandler('signOut');\n return <SignOut fullPage={fullPage} />;\n }\n case 'oauth-callback': {\n redirectIfNotHandler('oauthCallback');\n return <OAuthCallback fullPage={fullPage} />;\n }\n case 'account-settings': {\n redirectIfNotHandler('accountSettings');\n return <AccountSettings fullPage={fullPage} />;\n }\n case 'magic-link-callback': {\n redirectIfNotHandler('magicLinkCallback');\n return <MagicLinkCallback searchParams={searchParams} fullPage={fullPage} />;\n }\n case 'error': {\n return <ErrorPage searchParams={searchParams} fullPage={fullPage} />;\n }\n default: {\n return notFound();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmB;AACnB,qBAAmB;AACnB,wBAAiD;AACjD,gCAA8B;AAC9B,eAA8C;AAC9C,0BAAwB;AAExB,sBAAoB;AACpB,6BAA2B;AAC3B,4BAA0B;AAC1B,8BAA4B;AAC5B,iCAA8B;AAC9B,wBAAsB;AAsBd;AApBR,eAAO,aAAmE;AAAA,EACxE;AAAA,EACA,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,EACrB,eAAe,CAAC;AAAA;AAAA,EAEhB,WAAW;AACb,GAKG;AACD,MAAI,aAAa,oBAAoB;AACnC,YAAQ,KAAK,sNAAsN;AACnO,eAAW;AAAA,EACb;AAEA,MAAI,CAAC,OAAO;AACV,WACE,4CAAC,oBAAAA,SAAA,EAAY,OAAM,+BAA8B,UAC/C,sDAAC,OAAE,iHAAmG,GACxG;AAAA,EAEJ;AAEA,WAAS,qBAAqB,MAAyB;AACrD,UAAM,MAAM,IAAI,KAAK,IAAI;AACzB,UAAM,aAAa,IAAI,KAAK;AAE5B,QAAI,IAAI,WAAW,UAAU,GAAG;AAE9B;AAAA,IACF;AAEA,oCAAS,KAAK,+BAAa,OAAO;AAAA,EACpC;AAEA,iBAAe,oBAAoB;AACjC,UAAM,OAAO,MAAM,IAAI,cAAc;AACrC,QAAI,MAAM;AACR,sCAAS,IAAI,KAAK,WAAW;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,OAAO,MAAM,KAAK,GAAG;AAC3B,UAAQ,MAAM;AAAA,IACZ,KAAK,UAAU;AACb,2BAAqB,QAAQ;AAC7B,YAAM,kBAAkB;AACxB,aAAO,4CAAC,eAAAC,SAAA,EAAO,UAAoB;AAAA,IACrC;AAAA,IACA,KAAK,UAAU;AACb,2BAAqB,QAAQ;AAC7B,YAAM,kBAAkB;AACxB,aAAO,4CAAC,eAAAC,SAAA,EAAO,UAAoB;AAAA,IACrC;AAAA,IACA,KAAK,sBAAsB;AACzB,2BAAqB,mBAAmB;AACxC,aAAO,4CAAC,0BAAAC,SAAA,EAAkB,cAA4B,UAAoB;AAAA,IAC5E;AAAA,IACA,KAAK,kBAAkB;AACrB,2BAAqB,eAAe;AACpC,aAAO,4CAAC,0BAAc,cAA4B,UAAoB;AAAA,IACxE;AAAA,IACA,KAAK,mBAAmB;AACtB,2BAAqB,gBAAgB;AACrC,aAAO,4CAAC,uBAAAC,SAAA,EAAe,UAAoB;AAAA,IAC7C;AAAA,IACA,KAAK,WAAW;AACd,2BAAqB,SAAS;AAC9B,aAAO,4CAAC,gBAAAC,SAAA,EAAQ,UAAoB;AAAA,IACtC;AAAA,IACA,KAAK,kBAAkB;AACrB,2BAAqB,eAAe;AACpC,aAAO,4CAAC,sBAAAC,SAAA,EAAc,UAAoB;AAAA,IAC5C;AAAA,IACA,KAAK,oBAAoB;AACvB,2BAAqB,iBAAiB;AACtC,aAAO,4CAAC,wBAAAC,SAAA,EAAgB,UAAoB;AAAA,IAC9C;AAAA,IACA,KAAK,uBAAuB;AAC1B,2BAAqB,mBAAmB;AACxC,aAAO,4CAAC,2BAAAC,SAAA,EAAkB,cAA4B,UAAoB;AAAA,IAC5E;AAAA,IACA,KAAK,SAAS;AACZ,aAAO,4CAAC,kBAAAC,SAAA,EAAU,cAA4B,UAAoB;AAAA,IACpE;AAAA,IACA,SAAS;AACP,iBAAO,4BAAS;AAAA,IAClB;AAAA,EACF;AACF;","names":["MessageCard","SignIn","SignUp","EmailVerification","ForgotPassword","SignOut","OAuthCallback","AccountSettings","MagicLinkCallback","ErrorPage"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/message-cards/known-error-message-card.tsx
|
|
5
|
+
import { useStackApp } from "../..";
|
|
6
|
+
import MessageCard from "./message-card";
|
|
7
|
+
import { Text } from "../../components-core";
|
|
8
|
+
import { jsxs } from "react/jsx-runtime";
|
|
9
|
+
function KnownErrorMessageCard({
|
|
10
|
+
error,
|
|
11
|
+
fullPage = false
|
|
12
|
+
}) {
|
|
13
|
+
const stackApp = useStackApp();
|
|
14
|
+
return /* @__PURE__ */ jsxs(
|
|
15
|
+
MessageCard,
|
|
16
|
+
{
|
|
17
|
+
title: "An error occurred",
|
|
18
|
+
fullPage,
|
|
19
|
+
primaryButtonText: "Go to Home",
|
|
20
|
+
primaryAction: () => stackApp.redirectToHome(),
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ jsxs(Text, { children: [
|
|
23
|
+
"Error Code: ",
|
|
24
|
+
error.errorCode
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ jsxs(Text, { children: [
|
|
27
|
+
"Error Message: ",
|
|
28
|
+
error.message
|
|
29
|
+
] })
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
KnownErrorMessageCard as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=known-error-message-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/message-cards/known-error-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useStackApp } from \"../..\";\nimport MessageCard from \"./message-card\";\nimport { Text } from \"../../components-core\";\nimport { KnownError } from \"@stackframe/stack-shared\";\n\nexport default function KnownErrorMessageCard({ \n error,\n fullPage=false,\n}: { \n error: KnownError,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n return (\n <MessageCard \n title={\"An error occurred\"}\n fullPage={fullPage} \n primaryButtonText={\"Go to Home\"}\n primaryAction={() => stackApp.redirectToHome()}\n >\n {<Text>Error Code: {error.errorCode}</Text>}\n {<Text>Error Message: {error.message}</Text>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,YAAY;AAmBd;AAhBQ,SAAR,sBAAuC;AAAA,EAC5C;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,mBAAmB;AAAA,MACnB,eAAe,MAAM,SAAS,eAAe;AAAA,MAE5C;AAAA,6BAAC,QAAK;AAAA;AAAA,UAAa,MAAM;AAAA,WAAU;AAAA,QACnC,qBAAC,QAAK;AAAA;AAAA,UAAgB,MAAM;AAAA,WAAQ;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/message-cards/message-card.tsx
|
|
5
|
+
import MaybeFullPage from "../maybe-full-page";
|
|
6
|
+
import { Button, Text } from "../../components-core";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function MessageCard({ fullPage = false, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(MaybeFullPage, { fullPage, children: /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
|
|
10
|
+
/* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", style: { marginBottom: "24px" }, children: props.title }),
|
|
11
|
+
props.children,
|
|
12
|
+
(props.primaryButtonText || props.secondaryButtonText) && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "center", gap: "16px", marginTop: 20 }, children: [
|
|
13
|
+
props.secondaryButtonText && /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: props.secondaryAction, children: props.secondaryButtonText }),
|
|
14
|
+
props.primaryButtonText && /* @__PURE__ */ jsx(Button, { onClick: props.primaryAction, children: props.primaryButtonText })
|
|
15
|
+
] })
|
|
16
|
+
] }) });
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
MessageCard as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=message-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/message-cards/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport MaybeFullPage from \"../maybe-full-page\";\nimport { Button, Text } from \"../../components-core\";\n\nexport default function MessageCard(\n { fullPage=false, ...props }: \n { \n children?: React.ReactNode, \n title: string, \n fullPage?: boolean,\n primaryButtonText?: string,\n primaryAction?: () => Promise<void> | void,\n secondaryButtonText?: string,\n secondaryAction?: () => Promise<void> | void,\n }\n) {\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center' }}>\n <Text size=\"xl\" as='h2' style={{ marginBottom: '24px' }}>{props.title}</Text>\n {props.children}\n {(props.primaryButtonText || props.secondaryButtonText) && (\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: '16px', marginTop: 20 }}>\n {props.secondaryButtonText && (\n <Button variant=\"secondary\" onClick={props.secondaryAction}>\n {props.secondaryButtonText}\n </Button>\n )}\n {props.primaryButtonText && (\n <Button onClick={props.primaryAction}>\n {props.primaryButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAGA,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,YAAY;AAiBrB,cAGE,YAHF;AAfO,SAAR,YACL,EAAE,WAAS,OAAO,GAAG,MAAM,GAU3B;AACA,SACE,oBAAC,iBAAc,UACb,+BAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,wBAAC,QAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,cAAc,OAAO,GAAI,gBAAM,OAAM;AAAA,IACrE,MAAM;AAAA,KACL,MAAM,qBAAqB,MAAM,wBACjC,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,YAAY,UAAU,gBAAgB,UAAU,KAAK,QAAQ,WAAW,GAAG,GAC7H;AAAA,YAAM,uBACL,oBAAC,UAAO,SAAQ,aAAY,SAAS,MAAM,iBACxC,gBAAM,qBACT;AAAA,MAED,MAAM,qBACL,oBAAC,UAAO,SAAS,MAAM,eACpB,gBAAM,mBACT;AAAA,OAEJ;AAAA,KAEJ,GACF;AAEJ;","names":[]}
|
package/dist/esm/components/{redirect-message-card.js → message-cards/predefined-message-card.js}
RENAMED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
|
-
// src/components/
|
|
5
|
-
import {
|
|
6
|
-
import { useStackApp } from "..";
|
|
4
|
+
// src/components/message-cards/predefined-message-card.tsx
|
|
5
|
+
import { useStackApp } from "../..";
|
|
7
6
|
import MessageCard from "./message-card";
|
|
8
|
-
import { Text
|
|
9
|
-
import { jsx
|
|
10
|
-
function
|
|
7
|
+
import { Text } from "../../components-core";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function PredefinedMessageCard({
|
|
11
10
|
type,
|
|
12
11
|
fullPage = false
|
|
13
12
|
}) {
|
|
14
13
|
const stackApp = useStackApp();
|
|
15
|
-
const router = useRouter();
|
|
16
14
|
let title;
|
|
17
|
-
let primaryAction;
|
|
18
15
|
let message = null;
|
|
19
|
-
let primaryButton;
|
|
16
|
+
let primaryButton = null;
|
|
20
17
|
let secondaryButton = null;
|
|
18
|
+
let primaryAction = null;
|
|
19
|
+
let secondaryAction = null;
|
|
21
20
|
switch (type) {
|
|
22
21
|
case "signedIn": {
|
|
23
22
|
title = "You are already signed in";
|
|
24
23
|
primaryAction = () => stackApp.redirectToAfterSignOut();
|
|
24
|
+
secondaryAction = () => stackApp.redirectToSignOut();
|
|
25
25
|
primaryButton = "Go to Home";
|
|
26
26
|
secondaryButton = "Sign Out";
|
|
27
27
|
break;
|
|
@@ -53,25 +53,28 @@ function RedirectMessageCard({
|
|
|
53
53
|
primaryButton = "Go to Home";
|
|
54
54
|
break;
|
|
55
55
|
}
|
|
56
|
+
case "unknownError": {
|
|
57
|
+
title = "An unknown error occurred";
|
|
58
|
+
message = "Please try again and if the problem persists, contact support.";
|
|
59
|
+
primaryAction = () => stackApp.redirectToHome();
|
|
60
|
+
primaryButton = "Go to Home";
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
56
63
|
}
|
|
57
|
-
return /* @__PURE__ */
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
),
|
|
70
|
-
/* @__PURE__ */ jsx(Button, { onClick: primaryAction, children: primaryButton })
|
|
71
|
-
] })
|
|
72
|
-
] });
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
MessageCard,
|
|
66
|
+
{
|
|
67
|
+
title,
|
|
68
|
+
fullPage,
|
|
69
|
+
primaryButtonText: primaryButton,
|
|
70
|
+
primaryAction,
|
|
71
|
+
secondaryButtonText: secondaryButton || void 0,
|
|
72
|
+
secondaryAction: secondaryAction || void 0,
|
|
73
|
+
children: message && /* @__PURE__ */ jsx(Text, { children: message })
|
|
74
|
+
}
|
|
75
|
+
);
|
|
73
76
|
}
|
|
74
77
|
export {
|
|
75
|
-
|
|
78
|
+
PredefinedMessageCard as default
|
|
76
79
|
};
|
|
77
|
-
//# sourceMappingURL=
|
|
80
|
+
//# sourceMappingURL=predefined-message-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/message-cards/predefined-message-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useStackApp } from \"../..\";\nimport MessageCard from \"./message-card\";\nimport { Text } from \"../../components-core\";\n\nexport default function PredefinedMessageCard({ \n type,\n fullPage=false,\n}: { \n type: 'signedIn' | 'signedOut' | 'emailSent' | 'passwordReset' | 'emailVerified' | 'unknownError',\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n let title: string;\n let message: string | null = null;\n let primaryButton: string | null = null;\n let secondaryButton: string | null = null;\n let primaryAction: (() => Promise<void> | void) | null = null;\n let secondaryAction: (() => Promise<void> | void) | null = null;\n\n switch (type) {\n case 'signedIn': {\n title = \"You are already signed in\";\n primaryAction = () => stackApp.redirectToAfterSignOut();\n secondaryAction = () => stackApp.redirectToSignOut();\n primaryButton = \"Go to Home\";\n secondaryButton = \"Sign Out\";\n break;\n }\n case 'signedOut': {\n title = \"You are not currently signed in.\";\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'emailSent': {\n title = \"Email sent!\";\n message = 'Please check your inbox. Make sure to check your spam folder.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'passwordReset': {\n title = \"Password reset successfully!\";\n message = 'Your password has been reset. You can now sign in with your new password.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Sign In\";\n break;\n }\n case 'emailVerified': {\n title = \"Email verified!\";\n message = 'Your have successfully verified your email.';\n primaryAction = () => stackApp.redirectToSignIn();\n primaryButton = \"Go to Home\";\n break;\n }\n case 'unknownError': {\n title = \"An unknown error occurred\";\n message = 'Please try again and if the problem persists, contact support.';\n primaryAction = () => stackApp.redirectToHome();\n primaryButton = \"Go to Home\";\n break;\n }\n }\n\n return (\n <MessageCard \n title={title} \n fullPage={fullPage} \n primaryButtonText={primaryButton} \n primaryAction={primaryAction} \n secondaryButtonText={secondaryButton || undefined} \n secondaryAction={secondaryAction || undefined}\n >\n {message && <Text>{message}</Text>}\n </MessageCard>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,YAAY;AAwEH;AAtEH,SAAR,sBAAuC;AAAA,EAC5C;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,MAAI;AACJ,MAAI,UAAyB;AAC7B,MAAI,gBAA+B;AACnC,MAAI,kBAAiC;AACrC,MAAI,gBAAqD;AACzD,MAAI,kBAAuD;AAE3D,UAAQ,MAAM;AAAA,IACZ,KAAK,YAAY;AACf,cAAQ;AACR,sBAAgB,MAAM,SAAS,uBAAuB;AACtD,wBAAkB,MAAM,SAAS,kBAAkB;AACnD,sBAAgB;AAChB,wBAAkB;AAClB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,iBAAiB;AAChD,sBAAgB;AAChB;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,cAAQ;AACR,gBAAU;AACV,sBAAgB,MAAM,SAAS,eAAe;AAC9C,sBAAgB;AAChB;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA,qBAAqB,mBAAmB;AAAA,MACxC,iBAAiB,mBAAmB;AAAA,MAEnC,qBAAW,oBAAC,QAAM,mBAAQ;AAAA;AAAA,EAC7B;AAEJ;","names":[]}
|
|
@@ -10,8 +10,8 @@ import { getPasswordError } from "@stackframe/stack-shared/dist/helpers/password
|
|
|
10
10
|
import { useStackApp } from "..";
|
|
11
11
|
import PasswordField from "./password-field";
|
|
12
12
|
import FormWarningText from "./form-warning";
|
|
13
|
-
import
|
|
14
|
-
import MessageCard from "./message-card";
|
|
13
|
+
import PredefinedMessageCard from "./message-cards/predefined-message-card";
|
|
14
|
+
import MessageCard from "./message-cards/message-card";
|
|
15
15
|
import MaybeFullPage from "./maybe-full-page";
|
|
16
16
|
import { Button, Label, Text } from "../components-core";
|
|
17
17
|
import { runAsynchronouslyWithAlert } from "@stackframe/stack-shared/dist/utils/promises";
|
|
@@ -47,7 +47,7 @@ function PasswordResetInner({ code, fullPage = false }) {
|
|
|
47
47
|
setFinished(true);
|
|
48
48
|
};
|
|
49
49
|
if (finished) {
|
|
50
|
-
return /* @__PURE__ */ jsx(
|
|
50
|
+
return /* @__PURE__ */ jsx(PredefinedMessageCard, { type: "passwordReset", fullPage });
|
|
51
51
|
}
|
|
52
52
|
if (resetError) {
|
|
53
53
|
return /* @__PURE__ */ jsx(MessageCard, { title: "Failed to reset password", fullPage, children: /* @__PURE__ */ jsx(Text, { children: "Failed to reset password. Please request a new password reset link" }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/password-reset-inner.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\nimport { getPasswordError } from \"@stackframe/stack-shared/dist/helpers/password\";\nimport { useStackApp } from \"..\";\nimport PasswordField from \"./password-field\";\nimport FormWarningText from \"./form-warning\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/components/password-reset-inner.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as yup from \"yup\";\nimport { getPasswordError } from \"@stackframe/stack-shared/dist/helpers/password\";\nimport { useStackApp } from \"..\";\nimport PasswordField from \"./password-field\";\nimport FormWarningText from \"./form-warning\";\nimport PredefinedMessageCard from \"./message-cards/predefined-message-card\";\nimport MessageCard from \"./message-cards/message-card\";\nimport MaybeFullPage from \"./maybe-full-page\";\nimport { Button, Label, Text } from \"../components-core\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nconst schema = yup.object().shape({\n password: yup.string().required('Please enter your password').test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yup.string().nullable().oneOf([yup.ref('password'), null], 'Passwords do not match').required('Please repeat your password')\n});\n\nexport default function PasswordResetInner(\n { code, fullPage = false }:\n { code: string, fullPage?: boolean }\n) {\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const stackApp = useStackApp();\n const [finished, setFinished] = useState(false);\n const [resetError, setResetError] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n const { password } = data;\n const errorCode = await stackApp.resetPassword({ password, code });\n if (errorCode) {\n setResetError(true);\n return;\n }\n\n setFinished(true);\n };\n\n if (finished) {\n return <PredefinedMessageCard type='passwordReset' fullPage={fullPage} />;\n }\n\n if (resetError) {\n return (\n <MessageCard title=\"Failed to reset password\" fullPage={fullPage}>\n <Text>Failed to reset password. Please request a new password reset link</Text>\n </MessageCard>\n );\n }\n\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>Reset Your Password</Text>\n </div>\n\n <form \n style={{ display: 'flex', flexDirection: 'column', alignItems: 'stretch' }} \n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"password\">New Password</Label>\n <PasswordField\n id=\"password\"\n {...register('password')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.password?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" style={{ marginTop: \"1rem\" }}>Repeat New Password</Label>\n <PasswordField\n id=\"repeat-password\"\n {...register('passwordRepeat')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.passwordRepeat?.message?.toString()} />\n\n <Button style={{ marginTop: '1.5rem' }} type=\"submit\">\n Reset Password\n </Button>\n </form>\n </MaybeFullPage>\n ); \n}\n"],"mappings":";;;AAEA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,YAAY,SAAS;AACrB,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,2BAA2B;AAClC,OAAO,iBAAiB;AACxB,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,OAAO,YAAY;AACpC,SAAS,kCAAkC;AAwChC,cAiBL,YAjBK;AAtCX,IAAM,SAAa,WAAO,EAAE,MAAM;AAAA,EAChC,UAAc,WAAO,EAAE,SAAS,4BAA4B,EAAE,KAAK;AAAA,IACjE,MAAM;AAAA,IACN,MAAM,CAAC,OAAO,QAAQ;AACpB,YAAM,QAAQ,iBAAiB,KAAK;AACpC,UAAI,OAAO;AACT,eAAO,IAAI,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,MACnD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,gBAAoB,WAAO,EAAE,SAAS,EAAE,MAAM,CAAK,QAAI,UAAU,GAAG,IAAI,GAAG,wBAAwB,EAAE,SAAS,6BAA6B;AAC7I,CAAC;AAEc,SAAR,mBACL,EAAE,MAAM,WAAW,MAAM,GAEzB;AACA,QAAM,EAAE,UAAU,cAAc,WAAW,EAAE,OAAO,GAAG,YAAY,IAAI,QAAQ;AAAA,IAC7E,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,WAAW,OAAO,SAAuC;AAC7D,UAAM,EAAE,SAAS,IAAI;AACrB,UAAM,YAAY,MAAM,SAAS,cAAc,EAAE,UAAU,KAAK,CAAC;AACjE,QAAI,WAAW;AACb,oBAAc,IAAI;AAClB;AAAA,IACF;AAEA,gBAAY,IAAI;AAAA,EAClB;AAEA,MAAI,UAAU;AACZ,WAAO,oBAAC,yBAAsB,MAAK,iBAAgB,UAAoB;AAAA,EACzE;AAEA,MAAI,YAAY;AACd,WACE,oBAAC,eAAY,OAAM,4BAA2B,UAC5C,8BAAC,QAAK,gFAAkE,GAC1E;AAAA,EAEJ;AAEA,SACE,qBAAC,iBAAc,UACb;AAAA,wBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD,8BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,iCAAmB,GAC7C;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU;AAAA,QACzE,UAAU,OAAK,2BAA2B,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,QACnE,YAAU;AAAA,QAEV;AAAA,8BAAC,SAAM,SAAQ,YAAW,0BAAY;AAAA,UACtC;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACF,GAAG,SAAS,UAAU;AAAA,cACvB,UAAU,MAAM;AACd,4BAAY,UAAU;AACtB,4BAAY,gBAAgB;AAAA,cAC9B;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,mBAAgB,MAAM,OAAO,UAAU,SAAS,SAAS,GAAG;AAAA,UAE7D,oBAAC,SAAM,SAAQ,mBAAkB,OAAO,EAAE,WAAW,OAAO,GAAG,iCAAmB;AAAA,UAClF;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACF,GAAG,SAAS,gBAAgB;AAAA,cAC7B,UAAU,MAAM;AACd,4BAAY,UAAU;AACtB,4BAAY,gBAAgB;AAAA,cAC9B;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,mBAAgB,MAAM,OAAO,gBAAgB,SAAS,SAAS,GAAG;AAAA,UAEnE,oBAAC,UAAO,OAAO,EAAE,WAAW,SAAS,GAAG,MAAK,UAAS,4BAEtD;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
// src/components-page/account-settings.tsx
|
|
5
5
|
import { PasswordField, useUser } from "..";
|
|
6
|
-
import
|
|
6
|
+
import PredefinedMessageCard from "../components/message-cards/predefined-message-card";
|
|
7
7
|
import { Text, Label, Input, Button, Card, CardHeader, CardContent, CardFooter, Container } from "../components-core";
|
|
8
8
|
import UserAvatar from "../components/user-avatar";
|
|
9
9
|
import { useState } from "react";
|
|
@@ -174,7 +174,7 @@ function SignOutSection() {
|
|
|
174
174
|
function AccountSettings({ fullPage = false }) {
|
|
175
175
|
const user = useUser();
|
|
176
176
|
if (!user) {
|
|
177
|
-
return /* @__PURE__ */ jsx(
|
|
177
|
+
return /* @__PURE__ */ jsx(PredefinedMessageCard, { type: "signedOut", fullPage });
|
|
178
178
|
}
|
|
179
179
|
const inner = /* @__PURE__ */ jsxs("div", { style: { padding: fullPage ? "1rem" : 0, display: "flex", flexDirection: "column", gap: "1rem" }, children: [
|
|
180
180
|
/* @__PURE__ */ jsxs("div", { children: [
|