@hexclave/tanstack-start 1.0.41 → 1.0.43

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 (1122) hide show
  1. package/dist/account-settings-cTsj8rpJ.d.ts +56 -0
  2. package/dist/account-settings-cTsj8rpJ.d.ts.map +1 -0
  3. package/dist/admin-app-impl-qfd_GNf3.d.ts +1282 -0
  4. package/dist/admin-app-impl-qfd_GNf3.d.ts.map +1 -0
  5. package/dist/auth-page-YnM_LtbN.d.ts +24 -0
  6. package/dist/auth-page-YnM_LtbN.d.ts.map +1 -0
  7. package/dist/cli-auth-confirm-BW3PYpKb.d.ts +19 -0
  8. package/dist/cli-auth-confirm-BW3PYpKb.d.ts.map +1 -0
  9. package/dist/clickmap/clickmap-core.d.ts +1 -2
  10. package/dist/clickmap/clickmap-core.d.ts.map +1 -1
  11. package/dist/clickmap/clickmap-core.js +2 -4
  12. package/dist/clickmap/clickmap-core.js.map +1 -1
  13. package/dist/clickmap/clickmap-styles.js +3 -6
  14. package/dist/clickmap/clickmap-styles.js.map +1 -1
  15. package/dist/clickmap/index.d.ts +1 -2
  16. package/dist/clickmap/index.d.ts.map +1 -1
  17. package/dist/clickmap/index.js +2 -4
  18. package/dist/clickmap/index.js.map +1 -1
  19. package/dist/client-app-CufTd2az.d.ts +1359 -0
  20. package/dist/client-app-CufTd2az.d.ts.map +1 -0
  21. package/dist/common-B3bYYs1i.d.ts +183 -0
  22. package/dist/common-B3bYYs1i.d.ts.map +1 -0
  23. package/dist/common-GgzuBlz0.d.ts +66 -0
  24. package/dist/common-GgzuBlz0.d.ts.map +1 -0
  25. package/dist/components/api-key-dialogs.d.ts +3 -4
  26. package/dist/components/api-key-dialogs.d.ts.map +1 -1
  27. package/dist/components/api-key-dialogs.js +3 -6
  28. package/dist/components/api-key-dialogs.js.map +1 -1
  29. package/dist/components/api-key-table.d.ts +2 -3
  30. package/dist/components/api-key-table.d.ts.map +1 -1
  31. package/dist/components/api-key-table.js +3 -6
  32. package/dist/components/api-key-table.js.map +1 -1
  33. package/dist/components/credential-sign-in.d.ts +2 -7
  34. package/dist/components/credential-sign-in.js +3 -6
  35. package/dist/components/credential-sign-in.js.map +1 -1
  36. package/dist/components/credential-sign-up.d.ts +2 -9
  37. package/dist/components/credential-sign-up.js +6 -8
  38. package/dist/components/credential-sign-up.js.map +1 -1
  39. package/dist/components/elements/form-warning.d.ts +1 -3
  40. package/dist/components/elements/form-warning.d.ts.map +1 -1
  41. package/dist/components/elements/form-warning.js +3 -6
  42. package/dist/components/elements/form-warning.js.map +1 -1
  43. package/dist/components/elements/maybe-full-page.d.ts +1 -2
  44. package/dist/components/elements/maybe-full-page.d.ts.map +1 -1
  45. package/dist/components/elements/maybe-full-page.js +4 -6
  46. package/dist/components/elements/maybe-full-page.js.map +1 -1
  47. package/dist/components/elements/separator-with-text.d.ts +1 -3
  48. package/dist/components/elements/separator-with-text.d.ts.map +1 -1
  49. package/dist/components/elements/separator-with-text.js +3 -6
  50. package/dist/components/elements/separator-with-text.js.map +1 -1
  51. package/dist/components/elements/sidebar-layout.d.ts +1 -2
  52. package/dist/components/elements/sidebar-layout.d.ts.map +1 -1
  53. package/dist/components/elements/sidebar-layout.js +5 -7
  54. package/dist/components/elements/sidebar-layout.js.map +1 -1
  55. package/dist/components/elements/ssr-layout-effect.d.ts +1 -3
  56. package/dist/components/elements/ssr-layout-effect.d.ts.map +1 -1
  57. package/dist/components/elements/ssr-layout-effect.js +2 -5
  58. package/dist/components/elements/ssr-layout-effect.js.map +1 -1
  59. package/dist/components/elements/user-avatar.d.ts +2 -15
  60. package/dist/components/elements/user-avatar.js +2 -4
  61. package/dist/components/elements/user-avatar.js.map +1 -1
  62. package/dist/components/link.d.ts +2 -4
  63. package/dist/components/link.d.ts.map +1 -1
  64. package/dist/components/link.js +3 -6
  65. package/dist/components/link.js.map +1 -1
  66. package/dist/components/magic-link-sign-in.d.ts +2 -7
  67. package/dist/components/magic-link-sign-in.js +3 -6
  68. package/dist/components/magic-link-sign-in.js.map +1 -1
  69. package/dist/components/message-cards/known-error-message-card.d.ts +1 -2
  70. package/dist/components/message-cards/known-error-message-card.d.ts.map +1 -1
  71. package/dist/components/message-cards/known-error-message-card.js +2 -5
  72. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  73. package/dist/components/message-cards/message-card.d.ts +2 -19
  74. package/dist/components/message-cards/message-card.js +5 -7
  75. package/dist/components/message-cards/message-card.js.map +1 -1
  76. package/dist/components/message-cards/predefined-message-card.d.ts +1 -3
  77. package/dist/components/message-cards/predefined-message-card.d.ts.map +1 -1
  78. package/dist/components/message-cards/predefined-message-card.js +2 -5
  79. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  80. package/dist/components/oauth-button-group.d.ts +2 -19
  81. package/dist/components/oauth-button-group.js +3 -6
  82. package/dist/components/oauth-button-group.js.map +1 -1
  83. package/dist/components/oauth-button.d.ts +2 -17
  84. package/dist/components/oauth-button.js +5 -7
  85. package/dist/components/oauth-button.js.map +1 -1
  86. package/dist/components/passkey-button.d.ts +1 -3
  87. package/dist/components/passkey-button.d.ts.map +1 -1
  88. package/dist/components/passkey-button.js +3 -6
  89. package/dist/components/passkey-button.js.map +1 -1
  90. package/dist/components/profile-image-editor.d.ts +2 -3
  91. package/dist/components/profile-image-editor.d.ts.map +1 -1
  92. package/dist/components/profile-image-editor.js +5 -6
  93. package/dist/components/profile-image-editor.js.map +1 -1
  94. package/dist/components/selected-team-switcher.d.ts +2 -31
  95. package/dist/components/selected-team-switcher.js +3 -6
  96. package/dist/components/selected-team-switcher.js.map +1 -1
  97. package/dist/components/team-icon.d.ts +2 -4
  98. package/dist/components/team-icon.d.ts.map +1 -1
  99. package/dist/components/team-icon.js +2 -4
  100. package/dist/components/team-icon.js.map +1 -1
  101. package/dist/components/team-switcher.d.ts +2 -31
  102. package/dist/components/team-switcher.js +3 -6
  103. package/dist/components/team-switcher.js.map +1 -1
  104. package/dist/components/use-in-iframe.d.ts.map +1 -1
  105. package/dist/components/use-in-iframe.js +3 -6
  106. package/dist/components/use-in-iframe.js.map +1 -1
  107. package/dist/components/user-button.d.ts +2 -22
  108. package/dist/components/user-button.js +5 -7
  109. package/dist/components/user-button.js.map +1 -1
  110. package/dist/components-page/account-settings/active-sessions/active-sessions-page.d.ts +1 -3
  111. package/dist/components-page/account-settings/active-sessions/active-sessions-page.d.ts.map +1 -1
  112. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +2 -4
  113. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  114. package/dist/components-page/account-settings/api-keys/api-keys-page.d.ts +1 -3
  115. package/dist/components-page/account-settings/api-keys/api-keys-page.d.ts.map +1 -1
  116. package/dist/components-page/account-settings/api-keys/api-keys-page.js +2 -4
  117. package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  118. package/dist/components-page/account-settings/editable-text.d.ts +1 -3
  119. package/dist/components-page/account-settings/editable-text.d.ts.map +1 -1
  120. package/dist/components-page/account-settings/editable-text.js +2 -4
  121. package/dist/components-page/account-settings/editable-text.js.map +1 -1
  122. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts +1 -3
  123. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts.map +1 -1
  124. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js +2 -4
  125. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  126. package/dist/components-page/account-settings/email-and-auth/emails-section.d.ts +1 -3
  127. package/dist/components-page/account-settings/email-and-auth/emails-section.d.ts.map +1 -1
  128. package/dist/components-page/account-settings/email-and-auth/emails-section.js +2 -4
  129. package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  130. package/dist/components-page/account-settings/email-and-auth/mfa-section.d.ts +1 -3
  131. package/dist/components-page/account-settings/email-and-auth/mfa-section.d.ts.map +1 -1
  132. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +5 -6
  133. package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  134. package/dist/components-page/account-settings/email-and-auth/otp-section.d.ts +1 -3
  135. package/dist/components-page/account-settings/email-and-auth/otp-section.d.ts.map +1 -1
  136. package/dist/components-page/account-settings/email-and-auth/otp-section.js +2 -4
  137. package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  138. package/dist/components-page/account-settings/email-and-auth/passkey-section.d.ts +1 -3
  139. package/dist/components-page/account-settings/email-and-auth/passkey-section.d.ts.map +1 -1
  140. package/dist/components-page/account-settings/email-and-auth/passkey-section.js +2 -4
  141. package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  142. package/dist/components-page/account-settings/email-and-auth/password-section.d.ts +1 -3
  143. package/dist/components-page/account-settings/email-and-auth/password-section.d.ts.map +1 -1
  144. package/dist/components-page/account-settings/email-and-auth/password-section.js +4 -5
  145. package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  146. package/dist/components-page/account-settings/notifications/notifications-page.d.ts +1 -3
  147. package/dist/components-page/account-settings/notifications/notifications-page.d.ts.map +1 -1
  148. package/dist/components-page/account-settings/notifications/notifications-page.js +2 -4
  149. package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  150. package/dist/components-page/account-settings/page-layout.d.ts +1 -3
  151. package/dist/components-page/account-settings/page-layout.d.ts.map +1 -1
  152. package/dist/components-page/account-settings/page-layout.js +2 -4
  153. package/dist/components-page/account-settings/page-layout.js.map +1 -1
  154. package/dist/components-page/account-settings/payments/payments-page.d.ts +2 -4
  155. package/dist/components-page/account-settings/payments/payments-page.d.ts.map +1 -1
  156. package/dist/components-page/account-settings/payments/payments-page.js +3 -6
  157. package/dist/components-page/account-settings/payments/payments-page.js.map +1 -1
  158. package/dist/components-page/account-settings/payments/payments-panel.d.ts +2 -3
  159. package/dist/components-page/account-settings/payments/payments-panel.d.ts.map +1 -1
  160. package/dist/components-page/account-settings/payments/payments-panel.js +3 -6
  161. package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -1
  162. package/dist/components-page/account-settings/profile-page/profile-page.d.ts +1 -3
  163. package/dist/components-page/account-settings/profile-page/profile-page.d.ts.map +1 -1
  164. package/dist/components-page/account-settings/profile-page/profile-page.js +2 -4
  165. package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  166. package/dist/components-page/account-settings/section.d.ts +1 -3
  167. package/dist/components-page/account-settings/section.d.ts.map +1 -1
  168. package/dist/components-page/account-settings/section.js +2 -4
  169. package/dist/components-page/account-settings/section.js.map +1 -1
  170. package/dist/components-page/account-settings/settings/delete-account-section.d.ts +1 -3
  171. package/dist/components-page/account-settings/settings/delete-account-section.d.ts.map +1 -1
  172. package/dist/components-page/account-settings/settings/delete-account-section.js +2 -4
  173. package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  174. package/dist/components-page/account-settings/settings/settings-page.d.ts +1 -3
  175. package/dist/components-page/account-settings/settings/settings-page.d.ts.map +1 -1
  176. package/dist/components-page/account-settings/settings/settings-page.js +2 -4
  177. package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
  178. package/dist/components-page/account-settings/settings/sign-out-section.d.ts +1 -3
  179. package/dist/components-page/account-settings/settings/sign-out-section.d.ts.map +1 -1
  180. package/dist/components-page/account-settings/settings/sign-out-section.js +2 -4
  181. package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  182. package/dist/components-page/account-settings/teams/leave-team-section.d.ts +2 -4
  183. package/dist/components-page/account-settings/teams/leave-team-section.d.ts.map +1 -1
  184. package/dist/components-page/account-settings/teams/leave-team-section.js +2 -4
  185. package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  186. package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts +2 -3
  187. package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts.map +1 -1
  188. package/dist/components-page/account-settings/teams/team-api-keys-section.js +3 -5
  189. package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  190. package/dist/components-page/account-settings/teams/team-creation-page.d.ts +1 -3
  191. package/dist/components-page/account-settings/teams/team-creation-page.d.ts.map +1 -1
  192. package/dist/components-page/account-settings/teams/team-creation-page.js +2 -4
  193. package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  194. package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +2 -4
  195. package/dist/components-page/account-settings/teams/team-display-name-section.d.ts.map +1 -1
  196. package/dist/components-page/account-settings/teams/team-display-name-section.js +2 -4
  197. package/dist/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  198. package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +2 -4
  199. package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts.map +1 -1
  200. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +2 -4
  201. package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  202. package/dist/components-page/account-settings/teams/team-member-list-section.d.ts +2 -4
  203. package/dist/components-page/account-settings/teams/team-member-list-section.d.ts.map +1 -1
  204. package/dist/components-page/account-settings/teams/team-member-list-section.js +2 -4
  205. package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  206. package/dist/components-page/account-settings/teams/team-page.d.ts +2 -4
  207. package/dist/components-page/account-settings/teams/team-page.d.ts.map +1 -1
  208. package/dist/components-page/account-settings/teams/team-page.js +2 -4
  209. package/dist/components-page/account-settings/teams/team-page.js.map +1 -1
  210. package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +2 -4
  211. package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts.map +1 -1
  212. package/dist/components-page/account-settings/teams/team-profile-image-section.js +2 -4
  213. package/dist/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  214. package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +2 -4
  215. package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts.map +1 -1
  216. package/dist/components-page/account-settings/teams/team-profile-user-section.js +2 -4
  217. package/dist/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  218. package/dist/components-page/account-settings.d.ts +2 -58
  219. package/dist/components-page/account-settings.js +5 -7
  220. package/dist/components-page/account-settings.js.map +1 -1
  221. package/dist/components-page/auth-page.d.ts +2 -26
  222. package/dist/components-page/auth-page.js +3 -6
  223. package/dist/components-page/auth-page.js.map +1 -1
  224. package/dist/components-page/cli-auth-confirm.d.ts +2 -21
  225. package/dist/components-page/cli-auth-confirm.js +3 -6
  226. package/dist/components-page/cli-auth-confirm.js.map +1 -1
  227. package/dist/components-page/cli-auth-confirm.test.js +3 -4
  228. package/dist/components-page/cli-auth-confirm.test.js.map +1 -1
  229. package/dist/components-page/email-verification.d.ts +2 -10
  230. package/dist/components-page/email-verification.js +5 -7
  231. package/dist/components-page/email-verification.js.map +1 -1
  232. package/dist/components-page/error-page.d.ts +2 -10
  233. package/dist/components-page/error-page.js +3 -6
  234. package/dist/components-page/error-page.js.map +1 -1
  235. package/dist/components-page/forgot-password.d.ts +2 -14
  236. package/dist/components-page/forgot-password.js +3 -6
  237. package/dist/components-page/forgot-password.js.map +1 -1
  238. package/dist/components-page/hexclave-handler-client.d.ts +2 -62
  239. package/dist/components-page/hexclave-handler-client.js +2 -5
  240. package/dist/components-page/hexclave-handler-client.js.map +1 -1
  241. package/dist/components-page/hexclave-handler-client.test.js +1 -3
  242. package/dist/components-page/hexclave-handler-client.test.js.map +1 -1
  243. package/dist/components-page/hexclave-handler.d.ts +2 -37
  244. package/dist/components-page/hexclave-handler.js +5 -4
  245. package/dist/components-page/hexclave-handler.js.map +1 -1
  246. package/dist/components-page/magic-link-callback.d.ts +2 -10
  247. package/dist/components-page/magic-link-callback.js +6 -9
  248. package/dist/components-page/magic-link-callback.js.map +1 -1
  249. package/dist/components-page/mfa.d.ts +2 -11
  250. package/dist/components-page/mfa.js +2 -5
  251. package/dist/components-page/mfa.js.map +1 -1
  252. package/dist/components-page/oauth-callback.d.ts +2 -11
  253. package/dist/components-page/oauth-callback.js +3 -6
  254. package/dist/components-page/oauth-callback.js.map +1 -1
  255. package/dist/components-page/oauth-callback.test.js +3 -4
  256. package/dist/components-page/oauth-callback.test.js.map +1 -1
  257. package/dist/components-page/onboarding.d.ts +2 -9
  258. package/dist/components-page/onboarding.js +3 -6
  259. package/dist/components-page/onboarding.js.map +1 -1
  260. package/dist/components-page/password-reset.d.ts +2 -17
  261. package/dist/components-page/password-reset.js +8 -7
  262. package/dist/components-page/password-reset.js.map +1 -1
  263. package/dist/components-page/section.js +2 -2
  264. package/dist/components-page/sign-in.d.ts +2 -23
  265. package/dist/components-page/sign-in.js +2 -4
  266. package/dist/components-page/sign-in.js.map +1 -1
  267. package/dist/components-page/sign-out.d.ts +2 -10
  268. package/dist/components-page/sign-out.js +3 -6
  269. package/dist/components-page/sign-out.js.map +1 -1
  270. package/dist/components-page/sign-up.d.ts +2 -13
  271. package/dist/components-page/sign-up.js +3 -6
  272. package/dist/components-page/sign-up.js.map +1 -1
  273. package/dist/components-page/team-creation.d.ts +1 -3
  274. package/dist/components-page/team-creation.d.ts.map +1 -1
  275. package/dist/components-page/team-creation.js +3 -6
  276. package/dist/components-page/team-creation.js.map +1 -1
  277. package/dist/components-page/team-invitation.d.ts +2 -13
  278. package/dist/components-page/team-invitation.js +5 -7
  279. package/dist/components-page/team-invitation.js.map +1 -1
  280. package/dist/config.js +17 -19
  281. package/dist/convex-D2mFhYyd.d.ts +13 -0
  282. package/dist/convex-D2mFhYyd.d.ts.map +1 -0
  283. package/dist/cookie-DTOQvCYn.d.ts +42 -0
  284. package/dist/cookie-DTOQvCYn.d.ts.map +1 -0
  285. package/dist/credential-sign-in-BxCi9NEV.d.ts +5 -0
  286. package/dist/credential-sign-in-BxCi9NEV.d.ts.map +1 -0
  287. package/dist/credential-sign-up-tYm5rV86.d.ts +7 -0
  288. package/dist/credential-sign-up-tYm5rV86.d.ts.map +1 -0
  289. package/dist/dev-tool/dev-tool-core.d.ts +1 -2
  290. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  291. package/dist/dev-tool/dev-tool-core.js +2 -4
  292. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  293. package/dist/dev-tool/dev-tool-styles.js +3 -6
  294. package/dist/dev-tool/dev-tool-styles.js.map +1 -1
  295. package/dist/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
  296. package/dist/dev-tool/dev-tool-trigger-position.js +6 -7
  297. package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -1
  298. package/dist/dev-tool/dev-tool-trigger-position.test.js +1 -3
  299. package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
  300. package/dist/dev-tool/index.d.ts +1 -2
  301. package/dist/dev-tool/index.d.ts.map +1 -1
  302. package/dist/dev-tool/index.js +2 -4
  303. package/dist/dev-tool/index.js.map +1 -1
  304. package/dist/email-verification-Cr_KKvtQ.d.ts +8 -0
  305. package/dist/email-verification-Cr_KKvtQ.d.ts.map +1 -0
  306. package/dist/error-page-D0KwN73t.d.ts +8 -0
  307. package/dist/error-page-D0KwN73t.d.ts.map +1 -0
  308. package/dist/esm/clickmap/clickmap-core.d.ts +1 -1
  309. package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -1
  310. package/dist/esm/clickmap/clickmap-core.js +1 -2
  311. package/dist/esm/clickmap/clickmap-core.js.map +1 -1
  312. package/dist/esm/clickmap/clickmap-styles.js +1 -2
  313. package/dist/esm/clickmap/clickmap-styles.js.map +1 -1
  314. package/dist/esm/clickmap/index.d.ts +1 -1
  315. package/dist/esm/clickmap/index.d.ts.map +1 -1
  316. package/dist/esm/clickmap/index.js +1 -2
  317. package/dist/esm/clickmap/index.js.map +1 -1
  318. package/dist/esm/components/api-key-dialogs.d.ts +3 -4
  319. package/dist/esm/components/api-key-dialogs.d.ts.map +1 -1
  320. package/dist/esm/components/api-key-dialogs.js +2 -4
  321. package/dist/esm/components/api-key-dialogs.js.map +1 -1
  322. package/dist/esm/components/api-key-table.d.ts +2 -3
  323. package/dist/esm/components/api-key-table.d.ts.map +1 -1
  324. package/dist/esm/components/api-key-table.js +2 -4
  325. package/dist/esm/components/api-key-table.js.map +1 -1
  326. package/dist/esm/components/credential-sign-in.d.ts +1 -3
  327. package/dist/esm/components/credential-sign-in.d.ts.map +1 -1
  328. package/dist/esm/components/credential-sign-in.js +2 -4
  329. package/dist/esm/components/credential-sign-in.js.map +1 -1
  330. package/dist/esm/components/credential-sign-up.d.ts +1 -3
  331. package/dist/esm/components/credential-sign-up.d.ts.map +1 -1
  332. package/dist/esm/components/credential-sign-up.js +3 -5
  333. package/dist/esm/components/credential-sign-up.js.map +1 -1
  334. package/dist/esm/components/elements/form-warning.d.ts +1 -3
  335. package/dist/esm/components/elements/form-warning.d.ts.map +1 -1
  336. package/dist/esm/components/elements/form-warning.js +2 -4
  337. package/dist/esm/components/elements/form-warning.js.map +1 -1
  338. package/dist/esm/components/elements/maybe-full-page.d.ts +1 -2
  339. package/dist/esm/components/elements/maybe-full-page.d.ts.map +1 -1
  340. package/dist/esm/components/elements/maybe-full-page.js +2 -4
  341. package/dist/esm/components/elements/maybe-full-page.js.map +1 -1
  342. package/dist/esm/components/elements/separator-with-text.d.ts +1 -3
  343. package/dist/esm/components/elements/separator-with-text.d.ts.map +1 -1
  344. package/dist/esm/components/elements/separator-with-text.js +2 -4
  345. package/dist/esm/components/elements/separator-with-text.js.map +1 -1
  346. package/dist/esm/components/elements/sidebar-layout.d.ts +1 -2
  347. package/dist/esm/components/elements/sidebar-layout.d.ts.map +1 -1
  348. package/dist/esm/components/elements/sidebar-layout.js +3 -5
  349. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  350. package/dist/esm/components/elements/ssr-layout-effect.d.ts +1 -3
  351. package/dist/esm/components/elements/ssr-layout-effect.d.ts.map +1 -1
  352. package/dist/esm/components/elements/ssr-layout-effect.js +1 -3
  353. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -1
  354. package/dist/esm/components/elements/user-avatar.d.ts +1 -3
  355. package/dist/esm/components/elements/user-avatar.d.ts.map +1 -1
  356. package/dist/esm/components/elements/user-avatar.js +1 -2
  357. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  358. package/dist/esm/components/link.d.ts +2 -4
  359. package/dist/esm/components/link.d.ts.map +1 -1
  360. package/dist/esm/components/link.js +2 -4
  361. package/dist/esm/components/link.js.map +1 -1
  362. package/dist/esm/components/magic-link-sign-in.d.ts +1 -3
  363. package/dist/esm/components/magic-link-sign-in.d.ts.map +1 -1
  364. package/dist/esm/components/magic-link-sign-in.js +2 -4
  365. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  366. package/dist/esm/components/message-cards/known-error-message-card.d.ts +1 -2
  367. package/dist/esm/components/message-cards/known-error-message-card.d.ts.map +1 -1
  368. package/dist/esm/components/message-cards/known-error-message-card.js +1 -3
  369. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  370. package/dist/esm/components/message-cards/message-card.d.ts +1 -2
  371. package/dist/esm/components/message-cards/message-card.d.ts.map +1 -1
  372. package/dist/esm/components/message-cards/message-card.js +3 -5
  373. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  374. package/dist/esm/components/message-cards/predefined-message-card.d.ts +1 -3
  375. package/dist/esm/components/message-cards/predefined-message-card.d.ts.map +1 -1
  376. package/dist/esm/components/message-cards/predefined-message-card.js +1 -3
  377. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  378. package/dist/esm/components/oauth-button-group.d.ts +1 -3
  379. package/dist/esm/components/oauth-button-group.d.ts.map +1 -1
  380. package/dist/esm/components/oauth-button-group.js +2 -4
  381. package/dist/esm/components/oauth-button-group.js.map +1 -1
  382. package/dist/esm/components/oauth-button.d.ts +1 -3
  383. package/dist/esm/components/oauth-button.d.ts.map +1 -1
  384. package/dist/esm/components/oauth-button.js +2 -4
  385. package/dist/esm/components/oauth-button.js.map +1 -1
  386. package/dist/esm/components/passkey-button.d.ts +1 -3
  387. package/dist/esm/components/passkey-button.d.ts.map +1 -1
  388. package/dist/esm/components/passkey-button.js +2 -4
  389. package/dist/esm/components/passkey-button.js.map +1 -1
  390. package/dist/esm/components/profile-image-editor.d.ts +2 -3
  391. package/dist/esm/components/profile-image-editor.d.ts.map +1 -1
  392. package/dist/esm/components/profile-image-editor.js +1 -2
  393. package/dist/esm/components/profile-image-editor.js.map +1 -1
  394. package/dist/esm/components/selected-team-switcher.d.ts +2 -3
  395. package/dist/esm/components/selected-team-switcher.d.ts.map +1 -1
  396. package/dist/esm/components/selected-team-switcher.js +2 -4
  397. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  398. package/dist/esm/components/team-icon.d.ts +2 -3
  399. package/dist/esm/components/team-icon.d.ts.map +1 -1
  400. package/dist/esm/components/team-icon.js +1 -2
  401. package/dist/esm/components/team-icon.js.map +1 -1
  402. package/dist/esm/components/team-switcher.d.ts +2 -3
  403. package/dist/esm/components/team-switcher.d.ts.map +1 -1
  404. package/dist/esm/components/team-switcher.js +2 -4
  405. package/dist/esm/components/team-switcher.js.map +1 -1
  406. package/dist/esm/components/use-in-iframe.d.ts.map +1 -1
  407. package/dist/esm/components/use-in-iframe.js +2 -4
  408. package/dist/esm/components/use-in-iframe.js.map +1 -1
  409. package/dist/esm/components/user-button.d.ts +1 -2
  410. package/dist/esm/components/user-button.d.ts.map +1 -1
  411. package/dist/esm/components/user-button.js +3 -5
  412. package/dist/esm/components/user-button.js.map +1 -1
  413. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.d.ts +1 -3
  414. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.d.ts.map +1 -1
  415. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -2
  416. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  417. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.d.ts +1 -3
  418. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.d.ts.map +1 -1
  419. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js +1 -2
  420. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  421. package/dist/esm/components-page/account-settings/editable-text.d.ts +1 -3
  422. package/dist/esm/components-page/account-settings/editable-text.d.ts.map +1 -1
  423. package/dist/esm/components-page/account-settings/editable-text.js +1 -2
  424. package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
  425. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts +1 -3
  426. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.d.ts.map +1 -1
  427. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js +1 -2
  428. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  429. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.d.ts +1 -3
  430. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.d.ts.map +1 -1
  431. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +1 -2
  432. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  433. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.d.ts +1 -3
  434. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.d.ts.map +1 -1
  435. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +2 -3
  436. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  437. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.d.ts +1 -3
  438. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.d.ts.map +1 -1
  439. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js +1 -2
  440. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  441. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.d.ts +1 -3
  442. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.d.ts.map +1 -1
  443. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js +1 -2
  444. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  445. package/dist/esm/components-page/account-settings/email-and-auth/password-section.d.ts +1 -3
  446. package/dist/esm/components-page/account-settings/email-and-auth/password-section.d.ts.map +1 -1
  447. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +1 -2
  448. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  449. package/dist/esm/components-page/account-settings/notifications/notifications-page.d.ts +1 -3
  450. package/dist/esm/components-page/account-settings/notifications/notifications-page.d.ts.map +1 -1
  451. package/dist/esm/components-page/account-settings/notifications/notifications-page.js +1 -2
  452. package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  453. package/dist/esm/components-page/account-settings/page-layout.d.ts +1 -3
  454. package/dist/esm/components-page/account-settings/page-layout.d.ts.map +1 -1
  455. package/dist/esm/components-page/account-settings/page-layout.js +1 -2
  456. package/dist/esm/components-page/account-settings/page-layout.js.map +1 -1
  457. package/dist/esm/components-page/account-settings/payments/payments-page.d.ts +2 -3
  458. package/dist/esm/components-page/account-settings/payments/payments-page.d.ts.map +1 -1
  459. package/dist/esm/components-page/account-settings/payments/payments-page.js +2 -4
  460. package/dist/esm/components-page/account-settings/payments/payments-page.js.map +1 -1
  461. package/dist/esm/components-page/account-settings/payments/payments-panel.d.ts +2 -3
  462. package/dist/esm/components-page/account-settings/payments/payments-panel.d.ts.map +1 -1
  463. package/dist/esm/components-page/account-settings/payments/payments-panel.js +2 -4
  464. package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -1
  465. package/dist/esm/components-page/account-settings/profile-page/profile-page.d.ts +1 -3
  466. package/dist/esm/components-page/account-settings/profile-page/profile-page.d.ts.map +1 -1
  467. package/dist/esm/components-page/account-settings/profile-page/profile-page.js +1 -2
  468. package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  469. package/dist/esm/components-page/account-settings/section.d.ts +1 -3
  470. package/dist/esm/components-page/account-settings/section.d.ts.map +1 -1
  471. package/dist/esm/components-page/account-settings/section.js +1 -2
  472. package/dist/esm/components-page/account-settings/section.js.map +1 -1
  473. package/dist/esm/components-page/account-settings/settings/delete-account-section.d.ts +1 -3
  474. package/dist/esm/components-page/account-settings/settings/delete-account-section.d.ts.map +1 -1
  475. package/dist/esm/components-page/account-settings/settings/delete-account-section.js +1 -2
  476. package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  477. package/dist/esm/components-page/account-settings/settings/settings-page.d.ts +1 -3
  478. package/dist/esm/components-page/account-settings/settings/settings-page.d.ts.map +1 -1
  479. package/dist/esm/components-page/account-settings/settings/settings-page.js +1 -2
  480. package/dist/esm/components-page/account-settings/settings/settings-page.js.map +1 -1
  481. package/dist/esm/components-page/account-settings/settings/sign-out-section.d.ts +1 -3
  482. package/dist/esm/components-page/account-settings/settings/sign-out-section.d.ts.map +1 -1
  483. package/dist/esm/components-page/account-settings/settings/sign-out-section.js +1 -2
  484. package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  485. package/dist/esm/components-page/account-settings/teams/leave-team-section.d.ts +2 -3
  486. package/dist/esm/components-page/account-settings/teams/leave-team-section.d.ts.map +1 -1
  487. package/dist/esm/components-page/account-settings/teams/leave-team-section.js +1 -2
  488. package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  489. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.d.ts +2 -3
  490. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.d.ts.map +1 -1
  491. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +2 -3
  492. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  493. package/dist/esm/components-page/account-settings/teams/team-creation-page.d.ts +1 -3
  494. package/dist/esm/components-page/account-settings/teams/team-creation-page.d.ts.map +1 -1
  495. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +1 -2
  496. package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  497. package/dist/esm/components-page/account-settings/teams/team-display-name-section.d.ts +2 -3
  498. package/dist/esm/components-page/account-settings/teams/team-display-name-section.d.ts.map +1 -1
  499. package/dist/esm/components-page/account-settings/teams/team-display-name-section.js +1 -2
  500. package/dist/esm/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  501. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.d.ts +2 -3
  502. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.d.ts.map +1 -1
  503. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +1 -2
  504. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  505. package/dist/esm/components-page/account-settings/teams/team-member-list-section.d.ts +2 -3
  506. package/dist/esm/components-page/account-settings/teams/team-member-list-section.d.ts.map +1 -1
  507. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js +1 -2
  508. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  509. package/dist/esm/components-page/account-settings/teams/team-page.d.ts +2 -3
  510. package/dist/esm/components-page/account-settings/teams/team-page.d.ts.map +1 -1
  511. package/dist/esm/components-page/account-settings/teams/team-page.js +1 -2
  512. package/dist/esm/components-page/account-settings/teams/team-page.js.map +1 -1
  513. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.d.ts +2 -3
  514. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.d.ts.map +1 -1
  515. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js +1 -2
  516. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  517. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.d.ts +2 -3
  518. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.d.ts.map +1 -1
  519. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js +1 -2
  520. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  521. package/dist/esm/components-page/account-settings.d.ts +9 -11
  522. package/dist/esm/components-page/account-settings.d.ts.map +1 -1
  523. package/dist/esm/components-page/account-settings.js +3 -5
  524. package/dist/esm/components-page/account-settings.js.map +1 -1
  525. package/dist/esm/components-page/auth-page.d.ts +1 -3
  526. package/dist/esm/components-page/auth-page.d.ts.map +1 -1
  527. package/dist/esm/components-page/auth-page.js +2 -4
  528. package/dist/esm/components-page/auth-page.js.map +1 -1
  529. package/dist/esm/components-page/cli-auth-confirm.d.ts +1 -3
  530. package/dist/esm/components-page/cli-auth-confirm.d.ts.map +1 -1
  531. package/dist/esm/components-page/cli-auth-confirm.js +2 -4
  532. package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
  533. package/dist/esm/components-page/cli-auth-confirm.test.js +3 -4
  534. package/dist/esm/components-page/cli-auth-confirm.test.js.map +1 -1
  535. package/dist/esm/components-page/email-verification.d.ts +1 -3
  536. package/dist/esm/components-page/email-verification.d.ts.map +1 -1
  537. package/dist/esm/components-page/email-verification.js +2 -4
  538. package/dist/esm/components-page/email-verification.js.map +1 -1
  539. package/dist/esm/components-page/error-page.d.ts +1 -3
  540. package/dist/esm/components-page/error-page.d.ts.map +1 -1
  541. package/dist/esm/components-page/error-page.js +2 -4
  542. package/dist/esm/components-page/error-page.js.map +1 -1
  543. package/dist/esm/components-page/forgot-password.d.ts +2 -4
  544. package/dist/esm/components-page/forgot-password.d.ts.map +1 -1
  545. package/dist/esm/components-page/forgot-password.js +2 -4
  546. package/dist/esm/components-page/forgot-password.js.map +1 -1
  547. package/dist/esm/components-page/hexclave-handler-client.d.ts +14 -14
  548. package/dist/esm/components-page/hexclave-handler-client.d.ts.map +1 -1
  549. package/dist/esm/components-page/hexclave-handler-client.js +1 -3
  550. package/dist/esm/components-page/hexclave-handler-client.js.map +1 -1
  551. package/dist/esm/components-page/hexclave-handler-client.test.js +2 -3
  552. package/dist/esm/components-page/hexclave-handler-client.test.js.map +1 -1
  553. package/dist/esm/components-page/hexclave-handler.d.ts +2 -3
  554. package/dist/esm/components-page/hexclave-handler.d.ts.map +1 -1
  555. package/dist/esm/components-page/hexclave-handler.js +1 -2
  556. package/dist/esm/components-page/hexclave-handler.js.map +1 -1
  557. package/dist/esm/components-page/magic-link-callback.d.ts +1 -3
  558. package/dist/esm/components-page/magic-link-callback.d.ts.map +1 -1
  559. package/dist/esm/components-page/magic-link-callback.js +2 -4
  560. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  561. package/dist/esm/components-page/mfa.d.ts +1 -3
  562. package/dist/esm/components-page/mfa.d.ts.map +1 -1
  563. package/dist/esm/components-page/mfa.js +1 -3
  564. package/dist/esm/components-page/mfa.js.map +1 -1
  565. package/dist/esm/components-page/oauth-callback.d.ts +1 -3
  566. package/dist/esm/components-page/oauth-callback.d.ts.map +1 -1
  567. package/dist/esm/components-page/oauth-callback.js +2 -4
  568. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  569. package/dist/esm/components-page/oauth-callback.test.js +3 -4
  570. package/dist/esm/components-page/oauth-callback.test.js.map +1 -1
  571. package/dist/esm/components-page/onboarding.d.ts +1 -3
  572. package/dist/esm/components-page/onboarding.d.ts.map +1 -1
  573. package/dist/esm/components-page/onboarding.js +2 -4
  574. package/dist/esm/components-page/onboarding.js.map +1 -1
  575. package/dist/esm/components-page/password-reset.d.ts +2 -4
  576. package/dist/esm/components-page/password-reset.d.ts.map +1 -1
  577. package/dist/esm/components-page/password-reset.js +2 -4
  578. package/dist/esm/components-page/password-reset.js.map +1 -1
  579. package/dist/esm/components-page/section.js +3 -4
  580. package/dist/esm/components-page/sign-in.d.ts +1 -3
  581. package/dist/esm/components-page/sign-in.d.ts.map +1 -1
  582. package/dist/esm/components-page/sign-in.js +1 -2
  583. package/dist/esm/components-page/sign-in.js.map +1 -1
  584. package/dist/esm/components-page/sign-out.d.ts +1 -3
  585. package/dist/esm/components-page/sign-out.d.ts.map +1 -1
  586. package/dist/esm/components-page/sign-out.js +2 -4
  587. package/dist/esm/components-page/sign-out.js.map +1 -1
  588. package/dist/esm/components-page/sign-up.d.ts +1 -3
  589. package/dist/esm/components-page/sign-up.d.ts.map +1 -1
  590. package/dist/esm/components-page/sign-up.js +2 -4
  591. package/dist/esm/components-page/sign-up.js.map +1 -1
  592. package/dist/esm/components-page/team-creation.d.ts +1 -3
  593. package/dist/esm/components-page/team-creation.d.ts.map +1 -1
  594. package/dist/esm/components-page/team-creation.js +2 -4
  595. package/dist/esm/components-page/team-creation.js.map +1 -1
  596. package/dist/esm/components-page/team-invitation.d.ts +1 -3
  597. package/dist/esm/components-page/team-invitation.d.ts.map +1 -1
  598. package/dist/esm/components-page/team-invitation.js +2 -4
  599. package/dist/esm/components-page/team-invitation.js.map +1 -1
  600. package/dist/esm/config.js +1 -2
  601. package/dist/esm/dev-tool/dev-tool-core.d.ts +1 -1
  602. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  603. package/dist/esm/dev-tool/dev-tool-core.js +1 -2
  604. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  605. package/dist/esm/dev-tool/dev-tool-styles.js +1 -2
  606. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
  607. package/dist/esm/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
  608. package/dist/esm/dev-tool/dev-tool-trigger-position.js +5 -5
  609. package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -1
  610. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +2 -3
  611. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
  612. package/dist/esm/dev-tool/index.d.ts +1 -1
  613. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  614. package/dist/esm/dev-tool/index.js +1 -2
  615. package/dist/esm/dev-tool/index.js.map +1 -1
  616. package/dist/esm/generated/env.js +1 -1
  617. package/dist/esm/generated/env.js.map +1 -1
  618. package/dist/esm/generated/global-css.d.ts +1 -1
  619. package/dist/esm/generated/global-css.js +2 -2
  620. package/dist/esm/generated/global-css.js.map +1 -1
  621. package/dist/esm/generated/quetzal-translations.js +1 -2
  622. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  623. package/dist/esm/global.d.ts.map +1 -1
  624. package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -1
  625. package/dist/esm/in-page-ui/base-styles.js +1 -1
  626. package/dist/esm/in-page-ui/base-styles.js.map +1 -1
  627. package/dist/esm/in-page-ui/dom.d.ts.map +1 -1
  628. package/dist/esm/in-page-ui/dom.js +1 -1
  629. package/dist/esm/in-page-ui/dom.js.map +1 -1
  630. package/dist/esm/index.d.ts +25 -25
  631. package/dist/esm/index.js +2 -4
  632. package/dist/esm/integrations/convex/component/convex.config.d.ts +1 -3
  633. package/dist/esm/integrations/convex/component/convex.config.d.ts.map +1 -1
  634. package/dist/esm/integrations/convex/component/convex.config.js +1 -2
  635. package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
  636. package/dist/esm/integrations/convex.js +1 -2
  637. package/dist/esm/integrations/convex.js.map +1 -1
  638. package/dist/esm/lib/auth.js +1 -2
  639. package/dist/esm/lib/auth.js.map +1 -1
  640. package/dist/esm/lib/auth.test.js +2 -3
  641. package/dist/esm/lib/auth.test.js.map +1 -1
  642. package/dist/esm/lib/cookie.d.ts.map +1 -1
  643. package/dist/esm/lib/cookie.js +4 -22
  644. package/dist/esm/lib/cookie.js.map +1 -1
  645. package/dist/esm/lib/hexclave-app/api-keys/index.d.ts.map +1 -1
  646. package/dist/esm/lib/hexclave-app/api-keys/index.js +1 -2
  647. package/dist/esm/lib/hexclave-app/api-keys/index.js.map +1 -1
  648. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +34 -42
  649. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  650. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +1 -2
  651. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  652. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +2 -3
  653. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  654. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +26 -28
  655. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  656. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -2
  657. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  658. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +2 -3
  659. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
  660. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts +1 -1
  661. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -1
  662. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +7 -8
  663. package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  664. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  665. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +1 -2
  666. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  667. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +2 -3
  668. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  669. package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts +3 -3
  670. package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
  671. package/dist/esm/lib/hexclave-app/apps/implementations/index.js +1 -2
  672. package/dist/esm/lib/hexclave-app/apps/implementations/index.js.map +1 -1
  673. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
  674. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
  675. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -2
  676. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  677. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +13 -13
  678. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
  679. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -2
  680. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  681. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
  682. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +1 -1
  683. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
  684. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +2 -3
  685. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
  686. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -1
  687. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +13 -7
  688. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
  689. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js +134 -3
  690. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
  691. package/dist/esm/lib/hexclave-app/apps/index.d.ts +3 -3
  692. package/dist/esm/lib/hexclave-app/apps/index.js +1 -2
  693. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +8 -8
  694. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  695. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js +1 -2
  696. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  697. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +6 -6
  698. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  699. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js +1 -2
  700. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  701. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +7 -7
  702. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
  703. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js +1 -2
  704. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  705. package/dist/esm/lib/hexclave-app/common.d.ts.map +1 -1
  706. package/dist/esm/lib/hexclave-app/common.js +1 -1
  707. package/dist/esm/lib/hexclave-app/common.js.map +1 -1
  708. package/dist/esm/lib/hexclave-app/connected-accounts/index.d.ts.map +1 -1
  709. package/dist/esm/lib/hexclave-app/connected-accounts/index.js +1 -1
  710. package/dist/esm/lib/hexclave-app/contact-channels/index.d.ts.map +1 -1
  711. package/dist/esm/lib/hexclave-app/contact-channels/index.js +1 -1
  712. package/dist/esm/lib/hexclave-app/contact-channels/index.js.map +1 -1
  713. package/dist/esm/lib/hexclave-app/customers/index.d.ts +1 -1
  714. package/dist/esm/lib/hexclave-app/customers/index.d.ts.map +1 -1
  715. package/dist/esm/lib/hexclave-app/customers/index.js +1 -1
  716. package/dist/esm/lib/hexclave-app/data-vault/index.d.ts +1 -1
  717. package/dist/esm/lib/hexclave-app/data-vault/index.d.ts.map +1 -1
  718. package/dist/esm/lib/hexclave-app/data-vault/index.js +1 -1
  719. package/dist/esm/lib/hexclave-app/email/index.d.ts.map +1 -1
  720. package/dist/esm/lib/hexclave-app/email/index.js +1 -1
  721. package/dist/esm/lib/hexclave-app/email-templates/index.d.ts.map +1 -1
  722. package/dist/esm/lib/hexclave-app/email-templates/index.js +1 -1
  723. package/dist/esm/lib/hexclave-app/email-templates/index.js.map +1 -1
  724. package/dist/esm/lib/hexclave-app/index.d.ts +14 -14
  725. package/dist/esm/lib/hexclave-app/index.js +1 -2
  726. package/dist/esm/lib/hexclave-app/internal-api-keys/index.d.ts.map +1 -1
  727. package/dist/esm/lib/hexclave-app/internal-api-keys/index.js +1 -1
  728. package/dist/esm/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
  729. package/dist/esm/lib/hexclave-app/notification-categories/index.d.ts.map +1 -1
  730. package/dist/esm/lib/hexclave-app/notification-categories/index.js +1 -1
  731. package/dist/esm/lib/hexclave-app/permissions/index.d.ts.map +1 -1
  732. package/dist/esm/lib/hexclave-app/permissions/index.js +1 -1
  733. package/dist/esm/lib/hexclave-app/permissions/index.js.map +1 -1
  734. package/dist/esm/lib/hexclave-app/plan-usage/index.d.ts.map +1 -1
  735. package/dist/esm/lib/hexclave-app/plan-usage/index.js +1 -1
  736. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts +1 -1
  737. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
  738. package/dist/esm/lib/hexclave-app/project-configs/index.js +1 -1
  739. package/dist/esm/lib/hexclave-app/projects/index.d.ts +2 -2
  740. package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
  741. package/dist/esm/lib/hexclave-app/projects/index.js +5 -1
  742. package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
  743. package/dist/esm/lib/hexclave-app/session-replays/index.d.ts.map +1 -1
  744. package/dist/esm/lib/hexclave-app/session-replays/index.js +1 -1
  745. package/dist/esm/lib/hexclave-app/teams/index.d.ts +4 -4
  746. package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -1
  747. package/dist/esm/lib/hexclave-app/teams/index.js +1 -1
  748. package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -1
  749. package/dist/esm/lib/hexclave-app/url-targets.d.ts +1 -1
  750. package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -1
  751. package/dist/esm/lib/hexclave-app/url-targets.js +2 -3
  752. package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -1
  753. package/dist/esm/lib/hexclave-app/url-targets.test.js +2 -3
  754. package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -1
  755. package/dist/esm/lib/hexclave-app/users/index.d.ts +9 -9
  756. package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -1
  757. package/dist/esm/lib/hexclave-app/users/index.js +1 -2
  758. package/dist/esm/lib/hexclave-app/users/index.js.map +1 -1
  759. package/dist/esm/lib/hooks.d.ts +1 -1
  760. package/dist/esm/lib/hooks.d.ts.map +1 -1
  761. package/dist/esm/lib/hooks.js +1 -2
  762. package/dist/esm/lib/hooks.js.map +1 -1
  763. package/dist/esm/lib/translations.d.ts.map +1 -1
  764. package/dist/esm/lib/translations.js +1 -2
  765. package/dist/esm/lib/translations.js.map +1 -1
  766. package/dist/esm/providers/hexclave-context.d.ts +1 -1
  767. package/dist/esm/providers/hexclave-context.d.ts.map +1 -1
  768. package/dist/esm/providers/hexclave-context.js +1 -3
  769. package/dist/esm/providers/hexclave-context.js.map +1 -1
  770. package/dist/esm/providers/hexclave-provider-client.d.ts +2 -3
  771. package/dist/esm/providers/hexclave-provider-client.d.ts.map +1 -1
  772. package/dist/esm/providers/hexclave-provider-client.js +2 -4
  773. package/dist/esm/providers/hexclave-provider-client.js.map +1 -1
  774. package/dist/esm/providers/hexclave-provider.d.ts +3 -4
  775. package/dist/esm/providers/hexclave-provider.d.ts.map +1 -1
  776. package/dist/esm/providers/hexclave-provider.js +2 -3
  777. package/dist/esm/providers/hexclave-provider.js.map +1 -1
  778. package/dist/esm/providers/theme-provider.d.ts +1 -2
  779. package/dist/esm/providers/theme-provider.d.ts.map +1 -1
  780. package/dist/esm/providers/theme-provider.js +3 -5
  781. package/dist/esm/providers/theme-provider.js.map +1 -1
  782. package/dist/esm/providers/translation-provider-client.d.ts +1 -2
  783. package/dist/esm/providers/translation-provider-client.d.ts.map +1 -1
  784. package/dist/esm/providers/translation-provider-client.js +1 -3
  785. package/dist/esm/providers/translation-provider-client.js.map +1 -1
  786. package/dist/esm/providers/translation-provider.d.ts +2 -3
  787. package/dist/esm/providers/translation-provider.d.ts.map +1 -1
  788. package/dist/esm/providers/translation-provider.js +1 -2
  789. package/dist/esm/providers/translation-provider.js.map +1 -1
  790. package/dist/esm/pushed-config-error-overlay/index.d.ts +1 -1
  791. package/dist/esm/pushed-config-error-overlay/index.d.ts.map +1 -1
  792. package/dist/esm/pushed-config-error-overlay/index.js +1 -2
  793. package/dist/esm/pushed-config-error-overlay/index.js.map +1 -1
  794. package/dist/esm/pushed-config-error-overlay/index.test.js +2 -3
  795. package/dist/esm/pushed-config-error-overlay/index.test.js.map +1 -1
  796. package/dist/esm/tanstack-start-server-context.combined.d.ts +2 -2
  797. package/dist/esm/tanstack-start-server-context.combined.d.ts.map +1 -1
  798. package/dist/esm/tanstack-start-server-context.combined.js +1 -1
  799. package/dist/esm/tanstack-start-server-context.default.js +1 -1
  800. package/dist/esm/tanstack-start-server-context.default.js.map +1 -1
  801. package/dist/esm/tanstack-start-server-context.server.js +1 -2
  802. package/dist/esm/utils/browser-script.d.ts +1 -3
  803. package/dist/esm/utils/browser-script.d.ts.map +1 -1
  804. package/dist/esm/utils/browser-script.js +1 -2
  805. package/dist/esm/utils/browser-script.js.map +1 -1
  806. package/dist/esm/utils/constants.js +1 -1
  807. package/dist/esm/utils/constants.js.map +1 -1
  808. package/dist/esm/utils/url.d.ts.map +1 -1
  809. package/dist/esm/utils/url.js +1 -2
  810. package/dist/esm/utils/url.js.map +1 -1
  811. package/dist/forgot-password-B7RLLsC2.d.ts +12 -0
  812. package/dist/forgot-password-B7RLLsC2.d.ts.map +1 -0
  813. package/dist/generated/env.js +2 -3
  814. package/dist/generated/env.js.map +1 -1
  815. package/dist/generated/global-css.d.ts +1 -1
  816. package/dist/generated/global-css.js +3 -4
  817. package/dist/generated/global-css.js.map +1 -1
  818. package/dist/generated/quetzal-translations.d.ts +2 -6
  819. package/dist/generated/quetzal-translations.js +2 -4
  820. package/dist/generated/quetzal-translations.js.map +1 -1
  821. package/dist/global.d.ts.map +1 -1
  822. package/dist/hexclave-provider-Da4wC1Ju.d.ts +29 -0
  823. package/dist/hexclave-provider-Da4wC1Ju.d.ts.map +1 -0
  824. package/dist/hooks-DbJ7dB9M.d.ts +43 -0
  825. package/dist/hooks-DbJ7dB9M.d.ts.map +1 -0
  826. package/dist/in-page-ui/base-styles.d.ts.map +1 -1
  827. package/dist/in-page-ui/base-styles.js +2 -3
  828. package/dist/in-page-ui/base-styles.js.map +1 -1
  829. package/dist/in-page-ui/dom.d.ts.map +1 -1
  830. package/dist/in-page-ui/dom.js +2 -3
  831. package/dist/in-page-ui/dom.js.map +1 -1
  832. package/dist/index-BKZ67WMa.d.ts +1 -0
  833. package/dist/index-BVVgDSdq.d.ts +1 -0
  834. package/dist/index-Bo5DpPFH.d.ts +17 -0
  835. package/dist/index-Bo5DpPFH.d.ts.map +1 -0
  836. package/dist/index-CBDR4cNg.d.ts +206 -0
  837. package/dist/index-CBDR4cNg.d.ts.map +1 -0
  838. package/dist/index-CMWygRUz.d.ts +14 -0
  839. package/dist/index-CMWygRUz.d.ts.map +1 -0
  840. package/dist/index-C_kxyHao.d.ts +57 -0
  841. package/dist/{lib/hexclave-app/connected-accounts/index.d.ts.map → index-C_kxyHao.d.ts.map} +1 -1
  842. package/dist/index-D7Vdg30O.d.ts +27 -0
  843. package/dist/index-D7Vdg30O.d.ts.map +1 -0
  844. package/dist/index-D8Frr6HH.d.ts +147 -0
  845. package/dist/index-D8Frr6HH.d.ts.map +1 -0
  846. package/dist/index-DN04TjLM.d.ts +43 -0
  847. package/dist/index-DN04TjLM.d.ts.map +1 -0
  848. package/dist/index-DSzMf-rS.d.ts +43 -0
  849. package/dist/index-DSzMf-rS.d.ts.map +1 -0
  850. package/dist/index-DmcsTlyO.d.ts +129 -0
  851. package/dist/index-DmcsTlyO.d.ts.map +1 -0
  852. package/dist/index-Dq4xsW7_.d.ts +106 -0
  853. package/dist/index-Dq4xsW7_.d.ts.map +1 -0
  854. package/dist/index-O3hJsHSl.d.ts +11 -0
  855. package/dist/index-O3hJsHSl.d.ts.map +1 -0
  856. package/dist/index-TUtJOdMm.d.ts +42 -0
  857. package/dist/index-TUtJOdMm.d.ts.map +1 -0
  858. package/dist/index-fOYcs4NH.d.ts +53 -0
  859. package/dist/{lib/hexclave-app/api-keys/index.d.ts.map → index-fOYcs4NH.d.ts.map} +1 -1
  860. package/dist/index-hYjsGKNc.d.ts +66 -0
  861. package/dist/index-hYjsGKNc.d.ts.map +1 -0
  862. package/dist/index.d.ts +33 -41
  863. package/dist/index.js +193 -193
  864. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  865. package/dist/integrations/convex/component/convex.config.d.ts.map +1 -1
  866. package/dist/integrations/convex/component/convex.config.js +2 -5
  867. package/dist/integrations/convex/component/convex.config.js.map +1 -1
  868. package/dist/integrations/convex.d.ts +2 -13
  869. package/dist/integrations/convex.js +2 -4
  870. package/dist/integrations/convex.js.map +1 -1
  871. package/dist/lib/auth.js +2 -4
  872. package/dist/lib/auth.js.map +1 -1
  873. package/dist/lib/auth.test.js +1 -3
  874. package/dist/lib/auth.test.js.map +1 -1
  875. package/dist/lib/cookie.d.ts +2 -42
  876. package/dist/lib/cookie.js +8 -26
  877. package/dist/lib/cookie.js.map +1 -1
  878. package/dist/lib/hexclave-app/api-keys/index.d.ts +2 -53
  879. package/dist/lib/hexclave-app/api-keys/index.js +2 -4
  880. package/dist/lib/hexclave-app/api-keys/index.js.map +1 -1
  881. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +2 -449
  882. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +2 -4
  883. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  884. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +1 -3
  885. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  886. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +2 -611
  887. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +7 -8
  888. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  889. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -3
  890. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
  891. package/dist/lib/hexclave-app/apps/implementations/common.d.ts +2 -66
  892. package/dist/lib/hexclave-app/apps/implementations/common.js +9 -10
  893. package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  894. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  895. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +2 -4
  896. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  897. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +1 -3
  898. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  899. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -3
  900. package/dist/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
  901. package/dist/lib/hexclave-app/apps/implementations/index.js +2 -4
  902. package/dist/lib/hexclave-app/apps/implementations/index.js.map +1 -1
  903. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +2 -35
  904. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +2 -4
  905. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  906. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +2 -274
  907. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +2 -4
  908. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  909. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
  910. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +2 -3
  911. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
  912. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +1 -3
  913. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
  914. package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts +2 -122
  915. package/dist/lib/hexclave-app/apps/implementations/session-replay.js +14 -9
  916. package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
  917. package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js +135 -3
  918. package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
  919. package/dist/lib/hexclave-app/apps/index.d.ts +1 -3
  920. package/dist/lib/hexclave-app/apps/index.js +32 -34
  921. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +3 -272
  922. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js +3 -6
  923. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  924. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +2 -237
  925. package/dist/lib/hexclave-app/apps/interfaces/client-app.js +3 -6
  926. package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  927. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +2 -174
  928. package/dist/lib/hexclave-app/apps/interfaces/server-app.js +3 -6
  929. package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  930. package/dist/lib/hexclave-app/common.d.ts +2 -183
  931. package/dist/lib/hexclave-app/common.js +2 -3
  932. package/dist/lib/hexclave-app/common.js.map +1 -1
  933. package/dist/lib/hexclave-app/connected-accounts/index.d.ts +2 -57
  934. package/dist/lib/hexclave-app/contact-channels/index.d.ts +2 -43
  935. package/dist/lib/hexclave-app/contact-channels/index.js +2 -3
  936. package/dist/lib/hexclave-app/contact-channels/index.js.map +1 -1
  937. package/dist/lib/hexclave-app/customers/index.d.ts +2 -129
  938. package/dist/lib/hexclave-app/data-vault/index.d.ts +2 -14
  939. package/dist/lib/hexclave-app/email/index.d.ts +2 -206
  940. package/dist/lib/hexclave-app/email-templates/index.d.ts +2 -17
  941. package/dist/lib/hexclave-app/email-templates/index.js +2 -3
  942. package/dist/lib/hexclave-app/email-templates/index.js.map +1 -1
  943. package/dist/lib/hexclave-app/index.d.ts +10 -15
  944. package/dist/lib/hexclave-app/index.js +49 -51
  945. package/dist/lib/hexclave-app/internal-api-keys/index.d.ts +2 -42
  946. package/dist/lib/hexclave-app/internal-api-keys/index.js +2 -3
  947. package/dist/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
  948. package/dist/lib/hexclave-app/notification-categories/index.d.ts +2 -11
  949. package/dist/lib/hexclave-app/permissions/index.d.ts +2 -43
  950. package/dist/lib/hexclave-app/permissions/index.js +2 -3
  951. package/dist/lib/hexclave-app/permissions/index.js.map +1 -1
  952. package/dist/lib/hexclave-app/plan-usage/index.d.ts +2 -27
  953. package/dist/lib/hexclave-app/project-configs/index.d.ts +2 -106
  954. package/dist/lib/hexclave-app/projects/index.d.ts +2 -154
  955. package/dist/lib/hexclave-app/projects/index.js +6 -3
  956. package/dist/lib/hexclave-app/projects/index.js.map +1 -1
  957. package/dist/lib/hexclave-app/session-replays/index.d.ts +2 -66
  958. package/dist/lib/hexclave-app/teams/index.d.ts +2 -167
  959. package/dist/lib/hexclave-app/teams/index.js +2 -3
  960. package/dist/lib/hexclave-app/teams/index.js.map +1 -1
  961. package/dist/lib/hexclave-app/url-targets.d.ts +2 -39
  962. package/dist/lib/hexclave-app/url-targets.js +3 -5
  963. package/dist/lib/hexclave-app/url-targets.js.map +1 -1
  964. package/dist/lib/hexclave-app/url-targets.test.js +1 -3
  965. package/dist/lib/hexclave-app/url-targets.test.js.map +1 -1
  966. package/dist/lib/hexclave-app/users/index.d.ts +2 -400
  967. package/dist/lib/hexclave-app/users/index.js +2 -4
  968. package/dist/lib/hexclave-app/users/index.js.map +1 -1
  969. package/dist/lib/hooks.d.ts +2 -45
  970. package/dist/lib/hooks.js +2 -4
  971. package/dist/lib/hooks.js.map +1 -1
  972. package/dist/lib/translations.d.ts.map +1 -1
  973. package/dist/lib/translations.js +4 -5
  974. package/dist/lib/translations.js.map +1 -1
  975. package/dist/magic-link-callback-DOfNLydt.d.ts +8 -0
  976. package/dist/magic-link-callback-DOfNLydt.d.ts.map +1 -0
  977. package/dist/magic-link-sign-in-D5MFDeWQ.d.ts +5 -0
  978. package/dist/magic-link-sign-in-D5MFDeWQ.d.ts.map +1 -0
  979. package/dist/message-card-C0AQX5-y.d.ts +18 -0
  980. package/dist/message-card-C0AQX5-y.d.ts.map +1 -0
  981. package/dist/mfa-CwYuxAd-.d.ts +9 -0
  982. package/dist/mfa-CwYuxAd-.d.ts.map +1 -0
  983. package/dist/oauth-button-PE3z60ay.d.ts +15 -0
  984. package/dist/oauth-button-PE3z60ay.d.ts.map +1 -0
  985. package/dist/oauth-button-group-slCOrSxK.d.ts +17 -0
  986. package/dist/oauth-button-group-slCOrSxK.d.ts.map +1 -0
  987. package/dist/oauth-callback-tCVTRbF2.d.ts +9 -0
  988. package/dist/oauth-callback-tCVTRbF2.d.ts.map +1 -0
  989. package/dist/onboarding-CdpQNCZF.d.ts +7 -0
  990. package/dist/onboarding-CdpQNCZF.d.ts.map +1 -0
  991. package/dist/password-reset-CxIuXeIx.d.ts +15 -0
  992. package/dist/password-reset-CxIuXeIx.d.ts.map +1 -0
  993. package/dist/providers/hexclave-context.d.ts +1 -1
  994. package/dist/providers/hexclave-context.d.ts.map +1 -1
  995. package/dist/providers/hexclave-context.js +5 -8
  996. package/dist/providers/hexclave-context.js.map +1 -1
  997. package/dist/providers/hexclave-provider-client.d.ts +2 -3
  998. package/dist/providers/hexclave-provider-client.d.ts.map +1 -1
  999. package/dist/providers/hexclave-provider-client.js +4 -6
  1000. package/dist/providers/hexclave-provider-client.js.map +1 -1
  1001. package/dist/providers/hexclave-provider.d.ts +2 -30
  1002. package/dist/providers/hexclave-provider.js +7 -5
  1003. package/dist/providers/hexclave-provider.js.map +1 -1
  1004. package/dist/providers/theme-provider.d.ts +2 -50
  1005. package/dist/providers/theme-provider.js +6 -8
  1006. package/dist/providers/theme-provider.js.map +1 -1
  1007. package/dist/providers/translation-provider-client.d.ts +1 -2
  1008. package/dist/providers/translation-provider-client.d.ts.map +1 -1
  1009. package/dist/providers/translation-provider-client.js +5 -8
  1010. package/dist/providers/translation-provider-client.js.map +1 -1
  1011. package/dist/providers/translation-provider.d.ts +2 -16
  1012. package/dist/providers/translation-provider.js +2 -4
  1013. package/dist/providers/translation-provider.js.map +1 -1
  1014. package/dist/pushed-config-error-overlay/index.d.ts +1 -2
  1015. package/dist/pushed-config-error-overlay/index.d.ts.map +1 -1
  1016. package/dist/pushed-config-error-overlay/index.js +2 -4
  1017. package/dist/pushed-config-error-overlay/index.js.map +1 -1
  1018. package/dist/pushed-config-error-overlay/index.test.js +1 -3
  1019. package/dist/pushed-config-error-overlay/index.test.js.map +1 -1
  1020. package/dist/quetzal-translations-XeH3zQ9l.d.ts +6 -0
  1021. package/dist/quetzal-translations-XeH3zQ9l.d.ts.map +1 -0
  1022. package/dist/redirect-page-urls-CK0shk-V.d.ts +35 -0
  1023. package/dist/redirect-page-urls-CK0shk-V.d.ts.map +1 -0
  1024. package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
  1025. package/dist/session-replay-8_3WCrsZ.d.ts +122 -0
  1026. package/dist/session-replay-8_3WCrsZ.d.ts.map +1 -0
  1027. package/dist/sign-in-BT45jb_W.d.ts +21 -0
  1028. package/dist/sign-in-BT45jb_W.d.ts.map +1 -0
  1029. package/dist/sign-out-DBnSkfDz.d.ts +8 -0
  1030. package/dist/sign-out-DBnSkfDz.d.ts.map +1 -0
  1031. package/dist/sign-up-BjE_0DB4.d.ts +11 -0
  1032. package/dist/sign-up-BjE_0DB4.d.ts.map +1 -0
  1033. package/dist/{storage-ksajV_p6.d.ts → storage-kputlpQY.d.ts} +1 -1
  1034. package/dist/storage-kputlpQY.d.ts.map +1 -0
  1035. package/dist/tanstack-start-server-context.combined.d.ts.map +1 -1
  1036. package/dist/tanstack-start-server-context.default.js +2 -3
  1037. package/dist/tanstack-start-server-context.default.js.map +1 -1
  1038. package/dist/tanstack-start-server-context.server.js +27 -29
  1039. package/dist/team-invitation-B5Ol7vdd.d.ts +11 -0
  1040. package/dist/team-invitation-B5Ol7vdd.d.ts.map +1 -0
  1041. package/dist/theme-provider-D9_ngSbi.d.ts +49 -0
  1042. package/dist/theme-provider-D9_ngSbi.d.ts.map +1 -0
  1043. package/dist/translation-provider-WOaZXqAz.d.ts +15 -0
  1044. package/dist/translation-provider-WOaZXqAz.d.ts.map +1 -0
  1045. package/dist/url-targets-ObLYd6Q4.d.ts +39 -0
  1046. package/dist/url-targets-ObLYd6Q4.d.ts.map +1 -0
  1047. package/dist/user-avatar-CTyDsibI.d.ts +13 -0
  1048. package/dist/user-avatar-CTyDsibI.d.ts.map +1 -0
  1049. package/dist/user-button-CykqVKoH.d.ts +21 -0
  1050. package/dist/user-button-CykqVKoH.d.ts.map +1 -0
  1051. package/dist/utils/browser-script.d.ts +1 -3
  1052. package/dist/utils/browser-script.d.ts.map +1 -1
  1053. package/dist/utils/browser-script.js +2 -4
  1054. package/dist/utils/browser-script.js.map +1 -1
  1055. package/dist/utils/constants.js +2 -3
  1056. package/dist/utils/constants.js.map +1 -1
  1057. package/dist/utils/url.d.ts.map +1 -1
  1058. package/dist/utils/url.js +2 -4
  1059. package/dist/utils/url.js.map +1 -1
  1060. package/package.json +5 -5
  1061. package/src/lib/hexclave-app/apps/implementations/session-replay.test.ts +160 -1
  1062. package/src/lib/hexclave-app/apps/implementations/session-replay.ts +38 -12
  1063. package/dist/components/credential-sign-in.d.ts.map +0 -1
  1064. package/dist/components/credential-sign-up.d.ts.map +0 -1
  1065. package/dist/components/elements/user-avatar.d.ts.map +0 -1
  1066. package/dist/components/magic-link-sign-in.d.ts.map +0 -1
  1067. package/dist/components/message-cards/message-card.d.ts.map +0 -1
  1068. package/dist/components/oauth-button-group.d.ts.map +0 -1
  1069. package/dist/components/oauth-button.d.ts.map +0 -1
  1070. package/dist/components/selected-team-switcher.d.ts.map +0 -1
  1071. package/dist/components/team-switcher.d.ts.map +0 -1
  1072. package/dist/components/user-button.d.ts.map +0 -1
  1073. package/dist/components-page/account-settings.d.ts.map +0 -1
  1074. package/dist/components-page/auth-page.d.ts.map +0 -1
  1075. package/dist/components-page/cli-auth-confirm.d.ts.map +0 -1
  1076. package/dist/components-page/email-verification.d.ts.map +0 -1
  1077. package/dist/components-page/error-page.d.ts.map +0 -1
  1078. package/dist/components-page/forgot-password.d.ts.map +0 -1
  1079. package/dist/components-page/hexclave-handler-client.d.ts.map +0 -1
  1080. package/dist/components-page/hexclave-handler.d.ts.map +0 -1
  1081. package/dist/components-page/magic-link-callback.d.ts.map +0 -1
  1082. package/dist/components-page/mfa.d.ts.map +0 -1
  1083. package/dist/components-page/oauth-callback.d.ts.map +0 -1
  1084. package/dist/components-page/onboarding.d.ts.map +0 -1
  1085. package/dist/components-page/password-reset.d.ts.map +0 -1
  1086. package/dist/components-page/sign-in.d.ts.map +0 -1
  1087. package/dist/components-page/sign-out.d.ts.map +0 -1
  1088. package/dist/components-page/sign-up.d.ts.map +0 -1
  1089. package/dist/components-page/team-invitation.d.ts.map +0 -1
  1090. package/dist/generated/quetzal-translations.d.ts.map +0 -1
  1091. package/dist/integrations/convex.d.ts.map +0 -1
  1092. package/dist/lib/cookie.d.ts.map +0 -1
  1093. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
  1094. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +0 -1
  1095. package/dist/lib/hexclave-app/apps/implementations/common.d.ts.map +0 -1
  1096. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +0 -1
  1097. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +0 -1
  1098. package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +0 -1
  1099. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +0 -1
  1100. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +0 -1
  1101. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +0 -1
  1102. package/dist/lib/hexclave-app/common.d.ts.map +0 -1
  1103. package/dist/lib/hexclave-app/contact-channels/index.d.ts.map +0 -1
  1104. package/dist/lib/hexclave-app/customers/index.d.ts.map +0 -1
  1105. package/dist/lib/hexclave-app/data-vault/index.d.ts.map +0 -1
  1106. package/dist/lib/hexclave-app/email/index.d.ts.map +0 -1
  1107. package/dist/lib/hexclave-app/email-templates/index.d.ts.map +0 -1
  1108. package/dist/lib/hexclave-app/internal-api-keys/index.d.ts.map +0 -1
  1109. package/dist/lib/hexclave-app/notification-categories/index.d.ts.map +0 -1
  1110. package/dist/lib/hexclave-app/permissions/index.d.ts.map +0 -1
  1111. package/dist/lib/hexclave-app/plan-usage/index.d.ts.map +0 -1
  1112. package/dist/lib/hexclave-app/project-configs/index.d.ts.map +0 -1
  1113. package/dist/lib/hexclave-app/projects/index.d.ts.map +0 -1
  1114. package/dist/lib/hexclave-app/session-replays/index.d.ts.map +0 -1
  1115. package/dist/lib/hexclave-app/teams/index.d.ts.map +0 -1
  1116. package/dist/lib/hexclave-app/url-targets.d.ts.map +0 -1
  1117. package/dist/lib/hexclave-app/users/index.d.ts.map +0 -1
  1118. package/dist/lib/hooks.d.ts.map +0 -1
  1119. package/dist/providers/hexclave-provider.d.ts.map +0 -1
  1120. package/dist/providers/theme-provider.d.ts.map +0 -1
  1121. package/dist/providers/translation-provider.d.ts.map +0 -1
  1122. package/dist/storage-ksajV_p6.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hexclave-handler-client.js","names":["MessageCard","useStackApp"],"sources":["../../../src/components-page/hexclave-handler-client.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 { KnownError } from \"@hexclave/shared\";\nimport { captureError, HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\nimport { FilterUndefined, filterUndefined } from \"@hexclave/shared/dist/utils/objects\";\nimport { use } from \"@hexclave/shared/dist/utils/react\";\nimport { getRelativePart } from \"@hexclave/shared/dist/utils/urls\";\nimport { Suspense, useMemo, useSyncExternalStore } from 'react';\nimport { useEffect, useRef } from 'react';\nimport { SignIn, SignUp, StackServerApp } from \"..\";\nimport { useStackApp } from \"../lib/hooks\";\nimport { HandlerUrls, StackClientApp, hexclaveAppInternalsSymbol } from \"../lib/hexclave-app\";\nimport { isLocalHandlerUrlTarget, resolveUnknownHandlerPathFallbackUrl } from \"../lib/hexclave-app/url-targets\";\nimport { AccountSettings } from \"./account-settings\";\nimport { CliAuthConfirmation } from \"./cli-auth-confirm\";\nimport { EmailVerification } from \"./email-verification\";\nimport { ErrorPage } from \"./error-page\";\nimport { ForgotPassword } from \"./forgot-password\";\nimport { MagicLinkCallback } from \"./magic-link-callback\";\nimport { MFA } from \"./mfa\";\nimport { OAuthCallback } from \"./oauth-callback\";\nimport { Onboarding } from \"./onboarding\";\nimport { PasswordReset } from \"./password-reset\";\nimport { SignOut } from \"./sign-out\";\nimport { TeamInvitation } from \"./team-invitation\";\n\nimport { KnownErrorMessageCard } from \"../components/message-cards/known-error-message-card\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\n\ntype Components = {\n SignIn: typeof SignIn,\n SignUp: typeof SignUp,\n EmailVerification: typeof EmailVerification,\n PasswordReset: typeof PasswordReset,\n ForgotPassword: typeof ForgotPassword,\n SignOut: typeof SignOut,\n OAuthCallback: typeof OAuthCallback,\n MagicLinkCallback: typeof MagicLinkCallback,\n TeamInvitation: typeof TeamInvitation,\n ErrorPage: typeof ErrorPage,\n AccountSettings: typeof AccountSettings,\n CliAuthConfirmation: typeof CliAuthConfirmation,\n MFA: typeof MFA,\n Onboarding: typeof Onboarding,\n};\n\ntype RouteProps = {\n params: Promise<{ stack?: string[] }> | { stack?: string[] },\n searchParams: Promise<Record<string, string>> | Record<string, string>,\n};\n\ntype RedirectToPageResult =\n | { status: \"success\" }\n | { status: \"known-error\", error: KnownError }\n | { status: \"unknown-error\" };\n\nconst availablePaths = {\n signIn: 'sign-in',\n signUp: 'sign-up',\n emailVerification: 'email-verification',\n passwordReset: 'password-reset',\n forgotPassword: 'forgot-password',\n signOut: 'sign-out',\n oauthCallback: 'oauth-callback',\n magicLinkCallback: 'magic-link-callback',\n teamInvitation: 'team-invitation',\n accountSettings: 'account-settings',\n cliAuthConfirm: 'cli-auth-confirm',\n mfa: 'mfa',\n error: 'error',\n onboarding: 'onboarding',\n} as const;\n\nconst placeholderOrigin = \"http://example.com\";\n\nconst pathAliases = {\n // also includes the uppercase and non-dashed versions\n ...Object.fromEntries(Object.entries(availablePaths).map(([key, value]) => [value, value])),\n \"log-in\": availablePaths.signIn,\n \"register\": availablePaths.signUp,\n} as const;\n\nexport type BaseHandlerProps = {\n fullPage: boolean,\n componentProps?: {\n [K in keyof Components]?: Parameters<Components[K]>[0];\n },\n};\n\nfunction renderComponent(props: {\n path: string,\n searchParams: Record<string, string>,\n fullPage: boolean,\n componentProps?: BaseHandlerProps['componentProps'],\n shouldRedirectToPage?: (name: keyof HandlerUrls) => boolean,\n getDefaultUnknownPathUrl?: (path: string) => string | null,\n onNotFound: () => any,\n app: StackClientApp<any> | StackServerApp<any>,\n}) {\n const { path, searchParams, fullPage, componentProps, shouldRedirectToPage, getDefaultUnknownPathUrl, onNotFound, app } = props;\n\n switch (path) {\n case availablePaths.signIn: {\n if (shouldRedirectToPage?.('signIn')) return { redirectToPage: 'signIn' as const };\n return <SignIn\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignIn)}\n />;\n }\n case availablePaths.signUp: {\n if (shouldRedirectToPage?.('signUp')) return { redirectToPage: 'signUp' as const };\n return <SignUp\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignUp)}\n />;\n }\n case availablePaths.emailVerification: {\n if (shouldRedirectToPage?.('emailVerification')) return { redirectToPage: 'emailVerification' as const };\n return <EmailVerification\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.EmailVerification)}\n />;\n }\n case availablePaths.passwordReset: {\n if (shouldRedirectToPage?.('passwordReset')) return { redirectToPage: 'passwordReset' as const };\n return <PasswordReset\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.PasswordReset)}\n />;\n }\n case availablePaths.forgotPassword: {\n if (shouldRedirectToPage?.('forgotPassword')) return { redirectToPage: 'forgotPassword' as const };\n return <ForgotPassword\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ForgotPassword)}\n />;\n }\n case availablePaths.signOut: {\n if (shouldRedirectToPage?.('signOut')) return { redirectToPage: 'signOut' as const };\n return <SignOut\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.SignOut)}\n />;\n }\n case availablePaths.oauthCallback: {\n if (shouldRedirectToPage?.('oauthCallback')) return { redirectToPage: 'oauthCallback' as const };\n return <OAuthCallback\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.OAuthCallback)}\n />;\n }\n case availablePaths.magicLinkCallback: {\n if (shouldRedirectToPage?.('magicLinkCallback')) return { redirectToPage: 'magicLinkCallback' as const };\n return <MagicLinkCallback\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MagicLinkCallback)}\n />;\n }\n case availablePaths.teamInvitation: {\n if (shouldRedirectToPage?.('teamInvitation')) return { redirectToPage: 'teamInvitation' as const };\n return <TeamInvitation\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.TeamInvitation)}\n />;\n }\n case availablePaths.accountSettings: {\n return <AccountSettings\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.AccountSettings)}\n />;\n }\n case availablePaths.error: {\n return <ErrorPage\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ErrorPage)}\n />;\n }\n case availablePaths.cliAuthConfirm: {\n if (shouldRedirectToPage?.('cliAuthConfirm')) return { redirectToPage: 'cliAuthConfirm' as const };\n return <CliAuthConfirmation\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.CliAuthConfirmation)}\n />;\n }\n case availablePaths.mfa: {\n if (shouldRedirectToPage?.('mfa')) return { redirectToPage: 'mfa' as const };\n return <MFA\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MFA)}\n />;\n }\n case availablePaths.onboarding: {\n if (shouldRedirectToPage?.('onboarding')) return { redirectToPage: 'onboarding' as const };\n return <Onboarding\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.Onboarding)}\n />;\n }\n default: {\n if (Object.values(availablePaths).includes(path as any)) {\n throw new HexclaveAssertionError(`Path alias ${path} not included in switch statement, but in availablePaths?`, { availablePaths });\n }\n for (const [key, value] of Object.entries(pathAliases)) {\n if (path.toLowerCase().replaceAll('-', '') === key.toLowerCase().replaceAll('-', '')) {\n const redirectUrl = `${app[hexclaveAppInternalsSymbol].getUrls().handler}/${value}?${new URLSearchParams(searchParams).toString()}`;\n return { redirect: redirectUrl };\n }\n }\n const defaultUnknownPathUrl = getDefaultUnknownPathUrl?.(path);\n if (defaultUnknownPathUrl != null) {\n const defaultUnknownPathUrlObject = new URL(defaultUnknownPathUrl, \"http://example.com\");\n for (const [key, value] of Object.entries(searchParams)) {\n defaultUnknownPathUrlObject.searchParams.set(key, value);\n }\n return { redirect: toAbsoluteOrRelativeRedirectTarget(defaultUnknownPathUrlObject) };\n }\n return onNotFound();\n }\n }\n}\n\nexport async function getRedirectToPageResult(\n app: StackClientApp,\n redirectToPage: keyof HandlerUrls,\n): Promise<RedirectToPageResult> {\n try {\n await app[hexclaveAppInternalsSymbol].redirectToHandler(redirectToPage, { replace: true });\n return { status: \"success\" };\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n return { status: \"known-error\", error: e };\n }\n captureError(\"<HexclaveHandlerClient redirectToPage />\", e);\n return { status: \"unknown-error\" };\n }\n}\n\nfunction RedirectToPage(props: {\n app: StackClientApp,\n fullPage?: boolean,\n redirectToPage: keyof HandlerUrls,\n}) {\n const redirectResultPromise = useMemo(\n () => getRedirectToPageResult(props.app, props.redirectToPage),\n [props.app, props.redirectToPage],\n );\n\n const redirectResult = use(redirectResultPromise);\n if (redirectResult.status === \"known-error\") {\n return <KnownErrorMessageCard error={redirectResult.error} fullPage={props.fullPage} />;\n }\n if (redirectResult.status === \"unknown-error\") {\n return <PredefinedMessageCard type=\"unknownError\" fullPage={props.fullPage} />;\n }\n return <MessageCard title=\"Redirecting...\" fullPage={props.fullPage} />;\n}\n\nexport function HexclaveHandlerClient(props: BaseHandlerProps & Partial<RouteProps> & { location?: string }) {\n // Use hooks to get app\n const hexclaveApp = useStackApp();\n const handlerUrls = hexclaveApp[hexclaveAppInternalsSymbol].getUrls();\n const clientOrigin = useClientOriginAfterHydration();\n\n const navigate = hexclaveApp.useNavigate();\n const navigateRef = useRef(navigate);\n navigateRef.current = navigate;\n const currentLocation = props.location ?? (typeof window === \"undefined\" ? new URL(handlerUrls.handler, placeholderOrigin).pathname : window.location.pathname);\n const searchParamsSource = new URLSearchParams(typeof window === \"undefined\" ? \"\" : window.location.search);\n const redirectTargets: (string | undefined)[] = [];\n\n const { path, searchParams, handlerPath } = useMemo(() => {\n const handlerPath = new URL(handlerUrls.handler, 'http://example.com').pathname;\n const relativePath = currentLocation.startsWith(handlerPath)\n ? currentLocation.slice(handlerPath.length).replace(/^\\/+/, '')\n : currentLocation.replace(/^\\/+/, '');\n\n return {\n path: relativePath,\n searchParams: Object.fromEntries(searchParamsSource.entries()),\n handlerPath,\n };\n }, [currentLocation, searchParamsSource, handlerUrls.handler]);\n\n const getDefaultUnknownPathUrl = (unknownPath: string): string | null => {\n return resolveUnknownHandlerPathFallbackUrl({\n defaultTarget: hexclaveApp[hexclaveAppInternalsSymbol].getConstructorOptions().urls?.default,\n projectId: hexclaveApp.projectId,\n unknownPath,\n });\n };\n\n const shouldRedirectToPage = (name: keyof HandlerUrls): boolean => {\n const url = handlerUrls[name];\n const isCrossDomainLocalOauthCallback = name === \"oauthCallback\" && searchParams.hexclave_cross_domain_auth === \"1\";\n if (isCrossDomainLocalOauthCallback) {\n return false;\n }\n return !isLocalHandlerUrlTarget({\n targetUrl: url,\n handlerPath,\n currentOrigin: clientOrigin,\n });\n };\n\n const result = renderComponent({\n path,\n searchParams,\n fullPage: props.fullPage,\n componentProps: props.componentProps,\n shouldRedirectToPage,\n getDefaultUnknownPathUrl,\n onNotFound: () =>\n (\n <MessageCard\n title=\"Page does not exist\"\n fullPage={props.fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n The page you are looking for could not be found. Please check the URL and try again.\n </MessageCard>\n )\n ,\n app: hexclaveApp,\n });\n\n const redirectToPage = (result != null && typeof result === 'object' && 'redirectToPage' in result) ? result.redirectToPage : undefined;\n\n if (redirectToPage != null) {\n return (\n <Suspense fallback={<MessageCard title=\"Redirecting...\" fullPage={props.fullPage} />}>\n <RedirectToPage app={hexclaveApp} redirectToPage={redirectToPage} fullPage={props.fullPage} />\n </Suspense>\n );\n }\n\n if (result && 'redirect' in result) {\n redirectTargets.push(result.redirect);\n }\n\n const redirectTarget = redirectTargets[0];\n const shouldRenderRedirectFallback = redirectTarget != null && hexclaveApp[hexclaveAppInternalsSymbol].getRedirectMethod() === \"none\";\n useEffect(() => {\n if (redirectTarget == null || shouldRenderRedirectFallback) {\n return;\n }\n navigateRef.current(redirectTarget);\n }, [redirectTarget, shouldRenderRedirectFallback]);\n\n if (redirectTarget != null && shouldRenderRedirectFallback) {\n return (\n <MessageCard\n title=\"Continue\"\n fullPage={props.fullPage}\n primaryButtonText=\"Continue\"\n primaryAction={() => window.location.assign(redirectTarget)}\n >\n Continue to the next page.\n </MessageCard>\n );\n }\n\n if (redirectTarget != null) {\n return null;\n }\n\n return result;\n}\n\n// filter undefined values in object. if object itself is undefined, return undefined\nfunction filterUndefinedINU<T extends {}>(value: T | undefined): FilterUndefined<T> | undefined {\n return value === undefined ? value : filterUndefined(value);\n}\n\nfunction toAbsoluteOrRelativeRedirectTarget(url: URL): string {\n return url.origin === \"http://example.com\" ? getRelativePart(url) : url.toString();\n}\n\nfunction useClientOriginAfterHydration(): string | undefined {\n // The first hydrated render must match SSR. After hydration, React re-checks\n // the snapshot and lets us distinguish same-path cross-origin handler URLs.\n return useSyncExternalStore(\n () => () => {},\n () => window.location.origin,\n () => undefined,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"hexclave-handler-client.js","names":["MessageCard","useStackApp"],"sources":["../../../src/components-page/hexclave-handler-client.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 { KnownError } from \"@hexclave/shared\";\nimport { captureError, HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\nimport { FilterUndefined, filterUndefined } from \"@hexclave/shared/dist/utils/objects\";\nimport { use } from \"@hexclave/shared/dist/utils/react\";\nimport { getRelativePart } from \"@hexclave/shared/dist/utils/urls\";\nimport { Suspense, useMemo, useSyncExternalStore } from 'react';\nimport { useEffect, useRef } from 'react';\nimport { SignIn, SignUp, StackServerApp } from \"..\";\nimport { useStackApp } from \"../lib/hooks\";\nimport { HandlerUrls, StackClientApp, hexclaveAppInternalsSymbol } from \"../lib/hexclave-app\";\nimport { isLocalHandlerUrlTarget, resolveUnknownHandlerPathFallbackUrl } from \"../lib/hexclave-app/url-targets\";\nimport { AccountSettings } from \"./account-settings\";\nimport { CliAuthConfirmation } from \"./cli-auth-confirm\";\nimport { EmailVerification } from \"./email-verification\";\nimport { ErrorPage } from \"./error-page\";\nimport { ForgotPassword } from \"./forgot-password\";\nimport { MagicLinkCallback } from \"./magic-link-callback\";\nimport { MFA } from \"./mfa\";\nimport { OAuthCallback } from \"./oauth-callback\";\nimport { Onboarding } from \"./onboarding\";\nimport { PasswordReset } from \"./password-reset\";\nimport { SignOut } from \"./sign-out\";\nimport { TeamInvitation } from \"./team-invitation\";\n\nimport { KnownErrorMessageCard } from \"../components/message-cards/known-error-message-card\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\n\ntype Components = {\n SignIn: typeof SignIn,\n SignUp: typeof SignUp,\n EmailVerification: typeof EmailVerification,\n PasswordReset: typeof PasswordReset,\n ForgotPassword: typeof ForgotPassword,\n SignOut: typeof SignOut,\n OAuthCallback: typeof OAuthCallback,\n MagicLinkCallback: typeof MagicLinkCallback,\n TeamInvitation: typeof TeamInvitation,\n ErrorPage: typeof ErrorPage,\n AccountSettings: typeof AccountSettings,\n CliAuthConfirmation: typeof CliAuthConfirmation,\n MFA: typeof MFA,\n Onboarding: typeof Onboarding,\n};\n\ntype RouteProps = {\n params: Promise<{ stack?: string[] }> | { stack?: string[] },\n searchParams: Promise<Record<string, string>> | Record<string, string>,\n};\n\ntype RedirectToPageResult =\n | { status: \"success\" }\n | { status: \"known-error\", error: KnownError }\n | { status: \"unknown-error\" };\n\nconst availablePaths = {\n signIn: 'sign-in',\n signUp: 'sign-up',\n emailVerification: 'email-verification',\n passwordReset: 'password-reset',\n forgotPassword: 'forgot-password',\n signOut: 'sign-out',\n oauthCallback: 'oauth-callback',\n magicLinkCallback: 'magic-link-callback',\n teamInvitation: 'team-invitation',\n accountSettings: 'account-settings',\n cliAuthConfirm: 'cli-auth-confirm',\n mfa: 'mfa',\n error: 'error',\n onboarding: 'onboarding',\n} as const;\n\nconst placeholderOrigin = \"http://example.com\";\n\nconst pathAliases = {\n // also includes the uppercase and non-dashed versions\n ...Object.fromEntries(Object.entries(availablePaths).map(([key, value]) => [value, value])),\n \"log-in\": availablePaths.signIn,\n \"register\": availablePaths.signUp,\n} as const;\n\nexport type BaseHandlerProps = {\n fullPage: boolean,\n componentProps?: {\n [K in keyof Components]?: Parameters<Components[K]>[0];\n },\n};\n\nfunction renderComponent(props: {\n path: string,\n searchParams: Record<string, string>,\n fullPage: boolean,\n componentProps?: BaseHandlerProps['componentProps'],\n shouldRedirectToPage?: (name: keyof HandlerUrls) => boolean,\n getDefaultUnknownPathUrl?: (path: string) => string | null,\n onNotFound: () => any,\n app: StackClientApp<any> | StackServerApp<any>,\n}) {\n const { path, searchParams, fullPage, componentProps, shouldRedirectToPage, getDefaultUnknownPathUrl, onNotFound, app } = props;\n\n switch (path) {\n case availablePaths.signIn: {\n if (shouldRedirectToPage?.('signIn')) return { redirectToPage: 'signIn' as const };\n return <SignIn\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignIn)}\n />;\n }\n case availablePaths.signUp: {\n if (shouldRedirectToPage?.('signUp')) return { redirectToPage: 'signUp' as const };\n return <SignUp\n fullPage={fullPage}\n automaticRedirect\n {...filterUndefinedINU(componentProps?.SignUp)}\n />;\n }\n case availablePaths.emailVerification: {\n if (shouldRedirectToPage?.('emailVerification')) return { redirectToPage: 'emailVerification' as const };\n return <EmailVerification\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.EmailVerification)}\n />;\n }\n case availablePaths.passwordReset: {\n if (shouldRedirectToPage?.('passwordReset')) return { redirectToPage: 'passwordReset' as const };\n return <PasswordReset\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.PasswordReset)}\n />;\n }\n case availablePaths.forgotPassword: {\n if (shouldRedirectToPage?.('forgotPassword')) return { redirectToPage: 'forgotPassword' as const };\n return <ForgotPassword\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ForgotPassword)}\n />;\n }\n case availablePaths.signOut: {\n if (shouldRedirectToPage?.('signOut')) return { redirectToPage: 'signOut' as const };\n return <SignOut\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.SignOut)}\n />;\n }\n case availablePaths.oauthCallback: {\n if (shouldRedirectToPage?.('oauthCallback')) return { redirectToPage: 'oauthCallback' as const };\n return <OAuthCallback\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.OAuthCallback)}\n />;\n }\n case availablePaths.magicLinkCallback: {\n if (shouldRedirectToPage?.('magicLinkCallback')) return { redirectToPage: 'magicLinkCallback' as const };\n return <MagicLinkCallback\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MagicLinkCallback)}\n />;\n }\n case availablePaths.teamInvitation: {\n if (shouldRedirectToPage?.('teamInvitation')) return { redirectToPage: 'teamInvitation' as const };\n return <TeamInvitation\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.TeamInvitation)}\n />;\n }\n case availablePaths.accountSettings: {\n return <AccountSettings\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.AccountSettings)}\n />;\n }\n case availablePaths.error: {\n return <ErrorPage\n searchParams={searchParams}\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.ErrorPage)}\n />;\n }\n case availablePaths.cliAuthConfirm: {\n if (shouldRedirectToPage?.('cliAuthConfirm')) return { redirectToPage: 'cliAuthConfirm' as const };\n return <CliAuthConfirmation\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.CliAuthConfirmation)}\n />;\n }\n case availablePaths.mfa: {\n if (shouldRedirectToPage?.('mfa')) return { redirectToPage: 'mfa' as const };\n return <MFA\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.MFA)}\n />;\n }\n case availablePaths.onboarding: {\n if (shouldRedirectToPage?.('onboarding')) return { redirectToPage: 'onboarding' as const };\n return <Onboarding\n fullPage={fullPage}\n {...filterUndefinedINU(componentProps?.Onboarding)}\n />;\n }\n default: {\n if (Object.values(availablePaths).includes(path as any)) {\n throw new HexclaveAssertionError(`Path alias ${path} not included in switch statement, but in availablePaths?`, { availablePaths });\n }\n for (const [key, value] of Object.entries(pathAliases)) {\n if (path.toLowerCase().replaceAll('-', '') === key.toLowerCase().replaceAll('-', '')) {\n const redirectUrl = `${app[hexclaveAppInternalsSymbol].getUrls().handler}/${value}?${new URLSearchParams(searchParams).toString()}`;\n return { redirect: redirectUrl };\n }\n }\n const defaultUnknownPathUrl = getDefaultUnknownPathUrl?.(path);\n if (defaultUnknownPathUrl != null) {\n const defaultUnknownPathUrlObject = new URL(defaultUnknownPathUrl, \"http://example.com\");\n for (const [key, value] of Object.entries(searchParams)) {\n defaultUnknownPathUrlObject.searchParams.set(key, value);\n }\n return { redirect: toAbsoluteOrRelativeRedirectTarget(defaultUnknownPathUrlObject) };\n }\n return onNotFound();\n }\n }\n}\n\nexport async function getRedirectToPageResult(\n app: StackClientApp,\n redirectToPage: keyof HandlerUrls,\n): Promise<RedirectToPageResult> {\n try {\n await app[hexclaveAppInternalsSymbol].redirectToHandler(redirectToPage, { replace: true });\n return { status: \"success\" };\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n return { status: \"known-error\", error: e };\n }\n captureError(\"<HexclaveHandlerClient redirectToPage />\", e);\n return { status: \"unknown-error\" };\n }\n}\n\nfunction RedirectToPage(props: {\n app: StackClientApp,\n fullPage?: boolean,\n redirectToPage: keyof HandlerUrls,\n}) {\n const redirectResultPromise = useMemo(\n () => getRedirectToPageResult(props.app, props.redirectToPage),\n [props.app, props.redirectToPage],\n );\n\n const redirectResult = use(redirectResultPromise);\n if (redirectResult.status === \"known-error\") {\n return <KnownErrorMessageCard error={redirectResult.error} fullPage={props.fullPage} />;\n }\n if (redirectResult.status === \"unknown-error\") {\n return <PredefinedMessageCard type=\"unknownError\" fullPage={props.fullPage} />;\n }\n return <MessageCard title=\"Redirecting...\" fullPage={props.fullPage} />;\n}\n\nexport function HexclaveHandlerClient(props: BaseHandlerProps & Partial<RouteProps> & { location?: string }) {\n // Use hooks to get app\n const hexclaveApp = useStackApp();\n const handlerUrls = hexclaveApp[hexclaveAppInternalsSymbol].getUrls();\n const clientOrigin = useClientOriginAfterHydration();\n\n const navigate = hexclaveApp.useNavigate();\n const navigateRef = useRef(navigate);\n navigateRef.current = navigate;\n const currentLocation = props.location ?? (typeof window === \"undefined\" ? new URL(handlerUrls.handler, placeholderOrigin).pathname : window.location.pathname);\n const searchParamsSource = new URLSearchParams(typeof window === \"undefined\" ? \"\" : window.location.search);\n const redirectTargets: (string | undefined)[] = [];\n\n const { path, searchParams, handlerPath } = useMemo(() => {\n const handlerPath = new URL(handlerUrls.handler, 'http://example.com').pathname;\n const relativePath = currentLocation.startsWith(handlerPath)\n ? currentLocation.slice(handlerPath.length).replace(/^\\/+/, '')\n : currentLocation.replace(/^\\/+/, '');\n\n return {\n path: relativePath,\n searchParams: Object.fromEntries(searchParamsSource.entries()),\n handlerPath,\n };\n }, [currentLocation, searchParamsSource, handlerUrls.handler]);\n\n const getDefaultUnknownPathUrl = (unknownPath: string): string | null => {\n return resolveUnknownHandlerPathFallbackUrl({\n defaultTarget: hexclaveApp[hexclaveAppInternalsSymbol].getConstructorOptions().urls?.default,\n projectId: hexclaveApp.projectId,\n unknownPath,\n });\n };\n\n const shouldRedirectToPage = (name: keyof HandlerUrls): boolean => {\n const url = handlerUrls[name];\n const isCrossDomainLocalOauthCallback = name === \"oauthCallback\" && searchParams.hexclave_cross_domain_auth === \"1\";\n if (isCrossDomainLocalOauthCallback) {\n return false;\n }\n return !isLocalHandlerUrlTarget({\n targetUrl: url,\n handlerPath,\n currentOrigin: clientOrigin,\n });\n };\n\n const result = renderComponent({\n path,\n searchParams,\n fullPage: props.fullPage,\n componentProps: props.componentProps,\n shouldRedirectToPage,\n getDefaultUnknownPathUrl,\n onNotFound: () =>\n (\n <MessageCard\n title=\"Page does not exist\"\n fullPage={props.fullPage}\n primaryButtonText=\"Go to Home\"\n primaryAction={() => hexclaveApp.redirectToHome()}\n >\n The page you are looking for could not be found. Please check the URL and try again.\n </MessageCard>\n )\n ,\n app: hexclaveApp,\n });\n\n const redirectToPage = (result != null && typeof result === 'object' && 'redirectToPage' in result) ? result.redirectToPage : undefined;\n\n if (redirectToPage != null) {\n return (\n <Suspense fallback={<MessageCard title=\"Redirecting...\" fullPage={props.fullPage} />}>\n <RedirectToPage app={hexclaveApp} redirectToPage={redirectToPage} fullPage={props.fullPage} />\n </Suspense>\n );\n }\n\n if (result && 'redirect' in result) {\n redirectTargets.push(result.redirect);\n }\n\n const redirectTarget = redirectTargets[0];\n const shouldRenderRedirectFallback = redirectTarget != null && hexclaveApp[hexclaveAppInternalsSymbol].getRedirectMethod() === \"none\";\n useEffect(() => {\n if (redirectTarget == null || shouldRenderRedirectFallback) {\n return;\n }\n navigateRef.current(redirectTarget);\n }, [redirectTarget, shouldRenderRedirectFallback]);\n\n if (redirectTarget != null && shouldRenderRedirectFallback) {\n return (\n <MessageCard\n title=\"Continue\"\n fullPage={props.fullPage}\n primaryButtonText=\"Continue\"\n primaryAction={() => window.location.assign(redirectTarget)}\n >\n Continue to the next page.\n </MessageCard>\n );\n }\n\n if (redirectTarget != null) {\n return null;\n }\n\n return result;\n}\n\n// filter undefined values in object. if object itself is undefined, return undefined\nfunction filterUndefinedINU<T extends {}>(value: T | undefined): FilterUndefined<T> | undefined {\n return value === undefined ? value : filterUndefined(value);\n}\n\nfunction toAbsoluteOrRelativeRedirectTarget(url: URL): string {\n return url.origin === \"http://example.com\" ? getRelativePart(url) : url.toString();\n}\n\nfunction useClientOriginAfterHydration(): string | undefined {\n // The first hydrated render must match SSR. After hydration, React re-checks\n // the snapshot and lets us distinguish same-path cross-origin handler URLs.\n return useSyncExternalStore(\n () => () => {},\n () => window.location.origin,\n () => undefined,\n );\n}\n"],"mappings":"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"}
