@stackframe/stack 2.4.15 → 2.4.17
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 +15 -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 +74 -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-core/index.d.mts +3 -3
- package/dist/components-core/index.d.ts +3 -3
- 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 +54 -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/dist/providers/component-provider.d.mts +4 -4
- package/dist/providers/component-provider.d.ts +4 -4
- 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
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
if (!el) {
|
|
17
|
+
// component is not full page
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const offset = el.getBoundingClientRect().top + document.documentElement.scrollTop;
|
|
21
|
+
el.style.minHeight = \`calc(100vh - \${offset}px)\`;
|
|
22
|
+
})(${JSON.stringify([id])})`;
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
eval(scriptString);
|
|
25
|
+
}, []);
|
|
26
|
+
if (fullPage) {
|
|
27
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
28
|
+
/* @__PURE__ */ jsx(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
id,
|
|
32
|
+
suppressHydrationWarning: true,
|
|
33
|
+
style: {
|
|
34
|
+
minHeight: "100vh",
|
|
35
|
+
alignSelf: "stretch",
|
|
36
|
+
display: "flex",
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
justifyContent: "center"
|
|
39
|
+
},
|
|
40
|
+
children: /* @__PURE__ */ jsx(Container, { size: 380, style: { padding: "1rem 1rem" }, children })
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
/* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: {
|
|
44
|
+
__html: scriptString
|
|
45
|
+
} })
|
|
46
|
+
] });
|
|
47
|
+
} else {
|
|
48
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
MaybeFullPage as default
|
|
53
|
+
};
|
|
54
|
+
//# 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 if (!el) {\n // component is not full page\n return;\n }\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;AA8BlC,mBAYI,KAZJ;AA5BS,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;AAAA;AAAA;AAAA;AAAA,OAQhB,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":";;;AAEA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,YAAY,SAAS;AACrB,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,yBAAyB;AAChC,OAAO,iBAAiB;AACxB,OAAO,mBAAmB;AAC1B,SAAS,QAAQ,OAAO,YAAY;AACpC,SAAS,yBAAyB;AAwCvB,cAiBL,YAjBK;AAtCX,IAAM,SAAa,WAAO,EAAE,MAAM;AAAA,EAChC,UAAc,WAAO,EAAE,SAAS,4BAA4B,EAAE,KAAK;AAAA,IACjE,MAAM;AAAA,IACN,MAAM,CAAC,OAAO,QAAQ;AACpB,YAAM,QAAQ,iBAAiB,KAAK;AACpC,UAAI,OAAO;AACT,eAAO,IAAI,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,MACnD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,gBAAoB,WAAO,EAAE,SAAS,EAAE,MAAM,CAAK,QAAI,UAAU,GAAG,IAAI,GAAG,wBAAwB,EAAE,SAAS,6BAA6B;AAC7I,CAAC;AAEc,SAAR,mBACL,EAAE,MAAM,WAAW,MAAM,GAEzB;AACA,QAAM,EAAE,UAAU,cAAc,WAAW,EAAE,OAAO,GAAG,YAAY,IAAI,QAAQ;AAAA,IAC7E,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,WAAW,OAAO,SAAuC;AAC7D,UAAM,EAAE,SAAS,IAAI;AACrB,UAAM,YAAY,MAAM,SAAS,cAAc,EAAE,UAAU,KAAK,CAAC;AACjE,QAAI,WAAW;AACb,oBAAc,IAAI;AAClB;AAAA,IACF;AAEA,gBAAY,IAAI;AAAA,EAClB;AAEA,MAAI,UAAU;AACZ,WAAO,oBAAC,uBAAoB,MAAK,iBAAgB,UAAoB;AAAA,EACvE;AAEA,MAAI,YAAY;AACd,WACE,oBAAC,eAAY,OAAM,4BAA2B,UAC5C,8BAAC,QAAK,gFAAkE,GAC1E;AAAA,EAEJ;AAEA,SACE,qBAAC,iBAAc,UACb;AAAA,wBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD,8BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,iCAAmB,GAC7C;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU;AAAA,QACzE,UAAU,OAAK,kBAAkB,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,QAC1D,YAAU;AAAA,QAEV;AAAA,8BAAC,SAAM,SAAQ,YAAW,0BAAY;AAAA,UACtC;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACF,GAAG,SAAS,UAAU;AAAA,cACvB,UAAU,MAAM;AACd,4BAAY,UAAU;AACtB,4BAAY,gBAAgB;AAAA,cAC9B;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,mBAAgB,MAAM,OAAO,UAAU,SAAS,SAAS,GAAG;AAAA,UAE7D,oBAAC,SAAM,SAAQ,mBAAkB,OAAO,EAAE,WAAW,OAAO,GAAG,iCAAmB;AAAA,UAClF;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACF,GAAG,SAAS,gBAAgB;AAAA,cAC7B,UAAU,MAAM;AACd,4BAAY,UAAU;AACtB,4BAAY,gBAAgB;AAAA,cAC9B;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,mBAAgB,MAAM,OAAO,gBAAgB,SAAS,SAAS,GAAG;AAAA,UAEnE,oBAAC,UAAO,OAAO,EAAE,WAAW,SAAS,GAAG,MAAK,UAAS,4BAEtD;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -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.17";
|
|
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.17";
|
|
61
61
|
function permissionDefinitionScopeToType(scope) {
|
|
62
62
|
return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
|
|
63
63
|
}
|
|
@@ -18,13 +18,13 @@ declare const Components: {
|
|
|
18
18
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
19
19
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
20
20
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
21
|
-
size?: "
|
|
21
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
22
22
|
href: string | url.Url;
|
|
23
23
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
24
24
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
25
25
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
26
26
|
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
27
|
-
size?: "
|
|
27
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
28
28
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
29
29
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
30
30
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -67,13 +67,13 @@ declare function useComponents(): {
|
|
|
67
67
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
68
68
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
69
69
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
70
|
-
size?: "
|
|
70
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
71
71
|
href: string | url.Url;
|
|
72
72
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
73
73
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
74
74
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
75
75
|
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
76
|
-
size?: "
|
|
76
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
77
77
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
78
78
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
79
79
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -18,13 +18,13 @@ declare const Components: {
|
|
|
18
18
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
19
19
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
20
20
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
21
|
-
size?: "
|
|
21
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
22
22
|
href: string | url.Url;
|
|
23
23
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
24
24
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
25
25
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
26
26
|
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
27
|
-
size?: "
|
|
27
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
28
28
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
29
29
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
30
30
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -67,13 +67,13 @@ declare function useComponents(): {
|
|
|
67
67
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
68
68
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
69
69
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
70
|
-
size?: "
|
|
70
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
71
71
|
href: string | url.Url;
|
|
72
72
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
73
73
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
74
74
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
75
75
|
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
76
|
-
size?: "
|
|
76
|
+
size?: "sm" | "md" | "lg" | "xs" | "xl" | undefined;
|
|
77
77
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
78
78
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
79
79
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackframe/stack",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.17",
|
|
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":[]}
|