@hexclave/next 1.0.14 → 1.0.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 (217) hide show
  1. package/dist/clickmap/clickmap-core.d.ts +15 -0
  2. package/dist/clickmap/clickmap-core.d.ts.map +1 -0
  3. package/dist/clickmap/clickmap-core.js +1527 -0
  4. package/dist/clickmap/clickmap-core.js.map +1 -0
  5. package/dist/clickmap/clickmap-styles.d.ts +5 -0
  6. package/dist/clickmap/clickmap-styles.d.ts.map +1 -0
  7. package/dist/clickmap/clickmap-styles.js +1095 -0
  8. package/dist/clickmap/clickmap-styles.js.map +1 -0
  9. package/dist/clickmap/index.d.ts +16 -0
  10. package/dist/clickmap/index.d.ts.map +1 -0
  11. package/dist/clickmap/index.js +74 -0
  12. package/dist/clickmap/index.js.map +1 -0
  13. package/dist/components/api-key-dialogs.js +5 -5
  14. package/dist/components/credential-sign-in.js +3 -3
  15. package/dist/components/credential-sign-up.js +5 -5
  16. package/dist/components/elements/sidebar-layout.js +1 -1
  17. package/dist/components/elements/user-avatar.js +1 -1
  18. package/dist/components/magic-link-sign-in.js +5 -5
  19. package/dist/components/message-cards/known-error-message-card.d.ts +1 -1
  20. package/dist/components/message-cards/predefined-message-card.js +1 -1
  21. package/dist/components/passkey-button.js +1 -1
  22. package/dist/components/profile-image-editor.js +1 -1
  23. package/dist/components/team-icon.js +1 -1
  24. package/dist/components/team-switcher.js +2 -2
  25. package/dist/components/user-button.js +1 -1
  26. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  27. package/dist/components-page/account-settings/editable-text.js +1 -1
  28. package/dist/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  29. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  30. package/dist/components-page/account-settings/email-and-auth/password-section.js +3 -3
  31. package/dist/components-page/account-settings/teams/team-api-keys-section.js +1 -1
  32. package/dist/components-page/account-settings/teams/team-creation-page.js +3 -3
  33. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  34. package/dist/components-page/account-settings.js +3 -3
  35. package/dist/components-page/auth-page.js +2 -2
  36. package/dist/components-page/cli-auth-confirm.js +2 -2
  37. package/dist/components-page/cli-auth-confirm.test.js +1 -1
  38. package/dist/components-page/email-verification.js +1 -1
  39. package/dist/components-page/forgot-password.d.ts.map +1 -1
  40. package/dist/components-page/forgot-password.js +6 -7
  41. package/dist/components-page/forgot-password.js.map +1 -1
  42. package/dist/components-page/hexclave-handler-client.d.ts +1 -1
  43. package/dist/components-page/hexclave-handler-client.js +2 -2
  44. package/dist/components-page/magic-link-callback.js +1 -1
  45. package/dist/components-page/mfa.js +7 -22
  46. package/dist/components-page/mfa.js.map +1 -1
  47. package/dist/components-page/oauth-callback.js +2 -2
  48. package/dist/components-page/onboarding.js +4 -4
  49. package/dist/components-page/password-reset.d.ts.map +1 -1
  50. package/dist/components-page/password-reset.js +12 -14
  51. package/dist/components-page/password-reset.js.map +1 -1
  52. package/dist/components-page/team-creation.js +5 -5
  53. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  54. package/dist/dev-tool/dev-tool-core.js +258 -262
  55. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  56. package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
  57. package/dist/dev-tool/dev-tool-styles.d.ts.map +1 -1
  58. package/dist/dev-tool/dev-tool-styles.js +13 -143
  59. package/dist/dev-tool/dev-tool-styles.js.map +1 -1
  60. package/dist/dev-tool/index.d.ts.map +1 -1
  61. package/dist/dev-tool/index.js +4 -11
  62. package/dist/dev-tool/index.js.map +1 -1
  63. package/dist/esm/clickmap/clickmap-core.d.ts +15 -0
  64. package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -0
  65. package/dist/esm/clickmap/clickmap-core.js +1525 -0
  66. package/dist/esm/clickmap/clickmap-core.js.map +1 -0
  67. package/dist/esm/clickmap/clickmap-styles.d.ts +5 -0
  68. package/dist/esm/clickmap/clickmap-styles.d.ts.map +1 -0
  69. package/dist/esm/clickmap/clickmap-styles.js +1093 -0
  70. package/dist/esm/clickmap/clickmap-styles.js.map +1 -0
  71. package/dist/esm/clickmap/index.d.ts +16 -0
  72. package/dist/esm/clickmap/index.d.ts.map +1 -0
  73. package/dist/esm/clickmap/index.js +72 -0
  74. package/dist/esm/clickmap/index.js.map +1 -0
  75. package/dist/esm/components/api-key-dialogs.js +5 -5
  76. package/dist/esm/components/credential-sign-in.js +3 -3
  77. package/dist/esm/components/credential-sign-up.js +5 -5
  78. package/dist/esm/components/elements/sidebar-layout.js +1 -1
  79. package/dist/esm/components/elements/user-avatar.js +1 -1
  80. package/dist/esm/components/magic-link-sign-in.js +5 -5
  81. package/dist/esm/components/message-cards/predefined-message-card.js +1 -1
  82. package/dist/esm/components/passkey-button.js +1 -1
  83. package/dist/esm/components/profile-image-editor.js +1 -1
  84. package/dist/esm/components/team-icon.js +1 -1
  85. package/dist/esm/components/team-switcher.js +2 -2
  86. package/dist/esm/components/user-button.js +1 -1
  87. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  88. package/dist/esm/components-page/account-settings/editable-text.js +1 -1
  89. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  90. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  91. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +3 -3
  92. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +1 -1
  93. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +3 -3
  94. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  95. package/dist/esm/components-page/account-settings.d.ts +1 -1
  96. package/dist/esm/components-page/account-settings.js +3 -3
  97. package/dist/esm/components-page/auth-page.js +2 -2
  98. package/dist/esm/components-page/cli-auth-confirm.js +2 -2
  99. package/dist/esm/components-page/cli-auth-confirm.test.js +1 -1
  100. package/dist/esm/components-page/email-verification.js +1 -1
  101. package/dist/esm/components-page/forgot-password.d.ts.map +1 -1
  102. package/dist/esm/components-page/forgot-password.js +6 -7
  103. package/dist/esm/components-page/forgot-password.js.map +1 -1
  104. package/dist/esm/components-page/hexclave-handler-client.d.ts +1 -1
  105. package/dist/esm/components-page/hexclave-handler-client.js +2 -2
  106. package/dist/esm/components-page/magic-link-callback.js +1 -1
  107. package/dist/esm/components-page/mfa.js +7 -22
  108. package/dist/esm/components-page/mfa.js.map +1 -1
  109. package/dist/esm/components-page/oauth-callback.js +2 -2
  110. package/dist/esm/components-page/onboarding.js +4 -4
  111. package/dist/esm/components-page/password-reset.d.ts.map +1 -1
  112. package/dist/esm/components-page/password-reset.js +11 -13
  113. package/dist/esm/components-page/password-reset.js.map +1 -1
  114. package/dist/esm/components-page/team-creation.js +5 -5
  115. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  116. package/dist/esm/dev-tool/dev-tool-core.js +35 -39
  117. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  118. package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
  119. package/dist/esm/dev-tool/dev-tool-styles.d.ts.map +1 -1
  120. package/dist/esm/dev-tool/dev-tool-styles.js +13 -143
  121. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
  122. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  123. package/dist/esm/dev-tool/index.js +1 -8
  124. package/dist/esm/dev-tool/index.js.map +1 -1
  125. package/dist/esm/generated/global-css.d.ts +1 -1
  126. package/dist/esm/generated/global-css.js +1 -1
  127. package/dist/esm/generated/global-css.js.map +1 -1
  128. package/dist/esm/generated/quetzal-translations.d.ts +2 -2
  129. package/dist/esm/in-page-ui/base-styles.d.ts +5 -0
  130. package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -0
  131. package/dist/esm/in-page-ui/base-styles.js +166 -0
  132. package/dist/esm/in-page-ui/base-styles.js.map +1 -0
  133. package/dist/esm/in-page-ui/dom.d.ts +15 -0
  134. package/dist/esm/in-page-ui/dom.d.ts.map +1 -0
  135. package/dist/esm/in-page-ui/dom.js +44 -0
  136. package/dist/esm/in-page-ui/dom.js.map +1 -0
  137. package/dist/esm/lib/auth.js +2 -2
  138. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +6 -2
  139. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  140. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +21 -1
  141. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  142. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  143. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  144. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  145. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  146. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  147. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  148. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  149. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  150. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  151. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  152. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  153. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  154. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  155. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  156. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  157. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  158. package/dist/esm/lib/hexclave-app/users/index.d.ts +1 -1
  159. package/dist/esm/providers/theme-provider.js +1 -1
  160. package/dist/esm/providers/translation-provider.js +1 -1
  161. package/dist/generated/global-css.d.ts +1 -1
  162. package/dist/generated/global-css.js +1 -1
  163. package/dist/generated/global-css.js.map +1 -1
  164. package/dist/generated/quetzal-translations.d.ts +2 -2
  165. package/dist/in-page-ui/base-styles.d.ts +5 -0
  166. package/dist/in-page-ui/base-styles.d.ts.map +1 -0
  167. package/dist/in-page-ui/base-styles.js +168 -0
  168. package/dist/in-page-ui/base-styles.js.map +1 -0
  169. package/dist/in-page-ui/dom.d.ts +15 -0
  170. package/dist/in-page-ui/dom.d.ts.map +1 -0
  171. package/dist/in-page-ui/dom.js +51 -0
  172. package/dist/in-page-ui/dom.js.map +1 -0
  173. package/dist/index.d.ts +1 -1
  174. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  175. package/dist/lib/auth.js +2 -2
  176. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -1
  177. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  178. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +21 -1
  179. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  180. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  181. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  182. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  183. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  184. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  185. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  186. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  187. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  188. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  189. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  190. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  191. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  192. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  193. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  194. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  195. package/dist/lib/hexclave-app/common.d.ts +1 -1
  196. package/dist/providers/hexclave-provider-client.d.ts +1 -1
  197. package/dist/providers/theme-provider.js +1 -1
  198. package/dist/providers/translation-provider.js +1 -1
  199. package/dist/{storage-CKzvsBxG.d.ts → storage-ksajV_p6.d.ts} +1 -1
  200. package/dist/{storage-CKzvsBxG.d.ts.map → storage-ksajV_p6.d.ts.map} +1 -1
  201. package/package.json +4 -4
  202. package/src/clickmap/clickmap-core.ts +1997 -0
  203. package/src/clickmap/clickmap-styles.ts +1102 -0
  204. package/src/clickmap/index.ts +95 -0
  205. package/src/components-page/forgot-password.tsx +1 -2
  206. package/src/components-page/mfa.tsx +12 -21
  207. package/src/components-page/password-reset.tsx +4 -6
  208. package/src/dev-tool/dev-tool-core.ts +38 -65
  209. package/src/dev-tool/dev-tool-styles.ts +13 -142
  210. package/src/dev-tool/index.ts +1 -14
  211. package/src/in-page-ui/base-styles.ts +171 -0
  212. package/src/in-page-ui/dom.ts +80 -0
  213. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +23 -1
  214. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +7 -0
  215. package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +287 -0
  216. package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +226 -16
  217. package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +3 -0
