@stackframe/react 2.8.58 → 2.8.59

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 (233) hide show
  1. package/dist/components/api-key-dialogs.js.map +1 -1
  2. package/dist/components/api-key-table.js.map +1 -1
  3. package/dist/components/credential-sign-in.js.map +1 -1
  4. package/dist/components/credential-sign-up.js.map +1 -1
  5. package/dist/components/elements/form-warning.js.map +1 -1
  6. package/dist/components/elements/maybe-full-page.js.map +1 -1
  7. package/dist/components/elements/separator-with-text.js.map +1 -1
  8. package/dist/components/elements/sidebar-layout.js.map +1 -1
  9. package/dist/components/elements/ssr-layout-effect.js.map +1 -1
  10. package/dist/components/elements/user-avatar.js.map +1 -1
  11. package/dist/components/link.js.map +1 -1
  12. package/dist/components/magic-link-sign-in.js.map +1 -1
  13. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  14. package/dist/components/message-cards/message-card.js.map +1 -1
  15. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  16. package/dist/components/oauth-button-group.js.map +1 -1
  17. package/dist/components/oauth-button.js.map +1 -1
  18. package/dist/components/passkey-button.js.map +1 -1
  19. package/dist/components/profile-image-editor.js.map +1 -1
  20. package/dist/components/selected-team-switcher.js.map +1 -1
  21. package/dist/components/team-icon.js.map +1 -1
  22. package/dist/components/team-switcher.js.map +1 -1
  23. package/dist/components/use-in-iframe.js.map +1 -1
  24. package/dist/components/user-button.js.map +1 -1
  25. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  26. package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  27. package/dist/components-page/account-settings/editable-text.js.map +1 -1
  28. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  29. package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  30. package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  31. package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  32. package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  33. package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  34. package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  35. package/dist/components-page/account-settings/page-layout.js.map +1 -1
  36. package/dist/components-page/account-settings/payments/payments-page.js +79 -0
  37. package/dist/components-page/account-settings/payments/payments-page.js.map +1 -0
  38. package/dist/components-page/account-settings/payments/payments-panel.js +374 -0
  39. package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -0
  40. package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  41. package/dist/components-page/account-settings/section.js.map +1 -1
  42. package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  43. package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
  44. package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  45. package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  46. package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  47. package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  48. package/dist/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  49. package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  50. package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  51. package/dist/components-page/account-settings/teams/team-page.js.map +1 -1
  52. package/dist/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  53. package/dist/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  54. package/dist/components-page/account-settings.js +22 -2
  55. package/dist/components-page/account-settings.js.map +1 -1
  56. package/dist/components-page/auth-page.js.map +1 -1
  57. package/dist/components-page/cli-auth-confirm.js.map +1 -1
  58. package/dist/components-page/email-verification.js.map +1 -1
  59. package/dist/components-page/error-page.js.map +1 -1
  60. package/dist/components-page/forgot-password.js.map +1 -1
  61. package/dist/components-page/magic-link-callback.js.map +1 -1
  62. package/dist/components-page/mfa.js.map +1 -1
  63. package/dist/components-page/oauth-callback.js.map +1 -1
  64. package/dist/components-page/onboarding.js.map +1 -1
  65. package/dist/components-page/password-reset.js.map +1 -1
  66. package/dist/components-page/section.js.map +1 -1
  67. package/dist/components-page/sign-in.js.map +1 -1
  68. package/dist/components-page/sign-out.js.map +1 -1
  69. package/dist/components-page/sign-up.js.map +1 -1
  70. package/dist/components-page/stack-handler-client.js.map +1 -1
  71. package/dist/components-page/stack-handler.js.map +1 -1
  72. package/dist/components-page/team-creation.js.map +1 -1
  73. package/dist/components-page/team-invitation.js.map +1 -1
  74. package/dist/esm/components/api-key-dialogs.js.map +1 -1
  75. package/dist/esm/components/api-key-table.js.map +1 -1
  76. package/dist/esm/components/credential-sign-in.js.map +1 -1
  77. package/dist/esm/components/credential-sign-up.js.map +1 -1
  78. package/dist/esm/components/elements/form-warning.js.map +1 -1
  79. package/dist/esm/components/elements/maybe-full-page.js.map +1 -1
  80. package/dist/esm/components/elements/separator-with-text.js.map +1 -1
  81. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  82. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -1
  83. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  84. package/dist/esm/components/link.js.map +1 -1
  85. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  86. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  87. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  88. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  89. package/dist/esm/components/oauth-button-group.js.map +1 -1
  90. package/dist/esm/components/oauth-button.js.map +1 -1
  91. package/dist/esm/components/passkey-button.js.map +1 -1
  92. package/dist/esm/components/profile-image-editor.js.map +1 -1
  93. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  94. package/dist/esm/components/team-icon.js.map +1 -1
  95. package/dist/esm/components/team-switcher.js.map +1 -1
  96. package/dist/esm/components/use-in-iframe.js.map +1 -1
  97. package/dist/esm/components/user-button.js.map +1 -1
  98. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  99. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  100. package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
  101. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  102. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  103. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  104. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  105. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  106. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  107. package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  108. package/dist/esm/components-page/account-settings/page-layout.js.map +1 -1
  109. package/dist/esm/components-page/account-settings/payments/payments-page.js +55 -0
  110. package/dist/esm/components-page/account-settings/payments/payments-page.js.map +1 -0
  111. package/dist/esm/components-page/account-settings/payments/payments-panel.js +350 -0
  112. package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -0
  113. package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  114. package/dist/esm/components-page/account-settings/section.js.map +1 -1
  115. package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  116. package/dist/esm/components-page/account-settings/settings/settings-page.js.map +1 -1
  117. package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  118. package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  119. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  120. package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  121. package/dist/esm/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  122. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  123. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  124. package/dist/esm/components-page/account-settings/teams/team-page.js.map +1 -1
  125. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  126. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  127. package/dist/esm/components-page/account-settings.js +23 -3
  128. package/dist/esm/components-page/account-settings.js.map +1 -1
  129. package/dist/esm/components-page/auth-page.js.map +1 -1
  130. package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
  131. package/dist/esm/components-page/email-verification.js.map +1 -1
  132. package/dist/esm/components-page/error-page.js.map +1 -1
  133. package/dist/esm/components-page/forgot-password.js.map +1 -1
  134. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  135. package/dist/esm/components-page/mfa.js.map +1 -1
  136. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  137. package/dist/esm/components-page/onboarding.js.map +1 -1
  138. package/dist/esm/components-page/password-reset.js.map +1 -1
  139. package/dist/esm/components-page/section.js.map +1 -1
  140. package/dist/esm/components-page/sign-in.js.map +1 -1
  141. package/dist/esm/components-page/sign-out.js.map +1 -1
  142. package/dist/esm/components-page/sign-up.js.map +1 -1
  143. package/dist/esm/components-page/stack-handler-client.js.map +1 -1
  144. package/dist/esm/components-page/stack-handler.js.map +1 -1
  145. package/dist/esm/components-page/team-creation.js.map +1 -1
  146. package/dist/esm/components-page/team-invitation.js.map +1 -1
  147. package/dist/esm/generated/global-css.js +1 -1
  148. package/dist/esm/generated/global-css.js.map +1 -1
  149. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  150. package/dist/esm/index.js.map +1 -1
  151. package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
  152. package/dist/esm/integrations/convex.js.map +1 -1
  153. package/dist/esm/lib/auth.js.map +1 -1
  154. package/dist/esm/lib/cookie.js.map +1 -1
  155. package/dist/esm/lib/hooks.js.map +1 -1
  156. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
  157. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  158. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +63 -4
  159. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  160. package/dist/esm/lib/stack-app/apps/implementations/common.js +1 -1
  161. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
  162. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
  163. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  164. package/dist/esm/lib/stack-app/apps/index.js.map +1 -1
  165. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  166. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  167. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  168. package/dist/esm/lib/stack-app/common.js.map +1 -1
  169. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
  170. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
  171. package/dist/esm/lib/stack-app/index.js.map +1 -1
  172. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
  173. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
  174. package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
  175. package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
  176. package/dist/esm/lib/stack-app/users/index.js.map +1 -1
  177. package/dist/esm/lib/translations.js.map +1 -1
  178. package/dist/esm/providers/stack-provider-client.js.map +1 -1
  179. package/dist/esm/providers/stack-provider.js.map +1 -1
  180. package/dist/esm/providers/theme-provider.js.map +1 -1
  181. package/dist/esm/providers/translation-provider-client.js.map +1 -1
  182. package/dist/esm/providers/translation-provider.js.map +1 -1
  183. package/dist/esm/utils/browser-script.js.map +1 -1
  184. package/dist/esm/utils/constants.js.map +1 -1
  185. package/dist/esm/utils/url.js.map +1 -1
  186. package/dist/generated/global-css.js +1 -1
  187. package/dist/generated/global-css.js.map +1 -1
  188. package/dist/generated/quetzal-translations.js.map +1 -1
  189. package/dist/index.d.mts +37 -1
  190. package/dist/index.d.ts +37 -1
  191. package/dist/index.js.map +1 -1
  192. package/dist/integrations/convex/component/convex.config.js.map +1 -1
  193. package/dist/integrations/convex.js.map +1 -1
  194. package/dist/lib/auth.js.map +1 -1
  195. package/dist/lib/cookie.js.map +1 -1
  196. package/dist/lib/hooks.js.map +1 -1
  197. package/dist/lib/stack-app/api-keys/index.js.map +1 -1
  198. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  199. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +63 -4
  200. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  201. package/dist/lib/stack-app/apps/implementations/common.js +1 -1
  202. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
  203. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
  204. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  205. package/dist/lib/stack-app/apps/index.js.map +1 -1
  206. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  207. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  208. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  209. package/dist/lib/stack-app/common.js.map +1 -1
  210. package/dist/lib/stack-app/connected-accounts/index.js.map +1 -1
  211. package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
  212. package/dist/lib/stack-app/customers/index.js.map +1 -1
  213. package/dist/lib/stack-app/data-vault/index.js.map +1 -1
  214. package/dist/lib/stack-app/email/index.js.map +1 -1
  215. package/dist/lib/stack-app/email-templates/index.js.map +1 -1
  216. package/dist/lib/stack-app/index.js.map +1 -1
  217. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
  218. package/dist/lib/stack-app/notification-categories/index.js.map +1 -1
  219. package/dist/lib/stack-app/permissions/index.js.map +1 -1
  220. package/dist/lib/stack-app/project-configs/index.js.map +1 -1
  221. package/dist/lib/stack-app/projects/index.js.map +1 -1
  222. package/dist/lib/stack-app/teams/index.js.map +1 -1
  223. package/dist/lib/stack-app/users/index.js.map +1 -1
  224. package/dist/lib/translations.js.map +1 -1
  225. package/dist/providers/stack-provider-client.js.map +1 -1
  226. package/dist/providers/stack-provider.js.map +1 -1
  227. package/dist/providers/theme-provider.js.map +1 -1
  228. package/dist/providers/translation-provider-client.js.map +1 -1
  229. package/dist/providers/translation-provider.js.map +1 -1
  230. package/dist/utils/browser-script.js.map +1 -1
  231. package/dist/utils/constants.js.map +1 -1
  232. package/dist/utils/url.js.map +1 -1
  233. package/package.json +18 -16