@@ -2,7 +2,6 @@ import { KnownErrors } from "@hexclave/shared";
2
2
  import { describe, expect, it, vi } from "vitest";
3
3
  import { hexclaveAppInternalsSymbol } from "../lib/hexclave-app/index.js";
4
4
  import { getRedirectToPageResult } from "./hexclave-handler-client.js";
5
-
6
5
  //#region src/components-page/hexclave-handler-client.test.tsx
7
6
  vi.mock("next/navigation", () => ({
8
7
  RedirectType: { replace: "replace" },
@@ -45,7 +44,7 @@ describe("HexclaveHandlerClient", () => {
45
44
  }
46
45
  });
47
46
  });
48
-
49
47
  //#endregion
50
- export { };
48
+ export {};
49
+
51
50
  //# sourceMappingURL=hexclave-handler-client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hexclave-handler-client.test.js","names":[],"sources":["../../../src/components-page/hexclave-handler-client.test.tsx"],"sourcesContent":["\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//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { getRedirectToPageResult } from \"./hexclave-handler-client\";\n\nvi.mock(\"next/navigation\", () => ({\n RedirectType: {\n replace: \"replace\",\n },\n notFound: () => {\n throw new Error(\"notFound\");\n },\n redirect: (url: string) => {\n throw new Error(`redirect:${url}`);\n },\n usePathname: () => window.location.pathname,\n useSearchParams: () => new URLSearchParams(window.location.search),\n}));\n\nfunction createAppTestDouble(options: {\n redirectToHandler: (name: string, options: { replace: true }) => Promise<void>,\n}) {\n const projectId = \"00000000-0000-4000-8000-000000000000\";\n const app = {\n projectId,\n urls: {\n handler: \"http://localhost/handler\",\n signIn: `https://${projectId}.example-stack-hosted.test/handler/sign-in`,\n home: \"http://localhost\",\n },\n redirectToHome: vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n getConstructorOptions: () => ({ urls: {} }),\n redirectToHandler: options.redirectToHandler,\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that HexclaveHandlerClient touches in this redirect path.\n return app as unknown as StackClientApp<true>;\n}\n\ndescribe(\"HexclaveHandlerClient\", () => {\n it(\"returns known cross-domain redirect errors instead of treating them as unhandled async failures\", async () => {\n const redirectToHandler = vi.fn(async () => {\n throw new KnownErrors.RedirectUrlNotWhitelisted();\n });\n const app = createAppTestDouble({ redirectToHandler });\n\n const result = await getRedirectToPageResult(app, \"signIn\");\n\n expect(redirectToHandler).toHaveBeenCalledWith(\"signIn\", { replace: true });\n expect(result.status).toBe(\"known-error\");\n if (result.status === \"known-error\") {\n expect(result.error.errorCode).toBe(\"REDIRECT_URL_NOT_WHITELISTED\");\n expect(result.error.message).toContain(\"Redirect URL not whitelisted\");\n }\n });\n});\n"],"mappings":";;;;;;AAUA,GAAG,KAAK,0BAA0B;CAChC,cAAc,EACZ,SAAS,WACV;CACD,gBAAgB;AACd,QAAM,IAAI,MAAM,WAAW;;CAE7B,WAAW,QAAgB;AACzB,QAAM,IAAI,MAAM,YAAY,MAAM;;CAEpC,mBAAmB,OAAO,SAAS;CACnC,uBAAuB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACnE,EAAE;AAEH,SAAS,oBAAoB,SAE1B;CACD,MAAM,YAAY;AAiBlB,QAhBY;EACV;EACA,MAAM;GACJ,SAAS;GACT,QAAQ,WAAW,UAAU;GAC7B,MAAM;GACP;EACD,gBAAgB,GAAG,GAAG,YAAY,GAAG;GACpC,6BAA6B;GAC5B,8BAA8B,EAAE,MAAM,EAAE,EAAE;GAC1C,mBAAmB,QAAQ;GAC5B;EACF;;AAOH,SAAS,+BAA+B;AACtC,IAAG,mGAAmG,YAAY;EAChH,MAAM,oBAAoB,GAAG,GAAG,YAAY;AAC1C,SAAM,IAAI,YAAY,2BAA2B;IACjD;EAGF,MAAM,SAAS,MAAM,wBAFT,oBAAoB,EAAE,mBAAmB,CAAC,EAEJ,SAAS;AAE3D,SAAO,kBAAkB,CAAC,qBAAqB,UAAU,EAAE,SAAS,MAAM,CAAC;AAC3E,SAAO,OAAO,OAAO,CAAC,KAAK,cAAc;AACzC,MAAI,OAAO,WAAW,eAAe;AACnC,UAAO,OAAO,MAAM,UAAU,CAAC,KAAK,+BAA+B;AACnE,UAAO,OAAO,MAAM,QAAQ,CAAC,UAAU,+BAA+B;;GAExE;EACF"}