@@ -3,18 +3,18 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
7
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
6
8
  let _hexclave_ui = require("@hexclave/ui");
7
9
  let react = require("react");
10
+ let react_hook_form = require("react-hook-form");
8
11
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
10
13
  let ___lib_translations_js = require("../lib/translations.js");
11
14
  let react_jsx_runtime = require("react/jsx-runtime");
15
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
16
  let ___components_link_js = require("../components/link.js");
13
17
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
14
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
15
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
16
- let react_hook_form = require("react-hook-form");
17
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
18
18
 
19
19
  //#region src/components-page/forgot-password.tsx
20
20
  function ForgotPasswordForm({ onSent }) {
@@ -46,8 +46,7 @@ function ForgotPasswordForm({ onSent }) {
46
46
  id: "email",
47
47
  type: "email",
48
48
  autoComplete: "email",
49
- ...register("email"),
50
- onChange: () => clearErrors("email")
49
+ ...register("email", { onChange: () => clearErrors("email") })
51
50
  }),
52
51
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___components_elements_form_warning_js.FormWarningText, { text: errors.email?.message?.toString() }),
53
52
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"forgot-password.js","names":["Label","Input","FormWarningText","Button","PredefinedMessageCard","MaybeFullPage","Typography","StyledLink"],"sources":["../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { strictEmailSchema, yupObject } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function ForgotPasswordForm({ onSent }: { onSent?: () => void }) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n email: strictEmailSchema(t(\"Please enter a valid email\")).defined().nonEmpty(t(\"Please enter your email\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n await hexclaveApp.sendForgotPasswordEmail(email);\n onSent?.();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form\n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">{t(\"Your Email\")}</Label>\n <Input\n id=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n {...register('email')}\n onChange={() => clearErrors('email')}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Send Email\")}\n </Button>\n </form>\n );\n}\n\n\nexport function ForgotPassword(props: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n if (sent) {\n return <PredefinedMessageCard type='emailSent' fullPage={!!props.fullPage} />;\n }\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"stack-scope max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n <Typography>\n {t(\"Don't need to reset?\")}{\" \"}\n <StyledLink href={hexclaveApp.urls['signIn']}>\n {t(\"Sign in\")}\n </StyledLink>\n </Typography>\n </div>\n <div className=\"mt-6\">\n <ForgotPasswordForm onSent={() => setSent(true)} />\n </div>\n </div>\n </MaybeFullPage>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,mBAAmB,EAAE,UAAmC;CACtE,MAAM,EAAE,kDAAsB;CAM9B,MAAM,EAAE,UAAU,cAAc,WAAW,EAAE,UAAU,6CAAwB,EAC7E,sGALuB,EACvB,kEAAyB,EAAE,6BAA6B,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAC3G,CAAC,CAG6B,EAC9B,CAAC;CACF,MAAM,4CAA2B;CACjC,MAAM,CAAC,SAAS,kCAAuB,MAAM;CAE7C,MAAM,WAAW,OAAO,SAAuC;AAC7D,aAAW,KAAK;AAChB,MAAI;GACF,MAAM,EAAE,UAAU;AAClB,SAAM,YAAY,wBAAwB,MAAM;AAClD,aAAU;YACA;AACR,cAAW,MAAM;;;AAIrB,QACE,4CAAC;EACC,WAAU;EACV,WAAU,2EAAgC,aAAa,SAAS,CAAC,EAAE,CAAC;EACpE;;GAEA,2CAACA;IAAM,SAAQ;IAAQ,WAAU;cAAQ,EAAE,aAAa;KAAS;GACjE,2CAACC;IACC,IAAG;IACH,MAAK;IACL,cAAa;IACb,GAAI,SAAS,QAAQ;IACrB,gBAAgB,YAAY,QAAQ;KACpC;GACF,2CAACC,0DAAgB,MAAM,OAAO,OAAO,SAAS,UAAU,GAAI;GAE5D,2CAACC;IAAO,MAAK;IAAS,WAAU;IAAgB;cAC7C,EAAE,aAAa;KACT;;GACJ;;AAKX,SAAgB,eAAe,OAA+B;CAC5D,MAAM,EAAE,kDAAsB;CAC9B,MAAM,4CAA2B;CACjC,MAAM,iCAAgB;CACtB,MAAM,CAAC,MAAM,+BAAoB,MAAM;AAEvC,KAAI,KACF,QAAO,2CAACC;EAAsB,MAAK;EAAW,UAAU,CAAC,CAAC,MAAM;GAAY;AAG9E,KAAI,KACF,QAAO,2CAACA;EAAsB,MAAK;EAAY,UAAU,CAAC,CAAC,MAAM;GAAY;AAG/E,QACE,2CAACC;EAAc,UAAU,CAAC,CAAC,MAAM;YAC/B,4CAAC;GAAI,gCACH,gDACA,MAAM,WAAW,QAAQ,MAC1B;cACC,4CAAC;IAAI,WAAU;eACb,2CAACC;KAAW,MAAK;eAAM,EAAE,sBAAsB;MAAc,EAC7D,4CAACA;KACE,EAAE,uBAAuB;KAAE;KAC5B,2CAACC;MAAW,MAAM,YAAY,KAAK;gBAChC,EAAE,UAAU;OACF;QACF;KACT,EACN,2CAAC;IAAI,WAAU;cACb,2CAAC,sBAAmB,cAAc,QAAQ,KAAK,GAAI;KAC/C;IACF;GACQ"}
1
+ {"version":3,"file":"forgot-password.js","names":["Label","Input","FormWarningText","Button","PredefinedMessageCard","MaybeFullPage","Typography","StyledLink"],"sources":["../../src/components-page/forgot-password.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { strictEmailSchema, yupObject } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport function ForgotPasswordForm({ onSent }: { onSent?: () => void }) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n email: strictEmailSchema(t(\"Please enter a valid email\")).defined().nonEmpty(t(\"Please enter your email\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { email } = data;\n await hexclaveApp.sendForgotPasswordEmail(email);\n onSent?.();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <form\n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"email\" className=\"mb-1\">{t(\"Your Email\")}</Label>\n <Input\n id=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n {...register('email', { onChange: () => clearErrors('email') })}\n />\n <FormWarningText text={errors.email?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Send Email\")}\n </Button>\n </form>\n );\n}\n\n\nexport function ForgotPassword(props: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [sent, setSent] = useState(false);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n if (sent) {\n return <PredefinedMessageCard type='emailSent' fullPage={!!props.fullPage} />;\n }\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"stack-scope max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n <Typography>\n {t(\"Don't need to reset?\")}{\" \"}\n <StyledLink href={hexclaveApp.urls['signIn']}>\n {t(\"Sign in\")}\n </StyledLink>\n </Typography>\n </div>\n <div className=\"mt-6\">\n <ForgotPasswordForm onSent={() => setSent(true)} />\n </div>\n </div>\n </MaybeFullPage>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,mBAAmB,EAAE,UAAmC;CACtE,MAAM,EAAE,kDAAsB;CAM9B,MAAM,EAAE,UAAU,cAAc,WAAW,EAAE,UAAU,6CAAwB,EAC7E,sGALuB,EACvB,kEAAyB,EAAE,6BAA6B,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAC3G,CAAC,CAG6B,EAC9B,CAAC;CACF,MAAM,4CAA2B;CACjC,MAAM,CAAC,SAAS,kCAAuB,MAAM;CAE7C,MAAM,WAAW,OAAO,SAAuC;AAC7D,aAAW,KAAK;AAChB,MAAI;GACF,MAAM,EAAE,UAAU;AAClB,SAAM,YAAY,wBAAwB,MAAM;AAClD,aAAU;YACA;AACR,cAAW,MAAM;;;AAIrB,QACE,4CAAC;EACC,WAAU;EACV,WAAU,2EAAgC,aAAa,SAAS,CAAC,EAAE,CAAC;EACpE;;GAEA,2CAACA;IAAM,SAAQ;IAAQ,WAAU;cAAQ,EAAE,aAAa;KAAS;GACjE,2CAACC;IACC,IAAG;IACH,MAAK;IACL,cAAa;IACb,GAAI,SAAS,SAAS,EAAE,gBAAgB,YAAY,QAAQ,EAAE,CAAC;KAC/D;GACF,2CAACC,0DAAgB,MAAM,OAAO,OAAO,SAAS,UAAU,GAAI;GAE5D,2CAACC;IAAO,MAAK;IAAS,WAAU;IAAgB;cAC7C,EAAE,aAAa;KACT;;GACJ;;AAKX,SAAgB,eAAe,OAA+B;CAC5D,MAAM,EAAE,kDAAsB;CAC9B,MAAM,4CAA2B;CACjC,MAAM,iCAAgB;CACtB,MAAM,CAAC,MAAM,+BAAoB,MAAM;AAEvC,KAAI,KACF,QAAO,2CAACC;EAAsB,MAAK;EAAW,UAAU,CAAC,CAAC,MAAM;GAAY;AAG9E,KAAI,KACF,QAAO,2CAACA;EAAsB,MAAK;EAAY,UAAU,CAAC,CAAC,MAAM;GAAY;AAG/E,QACE,2CAACC;EAAc,UAAU,CAAC,CAAC,MAAM;YAC/B,4CAAC;GAAI,gCACH,gDACA,MAAM,WAAW,QAAQ,MAC1B;cACC,4CAAC;IAAI,WAAU;eACb,2CAACC;KAAW,MAAK;eAAM,EAAE,sBAAsB;MAAc,EAC7D,4CAACA;KACE,EAAE,uBAAuB;KAAE;KAC5B,2CAACC;MAAW,MAAM,YAAY,KAAK;gBAChC,EAAE,UAAU;OACF;QACF;KACT,EACN,2CAAC;IAAI,WAAU;cACb,2CAAC,sBAAmB,cAAc,QAAQ,KAAK,GAAI;KAC/C;IACF;GACQ"}
@@ -1,6 +1,6 @@
1
- import { AccountSettings } from "./account-settings.js";
2
1
  import { HandlerUrls } from "../lib/hexclave-app/common.js";
3
2
  import { StackClientApp } from "../lib/hexclave-app/apps/interfaces/client-app.js";
3
+ import { AccountSettings } from "./account-settings.js";
4
4
  import { CliAuthConfirmation } from "./cli-auth-confirm.js";
5
5
  import { EmailVerification } from "./email-verification.js";
6
6
  import { ErrorPage } from "./error-page.js";
@@ -2,17 +2,17 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
+ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
5
6
  let react = require("react");
6
7
  let ___index_js = require("../index.js");
7
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
+ let ___lib_hooks_js = require("../lib/hooks.js");
8
10
  let _hexclave_shared = require("@hexclave/shared");
9
- let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
10
11
  let _hexclave_shared_dist_utils_react = require("@hexclave/shared/dist/utils/react");
11
12
  let ___components_message_cards_known_error_message_card_js = require("../components/message-cards/known-error-message-card.js");
12
13
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
13
14
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
14
15
  let __cli_auth_confirm_js = require("./cli-auth-confirm.js");
15
- let ___lib_hooks_js = require("../lib/hooks.js");
16
16
  let ___lib_hexclave_app_index_js = require("../lib/hexclave-app/index.js");
17
17
  let _hexclave_shared_dist_utils_objects = require("@hexclave/shared/dist/utils/objects");
18
18
  let _hexclave_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
+ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
5
6
  let react = require("react");
6
7
  react = require_chunk.__toESM(react);
7
8
  let ___index_js = require("../index.js");
8
9
  let ___lib_translations_js = require("../lib/translations.js");
9
10
  let react_jsx_runtime = require("react/jsx-runtime");
10
11
  let _hexclave_shared = require("@hexclave/shared");
11
- let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
12
12
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
13
13
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
14
14
  let _hexclave_shared_dist_utils_caches = require("@hexclave/shared/dist/utils/caches");
@@ -3,14 +3,14 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_ui = require("@hexclave/ui");
6
- let lucide_react = require("lucide-react");
7
6
  let react = require("react");
8
7
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
8
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
10
9
  let ___lib_translations_js = require("../lib/translations.js");
11
10
  let react_jsx_runtime = require("react/jsx-runtime");
12
11
  let _hexclave_shared = require("@hexclave/shared");
13
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
12
+ let lucide_react = require("lucide-react");
13
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
14
14
 
15
15
  //#region src/components-page/mfa.tsx
16
16
  function MfaForm({ onSuccess, onCancel }) {
@@ -128,22 +128,17 @@ function MFA(props) {
128
128
  const { t } = (0, ___lib_translations_js.useTranslation)();
129
129
  const headerText = t("Multi-Factor Authentication");
130
130
  const instructionText = t("Enter the six-digit code from your authenticator app");
131
- if (props.fullPage) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___components_elements_maybe_full_page_js.MaybeFullPage, {
132
- fullPage: true,
131
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___components_elements_maybe_full_page_js.MaybeFullPage, {
132
+ fullPage: !!props.fullPage,
133
133
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
134
- className: "stack-scope flex flex-col items-stretch",
135
- style: {
136
- maxWidth: "380px",
137
- flexBasis: "380px",
138
- padding: "1rem"
139
- },
134
+ className: (0, _hexclave_ui.cn)("stack-scope max-w-[380px] flex-basis-[380px]", props.fullPage ? "p-4" : "p-0"),
140
135
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
141
136
  className: "text-center mb-6",
142
137
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
143
138
  type: "h2",
144
139
  children: headerText
145
140
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
146
- className: "mt-2",
141
+ className: "mt-2 text-sm text-muted-foreground",
147
142
  children: instructionText
148
143
  })]
149
144
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MfaForm, {
@@ -152,16 +147,6 @@ function MFA(props) {
152
147
  })]
153
148
  })
154
149
  });
155
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
156
- className: "flex flex-col items-stretch stack-scope",
157
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
158
- className: "mb-4 text-center",
159
- children: instructionText
160
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MfaForm, {
161
- onSuccess: props.onSuccess,
162
- onCancel: props.onCancel
163
- })]
164
- });
165
150
  }