@@ -174,6 +174,11 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
174
174
  }, session);
175
175
  }
176
176
  );
177
+ this._customerBillingCache = createCacheBySession(
178
+ async (session, [customerType, customerId]) => {
179
+ return await this._interface.getCustomerBilling(customerType, customerId, session);
180
+ }
181
+ );
177
182
  this._convexPartialUserCache = createCache(
178
183
  async ([ctx]) => await this._getPartialUserFromConvex(ctx)
179
184
  );
@@ -408,7 +413,7 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
408
413
  if (!isBrowserLike()) {
409
414
  throw new StackAssertionError("Cannot get browser cookies on the server!");
410
415
  }
411
- return cookie.parse(document.cookie || "");
416
+ return cookie.parseCookie(document.cookie || "");
412
417
  }
413
418
  _getRefreshTokenCookieNamePatterns() {
414
419
  return {
@@ -606,7 +611,7 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
606
611
  });
607
612
  }
608
613
  const cookieHeader = tokenStoreInit.headers.get("cookie");
609
- const parsed = cookie.parse(cookieHeader || "");
614
+ const parsed = cookie.parseCookie(cookieHeader || "");
610
615
  const res = new Store(this._getTokensFromCookies(parsed));
611
616
  this._requestTokenStores.set(tokenStoreInit, res);