1
+ {"version":3,"file":"hexclave-handler-client.test.js","names":[],"sources":["../../../src/components-page/hexclave-handler-client.test.tsx"],"sourcesContent":["\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//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { getRedirectToPageResult } from \"./hexclave-handler-client\";\n\nvi.mock(\"next/navigation\", () => ({\n RedirectType: {\n replace: \"replace\",\n },\n notFound: () => {\n throw new Error(\"notFound\");\n },\n redirect: (url: string) => {\n throw new Error(`redirect:${url}`);\n },\n usePathname: () => window.location.pathname,\n useSearchParams: () => new URLSearchParams(window.location.search),\n}));\n\nfunction createAppTestDouble(options: {\n redirectToHandler: (name: string, options: { replace: true }) => Promise<void>,\n}) {\n const projectId = \"00000000-0000-4000-8000-000000000000\";\n const app = {\n projectId,\n urls: {\n handler: \"http://localhost/handler\",\n signIn: `https://${projectId}.example-stack-hosted.test/handler/sign-in`,\n home: \"http://localhost\",\n },\n redirectToHome: vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n getConstructorOptions: () => ({ urls: {} }),\n redirectToHandler: options.redirectToHandler,\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that HexclaveHandlerClient touches in this redirect path.\n return app as unknown as StackClientApp<true>;\n}\n\ndescribe(\"HexclaveHandlerClient\", () => {\n it(\"returns known cross-domain redirect errors instead of treating them as unhandled async failures\", async () => {\n const redirectToHandler = vi.fn(async () => {\n throw new KnownErrors.RedirectUrlNotWhitelisted();\n });\n const app = createAppTestDouble({ redirectToHandler });\n\n const result = await getRedirectToPageResult(app, \"signIn\");\n\n expect(redirectToHandler).toHaveBeenCalledWith(\"signIn\", { replace: true });\n expect(result.status).toBe(\"known-error\");\n if (result.status === \"known-error\") {\n expect(result.error.errorCode).toBe(\"REDIRECT_URL_NOT_WHITELISTED\");\n expect(result.error.message).toContain(\"Redirect URL not whitelisted\");\n }\n });\n});\n"],"mappings":";;;;;AAUA,GAAG,KAAK,0BAA0B;CAChC,cAAc,EACZ,SAAS,UACX;CACA,gBAAgB;EACd,MAAM,IAAI,MAAM,UAAU;CAC5B;CACA,WAAW,QAAgB;EACzB,MAAM,IAAI,MAAM,YAAY,KAAK;CACnC;CACA,mBAAmB,OAAO,SAAS;CACnC,uBAAuB,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACnE,EAAE;AAEF,SAAS,oBAAoB,SAE1B;CACD,MAAM,YAAY;CAiBlB,OAAO;EAfL;EACA,MAAM;GACJ,SAAS;GACT,QAAQ,WAAW,UAAU;GAC7B,MAAM;EACR;EACA,gBAAgB,GAAG,GAAG,YAAY,CAAC,CAAC;GACnC,6BAA6B;GAC5B,8BAA8B,EAAE,MAAM,CAAC,EAAE;GACzC,mBAAmB,QAAQ;EAC7B;CAKO;AACX;AAEA,SAAS,+BAA+B;CACtC,GAAG,mGAAmG,YAAY;EAChH,MAAM,oBAAoB,GAAG,GAAG,YAAY;GAC1C,MAAM,IAAI,YAAY,0BAA0B;EAClD,CAAC;EAGD,MAAM,SAAS,MAAM,wBAFT,oBAAoB,EAAE,kBAAkB,CAEL,GAAG,QAAQ;EAE1D,OAAO,iBAAiB,CAAC,CAAC,qBAAqB,UAAU,EAAE,SAAS,KAAK,CAAC;EAC1E,OAAO,OAAO,MAAM,CAAC,CAAC,KAAK,aAAa;EACxC,IAAI,OAAO,WAAW,eAAe;GACnC,OAAO,OAAO,MAAM,SAAS,CAAC,CAAC,KAAK,8BAA8B;GAClE,OAAO,OAAO,MAAM,OAAO,CAAC,CAAC,UAAU,8BAA8B;EACvE;CACF,CAAC;AACH,CAAC"}
@@ -1,5 +1,4 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
- import { BaseHandlerProps } from "./hexclave-handler-client";
1
+ import { BaseHandlerProps } from "./hexclave-handler-client.js";
3
2
 