166
151
 
167
152
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"mfa.js","names":["KnownErrors","InputOTP","InputOTPGroup","InputOTPSlot","CheckIcon","Typography","Spinner","FormWarningText","Button","MaybeFullPage"],"sources":["../../src/components-page/mfa.tsx"],"sourcesContent":["\"use client\";\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport {\n Button,\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n Spinner,\n Typography,\n cn,\n} from \"@hexclave/ui\";\nimport { CheckIcon } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { useTranslation } from \"../lib/translations\";\n\nfunction MfaForm({ onSuccess, onCancel }: {\n onSuccess?: () => void,\n onCancel?: () => void,\n}) {\n const hexclaveApp = useStackApp();\n const { t } = useTranslation();\n const [otp, setOtp] = useState<string>(\"\");\n const formRef = useRef<HTMLFormElement>(null);\n\n const [submitting, setSubmitting] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [verified, setVerified] = useState<boolean>(false);\n\n const [attemptCode, setAttemptCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (!attemptCode && typeof window !== \"undefined\") {\n // Hexclave rebrand: prefer the new MFA attempt code key, fall back to the legacy key.\n const code = window.sessionStorage.getItem(\"hexclave_mfa_attempt_code\") ?? window.sessionStorage.getItem(\"stack_mfa_attempt_code\");\n if (code) {\n setAttemptCode(code);\n }\n }\n }, [ attemptCode]);\n\n // Handle OTP verification when code is complete\n useEffect(() => {\n if (otp.length === 6 && !submitting) {\n // Blur any focused inputs\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n if (formRef.current) {\n const inputs = formRef.current.querySelectorAll('input');\n for (const input of inputs) {\n input.blur();\n }\n }\n\n setSubmitting(true);\n setError(null);\n\n if (attemptCode) {\n hexclaveApp\n .signInWithMfa(otp, attemptCode, { noRedirect: true })\n .then(async (result) => {\n if (result.status === \"ok\") {\n setVerified(true);\n\n // Cleanup session storage\n if (typeof window !== \"undefined\") {\n // Hexclave rebrand: remove both the new and legacy MFA attempt code keys.\n window.sessionStorage.removeItem(\"hexclave_mfa_attempt_code\");\n window.sessionStorage.removeItem(\"stack_mfa_attempt_code\");\n }\n\n if (onSuccess) {\n onSuccess();\n } else {\n await hexclaveApp.redirectToAfterSignIn();\n }\n } else {\n throw result.error;\n }\n })\n .catch((e) => {\n if (e instanceof KnownErrors.InvalidTotpCode) {\n setError(t(\"Invalid TOTP code\"));\n } else {\n setError(t(\"Verification failed\"));\n }\n })\n .finally(() => {\n setSubmitting(false);\n if (!verified) {\n setOtp(\"\");\n }\n });\n } else {\n setSubmitting(false);\n setError(t(\"Missing verification information\"));\n }\n }\n\n // Clear error when user is typing\n if (otp.length !== 0 && otp.length !== 6) {\n setError(null);\n }\n }, [otp, submitting, onSuccess, attemptCode, hexclaveApp, t, verified]);\n\n\n const inputStyleClass = useMemo(() => {\n if (verified) {\n return \"opacity-85 transition-all duration-300\";\n }\n\n if (error) {\n return \"ring-red-500 border-red-500\";\n }\n\n return \"focus:ring-primary/50\";\n }, [error, verified]);\n\n return (\n <div className=\"flex flex-col items-stretch stack-scope\">\n <form ref={formRef} className=\"w-full flex flex-col items-center gap-4\">\n <InputOTP\n maxLength={6}\n type=\"text\"\n inputMode=\"numeric\"\n placeholder=\"······\"\n value={otp}\n onChange={(value) => setOtp(value.toUpperCase())}\n disabled={submitting || verified}\n >\n <InputOTPGroup>\n {[0, 1, 2, 3, 4, 5].map((index) => (\n <InputOTPSlot\n key={index}\n index={index}\n size=\"lg\"\n className={cn(\n \"border focus:ring-2 transition-all\",\n inputStyleClass,\n )}\n />\n ))}\n </InputOTPGroup>\n </InputOTP>\n\n {/* Verification Status */}\n <div className=\"h-8 flex flex-col gap-4 items-center justify-center w-full\">\n {verified ? (\n <div className=\"flex items-center gap-2 animate-in fade-in duration-300 slide-in-from-bottom-2\">\n <CheckIcon className=\"w-5 h-5 text-green-600 animate-in zoom-in duration-300\" />\n <Typography className=\"text-sm font-medium\">{t(\"Verified! Redirecting...\")}</Typography>\n </div>\n ) : submitting ? (\n <div className=\"flex items-center gap-2\">\n <Spinner className=\"text-primary h-4 w-4\" />\n <Typography className=\"text-sm\">{t(\"Verifying...\")}</Typography>\n </div>\n ) : null}\n\n {/* Error reporting */}\n {error !== null && !submitting && !verified ? <FormWarningText text={error} /> : null}\n </div>\n </form>\n\n {/* Cancel Button */}\n {onCancel && !verified && (\n <Button\n variant=\"link\"\n onClick={onCancel}\n className=\"underline mt-4 self-center\"\n disabled={submitting || verified}\n >\n {t(\"Cancel\")}\n </Button>\n )}\n </div>\n );\n}\n\nexport function MFA(props: {\n fullPage?: boolean,\n onSuccess?: () => void,\n onCancel?: () => void,\n}) {\n const { t } = useTranslation();\n\n const headerText = t(\"Multi-Factor Authentication\");\n const instructionText = t(\"Enter the six-digit code from your authenticator app\");\n\n if (props.fullPage) {\n return (\n <MaybeFullPage fullPage={true}>\n <div\n className=\"stack-scope flex flex-col items-stretch\"\n style={{ maxWidth: \"380px\", flexBasis: \"380px\", padding: \"1rem\" }}\n >\n <div className=\"text-center mb-6\">\n <Typography type=\"h2\">{headerText}</Typography>\n <Typography className=\"mt-2\">{instructionText}</Typography>\n </div>\n <MfaForm onSuccess={props.onSuccess} onCancel={props.onCancel} />\n </div>\n </MaybeFullPage>\n );\n }\n\n return (\n <div className=\"flex flex-col items-stretch stack-scope\">\n <Typography className=\"mb-4 text-center\">{instructionText}</Typography>\n <MfaForm onSuccess={props.onSuccess} onCancel={props.onCancel} />\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mfa.js","names":["KnownErrors","InputOTP","InputOTPGroup","InputOTPSlot","CheckIcon","Typography","Spinner","FormWarningText","Button","MaybeFullPage"],"sources":["../../src/components-page/mfa.tsx"],"sourcesContent":["\"use client\";\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport {\n Button,\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n Spinner,\n Typography,\n cn,\n} from \"@hexclave/ui\";\nimport { CheckIcon } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { useTranslation } from \"../lib/translations\";\n\nfunction MfaForm({ onSuccess, onCancel }: {\n onSuccess?: () => void,\n onCancel?: () => void,\n}) {\n const hexclaveApp = useStackApp();\n const { t } = useTranslation();\n const [otp, setOtp] = useState<string>(\"\");\n const formRef = useRef<HTMLFormElement>(null);\n\n const [submitting, setSubmitting] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [verified, setVerified] = useState<boolean>(false);\n\n const [attemptCode, setAttemptCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (!attemptCode && typeof window !== \"undefined\") {\n // Hexclave rebrand: prefer the new MFA attempt code key, fall back to the legacy key.\n const code = window.sessionStorage.getItem(\"hexclave_mfa_attempt_code\") ?? window.sessionStorage.getItem(\"stack_mfa_attempt_code\");\n if (code) {\n setAttemptCode(code);\n }\n }\n }, [ attemptCode]);\n\n // Handle OTP verification when code is complete\n useEffect(() => {\n if (otp.length === 6 && !submitting) {\n // Blur any focused inputs\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n if (formRef.current) {\n const inputs = formRef.current.querySelectorAll('input');\n for (const input of inputs) {\n input.blur();\n }\n }\n\n setSubmitting(true);\n setError(null);\n\n if (attemptCode) {\n hexclaveApp\n .signInWithMfa(otp, attemptCode, { noRedirect: true })\n .then(async (result) => {\n if (result.status === \"ok\") {\n setVerified(true);\n\n // Cleanup session storage\n if (typeof window !== \"undefined\") {\n // Hexclave rebrand: remove both the new and legacy MFA attempt code keys.\n window.sessionStorage.removeItem(\"hexclave_mfa_attempt_code\");\n window.sessionStorage.removeItem(\"stack_mfa_attempt_code\");\n }\n\n if (onSuccess) {\n onSuccess();\n } else {\n await hexclaveApp.redirectToAfterSignIn();\n }\n } else {\n throw result.error;\n }\n })\n .catch((e) => {\n if (e instanceof KnownErrors.InvalidTotpCode) {\n setError(t(\"Invalid TOTP code\"));\n } else {\n setError(t(\"Verification failed\"));\n }\n })\n .finally(() => {\n setSubmitting(false);\n if (!verified) {\n setOtp(\"\");\n }\n });\n } else {\n setSubmitting(false);\n setError(t(\"Missing verification information\"));\n }\n }\n\n // Clear error when user is typing\n if (otp.length !== 0 && otp.length !== 6) {\n setError(null);\n }\n }, [otp, submitting, onSuccess, attemptCode, hexclaveApp, t, verified]);\n\n\n const inputStyleClass = useMemo(() => {\n if (verified) {\n return \"opacity-85 transition-all duration-300\";\n }\n\n if (error) {\n return \"ring-red-500 border-red-500\";\n }\n\n return \"focus:ring-primary/50\";\n }, [error, verified]);\n\n return (\n <div className=\"flex flex-col items-stretch stack-scope\">\n <form ref={formRef} className=\"w-full flex flex-col items-center gap-4\">\n <InputOTP\n maxLength={6}\n type=\"text\"\n inputMode=\"numeric\"\n placeholder=\"······\"\n value={otp}\n onChange={(value) => setOtp(value.toUpperCase())}\n disabled={submitting || verified}\n >\n <InputOTPGroup>\n {[0, 1, 2, 3, 4, 5].map((index) => (\n <InputOTPSlot\n key={index}\n index={index}\n size=\"lg\"\n className={cn(\n \"border focus:ring-2 transition-all\",\n inputStyleClass,\n )}\n />\n ))}\n </InputOTPGroup>\n </InputOTP>\n\n {/* Verification Status */}\n <div className=\"h-8 flex flex-col gap-4 items-center justify-center w-full\">\n {verified ? (\n <div className=\"flex items-center gap-2 animate-in fade-in duration-300 slide-in-from-bottom-2\">\n <CheckIcon className=\"w-5 h-5 text-green-600 animate-in zoom-in duration-300\" />\n <Typography className=\"text-sm font-medium\">{t(\"Verified! Redirecting...\")}</Typography>\n </div>\n ) : submitting ? (\n <div className=\"flex items-center gap-2\">\n <Spinner className=\"text-primary h-4 w-4\" />\n <Typography className=\"text-sm\">{t(\"Verifying...\")}</Typography>\n </div>\n ) : null}\n\n {/* Error reporting */}\n {error !== null && !submitting && !verified ? <FormWarningText text={error} /> : null}\n </div>\n </form>\n\n {/* Cancel Button */}\n {onCancel && !verified && (\n <Button\n variant=\"link\"\n onClick={onCancel}\n className=\"underline mt-4 self-center\"\n disabled={submitting || verified}\n >\n {t(\"Cancel\")}\n </Button>\n )}\n </div>\n );\n}\n\nexport function MFA(props: {\n fullPage?: boolean,\n onSuccess?: () => void,\n onCancel?: () => void,\n}) {\n const { t } = useTranslation();\n\n const headerText = t(\"Multi-Factor Authentication\");\n const instructionText = t(\"Enter the six-digit code from your authenticator app\");\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"stack-scope max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center mb-6\">\n <Typography type=\"h2\">{headerText}</Typography>\n <Typography className=\"mt-2 text-sm text-muted-foreground\">{instructionText}</Typography>\n </div>\n <MfaForm onSuccess={props.onSuccess} onCancel={props.onCancel} />\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":"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"}
@@ -3,14 +3,14 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
6
7
  let _hexclave_ui = require("@hexclave/ui");
7
8
  let react = require("react");
8
9
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
10
10
  let ___lib_translations_js = require("../lib/translations.js");
11
11
  let react_jsx_runtime = require("react/jsx-runtime");
12
12
  let _hexclave_shared = require("@hexclave/shared");
13
- let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
13
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
14
14
  let ___components_link_js = require("../components/link.js");
15
15
  let ___lib_hexclave_app_index_js = require("../lib/hexclave-app/index.js");
16
16
 
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
7
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
6
8
  let _hexclave_ui = require("@hexclave/ui");
7
9
  let react = require("react");
10
+ let react_hook_form = require("react-hook-form");
8
11
  let ___index_js = require("../index.js");
12
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
9
13
  let ___lib_translations_js = require("../lib/translations.js");
10
14
  let react_jsx_runtime = require("react/jsx-runtime");
11
15
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
12
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
13
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
14
- let react_hook_form = require("react-hook-form");
15
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
16
16
 
17
17
  //#region src/components-page/onboarding.tsx
18
18
  function Onboarding(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.d.ts","names":[],"sources":["../../src/components-page/password-reset.tsx"],"mappings":";;;iBAyBwB,iBAAA,CAAkB,KAAA;EACxC,IAAA;EACA,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA4Ge,aAAA,CAAA;EACd,YAAA;EACA;AAAA;EAEA,YAAA,EAAc,MAAA;EACd,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"password-reset.d.ts","names":[],"sources":["../../src/components-page/password-reset.tsx"],"mappings":";;;iBAyBwB,iBAAA,CAAkB,KAAA;EACxC,IAAA;EACA,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA0Ge,aAAA,CAAA;EACd,YAAA;EACA;AAAA;EAEA,YAAA,EAAc,MAAA;EACd,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -3,24 +3,24 @@
3
3
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
7
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
6
8
  let _hexclave_ui = require("@hexclave/ui");
7
9
  let react = require("react");
10
+ let react_hook_form = require("react-hook-form");
8
11
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
10
13
  let ___lib_translations_js = require("../lib/translations.js");
11
14
  let react_jsx_runtime = require("react/jsx-runtime");
15
+ let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
16
+ let yup = require("yup");
17
+ yup = require_chunk.__toESM(yup);
12
18
  let _hexclave_shared = require("@hexclave/shared");
19
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
13
20
  let _hexclave_shared_dist_utils_react = require("@hexclave/shared/dist/utils/react");
14
21
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
15
22
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
16
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
17
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
18
- let react_hook_form = require("react-hook-form");
19
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
20
23
  let _hexclave_shared_dist_utils_caches = require("@hexclave/shared/dist/utils/caches");
21
- let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
22
- let yup = require("yup");
23
- yup = require_chunk.__toESM(yup);
24
24
 
25
25
  //#region src/components-page/password-reset.tsx
26
26
  function PasswordResetForm(props) {
@@ -88,11 +88,10 @@ function PasswordResetForm(props) {
88
88
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
89
89
  id: "password",
90
90
  autoComplete: "new-password",
91
- ...register("password"),
92
- onChange: () => {
91
+ ...register("password", { onChange: () => {
93
92
  clearErrors("password");
94
93
  clearErrors("passwordRepeat");
95
- }
94
+ } })
96
95
  }),
97
96
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___components_elements_form_warning_js.FormWarningText, { text: errors.password?.message?.toString() }),
98
97
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
@@ -103,11 +102,10 @@ function PasswordResetForm(props) {
103
102
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
104
103
  id: "repeat-password",
105
104
  autoComplete: "new-password",
106
- ...register("passwordRepeat"),
107
- onChange: () => {
105
+ ...register("passwordRepeat", { onChange: () => {
108
106
  clearErrors("password");
109
107
  clearErrors("passwordRepeat");
110
- }
108
+ } })
111
109
  }),