612
617
  return res;
@@ -927,10 +932,27 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
927
932
  displayName: item.product.display_name,
928
933
  customerType: item.product.customer_type,
929
934
  isServerOnly: item.product.server_only,
930
- stackable: item.product.stackable
935
+ stackable: item.product.stackable,
936
+ type: item.type,
937
+ subscription: item.subscription ? {
938
+ currentPeriodEnd: item.subscription.current_period_end ? new Date(item.subscription.current_period_end) : null,
939
+ cancelAtPeriodEnd: item.subscription.cancel_at_period_end,
940
+ isCancelable: item.subscription.is_cancelable
941
+ } : null,
942
+ switchOptions: item.switch_options?.map((option) => ({
943
+ productId: option.product_id,
944
+ displayName: option.product.display_name,
945
+ prices: option.product.prices
946
+ }))
931
947
  }));
932
948
  return Object.assign(products, { nextCursor: response.pagination.next_cursor ?? null });
933
949
  }
950
+ _customerBillingFromResponse(response) {
951
+ return {
952
+ hasCustomer: response.has_customer,
953
+ defaultPaymentMethod: response.default_payment_method
954
+ };
955
+ }
934
956
  _createAuth(session) {
935
957
  const app = this;
936
958
  return {
@@ -1299,8 +1321,29 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
1299
1321
  }
1300
1322
  _createCustomer(userIdOrTeamId, type, session) {
1301
1323
  const app = this;
1324
+ const effectiveSession = session ?? app._interface.createSession({ refreshToken: null });
1302
1325
  const customerOptions = type === "user" ? { userId: userIdOrTeamId } : { teamId: userIdOrTeamId };
1303
1326
  return {
1327
+ async getBilling() {
1328
+ const response = Result.orThrow(await app._customerBillingCache.getOrWait([effectiveSession, type, userIdOrTeamId], "write-only"));
1329
+ return app._customerBillingFromResponse(response);
1330
+ },
1331
+ useBilling() {
1332
+ const response = useAsyncCache(app._customerBillingCache, [effectiveSession, type, userIdOrTeamId], "customer.useBilling()");
1333
+ return app._customerBillingFromResponse(response);
1334
+ },
1335
+ async createPaymentMethodSetupIntent() {
1336
+ const body = await app._interface.createCustomerPaymentMethodSetupIntent(type, userIdOrTeamId, effectiveSession);
1337
+ return {
1338
+ clientSecret: body.client_secret,
1339
+ stripeAccountId: body.stripe_account_id
1340
+ };
1341
+ },
1342
+ async setDefaultPaymentMethodFromSetupIntent(setupIntentId) {
1343
+ const body = await app._interface.setDefaultCustomerPaymentMethodFromSetupIntent(type, userIdOrTeamId, setupIntentId, effectiveSession);
1344
+ await app._customerBillingCache.refresh([effectiveSession, type, userIdOrTeamId]);
1345
+ return body.default_payment_method;
1346
+ },
1304
1347
  async getItem(itemId) {
1305
1348
  return await app.getItem({ itemId, ...customerOptions });
1306
1349
  },
@@ -1314,7 +1357,23 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
1314
1357
  return app.useProducts({ ...options, ...customerOptions });
1315
1358
  },
1316
1359
  async createCheckoutUrl(options) {
1317
- return await app._interface.createCheckoutUrl(type, userIdOrTeamId, options.productId, session, options.returnUrl);
1360
+ return await app._interface.createCheckoutUrl(type, userIdOrTeamId, options.productId, effectiveSession, options.returnUrl);
1361
+ },
1362
+ async switchSubscription(options) {
1363
+ await app._interface.switchSubscription({
1364
+ customer_type: type,
1365
+ customer_id: userIdOrTeamId,
1366
+ from_product_id: options.fromProductId,
1367
+ to_product_id: options.toProductId,
1368
+ price_id: options.priceId,
1369
+ quantity: options.quantity
1370
+ }, effectiveSession);
1371
+ await app._customerBillingCache.refresh([effectiveSession, type, userIdOrTeamId]);
1372
+ if (type === "user") {
1373
+ await app._userProductsCache.invalidateWhere(([cachedSession, userId]) => cachedSession === effectiveSession && userId === userIdOrTeamId);
1374
+ } else {
1375
+ await app._teamProductsCache.invalidateWhere(([cachedSession, teamId]) => cachedSession === effectiveSession && teamId === userIdOrTeamId);
1376
+ }
1318
1377
  }
1319
1378
  };
1320
1379
  }