4
3
  //#region src/components-page/hexclave-handler.d.ts
5
4
  type HexclaveHandlerProps = BaseHandlerProps & {
@@ -28,7 +27,7 @@ declare function HandlerImpl({
28
27
  params,
29
28
  searchParams,
30
29
  ...props
31
- }: HexclaveHandlerProps): react_jsx_runtime0.JSX.Element;
30
+ }: HexclaveHandlerProps): import("react/jsx-runtime").JSX.Element;
32
31
  declare const HexclaveHandler: typeof HandlerImpl;
33
32
  /** @deprecated Use `HexclaveHandler` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */
34
33
  declare const StackHandler: typeof HandlerImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"hexclave-handler.d.ts","names":[],"sources":["../../../src/components-page/hexclave-handler.tsx"],"mappings":";;;;KAYK,oBAAA,GAAuB,gBAAA;EAAqB,QAAA;AAAA;EAA5C;;;EAIH,GAAA;EAJ0B;;;EAS1B,UAAA;EAKA;;;EAAA,MAAA;EAQO;;;EAHP,YAAA;AAAA;AAAA,iBAGO,WAAA,CAAA;EAAc,GAAA;EAAK,UAAA;EAAY,MAAA;EAAQ,YAAA;EAAA,GAAiB;AAAA,GAAS,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAKjF,eAAA,SAAe,WAAA;;cAGf,YAAA,SAAY,WAAA"}