112
110
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___components_elements_form_warning_js.FormWarningText, { text: errors.passwordRepeat?.message?.toString() }),
113
111
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.js","names":["passwordSchema","PredefinedMessageCard","MessageCard","MaybeFullPage","Typography","Label","PasswordInput","FormWarningText","Button","KnownErrors"],"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { getPasswordError } from \"@hexclave/shared/dist/helpers/password\";\nimport { passwordSchema, yupObject, yupString } from \"@hexclave/shared/dist/schema-fields\";\nimport { cacheFunction } from \"@hexclave/shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { use } from \"@hexclave/shared/dist/utils/react\";\nimport { Button, Label, PasswordInput, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport default function PasswordResetForm(props: {\n code: string,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n password: passwordSchema.defined(t(\"Please enter your password\")).nonEmpty(t(\"Please enter your password\")).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yupString().nullable().oneOf([yup.ref('password'), null], t(\"Passwords do not match\")).defined().nonEmpty(t(\"Please repeat your password\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [finished, setFinished] = useState(false);\n const [resetError, setResetError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { password } = data;\n const result = await hexclaveApp.resetPassword({ password, code: props.code });\n if (result.status === 'error') {\n setResetError(true);\n return;\n }\n\n setFinished(true);\n } finally {\n setLoading(false);\n }\n };\n\n if (finished) {\n return <PredefinedMessageCard type='passwordReset' fullPage={!!props.fullPage} />;\n }\n\n if (resetError) {\n return (\n <MessageCard title={t(\"Failed to reset password\")} fullPage={!!props.fullPage}>\n {t(\"Failed to reset password. Please request a new password reset link\")}\n </MessageCard>\n );\n }\n\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"flex flex-col items-stretch max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center mb-6\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n </div>\n\n <form\n className=\"flex flex-col items-stretch\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"password\" className=\"mb-1\">{t(\"New Password\")}</Label>\n <PasswordInput\n id=\"password\"\n autoComplete=\"new-password\"\n {...register('password')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.password?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat New Password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...register('passwordRepeat')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.passwordRepeat?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Reset Password\")}\n </Button>\n </form>\n </div>\n </MaybeFullPage>\n );\n}\n\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (hexclaveApp: StackClientApp<true>, code: string) => {\n return await hexclaveApp.verifyPasswordResetCode(code);\n});\n\nexport function PasswordReset({\n searchParams,\n fullPage = false,\n}: {\n searchParams: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"Please double check if you have the correct password reset link.\")}</Typography>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"Your password reset link has expired. Please request a new password reset link from the login page.\")}</Typography>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title={t(\"Used Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"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.\")}</Typography>\n </MessageCard>\n );\n\n const code = searchParams.code;\n if (!code) {\n return invalidJsx;\n }\n\n const result = use(cachedVerifyPasswordResetCode(hexclaveApp, code));\n\n if (result.status === 'error') {\n if (KnownErrors.VerificationCodeNotFound.isInstance(result.error)) {\n return invalidJsx;\n } else if (KnownErrors.VerificationCodeExpired.isInstance(result.error)) {\n return expiredJsx;\n } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(result.error)) {\n return usedJsx;\n } else {\n throw result.error;\n }\n }\n\n return <PasswordResetForm code={code} fullPage={fullPage} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"password-reset.js","names":["passwordSchema","PredefinedMessageCard","MessageCard","MaybeFullPage","Typography","Label","PasswordInput","FormWarningText","Button","KnownErrors"],"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\n\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { getPasswordError } from \"@hexclave/shared/dist/helpers/password\";\nimport { passwordSchema, yupObject, yupString } from \"@hexclave/shared/dist/schema-fields\";\nimport { cacheFunction } from \"@hexclave/shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { use } from \"@hexclave/shared/dist/utils/react\";\nimport { Button, Label, PasswordInput, Typography, cn } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nexport default function PasswordResetForm(props: {\n code: string,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n\n const schema = yupObject({\n password: passwordSchema.defined(t(\"Please enter your password\")).nonEmpty(t(\"Please enter your password\")).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yupString().nullable().oneOf([yup.ref('password'), null], t(\"Passwords do not match\")).defined().nonEmpty(t(\"Please repeat your password\"))\n });\n\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const hexclaveApp = useStackApp();\n const [finished, setFinished] = useState(false);\n const [resetError, setResetError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { password } = data;\n const result = await hexclaveApp.resetPassword({ password, code: props.code });\n if (result.status === 'error') {\n setResetError(true);\n return;\n }\n\n setFinished(true);\n } finally {\n setLoading(false);\n }\n };\n\n if (finished) {\n return <PredefinedMessageCard type='passwordReset' fullPage={!!props.fullPage} />;\n }\n\n if (resetError) {\n return (\n <MessageCard title={t(\"Failed to reset password\")} fullPage={!!props.fullPage}>\n {t(\"Failed to reset password. Please request a new password reset link\")}\n </MessageCard>\n );\n }\n\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className={cn(\n \"flex flex-col items-stretch max-w-[380px] flex-basis-[380px]\",\n props.fullPage ? \"p-4\" : \"p-0\"\n )}>\n <div className=\"text-center mb-6\">\n <Typography type='h2'>{t(\"Reset Your Password\")}</Typography>\n </div>\n\n <form\n className=\"flex flex-col items-stretch\"\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"password\" className=\"mb-1\">{t(\"New Password\")}</Label>\n <PasswordInput\n id=\"password\"\n autoComplete=\"new-password\"\n {...register('password', { onChange: () => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n } })}\n />\n <FormWarningText text={errors.password?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat New Password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...register('passwordRepeat', { onChange: () => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n } })}\n />\n <FormWarningText text={errors.passwordRepeat?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n {t(\"Reset Password\")}\n </Button>\n </form>\n </div>\n </MaybeFullPage>\n );\n}\n\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (hexclaveApp: StackClientApp<true>, code: string) => {\n return await hexclaveApp.verifyPasswordResetCode(code);\n});\n\nexport function PasswordReset({\n searchParams,\n fullPage = false,\n}: {\n searchParams: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"Please double check if you have the correct password reset link.\")}</Typography>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"Your password reset link has expired. Please request a new password reset link from the login page.\")}</Typography>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title={t(\"Used Password Reset Link\")} fullPage={fullPage}>\n <Typography>{t(\"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.\")}</Typography>\n </MessageCard>\n );\n\n const code = searchParams.code;\n if (!code) {\n return invalidJsx;\n }\n\n const result = use(cachedVerifyPasswordResetCode(hexclaveApp, code));\n\n if (result.status === 'error') {\n if (KnownErrors.VerificationCodeNotFound.isInstance(result.error)) {\n return invalidJsx;\n } else if (KnownErrors.VerificationCodeExpired.isInstance(result.error)) {\n return expiredJsx;\n } else if (KnownErrors.VerificationCodeAlreadyUsed.isInstance(result.error)) {\n return usedJsx;\n } else {\n throw result.error;\n }\n }\n\n return <PasswordResetForm code={code} fullPage={fullPage} />;\n}\n"],"mappings":"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"}
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../chunk-BE-pF4vm.js');
5
5
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
7
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
6
8
  let _hexclave_ui = require("@hexclave/ui");
7
9
  let react = require("react");
10
+ let react_hook_form = require("react-hook-form");
8
11
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
10
13
  let ___lib_translations_js = require("../lib/translations.js");
11
14
  let react_jsx_runtime = require("react/jsx-runtime");
12
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
13
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
14
- let react_hook_form = require("react-hook-form");
15
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
15
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
16
16
 
17
17
  //#region src/components-page/team-creation.tsx
18
18
  function TeamCreation(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"dev-tool-core.d.ts","names":[],"sources":["../../src/dev-tool/dev-tool-core.ts"],"mappings":";;;iBA6yEgB,aAAA,CAAc,GAAA,EAAK,cAAA"}
1
+ {"version":3,"file":"dev-tool-core.d.ts","names":[],"sources":["../../src/dev-tool/dev-tool-core.ts"],"mappings":";;;iBAkxEgB,aAAA,CAAc,GAAA,EAAK,cAAA"}