@hexclave/next 1.0.0 → 1.0.1

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 (365) hide show
  1. package/README.md +7 -23
  2. package/dist/components/api-key-dialogs.js +18 -18
  3. package/dist/components/api-key-dialogs.js.map +1 -1
  4. package/dist/components/api-key-table.js +19 -19
  5. package/dist/components/api-key-table.js.map +1 -1
  6. package/dist/components/credential-sign-in.js +12 -12
  7. package/dist/components/credential-sign-in.js.map +1 -1
  8. package/dist/components/credential-sign-up.js +19 -19
  9. package/dist/components/credential-sign-up.js.map +1 -1
  10. package/dist/components/elements/separator-with-text.js +3 -3
  11. package/dist/components/elements/separator-with-text.js.map +1 -1
  12. package/dist/components/elements/sidebar-layout.js +15 -15
  13. package/dist/components/elements/sidebar-layout.js.map +1 -1
  14. package/dist/components/elements/user-avatar.js +3 -3
  15. package/dist/components/elements/user-avatar.js.map +1 -1
  16. package/dist/components/link.js +2 -2
  17. package/dist/components/link.js.map +1 -1
  18. package/dist/components/magic-link-sign-in.js +17 -17
  19. package/dist/components/magic-link-sign-in.js.map +1 -1
  20. package/dist/components/message-cards/known-error-message-card.js +2 -2
  21. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  22. package/dist/components/message-cards/message-card.js +4 -4
  23. package/dist/components/message-cards/message-card.js.map +1 -1
  24. package/dist/components/message-cards/predefined-message-card.js +2 -2
  25. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  26. package/dist/components/oauth-button.js +15 -15
  27. package/dist/components/oauth-button.js.map +1 -1
  28. package/dist/components/passkey-button.js +2 -2
  29. package/dist/components/passkey-button.js.map +1 -1
  30. package/dist/components/profile-image-editor.js +9 -9
  31. package/dist/components/profile-image-editor.js.map +1 -1
  32. package/dist/components/selected-team-switcher.js +4 -4
  33. package/dist/components/selected-team-switcher.js.map +1 -1
  34. package/dist/components/team-icon.js +4 -4
  35. package/dist/components/team-icon.js.map +1 -1
  36. package/dist/components/team-switcher.js +21 -21
  37. package/dist/components/team-switcher.js.map +1 -1
  38. package/dist/components/user-button.js +13 -13
  39. package/dist/components/user-button.js.map +1 -1
  40. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +32 -32
  41. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  42. package/dist/components-page/account-settings/api-keys/api-keys-page.js +2 -2
  43. package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  44. package/dist/components-page/account-settings/editable-text.js +5 -5
  45. package/dist/components-page/account-settings/editable-text.js.map +1 -1
  46. package/dist/components-page/account-settings/email-and-auth/emails-section.js +22 -22
  47. package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  48. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +17 -17
  49. package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  50. package/dist/components-page/account-settings/email-and-auth/otp-section.js +9 -9
  51. package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  52. package/dist/components-page/account-settings/email-and-auth/passkey-section.js +9 -9
  53. package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  54. package/dist/components-page/account-settings/email-and-auth/password-section.js +23 -23
  55. package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  56. package/dist/components-page/account-settings/notifications/notifications-page.js +6 -6
  57. package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  58. package/dist/components-page/account-settings/payments/payments-panel.js +52 -52
  59. package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -1
  60. package/dist/components-page/account-settings/section.js +4 -4
  61. package/dist/components-page/account-settings/section.js.map +1 -1
  62. package/dist/components-page/account-settings/settings/delete-account-section.js +7 -7
  63. package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  64. package/dist/components-page/account-settings/settings/sign-out-section.js +2 -2
  65. package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  66. package/dist/components-page/account-settings/teams/leave-team-section.js +5 -5
  67. package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  68. package/dist/components-page/account-settings/teams/team-api-keys-section.js +5 -5
  69. package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  70. package/dist/components-page/account-settings/teams/team-creation-page.js +7 -7
  71. package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  72. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +20 -20
  73. package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  74. package/dist/components-page/account-settings/teams/team-member-list-section.js +5 -5
  75. package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  76. package/dist/components-page/account-settings.js +22 -22
  77. package/dist/components-page/account-settings.js.map +1 -1
  78. package/dist/components-page/auth-page.js +23 -23
  79. package/dist/components-page/auth-page.js.map +1 -1
  80. package/dist/components-page/cli-auth-confirm.js +9 -9
  81. package/dist/components-page/cli-auth-confirm.js.map +1 -1
  82. package/dist/components-page/cli-auth-confirm.test.js +4 -4
  83. package/dist/components-page/cli-auth-confirm.test.js.map +1 -1
  84. package/dist/components-page/email-verification.js +6 -6
  85. package/dist/components-page/email-verification.js.map +1 -1
  86. package/dist/components-page/error-page.js +11 -11
  87. package/dist/components-page/error-page.js.map +1 -1
  88. package/dist/components-page/forgot-password.js +11 -11
  89. package/dist/components-page/forgot-password.js.map +1 -1
  90. package/dist/components-page/magic-link-callback.js +8 -8
  91. package/dist/components-page/magic-link-callback.js.map +1 -1
  92. package/dist/components-page/mfa.js +13 -13
  93. package/dist/components-page/mfa.js.map +1 -1
  94. package/dist/components-page/oauth-callback.js +9 -9
  95. package/dist/components-page/oauth-callback.js.map +1 -1
  96. package/dist/components-page/onboarding.js +11 -11
  97. package/dist/components-page/onboarding.js.map +1 -1
  98. package/dist/components-page/password-reset.js +27 -27
  99. package/dist/components-page/password-reset.js.map +1 -1
  100. package/dist/components-page/section.js +1 -1
  101. package/dist/components-page/sign-out.js +4 -4
  102. package/dist/components-page/sign-out.js.map +1 -1
  103. package/dist/components-page/stack-handler-client.js +9 -9
  104. package/dist/components-page/stack-handler-client.js.map +1 -1
  105. package/dist/components-page/stack-handler.d.ts +14 -9
  106. package/dist/components-page/stack-handler.d.ts.map +1 -1
  107. package/dist/components-page/stack-handler.js +8 -2
  108. package/dist/components-page/stack-handler.js.map +1 -1
  109. package/dist/components-page/team-creation.js +9 -9
  110. package/dist/components-page/team-creation.js.map +1 -1
  111. package/dist/components-page/team-invitation.js +20 -20
  112. package/dist/components-page/team-invitation.js.map +1 -1
  113. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  114. package/dist/dev-tool/dev-tool-core.js +25 -25
  115. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  116. package/dist/dev-tool/dev-tool-trigger-position.test.js +1 -1
  117. package/dist/dev-tool/index.js +6 -6
  118. package/dist/dev-tool/index.js.map +1 -1
  119. package/dist/esm/components/api-key-dialogs.js.map +1 -1
  120. package/dist/esm/components/api-key-table.js.map +1 -1
  121. package/dist/esm/components/credential-sign-in.js.map +1 -1
  122. package/dist/esm/components/credential-sign-up.js.map +1 -1
  123. package/dist/esm/components/elements/separator-with-text.js.map +1 -1
  124. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  125. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  126. package/dist/esm/components/link.js.map +1 -1
  127. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  128. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  129. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  130. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  131. package/dist/esm/components/oauth-button.js.map +1 -1
  132. package/dist/esm/components/passkey-button.js.map +1 -1
  133. package/dist/esm/components/profile-image-editor.js.map +1 -1
  134. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  135. package/dist/esm/components/team-icon.js.map +1 -1
  136. package/dist/esm/components/team-switcher.js.map +1 -1
  137. package/dist/esm/components/user-button.js.map +1 -1
  138. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  139. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  140. package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
  141. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  142. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  143. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  144. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  145. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  146. package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  147. package/dist/esm/components-page/account-settings/payments/payments-panel.js +1 -1
  148. package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -1
  149. package/dist/esm/components-page/account-settings/section.js.map +1 -1
  150. package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  151. package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  152. package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  153. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +1 -1
  154. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  155. package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  156. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  157. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  158. package/dist/esm/components-page/account-settings.js.map +1 -1
  159. package/dist/esm/components-page/auth-page.js.map +1 -1
  160. package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
  161. package/dist/esm/components-page/cli-auth-confirm.test.js +2 -2
  162. package/dist/esm/components-page/cli-auth-confirm.test.js.map +1 -1
  163. package/dist/esm/components-page/email-verification.js.map +1 -1
  164. package/dist/esm/components-page/error-page.js.map +1 -1
  165. package/dist/esm/components-page/forgot-password.js.map +1 -1
  166. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  167. package/dist/esm/components-page/mfa.js.map +1 -1
  168. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  169. package/dist/esm/components-page/onboarding.js.map +1 -1
  170. package/dist/esm/components-page/password-reset.js.map +1 -1
  171. package/dist/esm/components-page/sign-out.js.map +1 -1
  172. package/dist/esm/components-page/stack-handler-client.js +2 -2
  173. package/dist/esm/components-page/stack-handler-client.js.map +1 -1
  174. package/dist/esm/components-page/stack-handler.d.ts +13 -9
  175. package/dist/esm/components-page/stack-handler.d.ts.map +1 -1
  176. package/dist/esm/components-page/stack-handler.js +5 -2
  177. package/dist/esm/components-page/stack-handler.js.map +1 -1
  178. package/dist/esm/components-page/team-creation.js.map +1 -1
  179. package/dist/esm/components-page/team-invitation.js.map +1 -1
  180. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  181. package/dist/esm/dev-tool/dev-tool-core.js +4 -4
  182. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  183. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +1 -1
  184. package/dist/esm/dev-tool/index.js.map +1 -1
  185. package/dist/esm/generated/global-css.d.ts +1 -1
  186. package/dist/esm/generated/global-css.js +1 -1
  187. package/dist/esm/generated/global-css.js.map +1 -1
  188. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  189. package/dist/esm/index.d.ts +5 -5
  190. package/dist/esm/index.js +5 -6
  191. package/dist/esm/integrations/convex.js.map +1 -1
  192. package/dist/esm/lib/auth.js +1 -1
  193. package/dist/esm/lib/auth.js.map +1 -1
  194. package/dist/esm/lib/auth.test.js.map +1 -1
  195. package/dist/esm/lib/cookie.js.map +1 -1
  196. package/dist/esm/lib/hooks.d.ts +11 -1
  197. package/dist/esm/lib/hooks.d.ts.map +1 -1
  198. package/dist/esm/lib/hooks.js +19 -9
  199. package/dist/esm/lib/hooks.js.map +1 -1
  200. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
  201. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
  202. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  203. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +3 -1
  204. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  205. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts +3 -3
  206. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  207. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +2 -2
  208. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  209. package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
  210. package/dist/esm/lib/stack-app/apps/implementations/common.js +3 -3
  211. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
  212. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
  213. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
  214. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
  215. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
  216. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  217. package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
  218. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js +3 -2
  219. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
  220. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
  221. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
  222. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -0
  223. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  224. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
  225. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
  226. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -0
  227. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  228. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
  229. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
  230. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -0
  231. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  232. package/dist/esm/lib/stack-app/common.d.ts +1 -1
  233. package/dist/esm/lib/stack-app/common.js.map +1 -1
  234. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
  235. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
  236. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
  237. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
  238. package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
  239. package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
  240. package/dist/esm/lib/stack-app/url-targets.js.map +1 -1
  241. package/dist/esm/lib/stack-app/url-targets.test.js +1 -1
  242. package/dist/esm/lib/stack-app/url-targets.test.js.map +1 -1
  243. package/dist/esm/lib/stack-app/users/index.js.map +1 -1
  244. package/dist/esm/providers/stack-context.d.ts +3 -2
  245. package/dist/esm/providers/stack-context.d.ts.map +1 -1
  246. package/dist/esm/providers/stack-context.js +3 -1
  247. package/dist/esm/providers/stack-context.js.map +1 -1
  248. package/dist/esm/providers/stack-provider-client.js.map +1 -1
  249. package/dist/esm/providers/stack-provider.d.ts +5 -1
  250. package/dist/esm/providers/stack-provider.d.ts.map +1 -1
  251. package/dist/esm/providers/stack-provider.js +5 -1
  252. package/dist/esm/providers/stack-provider.js.map +1 -1
  253. package/dist/esm/providers/theme-provider.d.ts +6 -2
  254. package/dist/esm/providers/theme-provider.d.ts.map +1 -1
  255. package/dist/esm/providers/theme-provider.js +6 -2
  256. package/dist/esm/providers/theme-provider.js.map +1 -1
  257. package/dist/esm/providers/translation-provider-client.d.ts +4 -3
  258. package/dist/esm/providers/translation-provider-client.d.ts.map +1 -1
  259. package/dist/esm/providers/translation-provider-client.js +4 -2
  260. package/dist/esm/providers/translation-provider-client.js.map +1 -1
  261. package/dist/esm/providers/translation-provider.js.map +1 -1
  262. package/dist/esm/utils/url.js.map +1 -1
  263. package/dist/generated/global-css.d.ts +1 -1
  264. package/dist/generated/global-css.js +1 -1
  265. package/dist/generated/global-css.js.map +1 -1
  266. package/dist/generated/quetzal-translations.js +16 -16
  267. package/dist/generated/quetzal-translations.js.map +1 -1
  268. package/dist/index.d.ts +6 -6
  269. package/dist/index.js +9 -12
  270. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  271. package/dist/integrations/convex.js +5 -5
  272. package/dist/integrations/convex.js.map +1 -1
  273. package/dist/lib/auth.js +12 -12
  274. package/dist/lib/auth.js.map +1 -1
  275. package/dist/lib/auth.test.js +2 -2
  276. package/dist/lib/auth.test.js.map +1 -1
  277. package/dist/lib/cookie.js +13 -13
  278. package/dist/lib/cookie.js.map +1 -1
  279. package/dist/lib/hooks.d.ts +11 -1
  280. package/dist/lib/hooks.d.ts.map +1 -1
  281. package/dist/lib/hooks.js +19 -8
  282. package/dist/lib/hooks.js.map +1 -1
  283. package/dist/lib/stack-app/api-keys/index.js +2 -2
  284. package/dist/lib/stack-app/api-keys/index.js.map +1 -1
  285. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
  286. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  287. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +39 -37
  288. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  289. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +3 -3
  290. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  291. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +213 -213
  292. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  293. package/dist/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
  294. package/dist/lib/stack-app/apps/implementations/common.js +30 -30
  295. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
  296. package/dist/lib/stack-app/apps/implementations/event-tracker.js +7 -7
  297. package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
  298. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js +3 -3
  299. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
  300. package/dist/lib/stack-app/apps/implementations/index.js +4 -4
  301. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
  302. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js +8 -8
  303. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
  304. package/dist/lib/stack-app/apps/implementations/server-app-impl.js +70 -70
  305. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  306. package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
  307. package/dist/lib/stack-app/apps/implementations/session-replay.js +13 -12
  308. package/dist/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
  309. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
  310. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
  311. package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -0
  312. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  313. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
  314. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
  315. package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -0
  316. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  317. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +5 -1
  318. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
  319. package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -0
  320. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  321. package/dist/lib/stack-app/common.d.ts +1 -1
  322. package/dist/lib/stack-app/common.js.map +1 -1
  323. package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
  324. package/dist/lib/stack-app/email-templates/index.js.map +1 -1
  325. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
  326. package/dist/lib/stack-app/permissions/index.js.map +1 -1
  327. package/dist/lib/stack-app/projects/index.js.map +1 -1
  328. package/dist/lib/stack-app/teams/index.js.map +1 -1
  329. package/dist/lib/stack-app/url-targets.js +6 -6
  330. package/dist/lib/stack-app/url-targets.js.map +1 -1
  331. package/dist/lib/stack-app/url-targets.test.js +1 -1
  332. package/dist/lib/stack-app/url-targets.test.js.map +1 -1
  333. package/dist/lib/stack-app/users/index.js +3 -3
  334. package/dist/lib/stack-app/users/index.js.map +1 -1
  335. package/dist/providers/stack-context.d.ts +3 -2
  336. package/dist/providers/stack-context.d.ts.map +1 -1
  337. package/dist/providers/stack-context.js +3 -1
  338. package/dist/providers/stack-context.js.map +1 -1
  339. package/dist/providers/stack-provider-client.js +2 -2
  340. package/dist/providers/stack-provider-client.js.map +1 -1
  341. package/dist/providers/stack-provider.d.ts +6 -1
  342. package/dist/providers/stack-provider.d.ts.map +1 -1
  343. package/dist/providers/stack-provider.js +8 -1
  344. package/dist/providers/stack-provider.js.map +1 -1
  345. package/dist/providers/theme-provider.d.ts +6 -2
  346. package/dist/providers/theme-provider.d.ts.map +1 -1
  347. package/dist/providers/theme-provider.js +10 -5
  348. package/dist/providers/theme-provider.js.map +1 -1
  349. package/dist/providers/translation-provider-client.d.ts +4 -3
  350. package/dist/providers/translation-provider-client.d.ts.map +1 -1
  351. package/dist/providers/translation-provider-client.js +4 -1
  352. package/dist/providers/translation-provider-client.js.map +1 -1
  353. package/dist/providers/translation-provider.js +2 -2
  354. package/dist/providers/translation-provider.js.map +1 -1
  355. package/dist/{storage-DxMLntUt.d.ts → storage-kTmOAWHW.d.ts} +1 -1
  356. package/dist/{storage-DxMLntUt.d.ts.map → storage-kTmOAWHW.d.ts.map} +1 -1
  357. package/dist/utils/url.js +2 -2
  358. package/dist/utils/url.js.map +1 -1
  359. package/package.json +5 -5
  360. package/dist/esm/internal/deprecation-warning.d.ts +0 -1
  361. package/dist/esm/internal/deprecation-warning.js +0 -24
  362. package/dist/esm/internal/deprecation-warning.js.map +0 -1
  363. package/dist/internal/deprecation-warning.d.ts +0 -1
  364. package/dist/internal/deprecation-warning.js +0 -24
  365. package/dist/internal/deprecation-warning.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_chunk = require('../../../chunk-BE-pF4vm.js');