1
+ {"version":3,"file":"hexclave-handler.d.ts","names":[],"sources":["../../../src/components-page/hexclave-handler.tsx"],"mappings":";;;KAYK,oBAAA,GAAuB,gBAAgB;EAAK,QAAA;AAAA;EAAxB;;;EAIvB,GAAA;EAJ+C;;;EAS/C,UAAA;EAUA;;AAAY;EALZ,MAAA;EAQkB;;;EAHlB,YAAA;AAAA;AAAA,iBAGO,WAAA;EAAc,GAAA;EAAK,UAAA;EAAY,MAAA;EAAQ,YAAA;EAAA,GAAiB;AAAA,GAAS,oBAAA,+BAAoB,GAAA,CAAA,OAAA;AAAA,cAKjF,eAAA,SAAe,WAAc;;cAG7B,YAAA,SAAY,WAAc"}
@@ -1,6 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { HexclaveHandlerClient } from "./hexclave-handler-client.js";
3
-
4
3
  //#region src/components-page/hexclave-handler.tsx
5
4
  function HandlerImpl({ app, routeProps, params, searchParams, ...props }) {
6
5
  return /* @__PURE__ */ jsx(HexclaveHandlerClient, { ...props });
@@ -8,7 +7,7 @@ function HandlerImpl({ app, routeProps, params, searchParams, ...props }) {
8
7
  const HexclaveHandler = HandlerImpl;
9
8
  /** @deprecated Use `HexclaveHandler` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */
10
9
  const StackHandler = HandlerImpl;
11
-
12
10
  //#endregion
13
11
  export { HexclaveHandler, StackHandler, StackHandler as default };
12
+
14
13
  //# sourceMappingURL=hexclave-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hexclave-handler.js","names":[],"sources":["../../../src/components-page/hexclave-handler.tsx"],"sourcesContent":["\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// This file exists solely so the following old, deprecated code from when StackHandler used to still take props:\n// <StackHandler app={hexclaveServerApp} routeProps={props} />\n// does not throw the following error:\n// Only plain objects, and a few built-ins, can be passed to Client Components from Server Components. Classes or null prototypes are not supported.\n// This file exists as a component that can be both client and server, ignores the non-serializable props, and returns <HexclaveHandlerClient />\n\nimport { BaseHandlerProps, HexclaveHandlerClient } from \"./hexclave-handler-client\";\n\ntype HexclaveHandlerProps = BaseHandlerProps & { location?: string } & {\n /**\n * @deprecated The app parameter is no longer necessary. You can safely remove it.\n */\n app?: any,\n\n /**\n * @deprecated The routeProps parameter is no longer necessary. You can safely remove it.\n */\n routeProps?: any,\n\n /**\n * @deprecated The params parameter is no longer necessary. You can safely remove it.\n */\n params?: any,\n\n /**\n * @deprecated The searchParams parameter is no longer necessary. You can safely remove it.\n */\n searchParams?: any,\n};\n\nfunction HandlerImpl({ app, routeProps, params, searchParams, ...props }: HexclaveHandlerProps) {\n return <HexclaveHandlerClient {...props} />;\n}\n\n// Non-deprecated Hexclave-branded export.\nexport const HexclaveHandler = HandlerImpl;\n\n/** @deprecated Use `HexclaveHandler` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackHandler = HandlerImpl;\n\n// Default export preserved for backwards compatibility (legacy `as`-rename re-exports).\n// Points at the deprecated alias so that `import StackHandler from \".../hexclave-handler\"` still\n// surfaces the deprecation. Internal re-exports in template/src/index.ts use the named exports.\nexport default StackHandler;\n"],"mappings":";;;;AAkCA,SAAS,YAAY,EAAE,KAAK,YAAY,QAAQ,cAAc,GAAG,SAA+B;AAC9F,QAAO,oBAAC,yBAAsB,GAAI,QAAS;;AAI7C,MAAa,kBAAkB;;AAG/B,MAAa,eAAe"}
1
+ {"version":3,"file":"hexclave-handler.js","names":[],"sources":["../../../src/components-page/hexclave-handler.tsx"],"sourcesContent":["\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// This file exists solely so the following old, deprecated code from when StackHandler used to still take props:\n// <StackHandler app={hexclaveServerApp} routeProps={props} />\n// does not throw the following error:\n// Only plain objects, and a few built-ins, can be passed to Client Components from Server Components. Classes or null prototypes are not supported.\n// This file exists as a component that can be both client and server, ignores the non-serializable props, and returns <HexclaveHandlerClient />\n\nimport { BaseHandlerProps, HexclaveHandlerClient } from \"./hexclave-handler-client\";\n\ntype HexclaveHandlerProps = BaseHandlerProps & { location?: string } & {\n /**\n * @deprecated The app parameter is no longer necessary. You can safely remove it.\n */\n app?: any,\n\n /**\n * @deprecated The routeProps parameter is no longer necessary. You can safely remove it.\n */\n routeProps?: any,\n\n /**\n * @deprecated The params parameter is no longer necessary. You can safely remove it.\n */\n params?: any,\n\n /**\n * @deprecated The searchParams parameter is no longer necessary. You can safely remove it.\n */\n searchParams?: any,\n};\n\nfunction HandlerImpl({ app, routeProps, params, searchParams, ...props }: HexclaveHandlerProps) {\n return <HexclaveHandlerClient {...props} />;\n}\n\n// Non-deprecated Hexclave-branded export.\nexport const HexclaveHandler = HandlerImpl;\n\n/** @deprecated Use `HexclaveHandler` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackHandler = HandlerImpl;\n\n// Default export preserved for backwards compatibility (legacy `as`-rename re-exports).\n// Points at the deprecated alias so that `import StackHandler from \".../hexclave-handler\"` still\n// surfaces the deprecation. Internal re-exports in template/src/index.ts use the named exports.\nexport default StackHandler;\n"],"mappings":";;;AAkCA,SAAS,YAAY,EAAE,KAAK,YAAY,QAAQ,cAAc,GAAG,SAA+B;CAC9F,OAAO,oBAAC,uBAAD,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAGA,MAAa,kBAAkB;;AAG/B,MAAa,eAAe"}
@@ -1,10 +1,8 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components-page/magic-link-callback.d.ts
4
2
  declare function MagicLinkCallback(props: {
5
3
  searchParams?: Record<string, string>;
6
4
  fullPage?: boolean;
7
- }): react_jsx_runtime0.JSX.Element;
5
+ }): import("react/jsx-runtime").JSX.Element;
8
6
  //#endregion
