@stackframe/stack 2.4.13 → 2.4.15

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 (104) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/components/credential-sign-in.js +45 -65
  3. package/dist/components/credential-sign-in.js.map +1 -1
  4. package/dist/components/credential-sign-up.js +74 -98
  5. package/dist/components/credential-sign-up.js.map +1 -1
  6. package/dist/components/forgot-password.js +41 -38
  7. package/dist/components/forgot-password.js.map +1 -1
  8. package/dist/components/magic-link-sign-in.js +37 -41
  9. package/dist/components/magic-link-sign-in.js.map +1 -1
  10. package/dist/components/oauth-button.js +47 -53
  11. package/dist/components/oauth-button.js.map +1 -1
  12. package/dist/components/password-field.js +6 -8
  13. package/dist/components/password-field.js.map +1 -1
  14. package/dist/components/password-reset-inner.js +61 -56
  15. package/dist/components/password-reset-inner.js.map +1 -1
  16. package/dist/components/redirect-message-card.js +1 -2
  17. package/dist/components/redirect-message-card.js.map +1 -1
  18. package/dist/components/user-avatar.d.mts +1 -0
  19. package/dist/components/user-avatar.d.ts +1 -0
  20. package/dist/components/user-avatar.js +7 -5
  21. package/dist/components/user-avatar.js.map +1 -1
  22. package/dist/components/user-button.js +14 -18
  23. package/dist/components/user-button.js.map +1 -1
  24. package/dist/components-core/button.d.mts +1 -0
  25. package/dist/components-core/button.d.ts +1 -0
  26. package/dist/components-core/button.js +31 -14
  27. package/dist/components-core/button.js.map +1 -1
  28. package/dist/components-core/card.js +3 -3
  29. package/dist/components-core/card.js.map +1 -1
  30. package/dist/components-core/input.js +10 -6
  31. package/dist/components-core/input.js.map +1 -1
  32. package/dist/components-core/label.js +2 -3
  33. package/dist/components-core/label.js.map +1 -1
  34. package/dist/components-core/tabs.js +9 -5
  35. package/dist/components-core/tabs.js.map +1 -1
  36. package/dist/components-page/account-settings.js +8 -8
  37. package/dist/components-page/account-settings.js.map +1 -1
  38. package/dist/components-page/auth-page.js +1 -1
  39. package/dist/components-page/auth-page.js.map +1 -1
  40. package/dist/components-page/password-reset.js.map +1 -1
  41. package/dist/components-page/stack-handler.d.mts +1 -0
  42. package/dist/components-page/stack-handler.d.ts +1 -0
  43. package/dist/esm/components/credential-sign-in.js +45 -65
  44. package/dist/esm/components/credential-sign-in.js.map +1 -1
  45. package/dist/esm/components/credential-sign-up.js +74 -98
  46. package/dist/esm/components/credential-sign-up.js.map +1 -1
  47. package/dist/esm/components/forgot-password.js +41 -38
  48. package/dist/esm/components/forgot-password.js.map +1 -1
  49. package/dist/esm/components/magic-link-sign-in.js +37 -41
  50. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  51. package/dist/esm/components/oauth-button.js +47 -53
  52. package/dist/esm/components/oauth-button.js.map +1 -1
  53. package/dist/esm/components/password-field.js +6 -8
  54. package/dist/esm/components/password-field.js.map +1 -1
  55. package/dist/esm/components/password-reset-inner.js +61 -56
  56. package/dist/esm/components/password-reset-inner.js.map +1 -1
  57. package/dist/esm/components/redirect-message-card.js +1 -2
  58. package/dist/esm/components/redirect-message-card.js.map +1 -1
  59. package/dist/esm/components/user-avatar.js +7 -5
  60. package/dist/esm/components/user-avatar.js.map +1 -1
  61. package/dist/esm/components/user-button.js +26 -19
  62. package/dist/esm/components/user-button.js.map +1 -1
  63. package/dist/esm/components-core/button.js +33 -16
  64. package/dist/esm/components-core/button.js.map +1 -1
  65. package/dist/esm/components-core/card.js +3 -3
  66. package/dist/esm/components-core/card.js.map +1 -1
  67. package/dist/esm/components-core/input.js +11 -7
  68. package/dist/esm/components-core/input.js.map +1 -1
  69. package/dist/esm/components-core/label.js +2 -3
  70. package/dist/esm/components-core/label.js.map +1 -1
  71. package/dist/esm/components-core/tabs.js +10 -6
  72. package/dist/esm/components-core/tabs.js.map +1 -1
  73. package/dist/esm/components-page/account-settings.js +8 -8
  74. package/dist/esm/components-page/account-settings.js.map +1 -1
  75. package/dist/esm/components-page/auth-page.js +1 -1
  76. package/dist/esm/components-page/auth-page.js.map +1 -1
  77. package/dist/esm/components-page/password-reset.js.map +1 -1
  78. package/dist/esm/lib/stack-app.js +18 -1
  79. package/dist/esm/lib/stack-app.js.map +1 -1
  80. package/dist/esm/utils/constants.js +10 -10
  81. package/dist/esm/utils/constants.js.map +1 -1
  82. package/dist/index.d.mts +1 -0
  83. package/dist/index.d.ts +1 -0
  84. package/dist/lib/hooks.d.mts +1 -0
  85. package/dist/lib/hooks.d.ts +1 -0
  86. package/dist/lib/stack-app.d.mts +6 -1
  87. package/dist/lib/stack-app.d.ts +6 -1
  88. package/dist/lib/stack-app.js +18 -1
  89. package/dist/lib/stack-app.js.map +1 -1
  90. package/dist/providers/stack-provider-client.d.mts +1 -0
  91. package/dist/providers/stack-provider-client.d.ts +1 -0
  92. package/dist/providers/stack-provider.d.mts +1 -0
  93. package/dist/providers/stack-provider.d.ts +1 -0
  94. package/dist/utils/constants.d.mts +26 -26
  95. package/dist/utils/constants.d.ts +26 -26
  96. package/dist/utils/constants.js +12 -12
  97. package/dist/utils/constants.js.map +1 -1
  98. package/package.json +9 -6
  99. package/dist/components-core/loading-indicator.d.mts +0 -11
  100. package/dist/components-core/loading-indicator.d.ts +0 -11
  101. package/dist/components-core/loading-indicator.js +0 -62
  102. package/dist/components-core/loading-indicator.js.map +0 -1
  103. package/dist/esm/components-core/loading-indicator.js +0 -31
  104. package/dist/esm/components-core/loading-indicator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport CardFrame from '../components/card-frame';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\n\nexport default function AuthPage({ \n fullPage=false,\n type,\n mockProject,\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const project = mockProject || stackApp.useProject();\n\n if (user && !mockProject) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>{type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}</Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type={type} mockProject={mockProject} />\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </CardFrame>\n );\n}\n"],"mappings":";;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,SAAS,SAAS,aAAa,wBAAwB;AACvD,OAAO,yBAAyB;AAChC,SAAS,MAAM,MAAM,aAAa,UAAU,aAAa,YAAY;AACrE,OAAO,qBAAqB;AAiBjB,cAUD,YAVC;AAdI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AAAA,EACA;AACF,GAIG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,eAAe,SAAS,WAAW;AAEnD,MAAI,QAAQ,CAAC,aAAa;AACxB,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,qBAAC,aAAU,UACT;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAM,mBAAS,YAAY,4BAA4B,wBAAuB;AAAA,MAChG,SAAS,YACR,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,oBAAC,cAAW,MAAY,aAA0B;AAAA,IACjD,mBAAmB,oBAAC,qBAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,qBAAC,QAAK,cAAa,cACjB;AAAA,2BAAC,YACC;AAAA,4BAAC,eAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,oBAAC,eAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,oBAAC,eAAY,OAAM,cACjB,8BAAC,mBAAe,GAClB;AAAA,MACA,oBAAC,eAAY,OAAM,YAChB,mBAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,IAC1D,QAAQ,mBACV,oBAAC,mBAAe,IACd;AAAA,KACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport CardFrame from '../components/card-frame';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\n\nexport default function AuthPage({ \n fullPage=false,\n type,\n mockProject,\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const project = mockProject || stackApp.useProject();\n\n if (user && !mockProject) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2' style={{ fontWeight: 500 }}>\n {type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}\n </Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type={type} mockProject={mockProject} />\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </CardFrame>\n );\n}\n"],"mappings":";;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,SAAS,SAAS,aAAa,wBAAwB;AACvD,OAAO,yBAAyB;AAChC,SAAS,MAAM,MAAM,aAAa,UAAU,aAAa,YAAY;AACrE,OAAO,qBAAqB;AAiBjB,cAYD,YAZC;AAdI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AAAA,EACA;AACF,GAIG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,eAAe,SAAS,WAAW;AAEnD,MAAI,QAAQ,CAAC,aAAa;AACxB,WAAO,oBAAC,uBAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,qBAAC,aAAU,UACT;AAAA,yBAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,0BAAC,QAAK,MAAK,MAAK,IAAG,MAAK,OAAO,EAAE,YAAY,IAAI,GAC9C,mBAAS,YAAY,4BAA4B,wBACpD;AAAA,MACC,SAAS,YACR,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,qBAAC,QACE;AAAA;AAAA,QACD,oBAAC,QAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,oBAAC,cAAW,MAAY,aAA0B;AAAA,IACjD,mBAAmB,oBAAC,qBAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,qBAAC,QAAK,cAAa,cACjB;AAAA,2BAAC,YACC;AAAA,4BAAC,eAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,oBAAC,eAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,oBAAC,eAAY,OAAM,cACjB,8BAAC,mBAAe,GAClB;AAAA,MACA,oBAAC,eAAY,OAAM,YAChB,mBAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,oBAAC,oBAAgB,IAAK,oBAAC,oBAAgB,IAC1D,QAAQ,mBACV,oBAAC,mBAAe,IACd;AAAA,KACN;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport MessageCard from \"../components/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetInner from \"../components/password-reset-inner\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { Text } from \"../components-core\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport React from \"react\";\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyPasswordResetCode(code);\n});\n\nexport default function PasswordReset({\n searchParams,\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Password Reset Link\" fullPage={fullPage}>\n <Text>Please double check if you have the correct password reset link.</Text>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Password Reset Link\" fullPage={fullPage}>\n <Text>Your password reset link has expired. Please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title=\"Used Password Reset Link\" fullPage={fullPage}>\n <Text>This password reset link has already been used. If you need to reset your password again, please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const code = searchParams?.code;\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.PasswordResetCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeAlreadyUsed) {\n return usedJsx;\n } else if (error) {\n throw error;\n }\n\n return <PasswordResetInner code={code} fullPage={fullPage} />;\n}\n"],"mappings":";;;AAEA,OAAO,iBAAiB;AACxB,SAAyB,mBAAmB;AAC5C,SAAS,WAAW;AACpB,OAAO,wBAAwB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAkBtB;AAfN,IAAM,gCAAgC,cAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEc,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,QAAK,8EAAgE,GACxE;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,QAAK,iHAAmG,GAC3G;AAGF,QAAM,UACJ,oBAAC,eAAY,OAAM,4BAA2B,UAC5C,8BAAC,QAAK,qKAAuJ,GAC/J;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,YAAY,2BAA2B;AAC1D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,0BAA0B;AAChE,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,oBAAC,sBAAmB,MAAY,UAAoB;AAC7D;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport MessageCard from \"../components/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetInner from \"../components/password-reset-inner\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { Text } from \"../components-core\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyPasswordResetCode(code);\n});\n\nexport default function PasswordReset({\n searchParams,\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean, \n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Password Reset Link\" fullPage={fullPage}>\n <Text>Please double check if you have the correct password reset link.</Text>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Password Reset Link\" fullPage={fullPage}>\n <Text>Your password reset link has expired. Please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title=\"Used Password Reset Link\" fullPage={fullPage}>\n <Text>This password reset link has already been used. If you need to reset your password again, please request a new password reset link from the login page.</Text>\n </MessageCard>\n );\n\n const code = searchParams?.code;\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.PasswordResetCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.PasswordResetCodeAlreadyUsed) {\n return usedJsx;\n } else if (error) {\n throw error;\n }\n\n return <PasswordResetInner code={code} fullPage={fullPage} />;\n}\n"],"mappings":";;;AAEA,OAAO,iBAAiB;AACxB,SAAyB,mBAAmB;AAC5C,SAAS,WAAW;AACpB,OAAO,wBAAwB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAiBtB;AAfN,IAAM,gCAAgC,cAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEc,SAAR,cAA+B;AAAA,EACpC;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,QAAK,8EAAgE,GACxE;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,QAAK,iHAAmG,GAC3G;AAGF,QAAM,UACJ,oBAAC,eAAY,OAAM,4BAA2B,UAC5C,8BAAC,QAAK,qKAAuJ,GAC/J;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,YAAY,2BAA2B;AAC1D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,0BAA0B;AAChE,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,8BAA8B;AACpE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,oBAAC,sBAAmB,MAAY,UAAoB;AAC7D;","names":[]}
@@ -20,7 +20,7 @@ import { scrambleDuringCompileTime } from "@stackframe/stack-shared/dist/utils/c
20
20
  import { isReactServer } from "@stackframe/stack-sc";
21
21
  import * as cookie from "cookie";
22
22
  var NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
23
- var clientVersion = "js @stackframe/stack@2.4.13";
23
+ var clientVersion = "js @stackframe/stack@2.4.15";
24
24
  function permissionDefinitionScopeToType(scope) {
25
25
  return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
26
26
  }
@@ -815,6 +815,9 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
815
815
  _serverTeamUserPermissionsCache = createCache(async ([teamId, userId, type, direct]) => {
816
816
  return await this._interface.listTeamMemberPermissions({ teamId, userId, type, direct });
817
817
  });
818
+ _serverEmailTemplatesCache = createCache(async () => {
819
+ return await this._interface.listEmailTemplates();
820
+ });
818
821
  constructor(options) {
819
822
  super("interface" in options ? {
820
823
  interface: options.interface,
@@ -1139,6 +1142,20 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1139
1142
  this._serverUsersCache.refresh([])
1140
1143
  ]);
1141
1144
  }
1145
+ useEmailTemplates() {
1146
+ return useCache(this._serverEmailTemplatesCache, [], "useEmailTemplates()");
1147
+ }
1148
+ async listEmailTemplates() {
1149
+ return await this._serverEmailTemplatesCache.getOrWait([], "write-only");
1150
+ }
1151
+ async updateEmailTemplate(type, data) {
1152
+ await this._interface.updateEmailTemplate(type, data);
1153
+ await this._serverEmailTemplatesCache.refresh([]);
1154
+ }
1155
+ async resetEmailTemplate(type) {
1156
+ await this._interface.resetEmailTemplate(type);
1157
+ await this._serverEmailTemplatesCache.refresh([]);
1158
+ }
1142
1159
  };
1143
1160
  var _StackAdminAppImpl = class extends _StackServerAppImpl {
1144
1161
  _adminProjectCache = createCache(async () => {