@stackframe/stack 2.4.15 → 2.4.16
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 +9 -0
- package/dist/components/maybe-full-page.d.mts +9 -0
- package/dist/components/maybe-full-page.d.ts +9 -0
- package/dist/components/maybe-full-page.js +70 -0
- package/dist/components/maybe-full-page.js.map +1 -0
- package/dist/components/message-card.js +2 -2
- package/dist/components/message-card.js.map +1 -1
- package/dist/components/password-reset-inner.js +2 -2
- package/dist/components/password-reset-inner.js.map +1 -1
- package/dist/components-page/auth-page.js +4 -3
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/forgot-password.js +2 -2
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/oauth-callback.d.mts +3 -1
- package/dist/components-page/oauth-callback.d.ts +3 -1
- package/dist/components-page/oauth-callback.js +2 -2
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/components-page/sign-in.js +0 -2
- package/dist/components-page/sign-in.js.map +1 -1
- package/dist/components-page/sign-out.d.mts +4 -2
- package/dist/components-page/sign-out.d.ts +4 -2
- package/dist/components-page/sign-out.js +3 -3
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/stack-handler.d.mts +2 -1
- package/dist/components-page/stack-handler.d.ts +2 -1
- package/dist/components-page/stack-handler.js +17 -11
- package/dist/components-page/stack-handler.js.map +1 -1
- package/dist/esm/components/maybe-full-page.js +50 -0
- package/dist/esm/components/maybe-full-page.js.map +1 -0
- package/dist/esm/components/message-card.js +2 -2
- package/dist/esm/components/message-card.js.map +1 -1
- package/dist/esm/components/password-reset-inner.js +2 -2
- package/dist/esm/components/password-reset-inner.js.map +1 -1
- package/dist/esm/components-page/auth-page.js +4 -3
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.js +2 -2
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/oauth-callback.js +2 -2
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components-page/sign-in.js +0 -3
- package/dist/esm/components-page/sign-in.js.map +1 -1
- package/dist/esm/components-page/sign-out.js +3 -3
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/stack-handler.js +17 -11
- package/dist/esm/components-page/stack-handler.js.map +1 -1
- package/dist/esm/lib/stack-app.js +1 -1
- package/dist/lib/stack-app.js +1 -1
- package/package.json +4 -3
- package/dist/components/card-frame.d.mts +0 -9
- package/dist/components/card-frame.d.ts +0 -9
- package/dist/components/card-frame.js +0 -60
- package/dist/components/card-frame.js.map +0 -1
- package/dist/esm/components/card-frame.js +0 -40
- package/dist/esm/components/card-frame.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
|
|
4
|
+
declare function MaybeFullPage({ children, fullPage }: {
|
|
5
|
+
children: React__default.ReactNode;
|
|
6
|
+
fullPage?: boolean;
|
|
7
|
+
}): react_jsx_runtime.JSX.Element;
|
|
8
|
+
|
|
9
|
+
export { MaybeFullPage as default };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
|
|
4
|
+
declare function MaybeFullPage({ children, fullPage }: {
|
|
5
|
+
children: React__default.ReactNode;
|
|
6
|
+
fullPage?: boolean;
|
|
7
|
+
}): react_jsx_runtime.JSX.Element;
|
|
8
|
+
|
|
9
|
+
export { MaybeFullPage as default };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
"use client";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
|
|
22
|
+
// src/components/maybe-full-page.tsx
|
|
23
|
+
var maybe_full_page_exports = {};
|
|
24
|
+
__export(maybe_full_page_exports, {
|
|
25
|
+
default: () => MaybeFullPage
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(maybe_full_page_exports);
|
|
28
|
+
var import_components_core = require("../components-core");
|
|
29
|
+
var import_react = require("react");
|
|
30
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
+
function MaybeFullPage({
|
|
32
|
+
children,
|
|
33
|
+
fullPage = true
|
|
34
|
+
}) {
|
|
35
|
+
const uniqueId = (0, import_react.useId)();
|
|
36
|
+
const id = `stack-card-frame-${uniqueId}`;
|
|
37
|
+
const scriptString = `(([id]) => {
|
|
38
|
+
const el = document.getElementById(id);
|
|
39
|
+
const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;
|
|
40
|
+
el.style.minHeight = \`calc(100vh - \${offset}px)\`;
|
|
41
|
+
})(${JSON.stringify([id])})`;
|
|
42
|
+
(0, import_react.useEffect)(() => {
|
|
43
|
+
eval(scriptString);
|
|
44
|
+
}, []);
|
|
45
|
+
if (fullPage) {
|
|
46
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
id,
|
|
51
|
+
suppressHydrationWarning: true,
|
|
52
|
+
style: {
|
|
53
|
+
minHeight: "100vh",
|
|
54
|
+
alignSelf: "stretch",
|
|
55
|
+
display: "flex",
|
|
56
|
+
alignItems: "center",
|
|
57
|
+
justifyContent: "center"
|
|
58
|
+
},
|
|
59
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Container, { size: 380, style: { padding: "1rem 1rem" }, children })
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("script", { dangerouslySetInnerHTML: {
|
|
63
|
+
__html: scriptString
|
|
64
|
+
} })
|
|
65
|
+
] });
|
|
66
|
+
} else {
|
|
67
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=maybe-full-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/maybe-full-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { Container } from \"../components-core\";\nimport React, { useEffect, useId } from \"react\";\n\nexport default function MaybeFullPage({ \n children, \n fullPage=true\n}: { \n children: React.ReactNode, \n fullPage?: boolean, \n}) {\n const uniqueId = useId();\n const id = `stack-card-frame-${uniqueId}`;\n\n const scriptString = `(([id]) => {\n const el = document.getElementById(id);\n const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;\n el.style.minHeight = \\`calc(100vh - \\${offset}px)\\`;\n })(${JSON.stringify([id])})`;\n\n useEffect(() => {\n // TODO fix workaround: React has a bug where it doesn't run the script on the first CSR render if SSR has been skipped due to suspense\n // As a workaround, we run the script in the <script> tag again after the first render\n eval(scriptString);\n }, []);\n\n if (fullPage) {\n return (\n <>\n <div \n id={id}\n suppressHydrationWarning\n style={{ \n minHeight: '100vh',\n alignSelf: 'stretch',\n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n }}\n >\n <Container size={380} style={{ padding: '1rem 1rem' }}>\n {children}\n </Container>\n </div>\n <script dangerouslySetInnerHTML={{\n __html: scriptString,\n }} />\n </>\n );\n } else {\n return <>\n {children}\n </>;\n }\n \n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,6BAA0B;AAC1B,mBAAwC;AA0BlC;AAxBS,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,eAAW,oBAAM;AACvB,QAAM,KAAK,oBAAoB,QAAQ;AAEvC,QAAM,eAAe;AAAA;AAAA;AAAA;AAAA,OAIhB,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAEzB,8BAAU,MAAM;AAGd,SAAK,YAAY;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,MAAI,UAAU;AACZ,WACE,4EACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,0BAAwB;AAAA,UACxB,OAAO;AAAA,YACL,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,UAClB;AAAA,UAEA,sDAAC,oCAAU,MAAM,KAAK,OAAO,EAAE,SAAS,YAAY,GACjD,UACH;AAAA;AAAA,MACF;AAAA,MACA,4CAAC,YAAO,yBAAyB;AAAA,QAC/B,QAAQ;AAAA,MACV,GAAG;AAAA,OACL;AAAA,EAEJ,OAAO;AACL,WAAO,2EACJ,UACH;AAAA,EACF;AAEF;","names":[]}
|
|
@@ -35,11 +35,11 @@ __export(message_card_exports, {
|
|
|
35
35
|
default: () => MessageCard
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(message_card_exports);
|
|
38
|
-
var
|
|
38
|
+
var import_maybe_full_page = __toESM(require("./maybe-full-page"));
|
|
39
39
|
var import_components_core = require("../components-core");
|
|
40
40
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
41
|
function MessageCard({ children, title, fullPage = false }) {
|
|
42
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
42
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_maybe_full_page.default, { fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { textAlign: "center" }, children: [
|
|
43
43
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", style: { marginBottom: "24px" }, children: title }),
|
|
44
44
|
children
|
|
45
45
|
] }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/components/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport MaybeFullPage from \"./maybe-full-page\";\nimport { Text } from \"../components-core\";\n\nexport default function MessageCard(\n { children, title, fullPage=false }: \n { children?: React.ReactNode, title: string, fullPage?: boolean}\n) {\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center' }}>\n <Text size=\"xl\" as='h2' style={{ marginBottom: '24px' }}>{title}</Text>\n {children}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,6BAA0B;AAC1B,6BAAqB;AAQf;AANS,SAAR,YACL,EAAE,UAAU,OAAO,WAAS,MAAM,GAElC;AACA,SACE,4CAAC,uBAAAA,SAAA,EAAc,UACb,uDAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,gDAAC,+BAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,cAAc,OAAO,GAAI,iBAAM;AAAA,IAC/D;AAAA,KACH,GACF;AAEJ;","names":["MaybeFullPage"]}
|
|
@@ -45,7 +45,7 @@ var import_password_field = __toESM(require("./password-field"));
|
|
|
45
45
|
var import_form_warning = __toESM(require("./form-warning"));
|
|
46
46
|
var import_redirect_message_card = __toESM(require("./redirect-message-card"));
|
|
47
47
|
var import_message_card = __toESM(require("./message-card"));
|
|
48
|
-
var
|
|
48
|
+
var import_maybe_full_page = __toESM(require("./maybe-full-page"));
|
|
49
49
|
var import_components_core = require("../components-core");
|
|
50
50
|
var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
51
51
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -85,7 +85,7 @@ function PasswordResetInner({ code, fullPage = false }) {
|
|
|
85
85
|
if (resetError) {
|
|
86
86
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Failed to reset password", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { children: "Failed to reset password. Please request a new password reset link" }) });
|
|
87
87
|
}
|
|
88
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
88
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_maybe_full_page.default, { fullPage, children: [
|
|
89
89
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", children: "Reset Your Password" }) }),
|
|
90
90
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
91
91
|
"form",
|
|
@@ -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 RedirectMessageCard from \"./redirect-message-card\";\nimport MessageCard from \"./message-card\";\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 RedirectMessageCard from \"./redirect-message-card\";\nimport MessageCard from \"./message-card\";\nimport MaybeFullPage from \"./maybe-full-page\";\nimport { Button, Label, Text } from \"../components-core\";\nimport { runAsynchronously } 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 <RedirectMessageCard 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 => runAsynchronously(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":"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","names":["RedirectMessageCard","MessageCard","MaybeFullPage","PasswordField","FormWarningText"]}
|
|
@@ -38,7 +38,7 @@ module.exports = __toCommonJS(auth_page_exports);
|
|
|
38
38
|
var import_credential_sign_in = __toESM(require("../components/credential-sign-in"));
|
|
39
39
|
var import_separator_with_text = __toESM(require("../components/separator-with-text"));
|
|
40
40
|
var import_oauth_group = __toESM(require("../components/oauth-group"));
|
|
41
|
-
var
|
|
41
|
+
var import_maybe_full_page = __toESM(require("../components/maybe-full-page"));
|
|
42
42
|
var import__ = require("..");
|
|
43
43
|
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
44
44
|
var import_components_core = require("../components-core");
|
|
@@ -51,12 +51,13 @@ function AuthPage({
|
|
|
51
51
|
}) {
|
|
52
52
|
const stackApp = (0, import__.useStackApp)();
|
|
53
53
|
const user = (0, import__.useUser)();
|
|
54
|
-
const
|
|
54
|
+
const projectFromHook = stackApp.useProject();
|
|
55
|
+
const project = mockProject || projectFromHook;
|
|
55
56
|
if (user && !mockProject) {
|
|
56
57
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "signedIn", fullPage });
|
|
57
58
|
}
|
|
58
59
|
const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter((p) => p.enabled).length > 0;
|
|
59
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
60
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_maybe_full_page.default, { fullPage, children: [
|
|
60
61
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
|
|
61
62
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", style: { fontWeight: 500 }, children: type === "sign-in" ? "Sign in to your account" : "Create a new account" }),
|
|
62
63
|
type === "sign-in" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport MaybeFullPage from '../components/maybe-full-page';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\n\nexport default function AuthPage({ \n fullPage=false,\n type,\n mockProject,\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const projectFromHook = stackApp.useProject();\n const project = mockProject || projectFromHook;\n\n if (user && !mockProject) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2' style={{ fontWeight: 500 }}>\n {type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}\n </Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type={type} mockProject={mockProject} />\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,gCAA6B;AAC7B,iCAA8B;AAC9B,yBAAuB;AACvB,6BAA0B;AAC1B,eAAuD;AACvD,mCAAgC;AAChC,6BAAqE;AACrE,gCAA4B;AAkBjB;AAfI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AAAA,EACA;AACF,GAIG;AACD,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AACrB,QAAM,kBAAkB,SAAS,WAAW;AAC5C,QAAM,UAAU,eAAe;AAE/B,MAAI,QAAQ,CAAC,aAAa;AACxB,WAAO,4CAAC,6BAAAA,SAAA,EAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,6CAAC,uBAAAC,SAAA,EAAc,UACb;AAAA,iDAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,kDAAC,+BAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,YAAY,IAAI,GAC9C,mBAAS,YAAY,4BAA4B,wBACpD;AAAA,MACC,SAAS,YACR,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,4CAAC,mBAAAC,SAAA,EAAW,MAAY,aAA0B;AAAA,IACjD,mBAAmB,4CAAC,2BAAAC,SAAA,EAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,6CAAC,+BAAK,cAAa,cACjB;AAAA,mDAAC,mCACC;AAAA,oDAAC,sCAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,4CAAC,sCAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,4CAAC,sCAAY,OAAM,cACjB,sDAAC,0BAAAC,SAAA,EAAe,GAClB;AAAA,MACA,4CAAC,sCAAY,OAAM,YAChB,mBAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAC,SAAA,EAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAA,SAAA,EAAgB,IAC1D,QAAQ,mBACV,4CAAC,0BAAAD,SAAA,EAAe,IACd;AAAA,KACN;AAEJ;","names":["RedirectMessageCard","MaybeFullPage","OAuthGroup","SeparatorWithText","MagicLinkSignIn","CredentialSignIn"]}
|
|
@@ -36,7 +36,7 @@ __export(forgot_password_exports, {
|
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(forgot_password_exports);
|
|
38
38
|
var import_forgot_password = __toESM(require("../components/forgot-password"));
|
|
39
|
-
var
|
|
39
|
+
var import_maybe_full_page = __toESM(require("../components/maybe-full-page"));
|
|
40
40
|
var import__ = require("..");
|
|
41
41
|
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
42
42
|
var import_react = require("react");
|
|
@@ -52,7 +52,7 @@ function ForgotPassword({ fullPage = false }) {
|
|
|
52
52
|
if (sent) {
|
|
53
53
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "emailSent", fullPage });
|
|
54
54
|
}
|
|
55
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
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: [
|
|
57
57
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", children: "Reset Your Password" }),
|
|
58
58
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\nimport ForgotPasswordElement from \"../components/forgot-password\";\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 RedirectMessageCard from \"../components/redirect-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 <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n if (sent) {\n return <RedirectMessageCard 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,mCAAgC;AAChC,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,6BAAAA,SAAA,EAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,MAAI,MAAM;AACR,WAAO,4CAAC,6BAAAA,SAAA,EAAoB,MAAK,aAAY,UAAoB;AAAA,EACnE;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":["RedirectMessageCard","MaybeFullPage","ForgotPasswordElement"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
declare function OAuthCallback(
|
|
3
|
+
declare function OAuthCallback(props: {
|
|
4
|
+
fullPage?: boolean;
|
|
5
|
+
}): react_jsx_runtime.JSX.Element;
|
|
4
6
|
|
|
5
7
|
export { OAuthCallback as default };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
declare function OAuthCallback(
|
|
3
|
+
declare function OAuthCallback(props: {
|
|
4
|
+
fullPage?: boolean;
|
|
5
|
+
}): react_jsx_runtime.JSX.Element;
|
|
4
6
|
|
|
5
7
|
export { OAuthCallback as default };
|
|
@@ -40,7 +40,7 @@ var import__ = require("..");
|
|
|
40
40
|
var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
41
41
|
var import_message_card = __toESM(require("../components/message-card"));
|
|
42
42
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
43
|
-
function OAuthCallback() {
|
|
43
|
+
function OAuthCallback(props) {
|
|
44
44
|
const app = (0, import__.useStackApp)();
|
|
45
45
|
const called = (0, import_react.useRef)(false);
|
|
46
46
|
const [error, setError] = (0, import_react.useState)(null);
|
|
@@ -62,7 +62,7 @@ function OAuthCallback() {
|
|
|
62
62
|
(0, import_react.useEffect)(() => {
|
|
63
63
|
setTimeout(() => setShowRedirectLink(true), 3e3);
|
|
64
64
|
}, []);
|
|
65
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_message_card.default, { title: "Redirecting...", fullPage:
|
|
65
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_message_card.default, { title: "Redirecting...", fullPage: props.fullPage, children: [
|
|
66
66
|
showRedirectLink ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
|
|
67
67
|
"If you are not redirected automatically, ",
|
|
68
68
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: app.urls.home, children: "click here" }),
|
|
@@ -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
|
|
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, <a href={app.urls.home}>click here</a>.</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;AA2BA;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,eAAe;AAClB,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,OAAE,MAAM,IAAI,KAAK,MAAM,wBAAU;AAAA,MAAI;AAAA,OAAC,IAAO;AAAA,IAC7G,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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/sign-in.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/sign-in.tsx"],"sourcesContent":["import AuthPage from './auth-page';\n\nexport default function SignIn({ fullPage=false }: { fullPage?: boolean }) {\n return <AuthPage fullPage={fullPage} type='sign-in' />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AAGZ;AADM,SAAR,OAAwB,EAAE,WAAS,MAAM,GAA2B;AACzE,SAAO,4CAAC,iBAAAA,SAAA,EAAS,UAAoB,MAAK,WAAU;AACtD;","names":["AuthPage"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
declare function
|
|
3
|
+
declare function SignOut(props: {
|
|
4
|
+
fullPage?: boolean;
|
|
5
|
+
}): react_jsx_runtime.JSX.Element;
|
|
4
6
|
|
|
5
|
-
export {
|
|
7
|
+
export { SignOut as default };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
declare function
|
|
3
|
+
declare function SignOut(props: {
|
|
4
|
+
fullPage?: boolean;
|
|
5
|
+
}): react_jsx_runtime.JSX.Element;
|
|
4
6
|
|
|
5
|
-
export {
|
|
7
|
+
export { SignOut as default };
|
|
@@ -32,18 +32,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
// src/components-page/sign-out.tsx
|
|
33
33
|
var sign_out_exports = {};
|
|
34
34
|
__export(sign_out_exports, {
|
|
35
|
-
default: () =>
|
|
35
|
+
default: () => SignOut
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(sign_out_exports);
|
|
38
38
|
var import_react = require("react");
|
|
39
39
|
var import__ = require("..");
|
|
40
40
|
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
41
41
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
42
|
-
function
|
|
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)(import_redirect_message_card.default, { type: "signedOut", fullPage:
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_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/redirect-message-card\";\n\nexport default function
|
|
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/redirect-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,mCAA8B;AASrB;AAPM,SAAR,QAAyB,OAA+B;AAC7D,QAAM,WAAO,kBAAQ;AAErB,MAAI,MAAM;AACR,0BAAI,KAAK,QAAQ,CAAC;AAAA,EACpB;AAEA,SAAO,4CAAC,6BAAAA,SAAA,EAAkB,MAAK,aAAY,UAAU,MAAM,UAAU;AACvE;","names":["GoHomeMessageCard"]}
|
|
@@ -7,12 +7,13 @@ import '@stackframe/stack-shared/dist/interface/adminInterface';
|
|
|
7
7
|
import '@stackframe/stack-shared/dist/interface/serverInterface';
|
|
8
8
|
import '@stackframe/stack-shared/dist/interface/crud/email-templates';
|
|
9
9
|
|
|
10
|
-
declare function StackHandler<HasTokenStore extends boolean>({ app, params: { stack }, searchParams, }: {
|
|
10
|
+
declare function StackHandler<HasTokenStore extends boolean>({ app, params: { stack }, searchParams, fullPage, }: {
|
|
11
11
|
app: StackServerApp<HasTokenStore>;
|
|
12
12
|
params?: {
|
|
13
13
|
stack?: string[];
|
|
14
14
|
};
|
|
15
15
|
searchParams?: Record<string, string>;
|
|
16
|
+
fullPage?: boolean | "deprecated-unset";
|
|
16
17
|
}): Promise<react_jsx_runtime.JSX.Element>;
|
|
17
18
|
|
|
18
19
|
export { StackHandler as default };
|
|
@@ -7,12 +7,13 @@ import '@stackframe/stack-shared/dist/interface/adminInterface';
|
|
|
7
7
|
import '@stackframe/stack-shared/dist/interface/serverInterface';
|
|
8
8
|
import '@stackframe/stack-shared/dist/interface/crud/email-templates';
|
|
9
9
|
|
|
10
|
-
declare function StackHandler<HasTokenStore extends boolean>({ app, params: { stack }, searchParams, }: {
|
|
10
|
+
declare function StackHandler<HasTokenStore extends boolean>({ app, params: { stack }, searchParams, fullPage, }: {
|
|
11
11
|
app: StackServerApp<HasTokenStore>;
|
|
12
12
|
params?: {
|
|
13
13
|
stack?: string[];
|
|
14
14
|
};
|
|
15
15
|
searchParams?: Record<string, string>;
|
|
16
|
+
fullPage?: boolean | "deprecated-unset";
|
|
16
17
|
}): Promise<react_jsx_runtime.JSX.Element>;
|
|
17
18
|
|
|
18
19
|
export { StackHandler as default };
|
|
@@ -48,10 +48,16 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
48
48
|
async function StackHandler({
|
|
49
49
|
app,
|
|
50
50
|
params: { stack } = {},
|
|
51
|
-
searchParams = {}
|
|
51
|
+
searchParams = {},
|
|
52
|
+
// TODO set default to false like on the other components (may break old code)
|
|
53
|
+
fullPage = "deprecated-unset"
|
|
52
54
|
}) {
|
|
55
|
+
if (fullPage === "deprecated-unset") {
|
|
56
|
+
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.");
|
|
57
|
+
fullPage = true;
|
|
58
|
+
}
|
|
53
59
|
if (!stack) {
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Invalid Stack Handler Setup", fullPage
|
|
60
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Invalid Stack Handler Setup", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack]." }) });
|
|
55
61
|
}
|
|
56
62
|
function redirectIfNotHandler(name) {
|
|
57
63
|
const url = app.urls[name];
|
|
@@ -72,40 +78,40 @@ async function StackHandler({
|
|
|
72
78
|
case "signin": {
|
|
73
79
|
redirectIfNotHandler("signIn");
|
|
74
80
|
await redirectIfHasUser();
|
|
75
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_in.default, { fullPage
|
|
81
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_in.default, { fullPage });
|
|
76
82
|
}
|
|
77
83
|
case "signup": {
|
|
78
84
|
redirectIfNotHandler("signUp");
|
|
79
85
|
await redirectIfHasUser();
|
|
80
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_up.default, { fullPage
|
|
86
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_up.default, { fullPage });
|
|
81
87
|
}
|
|
82
88
|
case "email-verification": {
|
|
83
89
|
redirectIfNotHandler("emailVerification");
|
|
84
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_email_verification.default, { searchParams, fullPage
|
|
90
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_email_verification.default, { searchParams, fullPage });
|
|
85
91
|
}
|
|
86
92
|
case "password-reset": {
|
|
87
93
|
redirectIfNotHandler("passwordReset");
|
|
88
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.PasswordReset, { searchParams, fullPage
|
|
94
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.PasswordReset, { searchParams, fullPage });
|
|
89
95
|
}
|
|
90
96
|
case "forgot-password": {
|
|
91
97
|
redirectIfNotHandler("forgotPassword");
|
|
92
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_forgot_password.default, { fullPage
|
|
98
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_forgot_password.default, { fullPage });
|
|
93
99
|
}
|
|
94
100
|
case "signout": {
|
|
95
101
|
redirectIfNotHandler("signOut");
|
|
96
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_out.default, {});
|
|
102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sign_out.default, { fullPage });
|
|
97
103
|
}
|
|
98
104
|
case "oauth-callback": {
|
|
99
105
|
redirectIfNotHandler("oauthCallback");
|
|
100
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_callback.default, {});
|
|
106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_callback.default, { fullPage });
|
|
101
107
|
}
|
|
102
108
|
case "account-settings": {
|
|
103
109
|
redirectIfNotHandler("accountSettings");
|
|
104
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_account_settings.default, { fullPage
|
|
110
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_account_settings.default, { fullPage });
|
|
105
111
|
}
|
|
106
112
|
case "magic-link-callback": {
|
|
107
113
|
redirectIfNotHandler("magicLinkCallback");
|
|
108
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_callback.default, { searchParams, fullPage
|
|
114
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_callback.default, { searchParams, fullPage });
|
|
109
115
|
}
|
|
110
116
|
default: {
|
|
111
117
|
return (0, import_navigation.notFound)();
|
|
@@ -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}: { \n app: StackServerApp<HasTokenStore>,\n params?: { stack?: string[] }, \n searchParams?: Record<string, string>,\n}) {\n if (!stack) {\n return (\n <MessageCard title=\"Invalid Stack Handler Setup\" 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/>;\n }\n case 'signup': {\n redirectIfNotHandler('signUp');\n await redirectIfHasUser();\n return <SignUp fullPage/>;\n }\n case 'email-verification': {\n redirectIfNotHandler('emailVerification');\n return <EmailVerification searchParams={searchParams} fullPage/>;\n }\n case 'password-reset': {\n redirectIfNotHandler('passwordReset');\n return <PasswordReset searchParams={searchParams} fullPage />;\n }\n case 'forgot-password': {\n redirectIfNotHandler('forgotPassword');\n return <ForgotPassword fullPage />;\n }\n case 'signout': {\n redirectIfNotHandler('signOut');\n return <SignOut/>;\n }\n case 'oauth-callback': {\n redirectIfNotHandler('oauthCallback');\n return <OAuthCallback />;\n }\n case 'account-settings': {\n redirectIfNotHandler('accountSettings');\n return <AccountSettings fullPage />;\n }\n case 'magic-link-callback': {\n redirectIfNotHandler('magicLinkCallback');\n return <MagicLinkCallback searchParams={searchParams} 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-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;AAsBtB;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,SAAS;AACP,iBAAO,4BAAS;AAAA,IAClB;AAAA,EACF;AACF;","names":["MessageCard","SignIn","SignUp","EmailVerification","ForgotPassword","SignOut","OAuthCallback","AccountSettings","MagicLinkCallback"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components/maybe-full-page.tsx
|
|
5
|
+
import { Container } from "../components-core";
|
|
6
|
+
import { useEffect, useId } from "react";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function MaybeFullPage({
|
|
9
|
+
children,
|
|
10
|
+
fullPage = true
|
|
11
|
+
}) {
|
|
12
|
+
const uniqueId = useId();
|
|
13
|
+
const id = `stack-card-frame-${uniqueId}`;
|
|
14
|
+
const scriptString = `(([id]) => {
|
|
15
|
+
const el = document.getElementById(id);
|
|
16
|
+
const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;
|
|
17
|
+
el.style.minHeight = \`calc(100vh - \${offset}px)\`;
|
|
18
|
+
})(${JSON.stringify([id])})`;
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
eval(scriptString);
|
|
21
|
+
}, []);
|
|
22
|
+
if (fullPage) {
|
|
23
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
id,
|
|
28
|
+
suppressHydrationWarning: true,
|
|
29
|
+
style: {
|
|
30
|
+
minHeight: "100vh",
|
|
31
|
+
alignSelf: "stretch",
|
|
32
|
+
display: "flex",
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
justifyContent: "center"
|
|
35
|
+
},
|
|
36
|
+
children: /* @__PURE__ */ jsx(Container, { size: 380, style: { padding: "1rem 1rem" }, children })
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
/* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: {
|
|
40
|
+
__html: scriptString
|
|
41
|
+
} })
|
|
42
|
+
] });
|
|
43
|
+
} else {
|
|
44
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
MaybeFullPage as default
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=maybe-full-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/maybe-full-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { Container } from \"../components-core\";\nimport React, { useEffect, useId } from \"react\";\n\nexport default function MaybeFullPage({ \n children, \n fullPage=true\n}: { \n children: React.ReactNode, \n fullPage?: boolean, \n}) {\n const uniqueId = useId();\n const id = `stack-card-frame-${uniqueId}`;\n\n const scriptString = `(([id]) => {\n const el = document.getElementById(id);\n const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;\n el.style.minHeight = \\`calc(100vh - \\${offset}px)\\`;\n })(${JSON.stringify([id])})`;\n\n useEffect(() => {\n // TODO fix workaround: React has a bug where it doesn't run the script on the first CSR render if SSR has been skipped due to suspense\n // As a workaround, we run the script in the <script> tag again after the first render\n eval(scriptString);\n }, []);\n\n if (fullPage) {\n return (\n <>\n <div \n id={id}\n suppressHydrationWarning\n style={{ \n minHeight: '100vh',\n alignSelf: 'stretch',\n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n }}\n >\n <Container size={380} style={{ padding: '1rem 1rem' }}>\n {children}\n </Container>\n </div>\n <script dangerouslySetInnerHTML={{\n __html: scriptString,\n }} />\n </>\n );\n } else {\n return <>\n {children}\n </>;\n }\n \n}\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAgB,WAAW,aAAa;AA0BlC,mBAYI,KAZJ;AAxBS,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,WAAW,MAAM;AACvB,QAAM,KAAK,oBAAoB,QAAQ;AAEvC,QAAM,eAAe;AAAA;AAAA;AAAA;AAAA,OAIhB,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAEzB,YAAU,MAAM;AAGd,SAAK,YAAY;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,MAAI,UAAU;AACZ,WACE,iCACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,0BAAwB;AAAA,UACxB,OAAO;AAAA,YACL,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,UAClB;AAAA,UAEA,8BAAC,aAAU,MAAM,KAAK,OAAO,EAAE,SAAS,YAAY,GACjD,UACH;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,YAAO,yBAAyB;AAAA,QAC/B,QAAQ;AAAA,MACV,GAAG;AAAA,OACL;AAAA,EAEJ,OAAO;AACL,WAAO,gCACJ,UACH;AAAA,EACF;AAEF;","names":[]}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
// src/components/message-card.tsx
|
|
5
|
-
import
|
|
5
|
+
import MaybeFullPage from "./maybe-full-page";
|
|
6
6
|
import { Text } from "../components-core";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
function MessageCard({ children, title, fullPage = false }) {
|
|
9
|
-
return /* @__PURE__ */ jsx(
|
|
9
|
+
return /* @__PURE__ */ jsx(MaybeFullPage, { fullPage, children: /* @__PURE__ */ jsxs("div", { style: { textAlign: "center" }, children: [
|
|
10
10
|
/* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", style: { marginBottom: "24px" }, children: title }),
|
|
11
11
|
children
|
|
12
12
|
] }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/components/message-card.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport MaybeFullPage from \"./maybe-full-page\";\nimport { Text } from \"../components-core\";\n\nexport default function MessageCard(\n { children, title, fullPage=false }: \n { children?: React.ReactNode, title: string, fullPage?: boolean}\n) {\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center' }}>\n <Text size=\"xl\" as='h2' style={{ marginBottom: '24px' }}>{title}</Text>\n {children}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAGA,OAAO,mBAAmB;AAC1B,SAAS,YAAY;AAQf,SACE,KADF;AANS,SAAR,YACL,EAAE,UAAU,OAAO,WAAS,MAAM,GAElC;AACA,SACE,oBAAC,iBAAc,UACb,+BAAC,SAAI,OAAO,EAAE,WAAW,SAAS,GAChC;AAAA,wBAAC,QAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,cAAc,OAAO,GAAI,iBAAM;AAAA,IAC/D;AAAA,KACH,GACF;AAEJ;","names":[]}
|
|
@@ -12,7 +12,7 @@ import PasswordField from "./password-field";
|
|
|
12
12
|
import FormWarningText from "./form-warning";
|
|
13
13
|
import RedirectMessageCard from "./redirect-message-card";
|
|
14
14
|
import MessageCard from "./message-card";
|
|
15
|
-
import
|
|
15
|
+
import MaybeFullPage from "./maybe-full-page";
|
|
16
16
|
import { Button, Label, Text } from "../components-core";
|
|
17
17
|
import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises";
|
|
18
18
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -52,7 +52,7 @@ function PasswordResetInner({ code, fullPage = false }) {
|
|
|
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" }) });
|
|
54
54
|
}
|
|
55
|
-
return /* @__PURE__ */ jsxs(
|
|
55
|
+
return /* @__PURE__ */ jsxs(MaybeFullPage, { fullPage, children: [
|
|
56
56
|
/* @__PURE__ */ jsx("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: /* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", children: "Reset Your Password" }) }),
|
|
57
57
|
/* @__PURE__ */ jsxs(
|
|
58
58
|
"form",
|
|
@@ -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 RedirectMessageCard from \"./redirect-message-card\";\nimport MessageCard from \"./message-card\";\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 RedirectMessageCard from \"./redirect-message-card\";\nimport MessageCard from \"./message-card\";\nimport MaybeFullPage from \"./maybe-full-page\";\nimport { Button, Label, Text } from \"../components-core\";\nimport { runAsynchronously } 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 <RedirectMessageCard 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 => runAsynchronously(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":"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","names":[]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import CredentialSignIn from "../components/credential-sign-in";
|
|
6
6
|
import SeparatorWithText from "../components/separator-with-text";
|
|
7
7
|
import OAuthGroup from "../components/oauth-group";
|
|
8
|
-
import
|
|
8
|
+
import MaybeFullPage from "../components/maybe-full-page";
|
|
9
9
|
import { useUser, useStackApp, CredentialSignUp } from "..";
|
|
10
10
|
import RedirectMessageCard from "../components/redirect-message-card";
|
|
11
11
|
import { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from "../components-core";
|
|
@@ -18,12 +18,13 @@ function AuthPage({
|
|
|
18
18
|
}) {
|
|
19
19
|
const stackApp = useStackApp();
|
|
20
20
|
const user = useUser();
|
|
21
|
-
const
|
|
21
|
+
const projectFromHook = stackApp.useProject();
|
|
22
|
+
const project = mockProject || projectFromHook;
|
|
22
23
|
if (user && !mockProject) {
|
|
23
24
|
return /* @__PURE__ */ jsx(RedirectMessageCard, { type: "signedIn", fullPage });
|
|
24
25
|
}
|
|
25
26
|
const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter((p) => p.enabled).length > 0;
|
|
26
|
-
return /* @__PURE__ */ jsxs(
|
|
27
|
+
return /* @__PURE__ */ jsxs(MaybeFullPage, { fullPage, children: [
|
|
27
28
|
/* @__PURE__ */ jsxs("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
|
|
28
29
|
/* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", style: { fontWeight: 500 }, children: type === "sign-in" ? "Sign in to your account" : "Create a new account" }),
|
|
29
30
|
type === "sign-in" ? /* @__PURE__ */ jsxs(Text, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport MaybeFullPage from '../components/maybe-full-page';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\n\nexport default function AuthPage({ \n fullPage=false,\n type,\n mockProject,\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const projectFromHook = stackApp.useProject();\n const project = mockProject || projectFromHook;\n\n if (user && !mockProject) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <MaybeFullPage fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2' style={{ fontWeight: 500 }}>\n {type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}\n </Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type={type} mockProject={mockProject} />\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,gBAAgB;AACvB,OAAO,mBAAmB;AAC1B,SAAS,SAAS,aAAa,wBAAwB;AACvD,OAAO,yBAAyB;AAChC,SAAS,MAAM,MAAM,aAAa,UAAU,aAAa,YAAY;AACrE,OAAO,qBAAqB;AAkBjB,cAYD,YAZC;AAfI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AAAA,EACA;AACF,GAIG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,kBAAkB,SAAS,WAAW;AAC5C,QAAM,UAAU,eAAe;AAE/B,MAAI,QAAQ,CAAC,aAAa;AACxB,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,qBAAC,iBAAc,UACb;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,YAAY,IAAI,GAC9C,mBAAS,YAAY,4BAA4B,wBACpD;AAAA,MACC,SAAS,YACR,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,oBAAC,cAAW,MAAY,aAA0B;AAAA,IACjD,mBAAmB,oBAAC,qBAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,qBAAC,QAAK,cAAa,cACjB;AAAA,2BAAC,YACC;AAAA,4BAAC,eAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,oBAAC,eAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,oBAAC,eAAY,OAAM,cACjB,8BAAC,mBAAe,GAClB;AAAA,MACA,oBAAC,eAAY,OAAM,YAChB,mBAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,IAC1D,QAAQ,mBACV,oBAAC,mBAAe,IACd;AAAA,KACN;AAEJ;","names":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
// src/components-page/forgot-password.tsx
|
|
5
5
|
import ForgotPasswordElement from "../components/forgot-password";
|
|
6
|
-
import
|
|
6
|
+
import MaybeFullPage from "../components/maybe-full-page";
|
|
7
7
|
import { useUser, useStackApp } from "..";
|
|
8
8
|
import RedirectMessageCard from "../components/redirect-message-card";
|
|
9
9
|
import { useState } from "react";
|
|
@@ -19,7 +19,7 @@ function ForgotPassword({ fullPage = false }) {
|
|
|
19
19
|
if (sent) {
|
|
20
20
|
return /* @__PURE__ */ jsx(RedirectMessageCard, { type: "emailSent", fullPage });
|
|
21
21
|
}
|
|
22
|
-
return /* @__PURE__ */ jsxs(
|
|
22
|
+
return /* @__PURE__ */ jsxs(MaybeFullPage, { fullPage, children: [
|
|
23
23
|
/* @__PURE__ */ jsxs("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
|
|
24
24
|
/* @__PURE__ */ jsx(Text, { size: "xl", as: "h2", children: "Reset Your Password" }),
|
|
25
25
|
/* @__PURE__ */ jsxs(Text, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\nimport ForgotPasswordElement from \"../components/forgot-password\";\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 RedirectMessageCard from \"../components/redirect-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 <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n if (sent) {\n return <RedirectMessageCard 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":";;;AAEA,OAAO,2BAA2B;AAClC,OAAO,mBAAmB;AAC1B,SAAS,SAAS,mBAAmB;AACrC,OAAO,yBAAyB;AAChC,SAAS,gBAAgB;AACzB,SAAS,MAAM,YAAY;AAShB,cAWH,YAXG;AANI,SAAR,eAAgC,EAAE,WAAS,MAAM,GAA2B;AACjF,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,MAAI,MAAM;AACR,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,MAAI,MAAM;AACR,WAAO,oBAAC,uBAAoB,MAAK,aAAY,UAAoB;AAAA,EACnE;AAEA,SACE,qBAAC,iBAAc,UACb;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,iCAAmB;AAAA,MAC3C,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,GAAG,qBAErC;AAAA,SACF;AAAA,OACF;AAAA,IACA,oBAAC,yBAAsB,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAAA,KACtD;AAEJ;","names":[]}
|
|
@@ -7,7 +7,7 @@ import { useStackApp } from "..";
|
|
|
7
7
|
import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises";
|
|
8
8
|
import MessageCard from "../components/message-card";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
-
function OAuthCallback() {
|
|
10
|
+
function OAuthCallback(props) {
|
|
11
11
|
const app = useStackApp();
|
|
12
12
|
const called = useRef(false);
|
|
13
13
|
const [error, setError] = useState(null);
|
|
@@ -29,7 +29,7 @@ function OAuthCallback() {
|
|
|
29
29
|
useEffect(() => {
|
|
30
30
|
setTimeout(() => setShowRedirectLink(true), 3e3);
|
|
31
31
|
}, []);
|
|
32
|
-
return /* @__PURE__ */ jsxs(MessageCard, { title: "Redirecting...", fullPage:
|
|
32
|
+
return /* @__PURE__ */ jsxs(MessageCard, { title: "Redirecting...", fullPage: props.fullPage, children: [
|
|
33
33
|
showRedirectLink ? /* @__PURE__ */ jsxs("p", { children: [
|
|
34
34
|
"If you are not redirected automatically, ",
|
|
35
35
|
/* @__PURE__ */ jsx("a", { href: app.urls.home, children: "click here" }),
|
|
@@ -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
|
|
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, <a href={app.urls.home}>click here</a>.</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":";;;AAEA,SAAS,QAAQ,WAAW,gBAAgB;AAC5C,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,OAAO,iBAAiB;AA2BA,SAA4C,KAA5C;AAzBT,SAAR,cAA+B,OAA+B;AACnE,QAAM,MAAM,YAAY;AACxB,QAAM,SAAS,OAAO,KAAK;AAC3B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAkB,IAAI;AAChD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,KAAK;AAE9D,YAAU,MAAM,kBAAkB,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,eAAe;AAClB,YAAM,IAAI,iBAAiB;AAAA,IAC7B;AAAA,EACF,CAAC,GAAG,CAAC,CAAC;AAEN,YAAU,MAAM;AACd,eAAW,MAAM,oBAAoB,IAAI,GAAG,GAAI;AAAA,EAClD,GAAG,CAAC,CAAC;AAEL,SAAO,qBAAC,eAAY,OAAM,kBAAiB,UAAU,MAAM,UACxD;AAAA,uBAAmB,qBAAC,OAAE;AAAA;AAAA,MAAyC,oBAAC,OAAE,MAAM,IAAI,KAAK,MAAM,wBAAU;AAAA,MAAI;AAAA,OAAC,IAAO;AAAA,IAC7G,QAAQ,qBAAC,SACR;AAAA,0BAAC,OAAE,uEAAyD;AAAA,MAC5D,oBAAC,SAAK,eAAK,UAAU,OAAO,MAAM,CAAC,GAAE;AAAA,MACrC,oBAAC,OAAE,sEAAwD;AAAA,OAC7D,IAAS;AAAA,KACX;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/sign-in.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/sign-in.tsx"],"sourcesContent":["import AuthPage from './auth-page';\n\nexport default function SignIn({ fullPage=false }: { fullPage?: boolean }) {\n return <AuthPage fullPage={fullPage} type='sign-in' />;\n}\n"],"mappings":";AAAA,OAAO,cAAc;AAGZ;AADM,SAAR,OAAwB,EAAE,WAAS,MAAM,GAA2B;AACzE,SAAO,oBAAC,YAAS,UAAoB,MAAK,WAAU;AACtD;","names":[]}
|
|
@@ -6,14 +6,14 @@ import { use } from "react";
|
|
|
6
6
|
import { useUser } from "..";
|
|
7
7
|
import GoHomeMessageCard from "../components/redirect-message-card";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
|
-
function
|
|
9
|
+
function SignOut(props) {
|
|
10
10
|
const user = useUser();
|
|
11
11
|
if (user) {
|
|
12
12
|
use(user.signOut());
|
|
13
13
|
}
|
|
14
|
-
return /* @__PURE__ */ jsx(GoHomeMessageCard, { type: "signedOut", fullPage:
|
|
14
|
+
return /* @__PURE__ */ jsx(GoHomeMessageCard, { type: "signedOut", fullPage: props.fullPage });
|
|
15
15
|
}
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
SignOut as default
|
|
18
18
|
};
|
|
19
19
|
//# 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/redirect-message-card\";\n\nexport default function
|
|
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/redirect-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":";;;AAEA,SAAS,WAAW;AACpB,SAAS,eAAe;AACxB,OAAO,uBAAuB;AASrB;AAPM,SAAR,QAAyB,OAA+B;AAC7D,QAAM,OAAO,QAAQ;AAErB,MAAI,MAAM;AACR,QAAI,KAAK,QAAQ,CAAC;AAAA,EACpB;AAEA,SAAO,oBAAC,qBAAkB,MAAK,aAAY,UAAU,MAAM,UAAU;AACvE;","names":[]}
|
|
@@ -14,10 +14,16 @@ import { jsx } from "react/jsx-runtime";
|
|
|
14
14
|
async function StackHandler({
|
|
15
15
|
app,
|
|
16
16
|
params: { stack } = {},
|
|
17
|
-
searchParams = {}
|
|
17
|
+
searchParams = {},
|
|
18
|
+
// TODO set default to false like on the other components (may break old code)
|
|
19
|
+
fullPage = "deprecated-unset"
|
|
18
20
|
}) {
|
|
21
|
+
if (fullPage === "deprecated-unset") {
|
|
22
|
+
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.");
|
|
23
|
+
fullPage = true;
|
|
24
|
+
}
|
|
19
25
|
if (!stack) {
|
|
20
|
-
return /* @__PURE__ */ jsx(MessageCard, { title: "Invalid Stack Handler Setup", fullPage
|
|
26
|
+
return /* @__PURE__ */ jsx(MessageCard, { title: "Invalid Stack Handler Setup", fullPage, children: /* @__PURE__ */ jsx("p", { children: "Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack]." }) });
|
|
21
27
|
}
|
|
22
28
|
function redirectIfNotHandler(name) {
|
|
23
29
|
const url = app.urls[name];
|
|
@@ -38,40 +44,40 @@ async function StackHandler({
|
|
|
38
44
|
case "signin": {
|
|
39
45
|
redirectIfNotHandler("signIn");
|
|
40
46
|
await redirectIfHasUser();
|
|
41
|
-
return /* @__PURE__ */ jsx(SignIn, { fullPage
|
|
47
|
+
return /* @__PURE__ */ jsx(SignIn, { fullPage });
|
|
42
48
|
}
|
|
43
49
|
case "signup": {
|
|
44
50
|
redirectIfNotHandler("signUp");
|
|
45
51
|
await redirectIfHasUser();
|
|
46
|
-
return /* @__PURE__ */ jsx(SignUp, { fullPage
|
|
52
|
+
return /* @__PURE__ */ jsx(SignUp, { fullPage });
|
|
47
53
|
}
|
|
48
54
|
case "email-verification": {
|
|
49
55
|
redirectIfNotHandler("emailVerification");
|
|
50
|
-
return /* @__PURE__ */ jsx(EmailVerification, { searchParams, fullPage
|
|
56
|
+
return /* @__PURE__ */ jsx(EmailVerification, { searchParams, fullPage });
|
|
51
57
|
}
|
|
52
58
|
case "password-reset": {
|
|
53
59
|
redirectIfNotHandler("passwordReset");
|
|
54
|
-
return /* @__PURE__ */ jsx(PasswordReset, { searchParams, fullPage
|
|
60
|
+
return /* @__PURE__ */ jsx(PasswordReset, { searchParams, fullPage });
|
|
55
61
|
}
|
|
56
62
|
case "forgot-password": {
|
|
57
63
|
redirectIfNotHandler("forgotPassword");
|
|
58
|
-
return /* @__PURE__ */ jsx(ForgotPassword, { fullPage
|
|
64
|
+
return /* @__PURE__ */ jsx(ForgotPassword, { fullPage });
|
|
59
65
|
}
|
|
60
66
|
case "signout": {
|
|
61
67
|
redirectIfNotHandler("signOut");
|
|
62
|
-
return /* @__PURE__ */ jsx(SignOut, {});
|
|
68
|
+
return /* @__PURE__ */ jsx(SignOut, { fullPage });
|
|
63
69
|
}
|
|
64
70
|
case "oauth-callback": {
|
|
65
71
|
redirectIfNotHandler("oauthCallback");
|
|
66
|
-
return /* @__PURE__ */ jsx(OAuthCallback, {});
|
|
72
|
+
return /* @__PURE__ */ jsx(OAuthCallback, { fullPage });
|
|
67
73
|
}
|
|
68
74
|
case "account-settings": {
|
|
69
75
|
redirectIfNotHandler("accountSettings");
|
|
70
|
-
return /* @__PURE__ */ jsx(AccountSettings, { fullPage
|
|
76
|
+
return /* @__PURE__ */ jsx(AccountSettings, { fullPage });
|
|
71
77
|
}
|
|
72
78
|
case "magic-link-callback": {
|
|
73
79
|
redirectIfNotHandler("magicLinkCallback");
|
|
74
|
-
return /* @__PURE__ */ jsx(MagicLinkCallback, { searchParams, fullPage
|
|
80
|
+
return /* @__PURE__ */ jsx(MagicLinkCallback, { searchParams, fullPage });
|
|
75
81
|
}
|
|
76
82
|
default: {
|
|
77
83
|
return notFound();
|
|
@@ -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}: { \n app: StackServerApp<HasTokenStore>,\n params?: { stack?: string[] }, \n searchParams?: Record<string, string>,\n}) {\n if (!stack) {\n return (\n <MessageCard title=\"Invalid Stack Handler Setup\" 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/>;\n }\n case 'signup': {\n redirectIfNotHandler('signUp');\n await redirectIfHasUser();\n return <SignUp fullPage/>;\n }\n case 'email-verification': {\n redirectIfNotHandler('emailVerification');\n return <EmailVerification searchParams={searchParams} fullPage/>;\n }\n case 'password-reset': {\n redirectIfNotHandler('passwordReset');\n return <PasswordReset searchParams={searchParams} fullPage />;\n }\n case 'forgot-password': {\n redirectIfNotHandler('forgotPassword');\n return <ForgotPassword fullPage />;\n }\n case 'signout': {\n redirectIfNotHandler('signOut');\n return <SignOut/>;\n }\n case 'oauth-callback': {\n redirectIfNotHandler('oauthCallback');\n return <OAuthCallback />;\n }\n case 'account-settings': {\n redirectIfNotHandler('accountSettings');\n return <AccountSettings fullPage />;\n }\n case 'magic-link-callback': {\n redirectIfNotHandler('magicLinkCallback');\n return <MagicLinkCallback searchParams={searchParams} fullPage />;\n }\n default: {\n return notFound();\n }\n }\n}\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,OAAO,YAAY;AACnB,SAAS,cAAc,UAAU,gBAAgB;AACjD,OAAO,uBAAuB;AAC9B,SAAS,qBAAqC;AAC9C,OAAO,iBAAiB;AAExB,OAAO,aAAa;AACpB,OAAO,oBAAoB;AAC3B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,uBAAuB;
|
|
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,OAAO,YAAY;AACnB,OAAO,YAAY;AACnB,SAAS,cAAc,UAAU,gBAAgB;AACjD,OAAO,uBAAuB;AAC9B,SAAS,qBAAqC;AAC9C,OAAO,iBAAiB;AAExB,OAAO,aAAa;AACpB,OAAO,oBAAoB;AAC3B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,uBAAuB;AAsBtB;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,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,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,aAAS,KAAK,aAAa,OAAO;AAAA,EACpC;AAEA,iBAAe,oBAAoB;AACjC,UAAM,OAAO,MAAM,IAAI,cAAc;AACrC,QAAI,MAAM;AACR,eAAS,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,oBAAC,UAAO,UAAoB;AAAA,IACrC;AAAA,IACA,KAAK,UAAU;AACb,2BAAqB,QAAQ;AAC7B,YAAM,kBAAkB;AACxB,aAAO,oBAAC,UAAO,UAAoB;AAAA,IACrC;AAAA,IACA,KAAK,sBAAsB;AACzB,2BAAqB,mBAAmB;AACxC,aAAO,oBAAC,qBAAkB,cAA4B,UAAoB;AAAA,IAC5E;AAAA,IACA,KAAK,kBAAkB;AACrB,2BAAqB,eAAe;AACpC,aAAO,oBAAC,iBAAc,cAA4B,UAAoB;AAAA,IACxE;AAAA,IACA,KAAK,mBAAmB;AACtB,2BAAqB,gBAAgB;AACrC,aAAO,oBAAC,kBAAe,UAAoB;AAAA,IAC7C;AAAA,IACA,KAAK,WAAW;AACd,2BAAqB,SAAS;AAC9B,aAAO,oBAAC,WAAQ,UAAoB;AAAA,IACtC;AAAA,IACA,KAAK,kBAAkB;AACrB,2BAAqB,eAAe;AACpC,aAAO,oBAAC,iBAAc,UAAoB;AAAA,IAC5C;AAAA,IACA,KAAK,oBAAoB;AACvB,2BAAqB,iBAAiB;AACtC,aAAO,oBAAC,mBAAgB,UAAoB;AAAA,IAC9C;AAAA,IACA,KAAK,uBAAuB;AAC1B,2BAAqB,mBAAmB;AACxC,aAAO,oBAAC,qBAAkB,cAA4B,UAAoB;AAAA,IAC5E;AAAA,IACA,SAAS;AACP,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -20,7 +20,7 @@ import { scrambleDuringCompileTime } from "@stackframe/stack-shared/dist/utils/c
|
|
|
20
20
|
import { isReactServer } from "@stackframe/stack-sc";
|
|
21
21
|
import * as cookie from "cookie";
|
|
22
22
|
var NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
|
|
23
|
-
var clientVersion = "js @stackframe/stack@2.4.
|
|
23
|
+
var clientVersion = "js @stackframe/stack@2.4.16";
|
|
24
24
|
function permissionDefinitionScopeToType(scope) {
|
|
25
25
|
return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
|
|
26
26
|
}
|
package/dist/lib/stack-app.js
CHANGED
|
@@ -57,7 +57,7 @@ var import_compile_time = require("@stackframe/stack-shared/dist/utils/compile-t
|
|
|
57
57
|
var import_stack_sc = require("@stackframe/stack-sc");
|
|
58
58
|
var cookie = __toESM(require("cookie"));
|
|
59
59
|
var NextNavigation = (0, import_compile_time.scrambleDuringCompileTime)(NextNavigationUnscrambled);
|
|
60
|
-
var clientVersion = "js @stackframe/stack@2.4.
|
|
60
|
+
var clientVersion = "js @stackframe/stack@2.4.16";
|
|
61
61
|
function permissionDefinitionScopeToType(scope) {
|
|
62
62
|
return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
|
|
63
63
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackframe/stack",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.16",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"LICENSE"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"rimraf": "^5.0.5",
|
|
33
34
|
"@hookform/resolvers": "^3.3.4",
|
|
34
35
|
"@radix-ui/react-avatar": "^1.0.4",
|
|
35
36
|
"@radix-ui/react-collapsible": "^1.0.3",
|
|
@@ -48,8 +49,8 @@
|
|
|
48
49
|
"server-only": "^0.0.1",
|
|
49
50
|
"styled-components": "^6.1.8",
|
|
50
51
|
"yup": "^1.4.0",
|
|
51
|
-
"@stackframe/stack-sc": "1.5.
|
|
52
|
-
"@stackframe/stack-shared": "2.4.
|
|
52
|
+
"@stackframe/stack-sc": "1.5.6",
|
|
53
|
+
"@stackframe/stack-shared": "2.4.13"
|
|
53
54
|
},
|
|
54
55
|
"peerDependencies": {
|
|
55
56
|
"@mui/joy": "^5.0.0-beta.30",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import React__default from 'react';
|
|
3
|
-
|
|
4
|
-
declare function CardFrame({ children, fullPage }: {
|
|
5
|
-
children: React__default.ReactNode;
|
|
6
|
-
fullPage?: boolean;
|
|
7
|
-
}): string | number | boolean | Iterable<React__default.ReactNode> | Promise<React__default.AwaitedReactNode> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
8
|
-
|
|
9
|
-
export { CardFrame as default };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import React__default from 'react';
|
|
3
|
-
|
|
4
|
-
declare function CardFrame({ children, fullPage }: {
|
|
5
|
-
children: React__default.ReactNode;
|
|
6
|
-
fullPage?: boolean;
|
|
7
|
-
}): string | number | boolean | Iterable<React__default.ReactNode> | Promise<React__default.AwaitedReactNode> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
8
|
-
|
|
9
|
-
export { CardFrame as default };
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
"use client";
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
-
|
|
22
|
-
// src/components/card-frame.tsx
|
|
23
|
-
var card_frame_exports = {};
|
|
24
|
-
__export(card_frame_exports, {
|
|
25
|
-
default: () => CardFrame
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(card_frame_exports);
|
|
28
|
-
var import_components_core = require("../components-core");
|
|
29
|
-
var import_react = require("react");
|
|
30
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
-
function CardFrame({
|
|
32
|
-
children,
|
|
33
|
-
fullPage = true
|
|
34
|
-
}) {
|
|
35
|
-
const [hasNoParent, setHasNoParent] = (0, import_react.useState)(false);
|
|
36
|
-
(0, import_react.useEffect)(() => {
|
|
37
|
-
const component = document.getElementById("stack-card-frame");
|
|
38
|
-
setHasNoParent(
|
|
39
|
-
!component?.parentElement || component?.parentElement === document.body || component?.parentElement === document.documentElement
|
|
40
|
-
);
|
|
41
|
-
}, []);
|
|
42
|
-
if (fullPage) {
|
|
43
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
44
|
-
"div",
|
|
45
|
-
{
|
|
46
|
-
id: "stack-card-frame",
|
|
47
|
-
style: {
|
|
48
|
-
height: hasNoParent ? "100vh" : "100%",
|
|
49
|
-
display: "flex",
|
|
50
|
-
alignItems: "center",
|
|
51
|
-
justifyContent: "center"
|
|
52
|
-
},
|
|
53
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Container, { size: 380, style: { padding: "1rem 1rem" }, children })
|
|
54
|
-
}
|
|
55
|
-
);
|
|
56
|
-
} else {
|
|
57
|
-
return children;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=card-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/card-frame.tsx"],"sourcesContent":["'use client';\n\nimport { Container } from \"../components-core\";\nimport React, { useEffect, useState } from \"react\";\n\nexport default function CardFrame({ \n children, \n fullPage=true\n}: { \n children: React.ReactNode, \n fullPage?: boolean, \n}) {\n const [hasNoParent, setHasNoParent] = useState(false);\n useEffect(() => {\n const component = document.getElementById('stack-card-frame');\n setHasNoParent(\n !component?.parentElement || \n component?.parentElement === document.body || \n component?.parentElement === document.documentElement\n );\n }, []);\n\n if (fullPage) {\n return (\n <div \n id='stack-card-frame' \n style={{ \n height: hasNoParent ? '100vh' : '100%',\n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n }}\n >\n <Container size={380} style={{ padding: '1rem 1rem' }}>\n {children}\n </Container>\n </div>\n );\n } else {\n return children;\n }\n \n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,6BAA0B;AAC1B,mBAA2C;AA8BnC;AA5BO,SAAR,UAA2B;AAAA,EAChC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,KAAK;AACpD,8BAAU,MAAM;AACd,UAAM,YAAY,SAAS,eAAe,kBAAkB;AAC5D;AAAA,MACE,CAAC,WAAW,iBACZ,WAAW,kBAAkB,SAAS,QACtC,WAAW,kBAAkB,SAAS;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,OAAO;AAAA,UACL,QAAQ,cAAc,UAAU;AAAA,UAChC,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAClB;AAAA,QAEA,sDAAC,oCAAU,MAAM,KAAK,OAAO,EAAE,SAAS,YAAY,GACjD,UACH;AAAA;AAAA,IACF;AAAA,EAEJ,OAAO;AACL,WAAO;AAAA,EACT;AAEF;","names":[]}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use client";
|
|
3
|
-
|
|
4
|
-
// src/components/card-frame.tsx
|
|
5
|
-
import { Container } from "../components-core";
|
|
6
|
-
import { useEffect, useState } from "react";
|
|
7
|
-
import { jsx } from "react/jsx-runtime";
|
|
8
|
-
function CardFrame({
|
|
9
|
-
children,
|
|
10
|
-
fullPage = true
|
|
11
|
-
}) {
|
|
12
|
-
const [hasNoParent, setHasNoParent] = useState(false);
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
const component = document.getElementById("stack-card-frame");
|
|
15
|
-
setHasNoParent(
|
|
16
|
-
!component?.parentElement || component?.parentElement === document.body || component?.parentElement === document.documentElement
|
|
17
|
-
);
|
|
18
|
-
}, []);
|
|
19
|
-
if (fullPage) {
|
|
20
|
-
return /* @__PURE__ */ jsx(
|
|
21
|
-
"div",
|
|
22
|
-
{
|
|
23
|
-
id: "stack-card-frame",
|
|
24
|
-
style: {
|
|
25
|
-
height: hasNoParent ? "100vh" : "100%",
|
|
26
|
-
display: "flex",
|
|
27
|
-
alignItems: "center",
|
|
28
|
-
justifyContent: "center"
|
|
29
|
-
},
|
|
30
|
-
children: /* @__PURE__ */ jsx(Container, { size: 380, style: { padding: "1rem 1rem" }, children })
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
} else {
|
|
34
|
-
return children;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export {
|
|
38
|
-
CardFrame as default
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=card-frame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/card-frame.tsx"],"sourcesContent":["'use client';\n\nimport { Container } from \"../components-core\";\nimport React, { useEffect, useState } from \"react\";\n\nexport default function CardFrame({ \n children, \n fullPage=true\n}: { \n children: React.ReactNode, \n fullPage?: boolean, \n}) {\n const [hasNoParent, setHasNoParent] = useState(false);\n useEffect(() => {\n const component = document.getElementById('stack-card-frame');\n setHasNoParent(\n !component?.parentElement || \n component?.parentElement === document.body || \n component?.parentElement === document.documentElement\n );\n }, []);\n\n if (fullPage) {\n return (\n <div \n id='stack-card-frame' \n style={{ \n height: hasNoParent ? '100vh' : '100%',\n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n }}\n >\n <Container size={380} style={{ padding: '1rem 1rem' }}>\n {children}\n </Container>\n </div>\n );\n } else {\n return children;\n }\n \n}\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAgB,WAAW,gBAAgB;AA8BnC;AA5BO,SAAR,UAA2B;AAAA,EAChC;AAAA,EACA,WAAS;AACX,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,YAAU,MAAM;AACd,UAAM,YAAY,SAAS,eAAe,kBAAkB;AAC5D;AAAA,MACE,CAAC,WAAW,iBACZ,WAAW,kBAAkB,SAAS,QACtC,WAAW,kBAAkB,SAAS;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,OAAO;AAAA,UACL,QAAQ,cAAc,UAAU;AAAA,UAChC,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAClB;AAAA,QAEA,8BAAC,aAAU,MAAM,KAAK,OAAO,EAAE,SAAS,YAAY,GACjD,UACH;AAAA;AAAA,IACF;AAAA,EAEJ,OAAO;AACL,WAAO;AAAA,EACT;AAEF;","names":[]}
|