9
7
  export { MagicLinkCallback };
10
8
  //# sourceMappingURL=magic-link-callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"magic-link-callback.d.ts","names":[],"sources":["../../../src/components-page/magic-link-callback.tsx"],"mappings":";;;iBAoBgB,iBAAA,CAAkB,KAAA;EAChC,YAAA,GAAe,MAAA;EACf,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"magic-link-callback.d.ts","names":[],"sources":["../../../src/components-page/magic-link-callback.tsx"],"mappings":";iBAoBgB,iBAAA,CAAkB,KAAA;EAChC,YAAA,GAAe,MAAM;EACrB,QAAA;AAAA,gCACD,GAAA,CAAA,OAAA"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { throwErr } from "@hexclave/shared/dist/utils/errors";
4
3
  import React from "react";
5
4
  import { useStackApp, useUser } from "../index.js";
@@ -9,7 +8,6 @@ import { KnownErrors } from "@hexclave/shared";
9
8
  import { MessageCard as MessageCard$1 } from "../components/message-cards/message-card.js";
10
9
  import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card.js";
11
10
  import { cacheFunction } from "@hexclave/shared/dist/utils/caches";
12
-
13
11
  //#region src/components-page/magic-link-callback.tsx
14
12
  cacheFunction(async (hexclaveApp, code) => {
15
13
  return await hexclaveApp.signInWithMagicLink(code);
@@ -66,7 +64,7 @@ function MagicLinkCallback(props) {
66
64
  });
67
65
  }
68
66
  }
69
-
70
67
  //#endregion
71
68
  export { MagicLinkCallback };
