@stackframe/react 2.8.11 → 2.8.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/components/api-key-dialogs.js +5 -4
  3. package/dist/components/api-key-dialogs.js.map +1 -1
  4. package/dist/components/credential-sign-in.js +4 -4
  5. package/dist/components/credential-sign-up.js +3 -3
  6. package/dist/components/elements/maybe-full-page.js +1 -1
  7. package/dist/components/elements/sidebar-layout.js +1 -1
  8. package/dist/components/magic-link-sign-in.js +6 -6
  9. package/dist/components/magic-link-sign-in.js.map +1 -1
  10. package/dist/components/message-cards/known-error-message-card.js +2 -2
  11. package/dist/components/message-cards/message-card.js +1 -1
  12. package/dist/components/message-cards/predefined-message-card.js +3 -3
  13. package/dist/components/oauth-button-group.js +2 -2
  14. package/dist/components/oauth-button.js +27 -16
  15. package/dist/components/oauth-button.js.map +1 -1
  16. package/dist/components/passkey-button.js +2 -2
  17. package/dist/components/profile-image-editor.js +87 -34
  18. package/dist/components/profile-image-editor.js.map +1 -1
  19. package/dist/components/selected-team-switcher.js +41 -9
  20. package/dist/components/selected-team-switcher.js.map +1 -1
  21. package/dist/components/{iframe-preventer.js → use-in-iframe.js} +9 -19
  22. package/dist/components/use-in-iframe.js.map +1 -0
  23. package/dist/components/user-button.js +41 -8
  24. package/dist/components/user-button.js.map +1 -1
  25. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +57 -12
  26. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  27. package/dist/components-page/account-settings/api-keys/api-keys-page.js +100 -12
  28. package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  29. package/dist/components-page/account-settings/editable-text.js +1 -1
  30. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js +12 -12
  31. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  32. package/dist/components-page/account-settings/email-and-auth/emails-section.js +15 -6
  33. package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  34. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +18 -5
  35. package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  36. package/dist/components-page/account-settings/email-and-auth/otp-section.js +18 -5
  37. package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  38. package/dist/components-page/account-settings/email-and-auth/passkey-section.js +19 -6
  39. package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  40. package/dist/components-page/account-settings/email-and-auth/password-section.js +20 -7
  41. package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  42. package/dist/components-page/account-settings/profile-page/profile-page.js +18 -8
  43. package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  44. package/dist/components-page/account-settings/settings/delete-account-section.js +19 -10
  45. package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  46. package/dist/components-page/account-settings/settings/settings-page.js +6 -6
  47. package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
  48. package/dist/components-page/account-settings/settings/sign-out-section.js +15 -6
  49. package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  50. package/dist/components-page/account-settings/teams/leave-team-section.js +3 -3
  51. package/dist/components-page/account-settings/teams/team-api-keys-section.js +9 -6
  52. package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  53. package/dist/components-page/account-settings/teams/team-creation-page.js +19 -10
  54. package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  55. package/dist/components-page/account-settings/teams/team-display-name-section.js +4 -4
  56. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  57. package/dist/components-page/account-settings/teams/team-member-list-section.js +7 -4
  58. package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  59. package/dist/components-page/account-settings/teams/team-page.js +8 -8
  60. package/dist/components-page/account-settings/teams/team-profile-image-section.js +4 -4
  61. package/dist/components-page/account-settings/teams/team-profile-user-section.js +4 -4
  62. package/dist/components-page/account-settings.js +29 -21
  63. package/dist/components-page/account-settings.js.map +1 -1
  64. package/dist/components-page/auth-page.js +16 -17
  65. package/dist/components-page/auth-page.js.map +1 -1
  66. package/dist/components-page/cli-auth-confirm.js +3 -3
  67. package/dist/components-page/email-verification.js +6 -6
  68. package/dist/components-page/email-verification.js.map +1 -1
  69. package/dist/components-page/error-page.js +9 -9
  70. package/dist/components-page/error-page.js.map +1 -1
  71. package/dist/components-page/forgot-password.js +6 -6
  72. package/dist/components-page/magic-link-callback.js +7 -7
  73. package/dist/components-page/magic-link-callback.js.map +1 -1
  74. package/dist/components-page/mfa.js +190 -0
  75. package/dist/components-page/mfa.js.map +1 -0
  76. package/dist/components-page/oauth-callback.js +4 -4
  77. package/dist/components-page/password-reset.js +9 -9
  78. package/dist/components-page/password-reset.js.map +1 -1
  79. package/dist/components-page/sign-in.js +3 -2
  80. package/dist/components-page/sign-in.js.map +1 -1
  81. package/dist/components-page/sign-out.js +2 -2
  82. package/dist/components-page/sign-up.js +1 -1
  83. package/dist/components-page/stack-handler.js +25 -14
  84. package/dist/components-page/stack-handler.js.map +1 -1
  85. package/dist/components-page/team-creation.js +4 -4
  86. package/dist/components-page/team-invitation.js +6 -6
  87. package/dist/components-page/team-invitation.js.map +1 -1
  88. package/dist/esm/components/api-key-dialogs.js +5 -4
  89. package/dist/esm/components/api-key-dialogs.js.map +1 -1
  90. package/dist/esm/components/credential-sign-in.js +4 -4
  91. package/dist/esm/components/credential-sign-up.js +3 -3
  92. package/dist/esm/components/elements/maybe-full-page.js +1 -1
  93. package/dist/esm/components/elements/sidebar-layout.js +1 -1
  94. package/dist/esm/components/magic-link-sign-in.js +6 -6
  95. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  96. package/dist/esm/components/message-cards/known-error-message-card.js +2 -2
  97. package/dist/esm/components/message-cards/message-card.js +1 -1
  98. package/dist/esm/components/message-cards/predefined-message-card.js +3 -3
  99. package/dist/esm/components/oauth-button-group.js +2 -2
  100. package/dist/esm/components/oauth-button.js +28 -17
  101. package/dist/esm/components/oauth-button.js.map +1 -1
  102. package/dist/esm/components/passkey-button.js +2 -2
  103. package/dist/esm/components/profile-image-editor.js +86 -34
  104. package/dist/esm/components/profile-image-editor.js.map +1 -1
  105. package/dist/esm/components/selected-team-switcher.js +41 -9
  106. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  107. package/dist/esm/components/use-in-iframe.js +18 -0
  108. package/dist/esm/components/use-in-iframe.js.map +1 -0
  109. package/dist/esm/components/user-button.js +41 -8
  110. package/dist/esm/components/user-button.js.map +1 -1
  111. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +57 -12
  112. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  113. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js +100 -12
  114. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  115. package/dist/esm/components-page/account-settings/editable-text.js +1 -1
  116. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js +12 -12
  117. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  118. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +15 -6
  119. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  120. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +18 -5
  121. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  122. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js +18 -5
  123. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  124. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js +19 -6
  125. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  126. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +20 -7
  127. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  128. package/dist/esm/components-page/account-settings/profile-page/profile-page.js +18 -8
  129. package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  130. package/dist/esm/components-page/account-settings/settings/delete-account-section.js +19 -10
  131. package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  132. package/dist/esm/components-page/account-settings/settings/settings-page.js +6 -6
  133. package/dist/esm/components-page/account-settings/settings/settings-page.js.map +1 -1
  134. package/dist/esm/components-page/account-settings/settings/sign-out-section.js +15 -6
  135. package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  136. package/dist/esm/components-page/account-settings/teams/leave-team-section.js +3 -3
  137. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +9 -6
  138. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  139. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +19 -10
  140. package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  141. package/dist/esm/components-page/account-settings/teams/team-display-name-section.js +4 -4
  142. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  143. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js +7 -4
  144. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  145. package/dist/esm/components-page/account-settings/teams/team-page.js +8 -8
  146. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js +4 -4
  147. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js +4 -4
  148. package/dist/esm/components-page/account-settings.js +29 -21
  149. package/dist/esm/components-page/account-settings.js.map +1 -1
  150. package/dist/esm/components-page/auth-page.js +16 -17
  151. package/dist/esm/components-page/auth-page.js.map +1 -1
  152. package/dist/esm/components-page/cli-auth-confirm.js +3 -3
  153. package/dist/esm/components-page/email-verification.js +6 -6
  154. package/dist/esm/components-page/email-verification.js.map +1 -1
  155. package/dist/esm/components-page/error-page.js +9 -9
  156. package/dist/esm/components-page/error-page.js.map +1 -1
  157. package/dist/esm/components-page/forgot-password.js +6 -6
  158. package/dist/esm/components-page/magic-link-callback.js +7 -7
  159. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  160. package/dist/esm/components-page/mfa.js +174 -0
  161. package/dist/esm/components-page/mfa.js.map +1 -0
  162. package/dist/esm/components-page/oauth-callback.js +4 -4
  163. package/dist/esm/components-page/password-reset.js +9 -9
  164. package/dist/esm/components-page/password-reset.js.map +1 -1
  165. package/dist/esm/components-page/sign-in.js +3 -2
  166. package/dist/esm/components-page/sign-in.js.map +1 -1
  167. package/dist/esm/components-page/sign-out.js +2 -2
  168. package/dist/esm/components-page/sign-up.js +1 -1
  169. package/dist/esm/components-page/stack-handler.js +25 -14
  170. package/dist/esm/components-page/stack-handler.js.map +1 -1
  171. package/dist/esm/components-page/team-creation.js +4 -4
  172. package/dist/esm/components-page/team-invitation.js +6 -6
  173. package/dist/esm/components-page/team-invitation.js.map +1 -1
  174. package/dist/esm/generated/global-css.js +1 -1
  175. package/dist/esm/generated/global-css.js.map +1 -1
  176. package/dist/esm/generated/quetzal-translations.js +3574 -2364
  177. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  178. package/dist/esm/index.js +22 -22
  179. package/dist/esm/lib/auth.js +3 -3
  180. package/dist/esm/lib/auth.js.map +1 -1
  181. package/dist/esm/lib/cookie.js +1 -129
  182. package/dist/esm/lib/cookie.js.map +1 -1
  183. package/dist/esm/lib/hooks.js +1 -1
  184. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +8 -8
  185. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  186. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +57 -26
  187. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  188. package/dist/esm/lib/stack-app/apps/implementations/common.js +2 -1
  189. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
  190. package/dist/esm/lib/stack-app/apps/implementations/index.js +3 -3
  191. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js +35 -17
  192. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  193. package/dist/esm/lib/stack-app/apps/index.js +3 -3
  194. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -1
  195. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -1
  196. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  197. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -1
  198. package/dist/esm/lib/stack-app/common.js.map +1 -1
  199. package/dist/esm/lib/stack-app/index.js +2 -2
  200. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
  201. package/dist/esm/lib/stack-app/users/index.js.map +1 -1
  202. package/dist/esm/lib/translations.js +1 -1
  203. package/dist/esm/providers/stack-provider-client.js +2 -2
  204. package/dist/esm/providers/stack-provider.js +2 -2
  205. package/dist/esm/providers/theme-provider.js +3 -3
  206. package/dist/esm/providers/translation-provider.js +2 -2
  207. package/dist/esm/utils/browser-script.js +1 -1
  208. package/dist/generated/global-css.js +1 -1
  209. package/dist/generated/global-css.js.map +1 -1
  210. package/dist/generated/quetzal-translations.js +3574 -2364
  211. package/dist/generated/quetzal-translations.js.map +1 -1
  212. package/dist/index.d.mts +74 -3
  213. package/dist/index.d.ts +74 -3
  214. package/dist/index.js +23 -23
  215. package/dist/index.js.map +1 -1
  216. package/dist/lib/auth.js +3 -3
  217. package/dist/lib/auth.js.map +1 -1
  218. package/dist/lib/cookie.js +4 -132
  219. package/dist/lib/cookie.js.map +1 -1
  220. package/dist/lib/hooks.js +1 -1
  221. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +8 -8
  222. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  223. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +57 -26
  224. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  225. package/dist/lib/stack-app/apps/implementations/common.js +2 -1
  226. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
  227. package/dist/lib/stack-app/apps/implementations/index.js +3 -3
  228. package/dist/lib/stack-app/apps/implementations/server-app-impl.js +35 -17
  229. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  230. package/dist/lib/stack-app/apps/index.js +3 -3
  231. package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -1
  232. package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -1
  233. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  234. package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -1
  235. package/dist/lib/stack-app/common.js.map +1 -1
  236. package/dist/lib/stack-app/index.js +2 -2
  237. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
  238. package/dist/lib/stack-app/users/index.js.map +1 -1
  239. package/dist/lib/translations.js +1 -1
  240. package/dist/providers/stack-provider-client.js +2 -2
  241. package/dist/providers/stack-provider.js +2 -2
  242. package/dist/providers/theme-provider.js +3 -3
  243. package/dist/providers/translation-provider.js +2 -2
  244. package/dist/utils/browser-script.js +1 -1
  245. package/package.json +4 -4
  246. package/dist/components/iframe-preventer.js.map +0 -1
  247. package/dist/esm/components/iframe-preventer.js +0 -28
  248. package/dist/esm/components/iframe-preventer.js.map +0 -1