3
3
  let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
4
- let _stackframe_stack_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
5
- let _stackframe_stack_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
- let _stackframe_stack_ui = require("@hexclave/ui");
4
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
5
+ let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hexclave_ui = require("@hexclave/ui");
7
7
  let react = require("react");
8
8
  let react_hook_form = require("react-hook-form");
9
9
  let react_jsx_runtime = require("react/jsx-runtime");
10
- let _stackframe_stack_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
10
+ let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
11
11
  let yup = require("yup");
12
12
  yup = require_chunk.__toESM(yup);
13
13
  let _________lib_hooks_js = require("../../../lib/hooks.js");
@@ -23,7 +23,7 @@ function PasswordSection(props) {
23
23
  if (props?.mockMode && !user) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___section_js.Section, {
24
24
  title: t("Password"),
25
25
  description: t("Password management is not available in demo mode."),
26
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
26
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
27
27
  variant: "secondary",
28
28
  children: t("Password management is not available in demo mode.")
29
29
  })
@@ -33,17 +33,17 @@ function PasswordSection(props) {
33
33
  const [changingPassword, setChangingPassword] = (0, react.useState)(false);
34
34
  const [loading, setLoading] = (0, react.useState)(false);
35
35
  const project = (0, _________index_js.useStackApp)().useProject();
36
- const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = (0, react_hook_form.useForm)({ resolver: (0, _hookform_resolvers_yup.yupResolver)((0, _stackframe_stack_shared_dist_schema_fields.yupObject)({
37
- oldPassword: user.hasPassword ? _stackframe_stack_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your old password")) : (0, _stackframe_stack_shared_dist_schema_fields.yupString)(),
38
- newPassword: _stackframe_stack_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your password")).test({
36
+ const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = (0, react_hook_form.useForm)({ resolver: (0, _hookform_resolvers_yup.yupResolver)((0, _hexclave_shared_dist_schema_fields.yupObject)({
37
+ oldPassword: user.hasPassword ? _hexclave_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your old password")) : (0, _hexclave_shared_dist_schema_fields.yupString)(),
38
+ newPassword: _hexclave_shared_dist_schema_fields.passwordSchema.defined().nonEmpty(t("Please enter your password")).test({
39
39
  name: "is-valid-password",
40
40
  test: (value, ctx) => {
41
- const error = (0, _stackframe_stack_shared_dist_helpers_password.getPasswordError)(value);
41
+ const error = (0, _hexclave_shared_dist_helpers_password.getPasswordError)(value);
42
42
  if (error) return ctx.createError({ message: error.message });
43
43
  else return true;
44
44
  }
45
45
  }),
46
- newPasswordRepeat: (0, _stackframe_stack_shared_dist_schema_fields.yupString)().nullable().oneOf([
46
+ newPasswordRepeat: (0, _hexclave_shared_dist_schema_fields.yupString)().nullable().oneOf([
47
47
  yup.ref("newPassword"),
48
48
  "",
49
49
  null
@@ -77,25 +77,25 @@ function PasswordSection(props) {
77
77
  description: user.hasPassword ? t("Update your password") : t("Set a password for your account"),
78
78
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
79
79
  className: "flex flex-col gap-4",
80
- children: !changingPassword ? hasValidEmail ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
80
+ children: !changingPassword ? hasValidEmail ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
81
81
  variant: "secondary",
82
82
  onClick: () => setChangingPassword(true),
83
83
  children: user.hasPassword ? t("Update password") : t("Set password")
84
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
84
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
85
85
  variant: "secondary",
86
86
  type: "label",
87
87
  children: t("To set a password, please add a sign-in email.")
88
88
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
89
- onSubmit: (e) => (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronouslyWithAlert)(handleSubmit(onSubmit)(e)),
89
+ onSubmit: (e) => (0, _hexclave_shared_dist_utils_promises.runAsynchronouslyWithAlert)(handleSubmit(onSubmit)(e)),
90
90
  noValidate: true,
91
91
  children: [
92
92
  user.hasPassword && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
93
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Label, {
93
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
94
94
  htmlFor: "old-password",
95
95
  className: "mb-1",
96
96
  children: t("Old password")
97
97
  }),
98
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Input, {
98
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Input, {
99
99
  id: "old-password",
100
100
  type: "password",
101
101
  autoComplete: "current-password",
@@ -103,45 +103,45 @@ function PasswordSection(props) {
103
103
  }),
104
104
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.oldPassword?.message?.toString() })
105
105
  ] }),
106
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Label, {
106
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
107
107
  htmlFor: "new-password",
108
108
  className: "mt-4 mb-1",
109
109
  children: t("New password")
110
110
  }),
111
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.PasswordInput, {
111
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
112
112
  id: "new-password",
113
113
  autoComplete: "new-password",
114
114
  ...registerPassword,
115
115
  onChange: (e) => {
116
116
  clearErrors("newPassword");
117
117
  clearErrors("newPasswordRepeat");
118
- (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronously)(registerPassword.onChange(e));
118
+ (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(registerPassword.onChange(e));
119
119
  }
120
120
  }),
121
121
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.newPassword?.message?.toString() }),
122
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Label, {
122
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Label, {
123
123
  htmlFor: "repeat-password",
124
124
  className: "mt-4 mb-1",
125
125
  children: t("Repeat new password")
126
126
  }),
127
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.PasswordInput, {
127
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.PasswordInput, {
128
128
  id: "repeat-password",
129
129
  autoComplete: "new-password",
130
130
  ...registerPasswordRepeat,
131
131
  onChange: (e) => {
132
132
  clearErrors("newPassword");
133
133
  clearErrors("newPasswordRepeat");
134
- (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronously)(registerPasswordRepeat.onChange(e));
134
+ (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(registerPasswordRepeat.onChange(e));
135
135
  }
136
136
  }),
137
137
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_________components_elements_form_warning_js.FormWarningText, { text: errors.newPasswordRepeat?.message?.toString() }),
138
138
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
139
139
  className: "mt-6 flex gap-4",
140
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
140
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
141
141
  type: "submit",
142
142
  loading,
143
143
  children: user.hasPassword ? t("Update Password") : t("Set Password")
144
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
144
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
145
145
  variant: "secondary",
146
146
  onClick: () => {
147
147
  setChangingPassword(false);
@@ -1 +1 @@
1
- {"version":3,"file":"password-section.js","names":["Section","Typography","schemaFieldsPasswordSchema","Button","Label","Input","FormWarningText","PasswordInput"],"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@stackframe/stack-shared/dist/helpers/password';\nimport { passwordSchema as schemaFieldsPasswordSchema, yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronously, runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label, PasswordInput, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp } from '../../..';\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\n\nexport function PasswordSection(props?: {\n mockMode?: boolean,\n}) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? 'return-null' : \"throw\" });\n\n // In mock mode, show a placeholder message\n if (props?.mockMode && !user) {\n return (\n <Section\n title={t(\"Password\")}\n description={t(\"Password management is not available in demo mode.\")}\n >\n <Typography variant='secondary'>{t(\"Password management is not available in demo mode.\")}</Typography>\n </Section>\n );\n }\n\n if (!user) {\n return null; // This shouldn't happen in non-mock mode due to throw\n }\n const contactChannels = user.useContactChannels();\n const [changingPassword, setChangingPassword] = useState(false);\n const [loading, setLoading] = useState(false);\n const project = useStackApp().useProject();\n\n const passwordSchema = yupObject({\n oldPassword: user.hasPassword ? schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your old password')) : yupString(),\n newPassword: schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your password')).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n newPasswordRepeat: yupString().nullable().oneOf([yup.ref('newPassword'), \"\", null], t('Passwords do not match')).defined().nonEmpty(t('Please repeat your password'))\n });\n\n const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = useForm({\n resolver: yupResolver(passwordSchema)\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasValidEmail = contactChannels.filter(x => x.type === 'email' && x.usedForAuth).length > 0;\n\n const onSubmit = async (data: yup.InferType<typeof passwordSchema>) => {\n setLoading(true);\n try {\n const { oldPassword, newPassword } = data;\n const error = user.hasPassword\n ? await user.updatePassword({ oldPassword: oldPassword!, newPassword })\n : await user.setPassword({ password: newPassword! });\n if (error) {\n setError('oldPassword', { type: 'manual', message: t('Incorrect password') });\n } else {\n reset();\n setChangingPassword(false);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const registerPassword = register('newPassword');\n const registerPasswordRepeat = register('newPasswordRepeat');\n\n if (!project.config.credentialEnabled) {\n return null;\n }\n\n return (\n <Section\n title={t(\"Password\")}\n description={user.hasPassword ? t(\"Update your password\") : t(\"Set a password for your account\")}\n >\n <div className='flex flex-col gap-4'>\n {!changingPassword ? (\n hasValidEmail ? (\n <Button\n variant='secondary'\n onClick={() => setChangingPassword(true)}\n >\n {user.hasPassword ? t(\"Update password\") : t(\"Set password\")}\n </Button>\n ) : (\n <Typography variant='secondary' type='label'>{t(\"To set a password, please add a sign-in email.\")}</Typography>\n )\n ) : (\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n {user.hasPassword && (\n <>\n <Label htmlFor=\"old-password\" className=\"mb-1\">{t(\"Old password\")}</Label>\n <Input\n id=\"old-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n {...register(\"oldPassword\")}\n />\n <FormWarningText text={errors.oldPassword?.message?.toString()} />\n </>\n )}\n\n <Label htmlFor=\"new-password\" className=\"mt-4 mb-1\">{t(\"New password\")}</Label>\n <PasswordInput\n id=\"new-password\"\n autoComplete=\"new-password\"\n {...registerPassword}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPassword.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPassword?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat new password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...registerPasswordRepeat}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPasswordRepeat.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPasswordRepeat?.message?.toString()} />\n\n <div className=\"mt-6 flex gap-4\">\n <Button type=\"submit\" loading={loading}>\n {user.hasPassword ? t(\"Update Password\") : t(\"Set Password\")}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setChangingPassword(false);\n reset();\n }}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Section>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"password-section.js","names":["Section","Typography","schemaFieldsPasswordSchema","Button","Label","Input","FormWarningText","PasswordInput"],"sources":["../../../../src/components-page/account-settings/email-and-auth/password-section.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { getPasswordError } from '@hexclave/shared/dist/helpers/password';\nimport { passwordSchema as schemaFieldsPasswordSchema, yupObject, yupString } from \"@hexclave/shared/dist/schema-fields\";\nimport { runAsynchronously, runAsynchronouslyWithAlert } from \"@hexclave/shared/dist/utils/promises\";\nimport { Button, Input, Label, PasswordInput, Typography } from \"@hexclave/ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { useStackApp } from '../../..';\nimport { FormWarningText } from \"../../../components/elements/form-warning\";\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { Section } from \"../section\";\n\n\nexport function PasswordSection(props?: {\n mockMode?: boolean,\n}) {\n const { t } = useTranslation();\n const user = useUser({ or: props?.mockMode ? 'return-null' : \"throw\" });\n\n // In mock mode, show a placeholder message\n if (props?.mockMode && !user) {\n return (\n <Section\n title={t(\"Password\")}\n description={t(\"Password management is not available in demo mode.\")}\n >\n <Typography variant='secondary'>{t(\"Password management is not available in demo mode.\")}</Typography>\n </Section>\n );\n }\n\n if (!user) {\n return null; // This shouldn't happen in non-mock mode due to throw\n }\n const contactChannels = user.useContactChannels();\n const [changingPassword, setChangingPassword] = useState(false);\n const [loading, setLoading] = useState(false);\n const project = useStackApp().useProject();\n\n const passwordSchema = yupObject({\n oldPassword: user.hasPassword ? schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your old password')) : yupString(),\n newPassword: schemaFieldsPasswordSchema.defined().nonEmpty(t('Please enter your password')).test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n newPasswordRepeat: yupString().nullable().oneOf([yup.ref('newPassword'), \"\", null], t('Passwords do not match')).defined().nonEmpty(t('Please repeat your password'))\n });\n\n const { register, handleSubmit, setError, formState: { errors }, clearErrors, reset } = useForm({\n resolver: yupResolver(passwordSchema)\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasValidEmail = contactChannels.filter(x => x.type === 'email' && x.usedForAuth).length > 0;\n\n const onSubmit = async (data: yup.InferType<typeof passwordSchema>) => {\n setLoading(true);\n try {\n const { oldPassword, newPassword } = data;\n const error = user.hasPassword\n ? await user.updatePassword({ oldPassword: oldPassword!, newPassword })\n : await user.setPassword({ password: newPassword! });\n if (error) {\n setError('oldPassword', { type: 'manual', message: t('Incorrect password') });\n } else {\n reset();\n setChangingPassword(false);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const registerPassword = register('newPassword');\n const registerPasswordRepeat = register('newPasswordRepeat');\n\n if (!project.config.credentialEnabled) {\n return null;\n }\n\n return (\n <Section\n title={t(\"Password\")}\n description={user.hasPassword ? t(\"Update your password\") : t(\"Set a password for your account\")}\n >\n <div className='flex flex-col gap-4'>\n {!changingPassword ? (\n hasValidEmail ? (\n <Button\n variant='secondary'\n onClick={() => setChangingPassword(true)}\n >\n {user.hasPassword ? t(\"Update password\") : t(\"Set password\")}\n </Button>\n ) : (\n <Typography variant='secondary' type='label'>{t(\"To set a password, please add a sign-in email.\")}</Typography>\n )\n ) : (\n <form\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n {user.hasPassword && (\n <>\n <Label htmlFor=\"old-password\" className=\"mb-1\">{t(\"Old password\")}</Label>\n <Input\n id=\"old-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n {...register(\"oldPassword\")}\n />\n <FormWarningText text={errors.oldPassword?.message?.toString()} />\n </>\n )}\n\n <Label htmlFor=\"new-password\" className=\"mt-4 mb-1\">{t(\"New password\")}</Label>\n <PasswordInput\n id=\"new-password\"\n autoComplete=\"new-password\"\n {...registerPassword}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPassword.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPassword?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">{t(\"Repeat new password\")}</Label>\n <PasswordInput\n id=\"repeat-password\"\n autoComplete=\"new-password\"\n {...registerPasswordRepeat}\n onChange={(e) => {\n clearErrors('newPassword');\n clearErrors('newPasswordRepeat');\n runAsynchronously(registerPasswordRepeat.onChange(e));\n }}\n />\n <FormWarningText text={errors.newPasswordRepeat?.message?.toString()} />\n\n <div className=\"mt-6 flex gap-4\">\n <Button type=\"submit\" loading={loading}>\n {user.hasPassword ? t(\"Update Password\") : t(\"Set Password\")}\n </Button>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setChangingPassword(false);\n reset();\n }}\n >\n {t(\"Cancel\")}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Section>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_chunk = require('../../../chunk-BE-pF4vm.js');
3
- let _stackframe_stack_ui = require("@hexclave/ui");
3
+ let _hexclave_ui = require("@hexclave/ui");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  let _________lib_hooks_js = require("../../../lib/hooks.js");
6
6
  let _________lib_translations_js = require("../../../lib/translations.js");
@@ -10,24 +10,24 @@ let ___page_layout_js = require("../page-layout.js");
10
10
  function NotificationsPage() {
11
11
  const { t } = (0, _________lib_translations_js.useTranslation)();
12
12
  const notificationCategories = (0, _________lib_hooks_js.useUser)({ or: "redirect" }).useNotificationCategories();
13
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___page_layout_js.PageLayout, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___page_layout_js.PageLayout, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
14
14
  className: "flex flex-col gap-2",
15
15
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
16
16
  className: "sm:flex-1 flex flex-col justify-center pb-2",
17
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
17
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
18
18
  className: "font-medium",
19
19
  children: t("Choose which emails you want to receive")
20
20
  })
21
21
  }), notificationCategories.map((category) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22
22
  className: "flex justify-start gap-4 items-center",
23
23
  children: [
24
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Switch, {
24
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Switch, {
25
25
  checked: category.enabled,
26
26
  onCheckedChange: (value) => void category.setEnabled(value),
27
27
  disabled: !category.canDisable
28
28
  }),
29
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: category.name }),
30
- !category.canDisable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
29
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: category.name }),
30
+ !category.canDisable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
31
31
  variant: "secondary",
32
32
  type: "footnote",
33
33
  children: "(cannot be disabled)"
@@ -1 +1 @@
1
- {"version":3,"file":"notifications-page.js","names":["PageLayout","Separator","Typography","Switch"],"sources":["../../../../src/components-page/account-settings/notifications/notifications-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Switch } from \"@stackframe/stack-ui\";\nimport { Separator, Typography } from \"@stackframe/stack-ui\";\n\n\nexport function NotificationsPage() {\n const { t } = useTranslation();\n const user = useUser({ or: 'redirect' });\n const notificationCategories = user.useNotificationCategories();\n\n return (\n <PageLayout>\n <Separator />\n <div className='flex flex-col gap-2'>\n <div className='sm:flex-1 flex flex-col justify-center pb-2'>\n <Typography className=\"font-medium\">\n {t('Choose which emails you want to receive')}\n </Typography>\n </div>\n {notificationCategories.map((category) => (\n <div key={category.id} className=\"flex justify-start gap-4 items-center\">\n <Switch\n checked={category.enabled}\n onCheckedChange={(value) => void category.setEnabled(value)}\n disabled={!category.canDisable}\n />\n <Typography>{category.name}</Typography>\n {!category.canDisable && (\n <Typography variant='secondary' type='footnote'>\n (cannot be disabled)\n </Typography>\n )}\n </div>\n ))}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AAWA,SAAgB,oBAAoB;CAClC,MAAM,EAAE,wDAAsB;CAE9B,MAAM,4DADe,EAAE,IAAI,YAAY,CAAC,CACJ,2BAA2B;AAE/D,QACE,4CAACA,2CACC,2CAACC,mCAAY,EACb,4CAAC;EAAI,WAAU;aACb,2CAAC;GAAI,WAAU;aACb,2CAACC;IAAW,WAAU;cACnB,EAAE,0CAA0C;KAClC;IACT,EACL,uBAAuB,KAAK,aAC3B,4CAAC;GAAsB,WAAU;;IAC/B,2CAACC;KACC,SAAS,SAAS;KAClB,kBAAkB,UAAU,KAAK,SAAS,WAAW,MAAM;KAC3D,UAAU,CAAC,SAAS;MACpB;IACF,2CAACD,6CAAY,SAAS,OAAkB;IACvC,CAAC,SAAS,cACT,2CAACA;KAAW,SAAQ;KAAY,MAAK;eAAW;MAEnC;;KAVP,SAAS,GAYb,CACN;GACE,IACK"}
1
+ {"version":3,"file":"notifications-page.js","names":["PageLayout","Separator","Typography","Switch"],"sources":["../../../../src/components-page/account-settings/notifications/notifications-page.tsx"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { useUser } from \"../../../lib/hooks\";\nimport { useTranslation } from \"../../../lib/translations\";\nimport { PageLayout } from \"../page-layout\";\nimport { Switch } from \"@hexclave/ui\";\nimport { Separator, Typography } from \"@hexclave/ui\";\n\n\nexport function NotificationsPage() {\n const { t } = useTranslation();\n const user = useUser({ or: 'redirect' });\n const notificationCategories = user.useNotificationCategories();\n\n return (\n <PageLayout>\n <Separator />\n <div className='flex flex-col gap-2'>\n <div className='sm:flex-1 flex flex-col justify-center pb-2'>\n <Typography className=\"font-medium\">\n {t('Choose which emails you want to receive')}\n </Typography>\n </div>\n {notificationCategories.map((category) => (\n <div key={category.id} className=\"flex justify-start gap-4 items-center\">\n <Switch\n checked={category.enabled}\n onCheckedChange={(value) => void category.setEnabled(value)}\n disabled={!category.canDisable}\n />\n <Typography>{category.name}</Typography>\n {!category.canDisable && (\n <Typography variant='secondary' type='footnote'>\n (cannot be disabled)\n </Typography>\n )}\n </div>\n ))}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AAWA,SAAgB,oBAAoB;CAClC,MAAM,EAAE,wDAAsB;CAE9B,MAAM,4DADe,EAAE,IAAI,YAAY,CAAC,CACJ,2BAA2B;AAE/D,QACE,4CAACA,2CACC,2CAACC,2BAAY,EACb,4CAAC;EAAI,WAAU;aACb,2CAAC;GAAI,WAAU;aACb,2CAACC;IAAW,WAAU;cACnB,EAAE,0CAA0C;KAClC;IACT,EACL,uBAAuB,KAAK,aAC3B,4CAAC;GAAsB,WAAU;;IAC/B,2CAACC;KACC,SAAS,SAAS;KAClB,kBAAkB,UAAU,KAAK,SAAS,WAAW,MAAM;KAC3D,UAAU,CAAC,SAAS;MACpB;IACF,2CAACD,qCAAY,SAAS,OAAkB;IACvC,CAAC,SAAS,cACT,2CAACA;KAAW,SAAQ;KAAY,MAAK;eAAW;MAEnC;;KAVP,SAAS,GAYb,CACN;GACE,IACK"}
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
  const require_chunk = require('../../../chunk-BE-pF4vm.js');
5
- let _stackframe_stack_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
- let _stackframe_stack_ui = require("@hexclave/ui");
5
+ let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
6
+ let _hexclave_ui = require("@hexclave/ui");
7
7
  let react = require("react");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
- let _stackframe_stack_shared = require("@hexclave/shared");
9
+ let _hexclave_shared = require("@hexclave/shared");
10
+ let _hexclave_shared_dist_utils_results = require("@hexclave/shared/dist/utils/results");
10
11
  let _________lib_translations_js = require("../../../lib/translations.js");
11
- let _stackframe_stack_shared_dist_utils_results = require("@hexclave/shared/dist/utils/results");
12
12
  let ___section_js = require("../section.js");
13
13
  let _________index_js = require("../../../index.js");
14
14
  let _stripe_react_stripe_js = require("@stripe/react-stripe-js");
@@ -60,7 +60,7 @@ function SetDefaultPaymentMethodForm(props) {
60
60
  children: [
61
61
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
62
62
  className: "space-y-2",
63
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
63
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
64
64
  className: "font-medium",
65
65
  children: "Card details"
66
66
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -71,12 +71,12 @@ function SetDefaultPaymentMethodForm(props) {
71
71
  } })
72
72
  })]
73
73
  }),
74
- errorMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
74
+ errorMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
75
75
  variant: "secondary",
76
76
  type: "footnote",
77
77
  children: errorMessage
78
78
  }),
79
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
79
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
80
80
  onClick: async () => {
81
81
  if (!stripe || !elements) {
82
82
  setErrorMessage("Stripe is still loading. Please try again.");
@@ -117,20 +117,20 @@ function MockPaymentsPanel(props) {
117
117
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
118
118
  className: "space-y-4",
119
119
  children: [
120
- props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
120
+ props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
121
121
  className: "font-medium",
122
122
  children: props.title
123
123
  }),
124
124
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(___section_js.Section, {
125
125
  title: t("Payment method"),
126
126
  description: t("Manage the default payment method used for subscriptions and invoices."),
127
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: formatPaymentMethod({
127
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatPaymentMethod({
128
128
  id: "pm_mock",
129
129
  brand: "visa",
130
130
  last4: "4242",
131
131
  exp_month: 12,
132
132
  exp_year: 2030
133
- }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
133
+ }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
134
134
  disabled: true,
135
135
  children: t("Update payment method")
136
136
  })]
@@ -144,15 +144,15 @@ function MockPaymentsPanel(props) {
144
144
  className: "flex items-start justify-between gap-4",
145
145
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
146
146
  className: "min-w-0",
147
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
147
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
148
148
  className: "truncate",
149
149
  children: t("Pro")
150
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.Typography, {
150
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Typography, {
151
151
  variant: "secondary",
152
152
  type: "footnote",
153
153
  children: [t("Renews on"), " Jan 1, 2030"]
154
154
  })]
155
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
155
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
156
156
  disabled: true,
157
157
  variant: "secondary",
158
158
  color: "neutral",
@@ -162,10 +162,10 @@ function MockPaymentsPanel(props) {
162
162
  className: "flex items-start justify-between gap-4",
163
163
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
164
164
  className: "min-w-0",
165
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
165
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
166
166
  className: "truncate",
167
167
  children: t("Credits pack")
168
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
168
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
169
169
  variant: "secondary",
170
170
  type: "footnote",
171
171
  children: t("One-time purchase")
@@ -197,8 +197,8 @@ function RealPaymentsPanel(props) {
197
197
  return (0, _stripe_stripe_js.loadStripe)(publishableKey, { stripeAccount: setupIntentStripeAccountId });
198
198
  }, [setupIntentStripeAccountId]);
199
199
  const handleAsyncError = (error) => {
200
- if (error instanceof _stackframe_stack_shared.KnownErrors.DefaultPaymentMethodRequired) {
201
- (0, _stackframe_stack_ui.toast)({
200
+ if (error instanceof _hexclave_shared.KnownErrors.DefaultPaymentMethodRequired) {
201
+ (0, _hexclave_ui.toast)({
202
202
  title: t("No default payment method"),
203
203
  description: t("Add a payment method before switching plans."),
204
204
  variant: "destructive"
@@ -208,7 +208,7 @@ function RealPaymentsPanel(props) {
208
208
  alert(`An unhandled error occurred. Please ${_________lib_env_js.envVars.NODE_ENV === "development" ? "check the browser console for the full error." : "report this to the developer."}\n\n${error}`);
209
209
  };
210
210
  const openPaymentDialog = () => {
211
- (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronously)(async () => {
211
+ (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
212
212
  setPaymentDialogOpen(true);
213
213
  const res = await props.customer.createPaymentMethodSetupIntent();
214
214
  setSetupIntentClientSecret(res.clientSecret);
@@ -234,7 +234,7 @@ function RealPaymentsPanel(props) {
234
234
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
235
235
  className: "space-y-4",
236
236
  children: [
237
- props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
237
+ props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
238
238
  className: "font-medium",
239
239
  children: props.title
240
240
  }),
@@ -242,19 +242,19 @@ function RealPaymentsPanel(props) {
242
242
  title: t("Payment method"),
243
243
  description: t("Manage the default payment method used for subscriptions and invoices."),
244
244
  children: [
245
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: formatPaymentMethod(defaultPaymentMethod) }),
246
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
245
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatPaymentMethod(defaultPaymentMethod) }),
246
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
247
247
  onClick: openPaymentDialog,
248
248
  children: t("Update payment method")
249
249
  }),
250
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.ActionDialog, {
250
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
251
251
  open: paymentDialogOpen,
252
252
  onOpenChange: (open) => {
253
253
  if (!open) closePaymentDialog();
254
254
  else setPaymentDialogOpen(true);
255
255
  },
256
256
  title: t("Update payment method"),
257
- children: !setupIntentClientSecret || !setupIntentStripeAccountId || !stripePromise ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Skeleton, { className: "h-10 w-full" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stripe_react_stripe_js.Elements, {
257
+ children: !setupIntentClientSecret || !setupIntentStripeAccountId || !stripePromise ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Skeleton, { className: "h-10 w-full" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stripe_react_stripe_js.Elements, {
258
258
  stripe: stripePromise,
259
259
  options: { clientSecret: setupIntentClientSecret },
260
260
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SetDefaultPaymentMethodForm, {
@@ -289,22 +289,22 @@ function RealPaymentsPanel(props) {
289
289
  className: "flex items-start justify-between gap-4",
290
290
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
291
291
  className: "min-w-0",
292
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.Typography, {
292
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Typography, {
293
293
  className: "truncate",
294
294
  children: [product.displayName, quantitySuffix]
295
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
295
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
296
296
  variant: "secondary",
297
297
  type: "footnote",
298
298
  children: subtitle
299
299
  })]
300
300
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
301
301
  className: "flex flex-col items-end gap-2",
302
- children: [canSwitchPlans && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
302
+ children: [canSwitchPlans && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
303
303
  variant: "secondary",
304
304
  color: "neutral",
305
305
  onClick: () => openSwitchDialog(product.id, product.switchOptions?.[0]?.productId ?? null),
306
306
  children: t("Change plan")
307
- }), isCancelable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
307
+ }), isCancelable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
308
308
  variant: "secondary",
309
309
  color: "neutral",
310
310
  onClick: () => setCancelTarget({
@@ -317,7 +317,7 @@ function RealPaymentsPanel(props) {
317
317
  }, product.id ?? `${product.displayName}-${index}`);
318
318
  })
319
319
  }),
320
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.ActionDialog, {
320
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
321
321
  open: cancelTarget !== null,
322
322
  onOpenChange: (open) => {
323
323
  if (!open) setCancelTarget(null);
@@ -344,7 +344,7 @@ function RealPaymentsPanel(props) {
344
344
  }
345
345
  }
346
346
  }),
347
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.ActionDialog, {
347
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.ActionDialog, {
348
348
  open: switchFromProductId !== null,
349
349
  onOpenChange: (open) => {
350
350
  if (!open) closeSwitchDialog();
@@ -359,7 +359,7 @@ function RealPaymentsPanel(props) {
359
359
  const toProductId = switchToProductId;
360
360
  if (!fromProductId || !toProductId) return;
361
361
  if (!selectedPriceId) return;
362
- const result = await _stackframe_stack_shared_dist_utils_results.Result.fromThrowingAsync(() => props.customer.switchSubscription({
362
+ const result = await _hexclave_shared_dist_utils_results.Result.fromThrowingAsync(() => props.customer.switchSubscription({
363
363
  fromProductId,
364
364
  toProductId,
365
365
  priceId: selectedPriceId
@@ -374,20 +374,20 @@ function RealPaymentsPanel(props) {
374
374
  },
375
375
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
376
376
  className: "space-y-2",
377
- children: switchOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
377
+ children: switchOptions.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
378
378
  variant: "secondary",
379
379
  type: "footnote",
380
380
  children: t("No other plans available for this subscription.")
381
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
381
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
382
382
  type: "footnote",
383
383
  children: t("Choose a plan")
384
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.Select, {
384
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Select, {
385
385
  value: switchToProductId ?? void 0,
386
386
  onValueChange: (value) => setSwitchToProductId(value || null),
387
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.SelectTrigger, {
387
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectTrigger, {
388
388
  className: "w-full",
389
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.SelectValue, { placeholder: t("Choose a plan") })
390
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.SelectContent, { children: switchOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.SelectItem, {
389
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectValue, { placeholder: t("Choose a plan") })
390
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectContent, { children: switchOptions.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.SelectItem, {
391
391
  value: option.productId,
392
392
  children: option.displayName
393
393
  }, option.productId)) })]
@@ -396,47 +396,47 @@ function RealPaymentsPanel(props) {
396
396
  })
397
397
  ]
398
398
  }),
399
- invoices.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
399
+ invoices.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Separator, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
400
400
  className: "space-y-2",
401
401
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
402
402
  className: "space-y-1",
403
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
403
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
404
404
  className: "font-medium",
405
405
  children: t("Invoices")
406
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
406
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
407
407
  variant: "secondary",
408
408
  type: "footnote",
409
409
  children: t("Review past invoices and receipts.")
410
410
  })]
411
411
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
412
412
  className: "border rounded-md",
413
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.Table, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.TableRow, { children: [
414
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableHead, {
413
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.Table, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHeader, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.TableRow, { children: [
414
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
415
415
  className: "w-[140px]",
416
416
  children: t("Date")
417
417
  }),
418
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableHead, {
418
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
419
419
  className: "w-[120px]",
420
420
  children: t("Status")
421
421
  }),
422
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableHead, {
422
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
423
423
  className: "w-[120px]",
424
424
  children: t("Amount")
425
425
  }),
426
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableHead, {
426
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableHead, {
427
427
  className: "w-[120px] text-right",
428
428
  children: t("Invoice")
429
429
  })
430
- ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableBody, { children: invoices.map((invoice, index) => {
430
+ ] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableBody, { children: invoices.map((invoice, index) => {
431
431
  const createdAtTime = invoice.createdAt.getTime();
432
432
  const invoiceKey = Number.isNaN(createdAtTime) ? `invoice-${index}` : `invoice-${createdAtTime}-${index}`;
433
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.TableRow, { children: [
434
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: formatInvoiceDate(invoice.createdAt, t) }) }),
435
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: formatInvoiceStatus(invoice.status, t) }) }),
436
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, { children: formatInvoiceAmount(invoice.amountTotal, t) }) }),
437
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.TableCell, {
433
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_hexclave_ui.TableRow, { children: [
434
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceDate(invoice.createdAt, t) }) }),
435
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceStatus(invoice.status, t) }) }),
436
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, { children: formatInvoiceAmount(invoice.amountTotal, t) }) }),
437
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.TableCell, {
438
438
  align: "right",
439
- children: invoice.hostedInvoiceUrl ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Button, {
439
+ children: invoice.hostedInvoiceUrl ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Button, {
440
440
  asChild: true,
441
441
  variant: "secondary",
442
442
  color: "neutral",
@@ -447,7 +447,7 @@ function RealPaymentsPanel(props) {
447
447
  rel: "noreferrer",
448
448
  children: t("View")
449
449
  })
450
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Typography, {
450
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_hexclave_ui.Typography, {
451
451
  variant: "secondary",
452
452
  type: "footnote",
453
453
  children: t("Unavailable")