@stackframe/stack 2.3.5 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/card-frame.d.mts +9 -0
- package/dist/components/card-frame.d.ts +8 -5
- package/dist/components/card-frame.js +58 -23
- package/dist/components/credential-sign-in.d.mts +5 -0
- package/dist/components/credential-sign-in.d.ts +5 -1
- package/dist/components/credential-sign-in.js +109 -41
- package/dist/components/credential-sign-up.d.mts +5 -0
- package/dist/components/credential-sign-up.d.ts +5 -1
- package/dist/components/credential-sign-up.js +140 -62
- package/dist/components/forgot-password.d.mts +7 -0
- package/dist/components/forgot-password.d.ts +6 -2
- package/dist/components/forgot-password.js +83 -26
- package/dist/components/form-warning.d.mts +7 -0
- package/dist/components/form-warning.d.ts +6 -2
- package/dist/components/form-warning.js +34 -8
- package/dist/components/magic-link-sign-in.d.mts +5 -0
- package/dist/components/magic-link-sign-in.d.ts +5 -1
- package/dist/components/magic-link-sign-in.js +89 -31
- package/dist/components/message-card.d.mts +10 -0
- package/dist/components/message-card.d.ts +8 -4
- package/dist/components/message-card.js +45 -6
- package/dist/components/oauth-button.d.mts +8 -0
- package/dist/components/oauth-button.d.ts +6 -2
- package/dist/components/oauth-button.js +142 -63
- package/dist/components/oauth-group.d.mts +7 -0
- package/dist/components/oauth-group.d.ts +6 -2
- package/dist/components/oauth-group.js +46 -8
- package/dist/components/password-field.d.mts +5 -0
- package/dist/components/password-field.d.ts +5 -3
- package/dist/components/password-field.js +111 -41
- package/dist/components/password-reset-inner.d.mts +8 -0
- package/dist/components/password-reset-inner.d.ts +6 -2
- package/dist/components/password-reset-inner.js +120 -58
- package/dist/components/redirect-message-card.d.mts +8 -0
- package/dist/components/redirect-message-card.d.ts +6 -2
- package/dist/components/redirect-message-card.js +110 -58
- package/dist/components/separator-with-text.d.mts +7 -0
- package/dist/components/separator-with-text.d.ts +6 -2
- package/dist/components/separator-with-text.js +35 -5
- package/dist/components/user-avatar.d.mts +13 -0
- package/dist/components/user-avatar.d.ts +11 -3
- package/dist/components/user-avatar.js +34 -6
- package/dist/components/user-button.d.mts +15 -0
- package/dist/components/user-button.d.ts +12 -3
- package/dist/components/user-button.js +156 -26
- package/dist/components-core/avatar.d.mts +8 -0
- package/dist/components-core/avatar.d.ts +7 -5
- package/dist/components-core/avatar.js +73 -18
- package/dist/components-core/button.d.mts +12 -0
- package/dist/components-core/button.d.ts +8 -6
- package/dist/components-core/button.js +177 -113
- package/dist/components-core/card.d.mts +8 -0
- package/dist/components-core/card.d.ts +4 -2
- package/dist/components-core/card.js +73 -22
- package/dist/components-core/collapsible.d.mts +8 -0
- package/dist/components-core/collapsible.d.ts +8 -6
- package/dist/components-core/collapsible.js +48 -5
- package/dist/components-core/container.d.mts +8 -0
- package/dist/components-core/container.d.ts +5 -3
- package/dist/components-core/container.js +61 -11
- package/dist/components-core/dropdown.d.mts +15 -0
- package/dist/components-core/dropdown.d.ts +10 -8
- package/dist/components-core/dropdown.js +108 -36
- package/dist/components-core/index.d.mts +59 -0
- package/dist/components-core/index.d.ts +51 -40
- package/dist/components-core/index.js +144 -46
- package/dist/components-core/input.d.mts +6 -0
- package/dist/components-core/input.d.ts +5 -3
- package/dist/components-core/input.js +97 -28
- package/dist/components-core/label.d.mts +6 -0
- package/dist/components-core/label.d.ts +5 -3
- package/dist/components-core/label.js +65 -15
- package/dist/components-core/link.d.mts +10 -0
- package/dist/components-core/link.d.ts +7 -6
- package/dist/components-core/link.js +72 -18
- package/dist/components-core/loading-indicator.d.mts +13 -0
- package/dist/components-core/loading-indicator.d.ts +11 -4
- package/dist/components-core/loading-indicator.js +46 -6
- package/dist/components-core/popover.d.mts +8 -0
- package/dist/components-core/popover.d.ts +8 -6
- package/dist/components-core/popover.js +72 -16
- package/dist/components-core/separator.d.mts +6 -0
- package/dist/components-core/separator.d.ts +5 -3
- package/dist/components-core/separator.js +66 -16
- package/dist/components-core/skeleton.d.mts +7 -0
- package/dist/components-core/skeleton.d.ts +5 -3
- package/dist/components-core/skeleton.js +75 -21
- package/dist/components-core/tabs.d.mts +9 -0
- package/dist/components-core/tabs.d.ts +8 -6
- package/dist/components-core/tabs.js +87 -20
- package/dist/components-core/text.d.mts +10 -0
- package/dist/components-core/text.d.ts +5 -3
- package/dist/components-core/text.js +95 -40
- package/dist/components-core-joy/button.d.mts +6 -0
- package/dist/components-core-joy/button.d.ts +6 -2
- package/dist/components-core-joy/button.js +86 -28
- package/dist/components-core-joy/input.d.mts +5 -0
- package/dist/components-core-joy/input.d.ts +5 -2
- package/dist/components-core-joy/input.js +51 -6
- package/dist/components-core-joy/separator.d.mts +6 -0
- package/dist/components-core-joy/separator.d.ts +6 -2
- package/dist/components-core-joy/separator.js +50 -6
- package/dist/components-core-joy/tabs.d.mts +9 -0
- package/dist/components-core-joy/tabs.d.ts +9 -5
- package/dist/components-core-joy/tabs.js +62 -16
- package/dist/components-core-joy/text.d.mts +9 -0
- package/dist/components-core-joy/text.d.ts +6 -3
- package/dist/components-core-joy/text.js +68 -28
- package/dist/components-page/account-settings.d.mts +7 -0
- package/dist/components-page/account-settings.d.ts +6 -2
- package/dist/components-page/account-settings.js +213 -81
- package/dist/components-page/auth-page.d.mts +8 -0
- package/dist/components-page/auth-page.d.ts +6 -2
- package/dist/components-page/auth-page.js +79 -19
- package/dist/components-page/email-verification.d.mts +8 -0
- package/dist/components-page/email-verification.d.ts +6 -2
- package/dist/components-page/email-verification.js +65 -28
- package/dist/components-page/forgot-password.d.mts +7 -0
- package/dist/components-page/forgot-password.d.ts +6 -2
- package/dist/components-page/forgot-password.js +64 -20
- package/dist/components-page/magic-link-callback.d.mts +8 -0
- package/dist/components-page/magic-link-callback.d.ts +6 -2
- package/dist/components-page/magic-link-callback.js +72 -34
- package/dist/components-page/oauth-callback.d.mts +5 -0
- package/dist/components-page/oauth-callback.d.ts +5 -1
- package/dist/components-page/oauth-callback.js +52 -16
- package/dist/components-page/password-reset.d.mts +8 -0
- package/dist/components-page/password-reset.d.ts +6 -2
- package/dist/components-page/password-reset.js +70 -34
- package/dist/components-page/sign-in.d.mts +7 -0
- package/dist/components-page/sign-in.d.ts +6 -2
- package/dist/components-page/sign-in.js +41 -5
- package/dist/components-page/sign-out.d.mts +5 -0
- package/dist/components-page/sign-out.d.ts +5 -1
- package/dist/components-page/sign-out.js +47 -11
- package/dist/components-page/sign-up.d.mts +7 -0
- package/dist/components-page/sign-up.d.ts +6 -2
- package/dist/components-page/sign-up.js +41 -5
- package/dist/components-page/stack-handler.d.mts +16 -0
- package/dist/components-page/stack-handler.d.ts +11 -3
- package/dist/components-page/stack-handler.js +102 -64
- package/dist/esm/components/card-frame.js +39 -0
- package/dist/esm/components/credential-sign-in.js +82 -0
- package/dist/esm/components/credential-sign-up.js +114 -0
- package/dist/esm/components/forgot-password.js +55 -0
- package/dist/esm/components/form-warning.js +15 -0
- package/dist/esm/components/magic-link-sign-in.js +61 -0
- package/dist/esm/components/message-card.js +16 -0
- package/dist/esm/components/oauth-button.js +124 -0
- package/dist/esm/components/oauth-group.js +17 -0
- package/dist/esm/components/password-field.js +82 -0
- package/dist/esm/components/password-reset-inner.js +93 -0
- package/dist/esm/components/redirect-message-card.js +83 -0
- package/dist/esm/components/separator-with-text.js +16 -0
- package/dist/esm/components/user-avatar.js +14 -0
- package/dist/esm/components/user-button.js +133 -0
- package/dist/esm/components-core/avatar.js +56 -0
- package/dist/esm/components-core/button.js +165 -0
- package/dist/esm/components-core/card.js +51 -0
- package/dist/esm/components-core/collapsible.js +13 -0
- package/dist/esm/components-core/container.js +35 -0
- package/dist/esm/components-core/dropdown.js +106 -0
- package/dist/esm/components-core/index.js +93 -0
- package/dist/esm/components-core/input.js +80 -0
- package/dist/esm/components-core/label.js +38 -0
- package/dist/esm/components-core/link.js +38 -0
- package/dist/esm/components-core/loading-indicator.js +27 -0
- package/dist/esm/components-core/popover.js +43 -0
- package/dist/esm/components-core/separator.js +36 -0
- package/dist/esm/components-core/skeleton.js +52 -0
- package/dist/esm/components-core/tabs.js +79 -0
- package/dist/esm/components-core/text.js +63 -0
- package/dist/esm/components-core-joy/button.js +53 -0
- package/dist/esm/components-core-joy/input.js +18 -0
- package/dist/esm/components-core-joy/separator.js +17 -0
- package/dist/esm/components-core-joy/tabs.js +29 -0
- package/dist/esm/components-core-joy/text.js +35 -0
- package/dist/esm/components-page/account-settings.js +197 -0
- package/dist/esm/components-page/auth-page.js +50 -0
- package/dist/esm/components-page/email-verification.js +36 -0
- package/dist/esm/components-page/forgot-password.js +35 -0
- package/dist/esm/components-page/magic-link-callback.js +43 -0
- package/dist/esm/components-page/oauth-callback.js +23 -0
- package/dist/esm/components-page/password-reset.js +42 -0
- package/dist/esm/components-page/sign-in.js +12 -0
- package/dist/esm/components-page/sign-out.js +18 -0
- package/dist/esm/components-page/sign-up.js +12 -0
- package/dist/esm/components-page/stack-handler.js +75 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/joy.js +5 -0
- package/dist/esm/lib/auth.js +62 -0
- package/dist/esm/lib/cookie.js +185 -0
- package/dist/esm/lib/hooks.js +29 -0
- package/dist/esm/lib/stack-app.js +940 -0
- package/dist/esm/providers/component-provider.js +76 -0
- package/dist/esm/providers/design-provider.js +36 -0
- package/dist/esm/providers/joy-provider.js +35 -0
- package/dist/esm/providers/stack-provider-client.js +31 -0
- package/dist/esm/providers/stack-provider.js +21 -0
- package/dist/esm/providers/styled-components-registry.js +24 -0
- package/dist/esm/providers/theme-provider.js +22 -0
- package/dist/esm/utils/browser-script.js +25 -0
- package/dist/esm/utils/constants.js +34 -0
- package/dist/esm/utils/email.js +10 -0
- package/dist/esm/utils/next.js +7 -0
- package/dist/esm/utils/url.js +21 -0
- package/dist/index.d.mts +37 -0
- package/dist/index.d.ts +37 -22
- package/dist/index.js +106 -21
- package/dist/joy.d.mts +16 -0
- package/dist/joy.d.ts +16 -1
- package/dist/joy.js +30 -1
- package/dist/lib/auth.d.mts +11 -0
- package/dist/lib/auth.d.ts +8 -4
- package/dist/lib/auth.js +83 -57
- package/dist/lib/cookie.d.mts +14 -0
- package/dist/lib/cookie.d.ts +8 -6
- package/dist/lib/cookie.js +217 -45
- package/dist/lib/hooks.d.mts +35 -0
- package/dist/lib/hooks.d.ts +14 -8
- package/dist/lib/hooks.js +53 -28
- package/dist/lib/stack-app.d.mts +227 -0
- package/dist/lib/stack-app.d.ts +43 -41
- package/dist/lib/stack-app.js +937 -849
- package/dist/providers/component-provider.d.mts +113 -0
- package/dist/providers/component-provider.d.ts +95 -77
- package/dist/providers/component-provider.js +92 -58
- package/dist/providers/design-provider.d.mts +34 -0
- package/dist/providers/design-provider.d.ts +16 -21
- package/dist/providers/design-provider.js +57 -58
- package/dist/providers/joy-provider.d.mts +36 -0
- package/dist/providers/joy-provider.d.ts +30 -14
- package/dist/providers/joy-provider.js +58 -30
- package/dist/providers/stack-provider-client.d.mts +20 -0
- package/dist/providers/stack-provider-client.d.ts +15 -8
- package/dist/providers/stack-provider-client.js +64 -20
- package/dist/providers/stack-provider.d.mts +14 -0
- package/dist/providers/stack-provider.d.ts +13 -5
- package/dist/providers/stack-provider.js +39 -8
- package/dist/providers/styled-components-registry.d.mts +8 -0
- package/dist/providers/styled-components-registry.d.ts +8 -4
- package/dist/providers/styled-components-registry.js +43 -17
- package/dist/providers/theme-provider.d.mts +22 -0
- package/dist/providers/theme-provider.d.ts +21 -9
- package/dist/providers/theme-provider.js +55 -19
- package/dist/utils/browser-script.d.mts +5 -0
- package/dist/utils/browser-script.d.ts +5 -0
- package/dist/utils/browser-script.js +50 -0
- package/dist/utils/constants.d.mts +48 -0
- package/dist/utils/constants.d.ts +11 -9
- package/dist/utils/constants.js +66 -21
- package/dist/utils/email.d.mts +3 -0
- package/dist/utils/email.d.ts +3 -1
- package/dist/utils/email.js +44 -6
- package/dist/utils/next.d.mts +3 -0
- package/dist/utils/next.d.ts +3 -1
- package/dist/utils/next.js +31 -3
- package/dist/utils/url.d.mts +4 -0
- package/dist/utils/url.d.ts +4 -2
- package/dist/utils/url.js +44 -13
- package/package.json +19 -10
|
@@ -1,95 +1,227 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
"use client";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// src/components-page/account-settings.tsx
|
|
33
|
+
var account_settings_exports = {};
|
|
34
|
+
__export(account_settings_exports, {
|
|
35
|
+
default: () => AccountSettings
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(account_settings_exports);
|
|
38
|
+
var import__ = require("..");
|
|
39
|
+
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
40
|
+
var import_components_core = require("../components-core");
|
|
41
|
+
var import_user_avatar = __toESM(require("../components/user-avatar"));
|
|
42
|
+
var import_react = require("react");
|
|
43
|
+
var import_form_warning = __toESM(require("../components/form-warning"));
|
|
44
|
+
var import_password = require("@stackframe/stack-shared/dist/helpers/password");
|
|
45
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
10
46
|
function SettingSection(props) {
|
|
11
|
-
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Card, { children: [
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.CardHeader, { children: [
|
|
49
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", children: props.title }),
|
|
50
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", children: props.desc })
|
|
51
|
+
] }),
|
|
52
|
+
props.children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "1.5rem" }, children: props.children }) }),
|
|
53
|
+
props.buttonText && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.CardFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", justifyContent: "flex-end", width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
54
|
+
import_components_core.Button,
|
|
55
|
+
{
|
|
56
|
+
disabled: props.buttonDisabled,
|
|
57
|
+
onClick: props.onButtonClick,
|
|
58
|
+
variant: props.buttonVariant,
|
|
59
|
+
children: props.buttonText
|
|
60
|
+
}
|
|
61
|
+
) }) })
|
|
62
|
+
] });
|
|
12
63
|
}
|
|
13
64
|
function ProfileSection() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
65
|
+
const user = (0, import__.useUser)();
|
|
66
|
+
const [userInfo, setUserInfo] = (0, import_react.useState)({ displayName: user?.displayName || "" });
|
|
67
|
+
const [changed, setChanged] = (0, import_react.useState)(false);
|
|
68
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
69
|
+
SettingSection,
|
|
70
|
+
{
|
|
71
|
+
title: "Profile",
|
|
72
|
+
desc: "Your profile information",
|
|
73
|
+
buttonDisabled: !changed,
|
|
74
|
+
buttonText: "Save",
|
|
75
|
+
onButtonClick: async () => {
|
|
76
|
+
await user?.update(userInfo);
|
|
77
|
+
setChanged(false);
|
|
78
|
+
},
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", gap: "1rem", alignItems: "center" }, children: [
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user_avatar.default, { user, size: 60 }),
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
83
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "lg", children: user?.displayName }),
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", size: "sm", children: user?.primaryEmail })
|
|
85
|
+
] })
|
|
86
|
+
] }),
|
|
87
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "display-name", children: "Display Name" }),
|
|
89
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
90
|
+
import_components_core.Input,
|
|
91
|
+
{
|
|
92
|
+
id: "display-name",
|
|
93
|
+
value: userInfo.displayName,
|
|
94
|
+
onChange: (e) => {
|
|
95
|
+
setUserInfo((i) => ({ ...i, displayName: e.target.value }));
|
|
96
|
+
setChanged(true);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] })
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
);
|
|
24
104
|
}
|
|
25
105
|
function EmailVerificationSection() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
106
|
+
const user = (0, import__.useUser)();
|
|
107
|
+
const [emailSent, setEmailSent] = (0, import_react.useState)(false);
|
|
108
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
109
|
+
SettingSection,
|
|
110
|
+
{
|
|
111
|
+
title: "Email Verification",
|
|
112
|
+
desc: "We want to make sure that you own the email address.",
|
|
113
|
+
buttonDisabled: emailSent,
|
|
114
|
+
buttonText: !user?.primaryEmailVerified ? emailSent ? "Email sent!" : "Send Email" : void 0,
|
|
115
|
+
onButtonClick: async () => {
|
|
116
|
+
await user?.sendVerificationEmail();
|
|
117
|
+
setEmailSent(true);
|
|
118
|
+
},
|
|
119
|
+
children: user?.primaryEmailVerified ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "success", children: "Your email has been verified" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "warning", children: "Your email has not been verified" })
|
|
120
|
+
}
|
|
121
|
+
);
|
|
38
122
|
}
|
|
39
123
|
function PasswordSection() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
124
|
+
const user = (0, import__.useUser)();
|
|
125
|
+
const [oldPassword, setOldPassword] = (0, import_react.useState)("");
|
|
126
|
+
const [oldPasswordError, setOldPasswordError] = (0, import_react.useState)("");
|
|
127
|
+
const [newPassword, setNewPassword] = (0, import_react.useState)("");
|
|
128
|
+
const [newPasswordError, setNewPasswordError] = (0, import_react.useState)("");
|
|
129
|
+
if (!user?.hasPassword) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
133
|
+
SettingSection,
|
|
134
|
+
{
|
|
135
|
+
title: "Password",
|
|
136
|
+
desc: "Change your password here.",
|
|
137
|
+
buttonDisabled: !oldPassword || !newPassword,
|
|
138
|
+
buttonText: "Save",
|
|
139
|
+
onButtonClick: async () => {
|
|
140
|
+
if (oldPassword && newPassword) {
|
|
141
|
+
const errorMessage = (0, import_password.getPasswordError)(newPassword);
|
|
142
|
+
if (errorMessage) {
|
|
143
|
+
setNewPasswordError(errorMessage.message);
|
|
144
|
+
} else {
|
|
145
|
+
const errorCode = await user?.updatePassword({ oldPassword, newPassword });
|
|
146
|
+
if (errorCode) {
|
|
147
|
+
setOldPasswordError("Incorrect password");
|
|
148
|
+
} else {
|
|
149
|
+
setOldPassword("");
|
|
150
|
+
setNewPassword("");
|
|
64
151
|
}
|
|
65
|
-
|
|
66
|
-
|
|
152
|
+
}
|
|
153
|
+
} else if (oldPassword && !newPassword) {
|
|
154
|
+
setNewPasswordError("Please enter a new password");
|
|
155
|
+
} else if (newPassword && !oldPassword) {
|
|
156
|
+
setOldPasswordError("Please enter your old password");
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
161
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "old-password", children: "Old Password" }),
|
|
162
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
163
|
+
import__.PasswordField,
|
|
164
|
+
{
|
|
165
|
+
id: "old-password",
|
|
166
|
+
value: oldPassword,
|
|
167
|
+
onChange: (e) => {
|
|
168
|
+
setOldPassword(e.target.value);
|
|
169
|
+
setOldPasswordError("");
|
|
170
|
+
}
|
|
67
171
|
}
|
|
68
|
-
|
|
69
|
-
|
|
172
|
+
),
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: oldPasswordError })
|
|
174
|
+
] }),
|
|
175
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
176
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Label, { htmlFor: "new-password", children: "New Password" }),
|
|
177
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
178
|
+
import__.PasswordField,
|
|
179
|
+
{
|
|
180
|
+
id: "new-password",
|
|
181
|
+
value: newPassword,
|
|
182
|
+
onChange: (e) => {
|
|
183
|
+
setNewPassword(e.target.value);
|
|
184
|
+
setNewPasswordError("");
|
|
185
|
+
}
|
|
70
186
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} }), _jsx(FormWarningText, { text: newPasswordError })] })] }));
|
|
187
|
+
),
|
|
188
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_form_warning.default, { text: newPasswordError })
|
|
189
|
+
] })
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
);
|
|
78
193
|
}
|
|
79
194
|
function SignOutSection() {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (fullPage) {
|
|
90
|
-
return (_jsx(Container, { size: 'sm', children: inner }));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return inner;
|
|
195
|
+
const user = (0, import__.useUser)();
|
|
196
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
197
|
+
SettingSection,
|
|
198
|
+
{
|
|
199
|
+
title: "Sign out",
|
|
200
|
+
desc: "Sign out of your account on this device.",
|
|
201
|
+
buttonVariant: "secondary",
|
|
202
|
+
buttonText: "Sign Out",
|
|
203
|
+
onButtonClick: () => user?.signOut()
|
|
94
204
|
}
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
function AccountSettings({ fullPage = false }) {
|
|
208
|
+
const user = (0, import__.useUser)();
|
|
209
|
+
if (!user) {
|
|
210
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "signedOut", fullPage });
|
|
211
|
+
}
|
|
212
|
+
const inner = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: fullPage ? "1rem" : 0, display: "flex", flexDirection: "column", gap: "1.5rem" }, children: [
|
|
213
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
214
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", style: { marginBottom: "0.5rem", fontWeight: "700" }, children: "Account Settings" }),
|
|
215
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { variant: "secondary", children: "Manage your account" })
|
|
216
|
+
] }),
|
|
217
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProfileSection, {}),
|
|
218
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmailVerificationSection, {}),
|
|
219
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(PasswordSection, {}),
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SignOutSection, {})
|
|
221
|
+
] });
|
|
222
|
+
if (fullPage) {
|
|
223
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Container, { size: "sm", children: inner });
|
|
224
|
+
} else {
|
|
225
|
+
return inner;
|
|
226
|
+
}
|
|
95
227
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function AuthPage({ fullPage, type }: {
|
|
2
4
|
fullPage?: boolean;
|
|
3
5
|
type: 'sign-in' | 'sign-up';
|
|
4
|
-
}):
|
|
6
|
+
}): react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { AuthPage as default };
|
|
@@ -1,20 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
"use client";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// src/components-page/auth-page.tsx
|
|
33
|
+
var auth_page_exports = {};
|
|
34
|
+
__export(auth_page_exports, {
|
|
35
|
+
default: () => AuthPage
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(auth_page_exports);
|
|
38
|
+
var import_credential_sign_in = __toESM(require("../components/credential-sign-in"));
|
|
39
|
+
var import_separator_with_text = __toESM(require("../components/separator-with-text"));
|
|
40
|
+
var import_oauth_group = __toESM(require("../components/oauth-group"));
|
|
41
|
+
var import_card_frame = __toESM(require("../components/card-frame"));
|
|
42
|
+
var import__ = require("..");
|
|
43
|
+
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
44
|
+
var import_components_core = require("../components-core");
|
|
45
|
+
var import_magic_link_sign_in = __toESM(require("../components/magic-link-sign-in"));
|
|
46
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
47
|
+
function AuthPage({
|
|
48
|
+
fullPage = false,
|
|
49
|
+
type
|
|
50
|
+
}) {
|
|
51
|
+
const stackApp = (0, import__.useStackApp)();
|
|
52
|
+
const user = (0, import__.useUser)();
|
|
53
|
+
const project = stackApp.useProject();
|
|
54
|
+
if (user) {
|
|
55
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "signedIn", fullPage });
|
|
56
|
+
}
|
|
57
|
+
const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter((p) => p.enabled).length > 0;
|
|
58
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card_frame.default, { fullPage, children: [
|
|
59
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { textAlign: "center", marginBottom: "1.5rem" }, children: [
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Text, { size: "xl", as: "h2", children: type === "sign-in" ? "Sign in to your account" : "Create a new account" }),
|
|
61
|
+
type === "sign-in" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
|
|
62
|
+
"Don't have an account? ",
|
|
63
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Link, { href: stackApp.urls.signUp, children: "Sign up" })
|
|
64
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Text, { children: [
|
|
65
|
+
"Already have an account? ",
|
|
66
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Link, { href: stackApp.urls.signIn, children: "Sign in" })
|
|
67
|
+
] })
|
|
68
|
+
] }),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_group.default, { type: "signin" }),
|
|
70
|
+
enableSeparator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_separator_with_text.default, { text: "Or continue with" }),
|
|
71
|
+
project.credentialEnabled && project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Tabs, { defaultValue: "magic-link", children: [
|
|
72
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.TabsList, { children: [
|
|
73
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsTrigger, { value: "magic-link", children: "Magic Link" }),
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsTrigger, { value: "password", children: "Password" })
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsContent, { value: "magic-link", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in.default, {}) }),
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.TabsContent, { value: "password", children: type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.CredentialSignUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in.default, {}) })
|
|
78
|
+
] }) : project.credentialEnabled ? type === "sign-up" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.CredentialSignUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_credential_sign_in.default, {}) : project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_magic_link_sign_in.default, {}) : null
|
|
79
|
+
] });
|
|
20
80
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function EmailVerification({ searchParams: { code, }, fullPage, }: {
|
|
4
|
+
searchParams?: Record<string, string>;
|
|
5
|
+
fullPage?: boolean;
|
|
6
|
+
}): react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { EmailVerification as default };
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function EmailVerification({ searchParams: { code, }, fullPage, }: {
|
|
2
4
|
searchParams?: Record<string, string>;
|
|
3
5
|
fullPage?: boolean;
|
|
4
|
-
}):
|
|
6
|
+
}): react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { EmailVerification as default };
|
|
@@ -1,29 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
"use client";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// src/components-page/email-verification.tsx
|
|
33
|
+
var email_verification_exports = {};
|
|
34
|
+
__export(email_verification_exports, {
|
|
35
|
+
default: () => EmailVerification
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(email_verification_exports);
|
|
38
|
+
var import_react = require("react");
|
|
39
|
+
var import__ = require("..");
|
|
40
|
+
var import_message_card = __toESM(require("../components/message-card"));
|
|
41
|
+
var import_redirect_message_card = __toESM(require("../components/redirect-message-card"));
|
|
42
|
+
var import_stack_shared = require("@stackframe/stack-shared");
|
|
43
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
44
|
+
function EmailVerification({
|
|
45
|
+
searchParams: {
|
|
46
|
+
code = ""
|
|
47
|
+
} = {},
|
|
48
|
+
fullPage = false
|
|
49
|
+
}) {
|
|
50
|
+
const stackApp = (0, import__.useStackApp)();
|
|
51
|
+
const invalidJsx = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Invalid Verification Link", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Please check if you have the correct link. If you continue to have issues, please contact support." }) });
|
|
52
|
+
const expiredJsx = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_message_card.default, { title: "Expired Verification Link", fullPage, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Your email verification link has expired. Please request a new verification link from your account settings." }) });
|
|
53
|
+
if (!code) {
|
|
54
|
+
return invalidJsx;
|
|
55
|
+
}
|
|
56
|
+
const error = (0, import_react.use)(stackApp.verifyEmail(code));
|
|
57
|
+
if (error instanceof import_stack_shared.KnownErrors.EmailVerificationCodeNotFound) {
|
|
58
|
+
return invalidJsx;
|
|
59
|
+
} else if (error instanceof import_stack_shared.KnownErrors.EmailVerificationCodeExpired) {
|
|
60
|
+
return expiredJsx;
|
|
61
|
+
} else if (error instanceof import_stack_shared.KnownErrors.EmailVerificationCodeAlreadyUsed) {
|
|
62
|
+
} else if (error) {
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "emailVerified", fullPage });
|
|
29
66
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function ForgotPassword({ fullPage }: {
|
|
2
4
|
fullPage?: boolean;
|
|
3
|
-
}):
|
|
5
|
+
}): react_jsx_runtime.JSX.Element;
|
|
6
|
+
|
|
7
|
+
export { ForgotPassword as default };
|