@@ -3,19 +3,19 @@ import { StackAssertionError } from "@stackframe/stack-shared/dist/utils/errors"
3
3
  import { filterUndefined } from "@stackframe/stack-shared/dist/utils/objects";
4
4
  import { getRelativePart } from "@stackframe/stack-shared/dist/utils/urls";
5
5
  import { useMemo } from "react";
6
- import { SignIn, SignUp } from "..";
7
- import { IframePreventer } from "../components/iframe-preventer";
8
- import { MessageCard } from "../components/message-cards/message-card";
9
- import { AccountSettings } from "./account-settings";
10
- import { CliAuthConfirmation } from "./cli-auth-confirm";
11
- import { EmailVerification } from "./email-verification";
12
- import { ErrorPage } from "./error-page";
13
- import { ForgotPassword } from "./forgot-password";
14
- import { MagicLinkCallback } from "./magic-link-callback";
15
- import { OAuthCallback } from "./oauth-callback";
16
- import { PasswordReset } from "./password-reset";
17
- import { SignOut } from "./sign-out";
18
- import { TeamInvitation } from "./team-invitation";
6
+ import { SignIn, SignUp } from "../index.js";
7
+ import { MessageCard } from "../components/message-cards/message-card.js";
8
+ import { AccountSettings } from "./account-settings.js";
9
+ import { CliAuthConfirmation } from "./cli-auth-confirm.js";
10
+ import { EmailVerification } from "./email-verification.js";
11
+ import { ErrorPage } from "./error-page.js";
12
+ import { ForgotPassword } from "./forgot-password.js";
13
+ import { MagicLinkCallback } from "./magic-link-callback.js";
14
+ import { OAuthCallback } from "./oauth-callback.js";
15
+ import { MFA } from "./mfa.js";
16
+ import { PasswordReset } from "./password-reset.js";
17
+ import { SignOut } from "./sign-out.js";
18
+ import { TeamInvitation } from "./team-invitation.js";
19
19
  import { jsx } from "react/jsx-runtime";