69
+
72
70
  //# sourceMappingURL=magic-link-callback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"magic-link-callback.js","names":["MessageCard"],"sources":["../../../src/components-page/magic-link-callback.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 { cacheFunction } from \"@hexclave/shared/dist/utils/caches\";\nimport { throwErr } from \"@hexclave/shared/dist/utils/errors\";\nimport React from \"react\";\nimport { StackClientApp, useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nconst cacheSignInWithMagicLink = cacheFunction(async (hexclaveApp: StackClientApp<true>, code: string) => {\n return await hexclaveApp.signInWithMagicLink(code);\n});\n\nexport function MagicLinkCallback(props: {\n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [result, setResult] = React.useState<Awaited<ReturnType<typeof hexclaveApp.signInWithMagicLink>> | null>(null);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Magic Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Please check if you have the correct link. If you continue to have issues, please contact support.\")}</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Magic Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Your magic link has expired. Please request a new magic link if you need to sign-in.\")}</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title={t(\"Magic Link Already Used\")} fullPage={!!props.fullPage}>\n <p>{t(\"The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.\")}</p>\n </MessageCard>\n );\n\n if (!props.searchParams?.code) {\n return invalidJsx;\n }\n\n if (!result) {\n return <MessageCard\n title={t(\"Do you want to sign in?\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Sign in\")}\n primaryAction={async () => {\n const result = await hexclaveApp.signInWithMagicLink(props.searchParams?.code || throwErr(\"No magic link provided\"));\n setResult(result);\n }}\n secondaryButtonText={t(\"Cancel\")}\n secondaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n } else {\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 alreadyUsedJsx;\n } else {\n throw result.error;\n }\n }\n\n return <MessageCard\n title={t(\"Signed in successfully!\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go home\")}\n primaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAgBiC,cAAc,OAAO,aAAmC,SAAiB;AACxG,QAAO,MAAM,YAAY,oBAAoB,KAAK;EAClD;AAEF,SAAgB,kBAAkB,OAG/B;CACD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,cAAc,aAAa;CACjC,MAAM,OAAO,SAAS;CACtB,MAAM,CAAC,QAAQ,aAAa,MAAM,SAA6E,KAAK;AAEpH,KAAI,KACF,QAAO,oBAAC;EAAsB,MAAK;EAAW,UAAU,CAAC,CAAC,MAAM;GAAY;CAG9E,MAAM,aACJ,oBAACA;EAAY,OAAO,EAAE,qBAAqB;EAAE,UAAU,CAAC,CAAC,MAAM;YAC7D,oBAAC,iBAAG,EAAE,qGAAqG,GAAK;GACpG;CAGhB,MAAM,aACJ,oBAACA;EAAY,OAAO,EAAE,qBAAqB;EAAE,UAAU,CAAC,CAAC,MAAM;YAC7D,oBAAC,iBAAG,EAAE,uFAAuF,GAAK;GACtF;CAGhB,MAAM,iBACJ,oBAACA;EAAY,OAAO,EAAE,0BAA0B;EAAE,UAAU,CAAC,CAAC,MAAM;YAClE,oBAAC,iBAAG,EAAE,sIAAsI,GAAK;GACrI;AAGhB,KAAI,CAAC,MAAM,cAAc,KACvB,QAAO;AAGT,KAAI,CAAC,OACH,QAAO,oBAACA;EACN,OAAO,EAAE,0BAA0B;EACnC,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,UAAU;EAC/B,eAAe,YAAY;AAEzB,aADe,MAAM,YAAY,oBAAoB,MAAM,cAAc,QAAQ,SAAS,yBAAyB,CAAC,CACnG;;EAEnB,qBAAqB,EAAE,SAAS;EAChC,iBAAiB,YAAY;AAC3B,SAAM,YAAY,gBAAgB;;GAEpC;MACG;AACL,MAAI,OAAO,WAAW,QACpB,KAAI,YAAY,yBAAyB,WAAW,OAAO,MAAM,CAC/D,QAAO;WACE,YAAY,wBAAwB,WAAW,OAAO,MAAM,CACrE,QAAO;WACE,YAAY,4BAA4B,WAAW,OAAO,MAAM,CACzE,QAAO;MAEP,OAAM,OAAO;AAIjB,SAAO,oBAACA;GACN,OAAO,EAAE,0BAA0B;GACnC,UAAU,CAAC,CAAC,MAAM;GAClB,mBAAmB,EAAE,UAAU;GAC/B,eAAe,YAAY;AACzB,UAAM,YAAY,gBAAgB;;IAEpC"}
1
+ {"version":3,"file":"magic-link-callback.js","names":["MessageCard"],"sources":["../../../src/components-page/magic-link-callback.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 { cacheFunction } from \"@hexclave/shared/dist/utils/caches\";\nimport { throwErr } from \"@hexclave/shared/dist/utils/errors\";\nimport React from \"react\";\nimport { StackClientApp, useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { useTranslation } from \"../lib/translations\";\n\nconst cacheSignInWithMagicLink = cacheFunction(async (hexclaveApp: StackClientApp<true>, code: string) => {\n return await hexclaveApp.signInWithMagicLink(code);\n});\n\nexport function MagicLinkCallback(props: {\n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const { t } = useTranslation();\n const hexclaveApp = useStackApp();\n const user = useUser();\n const [result, setResult] = React.useState<Awaited<ReturnType<typeof hexclaveApp.signInWithMagicLink>> | null>(null);\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={!!props.fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title={t(\"Invalid Magic Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Please check if you have the correct link. If you continue to have issues, please contact support.\")}</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title={t(\"Expired Magic Link\")} fullPage={!!props.fullPage}>\n <p>{t(\"Your magic link has expired. Please request a new magic link if you need to sign-in.\")}</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title={t(\"Magic Link Already Used\")} fullPage={!!props.fullPage}>\n <p>{t(\"The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.\")}</p>\n </MessageCard>\n );\n\n if (!props.searchParams?.code) {\n return invalidJsx;\n }\n\n if (!result) {\n return <MessageCard\n title={t(\"Do you want to sign in?\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Sign in\")}\n primaryAction={async () => {\n const result = await hexclaveApp.signInWithMagicLink(props.searchParams?.code || throwErr(\"No magic link provided\"));\n setResult(result);\n }}\n secondaryButtonText={t(\"Cancel\")}\n secondaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n } else {\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 alreadyUsedJsx;\n } else {\n throw result.error;\n }\n }\n\n return <MessageCard\n title={t(\"Signed in successfully!\")}\n fullPage={!!props.fullPage}\n primaryButtonText={t(\"Go home\")}\n primaryAction={async () => {\n await hexclaveApp.redirectToHome();\n }}\n />;\n }\n}\n"],"mappings":";;;;;;;;;;;AAgBiC,cAAc,OAAO,aAAmC,SAAiB;CACxG,OAAO,MAAM,YAAY,oBAAoB,IAAI;AACnD,CAAC;AAED,SAAgB,kBAAkB,OAG/B;CACD,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,cAAc,YAAY;CAChC,MAAM,OAAO,QAAQ;CACrB,MAAM,CAAC,QAAQ,aAAa,MAAM,SAA6E,IAAI;CAEnH,IAAI,MACF,OAAO,oBAAC,uBAAD;EAAuB,MAAK;EAAW,UAAU,CAAC,CAAC,MAAM;CAAW,CAAA;CAG7E,MAAM,aACJ,oBAACA,eAAD;EAAa,OAAO,EAAE,oBAAoB;EAAG,UAAU,CAAC,CAAC,MAAM;YAC7D,oBAAC,KAAD,EAAA,UAAI,EAAE,oGAAoG,EAAK,CAAA;CACpG,CAAA;CAGf,MAAM,aACJ,oBAACA,eAAD;EAAa,OAAO,EAAE,oBAAoB;EAAG,UAAU,CAAC,CAAC,MAAM;YAC7D,oBAAC,KAAD,EAAA,UAAI,EAAE,sFAAsF,EAAK,CAAA;CACtF,CAAA;CAGf,MAAM,iBACJ,oBAACA,eAAD;EAAa,OAAO,EAAE,yBAAyB;EAAG,UAAU,CAAC,CAAC,MAAM;YAClE,oBAAC,KAAD,EAAA,UAAI,EAAE,qIAAqI,EAAK,CAAA;CACrI,CAAA;CAGf,IAAI,CAAC,MAAM,cAAc,MACvB,OAAO;CAGT,IAAI,CAAC,QACH,OAAO,oBAACA,eAAD;EACL,OAAO,EAAE,yBAAyB;EAClC,UAAU,CAAC,CAAC,MAAM;EAClB,mBAAmB,EAAE,SAAS;EAC9B,eAAe,YAAY;GAEzB,UAAU,MADW,YAAY,oBAAoB,MAAM,cAAc,QAAQ,SAAS,wBAAwB,CAAC,CACnG;EAClB;EACA,qBAAqB,EAAE,QAAQ;EAC/B,iBAAiB,YAAY;GAC3B,MAAM,YAAY,eAAe;EACnC;CACD,CAAA;MACI;EACL,IAAI,OAAO,WAAW,SACpB,IAAI,YAAY,yBAAyB,WAAW,OAAO,KAAK,GAC9D,OAAO;OACF,IAAI,YAAY,wBAAwB,WAAW,OAAO,KAAK,GACpE,OAAO;OACF,IAAI,YAAY,4BAA4B,WAAW,OAAO,KAAK,GACxE,OAAO;OAEP,MAAM,OAAO;EAIjB,OAAO,oBAACA,eAAD;GACL,OAAO,EAAE,yBAAyB;GAClC,UAAU,CAAC,CAAC,MAAM;GAClB,mBAAmB,EAAE,SAAS;GAC9B,eAAe,YAAY;IACzB,MAAM,YAAY,eAAe;GACnC;EACD,CAAA;CACH;AACF"}
@@ -1,11 +1,9 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components-page/mfa.d.ts
4
2
  declare function MFA(props: {
5
3
  fullPage?: boolean;
6
4
  onSuccess?: () => void;
7
5
  onCancel?: () => void;
8
- }): react_jsx_runtime0.JSX.Element;
6
+ }): import("react/jsx-runtime").JSX.Element;
9
7
  //#endregion
10
8
  export { MFA };
11
9
  //# sourceMappingURL=mfa.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mfa.d.ts","names":[],"sources":["../../../src/components-page/mfa.tsx"],"mappings":";;;iBA4LgB,GAAA,CAAI,KAAA;EAClB,QAAA;EACA,SAAA;EACA,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"mfa.d.ts","names":[],"sources":["../../../src/components-page/mfa.tsx"],"mappings":";iBA4LgB,GAAA,CAAI,KAAA;EAClB,QAAA;EACA,SAAA;EACA,QAAA;AAAA,gCACD,GAAA,CAAA,OAAA"}
@@ -1,5 +1,4 @@
1
1
  "use client";
2
-
3
2
  import { Button, InputOTP, InputOTPGroup, InputOTPSlot, Spinner, Typography, cn } from "@hexclave/ui";
4
3
  import { useEffect, useMemo, useRef, useState } from "react";
5
4
  import { useStackApp } from "../index.js";
@@ -9,7 +8,6 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
8
  import { KnownErrors } from "@hexclave/shared";
10
9
  import { CheckIcon } from "lucide-react";
11
10
  import { MaybeFullPage } from "../components/elements/maybe-full-page.js";
12
-
13
11
  //#region src/components-page/mfa.tsx
14
12
  function MfaForm({ onSuccess, onCancel }) {
15
13
  const hexclaveApp = useStackApp();
@@ -146,7 +144,7 @@ function MFA(props) {
146
144
  })
147
145
  });
148
146
  }
149
-
150
147
  //#endregion
151
148
  export { MFA };
149
+
152
150
  //# sourceMappingURL=mfa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mfa.js","names":[],"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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"}
1
+ {"version":3,"file":"mfa.js","names":[],"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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"}
@@ -1,11 +1,9 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components-page/oauth-callback.d.ts
4
2
  declare function OAuthCallback({
5
3
  fullPage
6
4
  }: {
7
5
  fullPage?: boolean;
8
- }): react_jsx_runtime0.JSX.Element;
6
+ }): import("react/jsx-runtime").JSX.Element;
9
7
  //#endregion
10
8
  export { OAuthCallback };
11
9
  //# sourceMappingURL=oauth-callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-callback.d.ts","names":[],"sources":["../../../src/components-page/oauth-callback.tsx"],"mappings":";;;iBAmBgB,aAAA,CAAA;EAAgB;AAAA;EAAc,QAAA;AAAA,IAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"oauth-callback.d.ts","names":[],"sources":["../../../src/components-page/oauth-callback.tsx"],"mappings":";iBAmBgB,aAAA;EAAgB;AAAA;EAAc,QAAA;AAAA,gCAAoB,GAAA,CAAA,OAAA"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { runAsynchronously } from "@hexclave/shared/dist/utils/promises";
4
3
  import { hexclaveAppInternalsSymbol } from "../lib/hexclave-app/common.js";
5
4
  import { captureError } from "@hexclave/shared/dist/utils/errors";
@@ -12,7 +11,6 @@ import { KnownError } from "@hexclave/shared";
12
11
  import { MaybeFullPage } from "../components/elements/maybe-full-page.js";
13
12
  import { StyledLink } from "../components/link.js";
14
13
  import { ErrorPage } from "./error-page.js";
15
-
16
14
  //#region src/components-page/oauth-callback.tsx
17
15
  function OAuthCallback({ fullPage }) {
18
16
  const { t } = useTranslation();
@@ -66,7 +64,7 @@ function OAuthCallback({ fullPage }) {
66
64
  })
67
65
  });
68
66
  }
69
-
70
67
  //#endregion
71
68
  export { OAuthCallback };
69
+
72
70
  //# sourceMappingURL=oauth-callback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-callback.js","names":[],"sources":["../../../src/components-page/oauth-callback.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 { KnownError } from \"@hexclave/shared\";\nimport { captureError } from \"@hexclave/shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { Spinner, cn } from \"@hexclave/ui\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { useTranslation } from \"../lib/translations\";\nimport { ErrorPage } from \"./error-page\";\n\nexport function OAuthCallback({ fullPage }: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const app = useStackApp();\n const called = useRef(false);\n const [showRedirectLink, setShowRedirectLink] = useState(false);\n const [errorSearchParams, setErrorSearchParams] = useState<Record<string, string> | null>(null);\n\n useEffect(() => runAsynchronously(async () => {\n if (called.current) return;\n called.current = true;\n try {\n // The startup handler in StackClientApp's constructor may have already consumed the\n // one-time OAuth params (code + state cookie) via a microtask that fires before this\n // macrotask-scheduled useEffect. Await its completion so we don't race: if it succeeds\n // it will redirect and this page tears down; if it fails we fall through below.\n await app[hexclaveAppInternalsSymbol].awaitPendingAuthResolutions();\n const hasRedirected = await app.callOAuthCallback();\n if (!hasRedirected) {\n await app.redirectToSignIn({ noRedirectBack: true });\n }\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n setErrorSearchParams({\n errorCode: e.errorCode,\n message: e.message,\n details: JSON.stringify(e.details ?? {}),\n });\n return;\n }\n captureError(\"<OAuthCallback />\", e);\n setErrorSearchParams({});\n }\n }), [app]);\n\n useEffect(() => {\n setTimeout(() => setShowRedirectLink(true), 3000);\n }, []);\n\n if (errorSearchParams != null) {\n return <ErrorPage searchParams={errorSearchParams} fullPage={fullPage} />;\n }\n\n return (\n <MaybeFullPage\n fullPage={fullPage ?? false}\n containerClassName=\"flex items-center justify-center\"\n >\n <div\n className={cn(\n \"text-center justify-center items-center stack-scope flex flex-col gap-4 max-w-[380px]\",\n fullPage ? \"p-4\" : \"p-0\"\n )}\n >\n <div className=\"flex flex-col justify-center items-center gap-4\">\n <Spinner size={20} />\n </div>\n {showRedirectLink ? <p>{t('If you are not redirected automatically, ')}<StyledLink\n className=\"whitespace-nowrap\"\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n runAsynchronously(app.redirectToHome());\n }}\n >{t(\"click here\")}</StyledLink></p> : null}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,SAAgB,cAAc,EAAE,YAAoC;CAClE,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,MAAM,aAAa;CACzB,MAAM,SAAS,OAAO,MAAM;CAC5B,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,MAAM;CAC/D,MAAM,CAAC,mBAAmB,wBAAwB,SAAwC,KAAK;AAE/F,iBAAgB,kBAAkB,YAAY;AAC5C,MAAI,OAAO,QAAS;AACpB,SAAO,UAAU;AACjB,MAAI;AAKF,SAAM,IAAI,4BAA4B,6BAA6B;AAEnE,OAAI,CADkB,MAAM,IAAI,mBAAmB,CAEjD,OAAM,IAAI,iBAAiB,EAAE,gBAAgB,MAAM,CAAC;WAE/C,GAAG;AACV,OAAI,WAAW,aAAa,EAAE,EAAE;AAC9B,yBAAqB;KACnB,WAAW,EAAE;KACb,SAAS,EAAE;KACX,SAAS,KAAK,UAAU,EAAE,WAAW,EAAE,CAAC;KACzC,CAAC;AACF;;AAEF,gBAAa,qBAAqB,EAAE;AACpC,wBAAqB,EAAE,CAAC;;GAE1B,EAAE,CAAC,IAAI,CAAC;AAEV,iBAAgB;AACd,mBAAiB,oBAAoB,KAAK,EAAE,IAAK;IAChD,EAAE,CAAC;AAEN,KAAI,qBAAqB,KACvB,QAAO,oBAAC;EAAU,cAAc;EAA6B;GAAY;AAG3E,QACE,oBAAC;EACC,UAAU,YAAY;EACtB,oBAAmB;YAEnB,qBAAC;GACC,WAAW,GACT,yFACA,WAAW,QAAQ,MACpB;cAED,oBAAC;IAAI,WAAU;cACb,oBAAC,WAAQ,MAAM,KAAM;KACjB,EACL,mBAAmB,qBAAC,kBAAG,EAAE,4CAA4C,EAAC,oBAAC;IACtE,WAAU;IACV,MAAK;IACL,UAAU,MAAM;AACd,OAAE,gBAAgB;AAClB,uBAAkB,IAAI,gBAAgB,CAAC;;cAEzC,EAAE,aAAa;KAAc,IAAI,GAAG;IAClC;GACQ"}