20
20
  var availablePaths = {
21
21
  signIn: "sign-in",
@@ -29,6 +29,7 @@ var availablePaths = {
29
29
  teamInvitation: "team-invitation",
30
30
  accountSettings: "account-settings",
31
31
  cliAuthConfirm: "cli-auth-confirm",
32
+ mfa: "mfa",
32
33
  error: "error"
33
34
  };
34
35
  var pathAliases = {
@@ -164,6 +165,16 @@ function renderComponent(props) {
164
165
  }
165
166
  );
166
167
  }
168
+ case availablePaths.mfa: {
169
+ redirectIfNotHandler?.("mfa");
170
+ return /* @__PURE__ */ jsx(
171
+ MFA,
172
+ {
173
+ fullPage,
174
+ ...filterUndefinedINU(componentProps?.MFA)
175
+ }
176
+ );
177
+ }
167
178
  default: {
168
179
  if (Object.values(availablePaths).includes(path)) {
169
180
  throw new StackAssertionError(`Path alias ${path} not included in switch statement, but in availablePaths?`, { availablePaths });
@@ -222,7 +233,7 @@ function ReactStackHandler(props) {
222
233
  window.location.href = result.redirect;
223
234
  return null;
224
235
  }
225
- return /* @__PURE__ */ jsx(IframePreventer, { children: result });
236
+ return result;
226
237
  }
227
238
  var stack_handler_default = ReactStackHandler;
228
239
  function filterUndefinedINU(value) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-page/stack-handler.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { StackAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { FilterUndefined, filterUndefined, pick } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { getRelativePart } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { useMemo } from 'react';\nimport { SignIn, SignUp, StackServerApp } from \"..\";\nimport { IframePreventer } from \"../components/iframe-preventer\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { HandlerUrls, StackClientApp } from \"../lib/stack-app\";\nimport { AccountSettings } from \"./account-settings\";\nimport { CliAuthConfirmation } from \"./cli-auth-confirm\";\nimport { EmailVerification } from \"./email-verification\";\nimport { ErrorPage } from \"./error-page\";\nimport { ForgotPassword } from \"./forgot-password\";\nimport { MagicLinkCallback } from \"./magic-link-callback\";\nimport { OAuthCallback } from \"./oauth-callback\";\nimport { PasswordReset } from \"./password-reset\";\nimport { SignOut } from \"./sign-out\";\nimport { TeamInvitation } from \"./team-invitation\";\n\ntype Components = {\n SignIn: typeof SignIn,\n SignUp: typeof SignUp,\n EmailVerification: typeof EmailVerification,\n PasswordReset: typeof PasswordReset,\n ForgotPassword: typeof ForgotPassword,\n SignOut: typeof SignOut,\n OAuthCallback: typeof OAuthCallback,\n MagicLinkCallback: typeof MagicLinkCallback,\n TeamInvitation: typeof TeamInvitation,\n ErrorPage: typeof ErrorPage,\n AccountSettings: typeof AccountSettings,\n CliAuthConfirmation: typeof CliAuthConfirmation,\n};\n\ntype RouteProps = {\n params: Promise<{ stack?: string[] }> | { stack?: string[] },\n searchParams: Promise<Record<string, string>> | Record<string, string>,\n};\n\nconst next15DeprecationWarning = \"DEPRECATION WARNING: Next.js 15 disallows spreading the props argument of <StackHandler /> like `{...props}`, so you must now explicitly pass them in the `routeProps` argument: `routeProps={props}`. You can fix this by updating the code in the file `app/handler/[...stack]/route.tsx`.\";\n\nconst availablePaths = {\n signIn: 'sign-in',\n signUp: 'sign-up',\n emailVerification: 'email-verification',\n passwordReset: 'password-reset',\n forgotPassword: 'forgot-password',\n signOut: 'sign-out',\n oauthCallback: 'oauth-callback',\n magicLinkCallback: 'magic-link-callback',\n teamInvitation: 'team-invitation',\n accountSettings: 'account-settings',\n cliAuthConfirm: 'cli-auth-confirm',\n error: 'error',\n} as const;\n\nconst pathAliases = {\n // also includes the uppercase and non-dashed versions\n ...Object.fromEntries(Object.entries(availablePaths).map(([key, value]) => [value, value])),\n \"log-in\": availablePaths.signIn,\n \"register\": availablePaths.signUp,\n} as const;\n\ntype BaseHandlerProps = {\n fullPage: boolean,\n componentProps?: {\n [K in keyof Components]?: Parameters<Components[K]>[0];\n },\n};\n\nfunction renderComponent(props: {\n path: string,\n searchParams: Record<string, string>,\n fullPage: boolean,\n componentProps?: BaseHandlerProps['componentProps'],\n redirectIfNotHandler?: (name: keyof HandlerUrls) => void,\n onNotFound: () => any,\n app: StackClientApp<any> | StackServerApp<any>,\n}) {\n const { path, searchParams, fullPage, componentProps, redirectIfNotHandler, onNotFound, app } = props;\n\n switch (path) {\n case availablePaths.signIn: {\n redirectIfNotHandler?.('signIn');\n return <SignIn\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignIn)}\n />;\n }\n case availablePaths.signUp: {\n redirectIfNotHandler?.('signUp');\n return <SignUp\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignUp)}\n />;\n }\n case availablePaths.emailVerification: {\n redirectIfNotHandler?.('emailVerification');\n return <EmailVerification\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.EmailVerification)}\n />;\n }\n case availablePaths.passwordReset: {\n redirectIfNotHandler?.('passwordReset');\n return <PasswordReset\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.PasswordReset)}\n />;\n }\n case availablePaths.forgotPassword: {\n redirectIfNotHandler?.('forgotPassword');\n return <ForgotPassword\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ForgotPassword)}\n />;\n }\n case availablePaths.signOut: {\n redirectIfNotHandler?.('signOut');\n return <SignOut\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.SignOut)}\n />;\n }\n case availablePaths.oauthCallback: {\n redirectIfNotHandler?.('oauthCallback');\n return <OAuthCallback\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.OAuthCallback)}\n />;\n }\n case availablePaths.magicLinkCallback: {\n redirectIfNotHandler?.('magicLinkCallback');\n return <MagicLinkCallback\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MagicLinkCallback)}\n />;\n }\n case availablePaths.teamInvitation: {\n redirectIfNotHandler?.('teamInvitation');\n return <TeamInvitation\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.TeamInvitation)}\n />;\n }\n case availablePaths.accountSettings: {\n return <AccountSettings\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.AccountSettings)}\n />;\n }\n case availablePaths.error: {\n return <ErrorPage\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ErrorPage)}\n />;\n }\n case availablePaths.cliAuthConfirm: {\n return <CliAuthConfirmation\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.CliAuthConfirmation)}\n />;\n }\n default: {\n if (Object.values(availablePaths).includes(path as any)) {\n throw new StackAssertionError(`Path alias ${path} not included in switch statement, but in availablePaths?`, { availablePaths });\n }\n for (const [key, value] of Object.entries(pathAliases)) {\n if (path === key.toLowerCase().replaceAll('-', '')) {\n const redirectUrl = `${app.urls.handler}/${value}?${new URLSearchParams(searchParams).toString()}`;\n return { redirect: redirectUrl };\n }\n }\n return onNotFound();\n }\n }\n}\n\n\nfunction ReactStackHandler<HasTokenStore extends boolean>(props: BaseHandlerProps & {\n app: StackClientApp<HasTokenStore>,\n location: string, // Path like \"/abc/def\"\n}) {\n const { path, searchParams } = useMemo(() => {\n // Get search string from window.location since it's not included in currentLocation\n const search = window.location.search;\n const handlerPath = new URL(props.app.urls.handler, window.location.origin).pathname;\n\n // Remove the handler base path to get the relative path\n const relativePath = props.location.startsWith(handlerPath)\n ? props.location.slice(handlerPath.length).replace(/^\\/+/, '')\n : props.location.replace(/^\\/+/, '');\n\n return {\n path: relativePath,\n searchParams: Object.fromEntries(new URLSearchParams(search).entries())\n };\n }, [props.location, props.app.urls.handler]);\n\n const redirectIfNotHandler = (name: keyof HandlerUrls) => {\n const url = props.app.urls[name];\n const handlerUrl = props.app.urls.handler;\n\n if (url !== handlerUrl && url.startsWith(handlerUrl + \"/\")) {\n return;\n }\n\n const urlObj = new URL(url, window.location.origin);\n for (const [key, value] of Object.entries(searchParams)) {\n urlObj.searchParams.set(key, value);\n }\n\n window.location.href = getRelativePart(urlObj);\n };\n\n const result = renderComponent({\n path,\n searchParams,\n fullPage: props.fullPage,\n componentProps: props.componentProps,\n redirectIfNotHandler,\n onNotFound: () => (\n <MessageCard\n title=\"Page does not exist\"\n fullPage={props.fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => props.app.redirectToHome()}\n >\n The page you are looking for could not be found. Please check the URL and try again.\n </MessageCard>\n ),\n app: props.app,\n });\n\n if (result && 'redirect' in result) {\n window.location.href = result.redirect;\n return null;\n }\n\n return (\n <IframePreventer>\n {result}\n </IframePreventer>\n );\n}\n\n\nexport default ReactStackHandler;\n\n// filter undefined values in object. if object itself is undefined, return undefined\nfunction filterUndefinedINU<T extends {}>(value: T | undefined): FilterUndefined<T> | undefined {\n return value === undefined ? value : filterUndefined(value);\n}\n"],"mappings":";AAIA,SAAS,2BAA2B;AACpC,SAA0B,uBAA6B;AACvD,SAAS,uBAAuB;AAChC,SAAS,eAAe;AACxB,SAAS,QAAQ,cAA8B;AAC/C,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAmElB;AA3Cb,IAAM,iBAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,OAAO;AACT;AAEA,IAAM,cAAc;AAAA;AAAA,EAElB,GAAG,OAAO,YAAY,OAAO,QAAQ,cAAc,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;AAAA,EAC1F,UAAU,eAAe;AAAA,EACzB,YAAY,eAAe;AAC7B;AASA,SAAS,gBAAgB,OAQtB;AACD,QAAM,EAAE,MAAM,cAAc,UAAU,gBAAgB,sBAAsB,YAAY,IAAI,IAAI;AAEhG,UAAQ,MAAM;AAAA,IACZ,KAAK,eAAe,QAAQ;AAC1B,6BAAuB,QAAQ;AAC/B,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA,mBAAiB;AAAA,UAChB,GAAG,mBAAmB,gBAAgB,MAAM;AAAA;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,KAAK,eAAe,QAAQ;AAC1B,6BAAuB,QAAQ;AAC/B,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA,mBAAiB;AAAA,UAChB,GAAG,mBAAmB,gBAAgB,MAAM;AAAA;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,KAAK,eAAe,mBAAmB;AACrC,6BAAuB,mBAAmB;AAC1C,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA;AAAA,UACC,GAAG,mBAAmB,gBAAgB,iBAAiB;AAAA;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,KAAK,eAAe,eAAe;AACjC,6BAAuB,eAAe;AACtC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA;AAAA,UACC,GAAG,mBAAmB,gBAAgB,aAAa;AAAA;AAAA,MACtD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,gBAAgB;AAClC,6BAAuB,gBAAgB;AACvC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACC,GAAG,mBAAmB,gBAAgB,cAAc;AAAA;AAAA,MACvD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,SAAS;AAC3B,6BAAuB,SAAS;AAChC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACC,GAAG,mBAAmB,gBAAgB,OAAO;AAAA;AAAA,MAChD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,eAAe;AACjC,6BAAuB,eAAe;AACtC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACC,GAAG,mBAAmB,gBAAgB,aAAa;AAAA;AAAA,MACtD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,mBAAmB;AACrC,6BAAuB,mBAAmB;AAC1C,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA;AAAA,UACC,GAAG,mBAAmB,gBAAgB,iBAAiB;AAAA;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,KAAK,eAAe,gBAAgB;AAClC,6BAAuB,gBAAgB;AACvC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA;AAAA,UACC,GAAG,mBAAmB,gBAAgB,cAAc;AAAA;AAAA,MACvD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,iBAAiB;AACnC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACC,GAAG,mBAAmB,gBAAgB,eAAe;AAAA;AAAA,MACxD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,OAAO;AACzB,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACA;AAAA,UACC,GAAG,mBAAmB,gBAAgB,SAAS;AAAA;AAAA,MAClD;AAAA,IACF;AAAA,IACA,KAAK,eAAe,gBAAgB;AAClC,aAAO;AAAA,QAAC;AAAA;AAAA,UACN;AAAA,UACC,GAAG,mBAAmB,gBAAgB,mBAAmB;AAAA;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,SAAS;AACP,UAAI,OAAO,OAAO,cAAc,EAAE,SAAS,IAAW,GAAG;AACvD,cAAM,IAAI,oBAAoB,cAAc,IAAI,6DAA6D,EAAE,eAAe,CAAC;AAAA,MACjI;AACA,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,YAAI,SAAS,IAAI,YAAY,EAAE,WAAW,KAAK,EAAE,GAAG;AAClD,gBAAM,cAAc,GAAG,IAAI,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,gBAAgB,YAAY,EAAE,SAAS,CAAC;AAChG,iBAAO,EAAE,UAAU,YAAY;AAAA,QACjC;AAAA,MACF;AACA,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AACF;AAGA,SAAS,kBAAiD,OAGvD;AACD,QAAM,EAAE,MAAM,aAAa,IAAI,QAAQ,MAAM;AAE3C,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,cAAc,IAAI,IAAI,MAAM,IAAI,KAAK,SAAS,OAAO,SAAS,MAAM,EAAE;AAG5E,UAAM,eAAe,MAAM,SAAS,WAAW,WAAW,IACtD,MAAM,SAAS,MAAM,YAAY,MAAM,EAAE,QAAQ,QAAQ,EAAE,IAC3D,MAAM,SAAS,QAAQ,QAAQ,EAAE;AAErC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,cAAc,OAAO,YAAY,IAAI,gBAAgB,MAAM,EAAE,QAAQ,CAAC;AAAA,IACxE;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,MAAM,IAAI,KAAK,OAAO,CAAC;AAE3C,QAAM,uBAAuB,CAAC,SAA4B;AACxD,UAAM,MAAM,MAAM,IAAI,KAAK,IAAI;AAC/B,UAAM,aAAa,MAAM,IAAI,KAAK;AAElC,QAAI,QAAQ,cAAc,IAAI,WAAW,aAAa,GAAG,GAAG;AAC1D;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,IAAI,KAAK,OAAO,SAAS,MAAM;AAClD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACvD,aAAO,aAAa,IAAI,KAAK,KAAK;AAAA,IACpC;AAEA,WAAO,SAAS,OAAO,gBAAgB,MAAM;AAAA,EAC/C;AAEA,QAAM,SAAS,gBAAgB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,gBAAgB,MAAM;AAAA,IACtB;AAAA,IACA,YAAY,MACV;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,mBAAkB;AAAA,QAClB,eAAe,MAAM,MAAM,IAAI,eAAe;AAAA,QAC/C;AAAA;AAAA,IAED;AAAA,IAEF,KAAK,MAAM;AAAA,EACb,CAAC;AAED,MAAI,UAAU,cAAc,QAAQ;AAClC,WAAO,SAAS,OAAO,OAAO;AAC9B,WAAO;AAAA,EACT;AAEA,SACE,oBAAC,mBACE,kBACH;AAEJ;AAGA,IAAO,wBAAQ;AAGf,SAAS,mBAAiC,OAAsD;AAC9F,SAAO,UAAU,SAAY,QAAQ,gBAAgB,KAAK;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-page/stack-handler.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { StackAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { FilterUndefined, filterUndefined, pick } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { getRelativePart } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { useMemo } from 'react';\nimport { SignIn, SignUp, StackServerApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { HandlerUrls, StackClientApp } from \"../lib/stack-app\";\nimport { AccountSettings } from \"./account-settings\";\nimport { CliAuthConfirmation } from \"./cli-auth-confirm\";\nimport { EmailVerification } from \"./email-verification\";\nimport { ErrorPage } from \"./error-page\";\nimport { ForgotPassword } from \"./forgot-password\";\nimport { MagicLinkCallback } from \"./magic-link-callback\";\nimport { OAuthCallback } from \"./oauth-callback\";\nimport { MFA } from \"./mfa\";\nimport { PasswordReset } from \"./password-reset\";\nimport { SignOut } from \"./sign-out\";\nimport { TeamInvitation } from \"./team-invitation\";\n\ntype Components = {\n SignIn: typeof SignIn,\n SignUp: typeof SignUp,\n EmailVerification: typeof EmailVerification,\n PasswordReset: typeof PasswordReset,\n ForgotPassword: typeof ForgotPassword,\n SignOut: typeof SignOut,\n OAuthCallback: typeof OAuthCallback,\n MagicLinkCallback: typeof MagicLinkCallback,\n TeamInvitation: typeof TeamInvitation,\n ErrorPage: typeof ErrorPage,\n AccountSettings: typeof AccountSettings,\n CliAuthConfirmation: typeof CliAuthConfirmation,\n MFA: typeof MFA,\n};\n\ntype RouteProps = {\n params: Promise<{ stack?: string[] }> | { stack?: string[] },\n searchParams: Promise<Record<string, string>> | Record<string, string>,\n};\n\nconst next15DeprecationWarning = \"DEPRECATION WARNING: Next.js 15 disallows spreading the props argument of <StackHandler /> like `{...props}`, so you must now explicitly pass them in the `routeProps` argument: `routeProps={props}`. You can fix this by updating the code in the file `app/handler/[...stack]/route.tsx`.\";\n\nconst availablePaths = {\n signIn: 'sign-in',\n signUp: 'sign-up',\n emailVerification: 'email-verification',\n passwordReset: 'password-reset',\n forgotPassword: 'forgot-password',\n signOut: 'sign-out',\n oauthCallback: 'oauth-callback',\n magicLinkCallback: 'magic-link-callback',\n teamInvitation: 'team-invitation',\n accountSettings: 'account-settings',\n cliAuthConfirm: 'cli-auth-confirm',\n mfa: 'mfa',\n error: 'error',\n} as const;\n\nconst pathAliases = {\n // also includes the uppercase and non-dashed versions\n ...Object.fromEntries(Object.entries(availablePaths).map(([key, value]) => [value, value])),\n \"log-in\": availablePaths.signIn,\n \"register\": availablePaths.signUp,\n} as const;\n\ntype BaseHandlerProps = {\n fullPage: boolean,\n componentProps?: {\n [K in keyof Components]?: Parameters<Components[K]>[0];\n },\n};\n\nfunction renderComponent(props: {\n path: string,\n searchParams: Record<string, string>,\n fullPage: boolean,\n componentProps?: BaseHandlerProps['componentProps'],\n redirectIfNotHandler?: (name: keyof HandlerUrls) => void,\n onNotFound: () => any,\n app: StackClientApp<any> | StackServerApp<any>,\n}) {\n const { path, searchParams, fullPage, componentProps, redirectIfNotHandler, onNotFound, app } = props;\n\n switch (path) {\n case availablePaths.signIn: {\n redirectIfNotHandler?.('signIn');\n return <SignIn\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignIn)}\n />;\n }\n case availablePaths.signUp: {\n redirectIfNotHandler?.('signUp');\n return <SignUp\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignUp)}\n />;\n }\n case availablePaths.emailVerification: {\n redirectIfNotHandler?.('emailVerification');\n return <EmailVerification\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.EmailVerification)}\n />;\n }\n case availablePaths.passwordReset: {\n redirectIfNotHandler?.('passwordReset');\n return <PasswordReset\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.PasswordReset)}\n />;\n }\n case availablePaths.forgotPassword: {\n redirectIfNotHandler?.('forgotPassword');\n return <ForgotPassword\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ForgotPassword)}\n />;\n }\n case availablePaths.signOut: {\n redirectIfNotHandler?.('signOut');\n return <SignOut\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.SignOut)}\n />;\n }\n case availablePaths.oauthCallback: {\n redirectIfNotHandler?.('oauthCallback');\n return <OAuthCallback\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.OAuthCallback)}\n />;\n }\n case availablePaths.magicLinkCallback: {\n redirectIfNotHandler?.('magicLinkCallback');\n return <MagicLinkCallback\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MagicLinkCallback)}\n />;\n }\n case availablePaths.teamInvitation: {\n redirectIfNotHandler?.('teamInvitation');\n return <TeamInvitation\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.TeamInvitation)}\n />;\n }\n case availablePaths.accountSettings: {\n return <AccountSettings\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.AccountSettings)}\n />;\n }\n case availablePaths.error: {\n return <ErrorPage\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ErrorPage)}\n />;\n }\n case availablePaths.cliAuthConfirm: {\n return <CliAuthConfirmation\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.CliAuthConfirmation)}\n />;\n }\n case availablePaths.mfa: {\n redirectIfNotHandler?.('mfa');\n return <MFA\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MFA)}\n />;\n }\n default: {\n if (Object.values(availablePaths).includes(path as any)) {\n throw new StackAssertionError(`Path alias ${path} not included in switch statement, but in availablePaths?`, { availablePaths });\n }\n for (const [key, value] of Object.entries(pathAliases)) {\n if (path === key.toLowerCase().replaceAll('-', '')) {\n const redirectUrl = `${app.urls.handler}/${value}?${new URLSearchParams(searchParams).toString()}`;\n return { redirect: redirectUrl };\n }\n }\n return onNotFound();\n }\n }\n}\n\n\nfunction ReactStackHandler<HasTokenStore extends boolean>(props: BaseHandlerProps & {\n app: StackClientApp<HasTokenStore>,\n location: string, // Path like \"/abc/def\"\n}) {\n const { path, searchParams } = useMemo(() => {\n // Get search string from window.location since it's not included in currentLocation\n const search = window.location.search;\n const handlerPath = new URL(props.app.urls.handler, window.location.origin).pathname;\n\n // Remove the handler base path to get the relative path\n const relativePath = props.location.startsWith(handlerPath)\n ? props.location.slice(handlerPath.length).replace(/^\\/+/, '')\n : props.location.replace(/^\\/+/, '');\n\n return {\n path: relativePath,\n searchParams: Object.fromEntries(new URLSearchParams(search).entries())\n };\n }, [props.location, props.app.urls.handler]);\n\n const redirectIfNotHandler = (name: keyof HandlerUrls) => {\n const url = props.app.urls[name];\n const handlerUrl = props.app.urls.handler;\n\n if (url !== handlerUrl && url.startsWith(handlerUrl + \"/\")) {\n return;\n }\n\n const urlObj = new URL(url, window.location.origin);\n for (const [key, value] of Object.entries(searchParams)) {\n urlObj.searchParams.set(key, value);\n }\n\n window.location.href = getRelativePart(urlObj);\n };\n\n const result = renderComponent({\n path,\n searchParams,\n fullPage: props.fullPage,\n componentProps: props.componentProps,\n redirectIfNotHandler,\n onNotFound: () => (\n <MessageCard\n title=\"Page does not exist\"\n fullPage={props.fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => props.app.redirectToHome()}\n >\n The page you are looking for could not be found. Please check the URL and try again.\n </MessageCard>\n ),\n app: props.app,\n });\n\n if (result && 'redirect' in result) {\n window.location.href = result.redirect;\n return null;\n }\n\n return result;\n}\n\n\nexport default ReactStackHandler;\n\n// filter undefined values in object. if object itself is undefined, return undefined\nfunction filterUndefinedINU<T extends {}>(value: T | undefined): FilterUndefined<T> | undefined {\n return value === undefined ? value : filterUndefined(value);\n}\n"],"mappings":"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","names":[]}
@@ -8,10 +8,10 @@ import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises"
8
8
  import { Button, Input, Label, Typography } from "@stackframe/stack-ui";
9
9
  import { useState } from "react";
10
10
  import { useForm } from "react-hook-form";
11
- import { MessageCard, useStackApp, useUser } from "..";
12
- import { FormWarningText } from "../components/elements/form-warning";
13
- import { MaybeFullPage } from "../components/elements/maybe-full-page";
14
- import { useTranslation } from "../lib/translations";
11
+ import { MessageCard, useStackApp, useUser } from "../index.js";
12
+ import { FormWarningText } from "../components/elements/form-warning.js";
13
+ import { MaybeFullPage } from "../components/elements/maybe-full-page.js";
14
+ import { useTranslation } from "../lib/translations.js";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
16
  function TeamCreation(props) {
17
17
  const { t } = useTranslation();
@@ -7,9 +7,9 @@ import { cacheFunction } from "@stackframe/stack-shared/dist/utils/caches";
7
7
  import { runAsynchronouslyWithAlert } from "@stackframe/stack-shared/dist/utils/promises";
8
8
  import { Typography } from "@stackframe/stack-ui";
9
9
  import React from "react";
10
- import { MessageCard, useStackApp, useUser } from "..";
11
- import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card";
12
- import { useTranslation } from "../lib/translations";
10
+ import { MessageCard, useStackApp, useUser } from "../index.js";
11
+ import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card.js";
12
+ import { useTranslation } from "../lib/translations.js";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
14
14
  var cachedVerifyInvitation = cacheFunction(async (stackApp, code) => {
15
15
  return await stackApp.verifyTeamInvitationCode(code);
@@ -92,11 +92,11 @@ function TeamInvitation({ fullPage = false, searchParams }) {
92
92
  const verificationResult = React.use(cachedVerifyInvitation(stackApp, searchParams.code || ""));
93
93
  if (verificationResult.status === "error") {
94
94
  const error = verificationResult.error;
95
- if (error instanceof KnownErrors.VerificationCodeNotFound) {
95
+ if (KnownErrors.VerificationCodeNotFound.isInstance(error)) {
96
96
  return invalidJsx;
97
- } else if (error instanceof KnownErrors.VerificationCodeExpired) {
97
+ } else if (KnownErrors.VerificationCodeExpired.isInstance(error)) {
98
98
  return expiredJsx;
99
- } else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {
99
+ } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(error)) {
100
100
  return usedJsx;
101
101
  } else {
102
102
  throw error;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-page/team-invitation.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\n\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Typography } from \"@stackframe/stack-ui\";\nimport React from \"react\";\nimport { MessageCard, StackClientApp, useStackApp, useUser } from \"..\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nconst cachedVerifyInvitation = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyTeamInvitationCode(code);\n});\n\nconst cachedGetInvitationDetails = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.getTeamInvitationDetails(code);\n});\n\nfunction TeamInvitationInner(props: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const stackApp = useStackApp();\n const [success, setSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n const details = React.use(cachedGetInvitationDetails(stackApp, props.searchParams.code || ''));\n\n if (errorMessage || details.status === 'error') {\n return (\n <PredefinedMessageCard type=\"unknownError\" fullPage={props.fullPage} />\n );\n }\n\n if (success) {\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={props.fullPage}\n primaryButtonText=\"Go home\"\n primaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>You have successfully joined {details.data.teamDisplayName}</Typography>\n </MessageCard>\n );\n }\n\n\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={props.fullPage}\n primaryButtonText={t('Join')}\n primaryAction={() => runAsynchronouslyWithAlert(async () => {\n const result = await stackApp.acceptTeamInvitation(props.searchParams.code || '');\n if (result.status === 'error') {\n setErrorMessage(result.error.message);\n } else {\n setSuccess(true);\n }\n })}\n secondaryButtonText={t('Ignore')}\n secondaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>You are invited to join {details.data.teamDisplayName}</Typography>\n </MessageCard>\n );\n}\n\nexport function TeamInvitation({ fullPage=false, searchParams }: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const user = useUser();\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title={t('Invalid Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('Please double check if you have the correct team invitation link.')}</Typography>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t('Expired Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('Your team invitation link has expired. Please request a new team invitation link ')}</Typography>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title={t('Used Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('This team invitation link has already been used.')}</Typography>\n </MessageCard>\n );\n\n const code = searchParams.code;\n if (!code) {\n return invalidJsx;\n }\n\n if (!user) {\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={fullPage}\n primaryButtonText={t('Sign in')}\n primaryAction={() => stackApp.redirectToSignIn()}\n secondaryButtonText={t('Cancel')}\n secondaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>{t('Sign in or create an account to join the team.')}</Typography>\n </MessageCard>\n );\n }\n\n const verificationResult = React.use(cachedVerifyInvitation(stackApp, searchParams.code || ''));\n\n if (verificationResult.status === 'error') {\n const error = verificationResult.error;\n if (error instanceof KnownErrors.VerificationCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.VerificationCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {\n return usedJsx;\n } else {\n throw error;\n }\n }\n\n return <TeamInvitationInner fullPage={fullPage} searchParams={searchParams} />;\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components-page/team-invitation.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\n\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Typography } from \"@stackframe/stack-ui\";\nimport React from \"react\";\nimport { MessageCard, StackClientApp, useStackApp, useUser } from \"..\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nconst cachedVerifyInvitation = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyTeamInvitationCode(code);\n});\n\nconst cachedGetInvitationDetails = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.getTeamInvitationDetails(code);\n});\n\nfunction TeamInvitationInner(props: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const stackApp = useStackApp();\n const [success, setSuccess] = React.useState(false);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n const details = React.use(cachedGetInvitationDetails(stackApp, props.searchParams.code || ''));\n\n if (errorMessage || details.status === 'error') {\n return (\n <PredefinedMessageCard type=\"unknownError\" fullPage={props.fullPage} />\n );\n }\n\n if (success) {\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={props.fullPage}\n primaryButtonText=\"Go home\"\n primaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>You have successfully joined {details.data.teamDisplayName}</Typography>\n </MessageCard>\n );\n }\n\n\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={props.fullPage}\n primaryButtonText={t('Join')}\n primaryAction={() => runAsynchronouslyWithAlert(async () => {\n const result = await stackApp.acceptTeamInvitation(props.searchParams.code || '');\n if (result.status === 'error') {\n setErrorMessage(result.error.message);\n } else {\n setSuccess(true);\n }\n })}\n secondaryButtonText={t('Ignore')}\n secondaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>You are invited to join {details.data.teamDisplayName}</Typography>\n </MessageCard>\n );\n}\n\nexport function TeamInvitation({ fullPage=false, searchParams }: { fullPage?: boolean, searchParams: Record<string, string> }) {\n const { t } = useTranslation();\n const user = useUser();\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title={t('Invalid Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('Please double check if you have the correct team invitation link.')}</Typography>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t('Expired Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('Your team invitation link has expired. Please request a new team invitation link ')}</Typography>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title={t('Used Team Invitation Link')} fullPage={fullPage}>\n <Typography>{t('This team invitation link has already been used.')}</Typography>\n </MessageCard>\n );\n\n const code = searchParams.code;\n if (!code) {\n return invalidJsx;\n }\n\n if (!user) {\n return (\n <MessageCard\n title={t('Team invitation')}\n fullPage={fullPage}\n primaryButtonText={t('Sign in')}\n primaryAction={() => stackApp.redirectToSignIn()}\n secondaryButtonText={t('Cancel')}\n secondaryAction={() => stackApp.redirectToHome()}\n >\n <Typography>{t('Sign in or create an account to join the team.')}</Typography>\n </MessageCard>\n );\n }\n\n const verificationResult = React.use(cachedVerifyInvitation(stackApp, searchParams.code || ''));\n\n if (verificationResult.status === 'error') {\n const error = verificationResult.error;\n if (KnownErrors.VerificationCodeNotFound.isInstance(error)) {\n return invalidJsx;\n } else if (KnownErrors.VerificationCodeExpired.isInstance(error)) {\n return expiredJsx;\n } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(error)) {\n return usedJsx;\n } else {\n throw error;\n }\n }\n\n return <TeamInvitationInner fullPage={fullPage} searchParams={searchParams} />;\n};\n"],"mappings":"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","names":[]}