1
+ {"version":3,"file":"oauth-callback.js","names":[],"sources":["../../../src/components-page/oauth-callback.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 { KnownError } from \"@hexclave/shared\";\nimport { captureError } from \"@hexclave/shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { Spinner, cn } from \"@hexclave/ui\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { StyledLink } from \"../components/link\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { useTranslation } from \"../lib/translations\";\nimport { ErrorPage } from \"./error-page\";\n\nexport function OAuthCallback({ fullPage }: { fullPage?: boolean }) {\n const { t } = useTranslation();\n const app = useStackApp();\n const called = useRef(false);\n const [showRedirectLink, setShowRedirectLink] = useState(false);\n const [errorSearchParams, setErrorSearchParams] = useState<Record<string, string> | null>(null);\n\n useEffect(() => runAsynchronously(async () => {\n if (called.current) return;\n called.current = true;\n try {\n // The startup handler in StackClientApp's constructor may have already consumed the\n // one-time OAuth params (code + state cookie) via a microtask that fires before this\n // macrotask-scheduled useEffect. Await its completion so we don't race: if it succeeds\n // it will redirect and this page tears down; if it fails we fall through below.\n await app[hexclaveAppInternalsSymbol].awaitPendingAuthResolutions();\n const hasRedirected = await app.callOAuthCallback();\n if (!hasRedirected) {\n await app.redirectToSignIn({ noRedirectBack: true });\n }\n } catch (e) {\n if (KnownError.isKnownError(e)) {\n setErrorSearchParams({\n errorCode: e.errorCode,\n message: e.message,\n details: JSON.stringify(e.details ?? {}),\n });\n return;\n }\n captureError(\"<OAuthCallback />\", e);\n setErrorSearchParams({});\n }\n }), [app]);\n\n useEffect(() => {\n setTimeout(() => setShowRedirectLink(true), 3000);\n }, []);\n\n if (errorSearchParams != null) {\n return <ErrorPage searchParams={errorSearchParams} fullPage={fullPage} />;\n }\n\n return (\n <MaybeFullPage\n fullPage={fullPage ?? false}\n containerClassName=\"flex items-center justify-center\"\n >\n <div\n className={cn(\n \"text-center justify-center items-center stack-scope flex flex-col gap-4 max-w-[380px]\",\n fullPage ? \"p-4\" : \"p-0\"\n )}\n >\n <div className=\"flex flex-col justify-center items-center gap-4\">\n <Spinner size={20} />\n </div>\n {showRedirectLink ? <p>{t('If you are not redirected automatically, ')}<StyledLink\n className=\"whitespace-nowrap\"\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n runAsynchronously(app.redirectToHome());\n }}\n >{t(\"click here\")}</StyledLink></p> : null}\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAmBA,SAAgB,cAAc,EAAE,YAAoC;CAClE,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,MAAM,YAAY;CACxB,MAAM,SAAS,OAAO,KAAK;CAC3B,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,KAAK;CAC9D,MAAM,CAAC,mBAAmB,wBAAwB,SAAwC,IAAI;CAE9F,gBAAgB,kBAAkB,YAAY;EAC5C,IAAI,OAAO,SAAS;EACpB,OAAO,UAAU;EACjB,IAAI;GAKF,MAAM,IAAI,2BAA2B,CAAC,4BAA4B;GAElE,IAAI,CAAC,MADuB,IAAI,kBAAkB,GAEhD,MAAM,IAAI,iBAAiB,EAAE,gBAAgB,KAAK,CAAC;EAEvD,SAAS,GAAG;GACV,IAAI,WAAW,aAAa,CAAC,GAAG;IAC9B,qBAAqB;KACnB,WAAW,EAAE;KACb,SAAS,EAAE;KACX,SAAS,KAAK,UAAU,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IACD;GACF;GACA,aAAa,qBAAqB,CAAC;GACnC,qBAAqB,CAAC,CAAC;EACzB;CACF,CAAC,GAAG,CAAC,GAAG,CAAC;CAET,gBAAgB;EACd,iBAAiB,oBAAoB,IAAI,GAAG,GAAI;CAClD,GAAG,CAAC,CAAC;CAEL,IAAI,qBAAqB,MACvB,OAAO,oBAAC,WAAD;EAAW,cAAc;EAA6B;CAAW,CAAA;CAG1E,OACE,oBAAC,eAAD;EACE,UAAU,YAAY;EACtB,oBAAmB;YAEnB,qBAAC,OAAD;GACE,WAAW,GACT,yFACA,WAAW,QAAQ,KACrB;aAJF,CAME,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,SAAD,EAAS,MAAM,GAAK,CAAA;GACjB,CAAA,GACJ,mBAAmB,qBAAC,KAAD,EAAA,UAAA,CAAI,EAAE,2CAA2C,GAAE,oBAAC,YAAD;IACrE,WAAU;IACV,MAAK;IACL,UAAU,MAAM;KACd,EAAE,eAAe;KACjB,kBAAkB,IAAI,eAAe,CAAC;IACxC;cACA,EAAE,YAAY;GAAc,CAAA,CAAI,EAAA,CAAA,IAAI,IACnC;;CACQ,CAAA;AAEnB"}
@@ -1,12 +1,11 @@
1
1
  import { hexclaveAppInternalsSymbol } from "../lib/hexclave-app/common.js";
2
- import React, { act } from "react";
2
+ import { act } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { KnownErrors } from "@hexclave/shared";
5
5
  import { createRoot } from "react-dom/client";
6
6
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
7
7
  import { OAuthCallback } from "./oauth-callback.js";
8
8
  import { TranslationProviderClient } from "../providers/translation-provider-client.js";
9
-
10
9
  //#region src/components-page/oauth-callback.test.tsx
11
10
  // @vitest-environment jsdom
12
11
  const appMockState = vi.hoisted(() => ({ app: null }));
@@ -85,7 +84,7 @@ describe("OAuthCallback", () => {
85
84
  expect(app.redirectToSignIn).not.toHaveBeenCalled();
86
85
  });
87
86
  });
88
-
89
87
  //#endregion
90
- export { };
88
+ export {};
89
+
91
90
  //# sourceMappingURL=oauth-callback.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-callback.test.js","names":[],"sources":["../../../src/components-page/oauth-callback.test.tsx"],"sourcesContent":["\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// @vitest-environment jsdom\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport React, { act } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { TranslationProviderClient } from \"../providers/translation-provider-client\";\nimport { OAuthCallback } from \"./oauth-callback\";\n\nconst appMockState = vi.hoisted(() => ({ app: null as unknown }));\n\nvi.mock(\"..\", () => ({\n useStackApp: () => {\n if (appMockState.app == null) {\n throw new Error(\"Expected test app to be set before rendering.\");\n }\n return appMockState.app;\n },\n}));\n\nvi.mock(\"@hexclave/ui\", async () => {\n const React = await import(\"react\");\n return {\n Button: (props: { children: React.ReactNode, onClick?: () => void }) => (\n <button type=\"button\" onClick={props.onClick}>{props.children}</button>\n ),\n Spinner: () => <div data-testid=\"spinner\" />,\n Typography: (props: { children: React.ReactNode }) => <div>{props.children}</div>,\n cn: (...classes: (string | false | null | undefined)[]) => classes.filter(Boolean).join(\" \"),\n };\n});\n\nconst previousActEnvironment = Reflect.get(globalThis, \"IS_REACT_ACT_ENVIRONMENT\");\n\nfunction createAppTestDouble(options: {\n callOAuthCallback: () => Promise<boolean>,\n}) {\n const app = {\n callOAuthCallback: options.callOAuthCallback,\n redirectToSignIn: vi.fn(async () => {}),\n redirectToHome: vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n awaitPendingAuthResolutions: vi.fn(async () => {}),\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that OAuthCallback and the rendered error card touch.\n return app as unknown as StackClientApp<true>;\n}\n\nlet root: Root | null = null;\nlet container: HTMLDivElement | null = null;\n\nasync function renderWithApp(app: StackClientApp<true>) {\n appMockState.app = app;\n container = document.createElement(\"div\");\n document.body.append(container);\n root = createRoot(container);\n await act(async () => {\n root?.render(\n <TranslationProviderClient quetzalKeys={new Map()} quetzalLocale={new Map()}>\n <OAuthCallback />\n </TranslationProviderClient>\n );\n });\n}\n\nasync function flushEffects() {\n await act(async () => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n });\n}\n\ndescribe(\"OAuthCallback\", () => {\n beforeEach(() => {\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", true);\n });\n\n afterEach(() => {\n act(() => {\n root?.unmount();\n });\n container?.remove();\n root = null;\n container = null;\n appMockState.app = null;\n vi.restoreAllMocks();\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", previousActEnvironment);\n });\n\n it(\"renders backend-encoded OAuth callback errors on the callback page\", async () => {\n const errorMessage = \"Your sign up was rejected by an administrator's sign-up rule.\";\n const callOAuthCallback = vi.fn(async () => {\n throw new KnownErrors.SignUpRejected(errorMessage);\n });\n const app = createAppTestDouble({ callOAuthCallback });\n\n await renderWithApp(app);\n await flushEffects();\n\n expect(callOAuthCallback).toHaveBeenCalledOnce();\n expect(container?.textContent).toContain(\"SIGN_UP_REJECTED\");\n expect(container?.textContent).toContain(errorMessage);\n expect(app.redirectToSignIn).not.toHaveBeenCalled();\n });\n});\n"],"mappings":";;;;;;;;;;;AAeA,MAAM,eAAe,GAAG,eAAe,EAAE,KAAK,MAAiB,EAAE;AAEjE,GAAG,KAAK,aAAa,EACnB,mBAAmB;AACjB,KAAI,aAAa,OAAO,KACtB,OAAM,IAAI,MAAM,gDAAgD;AAElE,QAAO,aAAa;GAEvB,EAAE;AAEH,GAAG,KAAK,gBAAgB,YAAY;AACpB,OAAM,OAAO;AAC3B,QAAO;EACL,SAAS,UACP,oBAAC;GAAO,MAAK;GAAS,SAAS,MAAM;aAAU,MAAM;IAAkB;EAEzE,eAAe,oBAAC,SAAI,eAAY,YAAY;EAC5C,aAAa,UAAyC,oBAAC,mBAAK,MAAM,WAAe;EACjF,KAAK,GAAG,YAAmD,QAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI;EAC7F;EACD;AAEF,MAAM,yBAAyB,QAAQ,IAAI,YAAY,2BAA2B;AAElF,SAAS,oBAAoB,SAE1B;AAYD,QAXY;EACV,mBAAmB,QAAQ;EAC3B,kBAAkB,GAAG,GAAG,YAAY,GAAG;EACvC,gBAAgB,GAAG,GAAG,YAAY,GAAG;GACpC,6BAA6B,EAC5B,6BAA6B,GAAG,GAAG,YAAY,GAAG,EACnD;EACF;;AAOH,IAAI,OAAoB;AACxB,IAAI,YAAmC;AAEvC,eAAe,cAAc,KAA2B;AACtD,cAAa,MAAM;AACnB,aAAY,SAAS,cAAc,MAAM;AACzC,UAAS,KAAK,OAAO,UAAU;AAC/B,QAAO,WAAW,UAAU;AAC5B,OAAM,IAAI,YAAY;AACpB,QAAM,OACJ,oBAAC;GAA0B,6BAAa,IAAI,KAAK;GAAE,+BAAe,IAAI,KAAK;aACzE,oBAAC,kBAAgB;IACS,CAC7B;GACD;;AAGJ,eAAe,eAAe;AAC5B,OAAM,IAAI,YAAY;AACpB,QAAM,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;GACtD;;AAGJ,SAAS,uBAAuB;AAC9B,kBAAiB;AACf,UAAQ,IAAI,YAAY,4BAA4B,KAAK;GACzD;AAEF,iBAAgB;AACd,YAAU;AACR,SAAM,SAAS;IACf;AACF,aAAW,QAAQ;AACnB,SAAO;AACP,cAAY;AACZ,eAAa,MAAM;AACnB,KAAG,iBAAiB;AACpB,UAAQ,IAAI,YAAY,4BAA4B,uBAAuB;GAC3E;AAEF,IAAG,sEAAsE,YAAY;EACnF,MAAM,eAAe;EACrB,MAAM,oBAAoB,GAAG,GAAG,YAAY;AAC1C,SAAM,IAAI,YAAY,eAAe,aAAa;IAClD;EACF,MAAM,MAAM,oBAAoB,EAAE,mBAAmB,CAAC;AAEtD,QAAM,cAAc,IAAI;AACxB,QAAM,cAAc;AAEpB,SAAO,kBAAkB,CAAC,sBAAsB;AAChD,SAAO,WAAW,YAAY,CAAC,UAAU,mBAAmB;AAC5D,SAAO,WAAW,YAAY,CAAC,UAAU,aAAa;AACtD,SAAO,IAAI,iBAAiB,CAAC,IAAI,kBAAkB;GACnD;EACF"}
1
+ {"version":3,"file":"oauth-callback.test.js","names":[],"sources":["../../../src/components-page/oauth-callback.test.tsx"],"sourcesContent":["\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// @vitest-environment jsdom\n\nimport { KnownErrors } from \"@hexclave/shared\";\nimport React, { act } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { StackClientApp } from \"../lib/hexclave-app/apps/interfaces/client-app\";\nimport { hexclaveAppInternalsSymbol } from \"../lib/hexclave-app/common\";\nimport { TranslationProviderClient } from \"../providers/translation-provider-client\";\nimport { OAuthCallback } from \"./oauth-callback\";\n\nconst appMockState = vi.hoisted(() => ({ app: null as unknown }));\n\nvi.mock(\"..\", () => ({\n useStackApp: () => {\n if (appMockState.app == null) {\n throw new Error(\"Expected test app to be set before rendering.\");\n }\n return appMockState.app;\n },\n}));\n\nvi.mock(\"@hexclave/ui\", async () => {\n const React = await import(\"react\");\n return {\n Button: (props: { children: React.ReactNode, onClick?: () => void }) => (\n <button type=\"button\" onClick={props.onClick}>{props.children}</button>\n ),\n Spinner: () => <div data-testid=\"spinner\" />,\n Typography: (props: { children: React.ReactNode }) => <div>{props.children}</div>,\n cn: (...classes: (string | false | null | undefined)[]) => classes.filter(Boolean).join(\" \"),\n };\n});\n\nconst previousActEnvironment = Reflect.get(globalThis, \"IS_REACT_ACT_ENVIRONMENT\");\n\nfunction createAppTestDouble(options: {\n callOAuthCallback: () => Promise<boolean>,\n}) {\n const app = {\n callOAuthCallback: options.callOAuthCallback,\n redirectToSignIn: vi.fn(async () => {}),\n redirectToHome: vi.fn(async () => {}),\n [hexclaveAppInternalsSymbol]: {\n awaitPendingAuthResolutions: vi.fn(async () => {}),\n },\n };\n\n // This test double intentionally implements only the StackClientApp surface\n // that OAuthCallback and the rendered error card touch.\n return app as unknown as StackClientApp<true>;\n}\n\nlet root: Root | null = null;\nlet container: HTMLDivElement | null = null;\n\nasync function renderWithApp(app: StackClientApp<true>) {\n appMockState.app = app;\n container = document.createElement(\"div\");\n document.body.append(container);\n root = createRoot(container);\n await act(async () => {\n root?.render(\n <TranslationProviderClient quetzalKeys={new Map()} quetzalLocale={new Map()}>\n <OAuthCallback />\n </TranslationProviderClient>\n );\n });\n}\n\nasync function flushEffects() {\n await act(async () => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n });\n}\n\ndescribe(\"OAuthCallback\", () => {\n beforeEach(() => {\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", true);\n });\n\n afterEach(() => {\n act(() => {\n root?.unmount();\n });\n container?.remove();\n root = null;\n container = null;\n appMockState.app = null;\n vi.restoreAllMocks();\n Reflect.set(globalThis, \"IS_REACT_ACT_ENVIRONMENT\", previousActEnvironment);\n });\n\n it(\"renders backend-encoded OAuth callback errors on the callback page\", async () => {\n const errorMessage = \"Your sign up was rejected by an administrator's sign-up rule.\";\n const callOAuthCallback = vi.fn(async () => {\n throw new KnownErrors.SignUpRejected(errorMessage);\n });\n const app = createAppTestDouble({ callOAuthCallback });\n\n await renderWithApp(app);\n await flushEffects();\n\n expect(callOAuthCallback).toHaveBeenCalledOnce();\n expect(container?.textContent).toContain(\"SIGN_UP_REJECTED\");\n expect(container?.textContent).toContain(errorMessage);\n expect(app.redirectToSignIn).not.toHaveBeenCalled();\n });\n});\n"],"mappings":";;;;;;;;;;AAeA,MAAM,eAAe,GAAG,eAAe,EAAE,KAAK,KAAgB,EAAE;AAEhE,GAAG,KAAK,aAAa,EACnB,mBAAmB;CACjB,IAAI,aAAa,OAAO,MACtB,MAAM,IAAI,MAAM,+CAA+C;CAEjE,OAAO,aAAa;AACtB,EACF,EAAE;AAEF,GAAG,KAAK,gBAAgB,YAAY;CACpB,MAAM,OAAO;CAC3B,OAAO;EACL,SAAS,UACP,oBAAC,UAAD;GAAQ,MAAK;GAAS,SAAS,MAAM;aAAU,MAAM;EAAiB,CAAA;EAExE,eAAe,oBAAC,OAAD,EAAK,eAAY,UAAW,CAAA;EAC3C,aAAa,UAAyC,oBAAC,OAAD,EAAA,UAAM,MAAM,SAAc,CAAA;EAChF,KAAK,GAAG,YAAmD,QAAQ,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAC7F;AACF,CAAC;AAED,MAAM,yBAAyB,QAAQ,IAAI,YAAY,0BAA0B;AAEjF,SAAS,oBAAoB,SAE1B;CAYD,OAAO;EAVL,mBAAmB,QAAQ;EAC3B,kBAAkB,GAAG,GAAG,YAAY,CAAC,CAAC;EACtC,gBAAgB,GAAG,GAAG,YAAY,CAAC,CAAC;GACnC,6BAA6B,EAC5B,6BAA6B,GAAG,GAAG,YAAY,CAAC,CAAC,EACnD;CAKO;AACX;AAEA,IAAI,OAAoB;AACxB,IAAI,YAAmC;AAEvC,eAAe,cAAc,KAA2B;CACtD,aAAa,MAAM;CACnB,YAAY,SAAS,cAAc,KAAK;CACxC,SAAS,KAAK,OAAO,SAAS;CAC9B,OAAO,WAAW,SAAS;CAC3B,MAAM,IAAI,YAAY;EACpB,MAAM,OACJ,oBAAC,2BAAD;GAA2B,6BAAa,IAAI,IAAI;GAAG,+BAAe,IAAI,IAAI;aACxE,oBAAC,eAAD,CAAgB,CAAA;EACS,CAAA,CAC7B;CACF,CAAC;AACH;AAEA,eAAe,eAAe;CAC5B,MAAM,IAAI,YAAY;EACpB,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,CAAC,CAAC;CACvD,CAAC;AACH;AAEA,SAAS,uBAAuB;CAC9B,iBAAiB;EACf,QAAQ,IAAI,YAAY,4BAA4B,IAAI;CAC1D,CAAC;CAED,gBAAgB;EACd,UAAU;GACR,MAAM,QAAQ;EAChB,CAAC;EACD,WAAW,OAAO;EAClB,OAAO;EACP,YAAY;EACZ,aAAa,MAAM;EACnB,GAAG,gBAAgB;EACnB,QAAQ,IAAI,YAAY,4BAA4B,sBAAsB;CAC5E,CAAC;CAED,GAAG,sEAAsE,YAAY;EACnF,MAAM,eAAe;EACrB,MAAM,oBAAoB,GAAG,GAAG,YAAY;GAC1C,MAAM,IAAI,YAAY,eAAe,YAAY;EACnD,CAAC;EACD,MAAM,MAAM,oBAAoB,EAAE,kBAAkB,CAAC;EAErD,MAAM,cAAc,GAAG;EACvB,MAAM,aAAa;EAEnB,OAAO,iBAAiB,CAAC,CAAC,qBAAqB;EAC/C,OAAO,WAAW,WAAW,CAAC,CAAC,UAAU,kBAAkB;EAC3D,OAAO,WAAW,WAAW,CAAC,CAAC,UAAU,YAAY;EACrD,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,iBAAiB;CACpD,CAAC;AACH,CAAC"}
@@ -1,9 +1,7 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/components-page/onboarding.d.ts
4
2
  declare function Onboarding(props: {
5
3
  fullPage?: boolean;
6
- }): react_jsx_runtime0.JSX.Element | null;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
7
5
  //#endregion
8
6
  export { Onboarding };
9
7
  //# sourceMappingURL=onboarding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.d.ts","names":[],"sources":["../../../src/components-page/onboarding.tsx"],"mappings":";;;iBAmBgB,UAAA,CAAW,KAAA;EACzB,QAAA;AAAA,IACD,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"onboarding.d.ts","names":[],"sources":["../../../src/components-page/onboarding.tsx"],"mappings":";iBAmBgB,UAAA,CAAW,KAAA;EACzB,QAAA;AAAA,gCACD,GAAA,CAAA,OAAA"}
@@ -1,5 +1,4 @@
1
- 'use client';
2
-
1
+ "use client";
3
2
  import { runAsynchronously, runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
4
3
  import { yupResolver } from "@hookform/resolvers/yup";
5
4
  import { strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
@@ -11,7 +10,6 @@ import { FormWarningText } from "../components/elements/form-warning.js";
11
10
  import { useTranslation } from "../lib/translations.js";
12
11
  import { jsx, jsxs } from "react/jsx-runtime";
13
12
  import { MessageCard as MessageCard$1 } from "../components/message-cards/message-card.js";
14
-
15
13
  //#region src/components-page/onboarding.tsx
16
14
  function Onboarding(props) {
17
15
  const { t } = useTranslation();
@@ -132,7 +130,7 @@ function VerifyEmailScreen(props) {
132
130
  ] })
133
131
  });
134
132
  }
135
-
136
133
  //#endregion
137
134
  export { Onboarding };
135
+
138
136
  //# sourceMappingURL=onboarding.js.map