@hexclave/next 1.0.56 → 1.0.58

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 (144) hide show
  1. package/dist/{admin-app-impl-0kL2lNog.d.ts → admin-app-impl-DdtuTIuJ.d.ts} +8 -8
  2. package/dist/{admin-app-impl-0kL2lNog.d.ts.map → admin-app-impl-DdtuTIuJ.d.ts.map} +1 -1
  3. package/dist/clickmap/clickmap-core.d.ts +1 -1
  4. package/dist/clickmap/index.d.ts +1 -1
  5. package/dist/{client-app-B0kBC67Z.d.ts → client-app-oSumAWx3.d.ts} +2 -1
  6. package/dist/{client-app-B0kBC67Z.d.ts.map → client-app-oSumAWx3.d.ts.map} +1 -1
  7. package/dist/components/api-key-dialogs.d.ts +1 -1
  8. package/dist/components/api-key-dialogs.js +4 -4
  9. package/dist/components/credential-sign-in.js +3 -3
  10. package/dist/components/credential-sign-up.js +5 -5
  11. package/dist/components/elements/sidebar-layout.js +2 -2
  12. package/dist/components/elements/user-avatar.js +1 -1
  13. package/dist/components/magic-link-sign-in.js +5 -5
  14. package/dist/components/message-cards/predefined-message-card.js +1 -1
  15. package/dist/components/passkey-button.js +1 -1
  16. package/dist/components/profile-image-editor.js +1 -1
  17. package/dist/components/selected-team-switcher.d.ts +1 -1
  18. package/dist/components/team-icon.d.ts +1 -1
  19. package/dist/components/team-icon.js +1 -1
  20. package/dist/components/team-switcher.d.ts +1 -1
  21. package/dist/components/team-switcher.js +1 -1
  22. package/dist/components/user-button.js +1 -1
  23. package/dist/components-page/account-settings/editable-text.js +1 -1
  24. package/dist/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  25. package/dist/components-page/account-settings/email-and-auth/password-section.js +3 -3
  26. package/dist/components-page/account-settings/payments/payments-page.d.ts +1 -1
  27. package/dist/components-page/account-settings/teams/leave-team-section.d.ts +1 -1
  28. package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts +1 -1
  29. package/dist/components-page/account-settings/teams/team-creation-page.js +3 -3
  30. package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +1 -1
  31. package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +1 -1
  32. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  33. package/dist/components-page/account-settings/teams/team-member-list-section.d.ts +1 -1
  34. package/dist/components-page/account-settings/teams/team-page.d.ts +1 -1
  35. package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +1 -1
  36. package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +1 -1
  37. package/dist/components-page/account-settings.js +3 -3
  38. package/dist/components-page/auth-page.js +1 -1
  39. package/dist/components-page/cli-auth-confirm.js +1 -1
  40. package/dist/components-page/forgot-password.js +5 -5
  41. package/dist/components-page/hexclave-handler-client.d.ts +1 -1
  42. package/dist/components-page/hexclave-handler-client.js +1 -1
  43. package/dist/components-page/hexclave-handler.d.ts +1 -1
  44. package/dist/components-page/mfa.js +3 -3
  45. package/dist/components-page/oauth-callback.js +1 -1
  46. package/dist/components-page/onboarding.js +4 -4
  47. package/dist/components-page/password-reset.js +8 -8
  48. package/dist/components-page/team-creation.js +5 -5
  49. package/dist/dev-tool/dev-tool-core.d.ts +1 -1
  50. package/dist/dev-tool/index.d.ts +1 -1
  51. package/dist/dev-tool/index.d.ts.map +1 -1
  52. package/dist/dev-tool/index.js +18 -1
  53. package/dist/dev-tool/index.js.map +1 -1
  54. package/dist/dev-tool/index.test.d.ts +1 -0
  55. package/dist/dev-tool/index.test.js +40 -0
  56. package/dist/dev-tool/index.test.js.map +1 -0
  57. package/dist/esm/components/api-key-dialogs.d.ts +1 -1
  58. package/dist/esm/components/api-key-dialogs.js +4 -4
  59. package/dist/esm/components/credential-sign-in.js +3 -3
  60. package/dist/esm/components/credential-sign-up.js +5 -5
  61. package/dist/esm/components/elements/sidebar-layout.js +2 -2
  62. package/dist/esm/components/elements/user-avatar.js +1 -1
  63. package/dist/esm/components/magic-link-sign-in.js +5 -5
  64. package/dist/esm/components/message-cards/predefined-message-card.js +1 -1
  65. package/dist/esm/components/passkey-button.js +1 -1
  66. package/dist/esm/components/profile-image-editor.js +1 -1
  67. package/dist/esm/components/team-icon.js +1 -1
  68. package/dist/esm/components/team-switcher.js +1 -1
  69. package/dist/esm/components/user-button.js +1 -1
  70. package/dist/esm/components-page/account-settings/editable-text.js +1 -1
  71. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  72. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +3 -3
  73. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +3 -3
  74. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  75. package/dist/esm/components-page/account-settings.js +3 -3
  76. package/dist/esm/components-page/auth-page.js +1 -1
  77. package/dist/esm/components-page/cli-auth-confirm.js +1 -1
  78. package/dist/esm/components-page/forgot-password.js +5 -5
  79. package/dist/esm/components-page/hexclave-handler-client.js +1 -1
  80. package/dist/esm/components-page/mfa.js +3 -3
  81. package/dist/esm/components-page/oauth-callback.js +1 -1
  82. package/dist/esm/components-page/onboarding.js +4 -4
  83. package/dist/esm/components-page/password-reset.js +7 -7
  84. package/dist/esm/components-page/team-creation.js +5 -5
  85. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  86. package/dist/esm/dev-tool/index.js +18 -1
  87. package/dist/esm/dev-tool/index.js.map +1 -1
  88. package/dist/esm/dev-tool/index.test.d.ts +1 -0
  89. package/dist/esm/dev-tool/index.test.js +41 -0
  90. package/dist/esm/dev-tool/index.test.js.map +1 -0
  91. package/dist/esm/generated/quetzal-translations.d.ts +2 -2
  92. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -5
  93. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  94. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +3 -3
  95. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  96. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -0
  97. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  98. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  99. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  100. package/dist/esm/lib/hexclave-app/projects/index.d.ts +1 -0
  101. package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
  102. package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
  103. package/dist/esm/lib/hexclave-app/users/index.d.ts +1 -1
  104. package/dist/esm/pushed-config-error-overlay/index.test.js +1 -1
  105. package/dist/generated/quetzal-translations.d.ts +1 -1
  106. package/dist/{hexclave-provider-SQbs9rmZ.d.ts → hexclave-provider-DnIE6JQ7.d.ts} +3 -3
  107. package/dist/{hexclave-provider-SQbs9rmZ.d.ts.map → hexclave-provider-DnIE6JQ7.d.ts.map} +1 -1
  108. package/dist/{hooks-ykQ7Wsco.d.ts → hooks-Ds3yoNo-.d.ts} +2 -2
  109. package/dist/{hooks-ykQ7Wsco.d.ts.map → hooks-Ds3yoNo-.d.ts.map} +1 -1
  110. package/dist/{index-DwE1cNLH.d.ts → index-DE-_vkL4.d.ts} +2 -2
  111. package/dist/{index-DwE1cNLH.d.ts.map → index-DE-_vkL4.d.ts.map} +1 -1
  112. package/dist/index.d.ts +4 -4
  113. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
  114. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  115. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -0
  116. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  117. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  118. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
  119. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  120. package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
  121. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -1
  122. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
  123. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  124. package/dist/lib/hexclave-app/index.d.ts +1 -1
  125. package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
  126. package/dist/lib/hexclave-app/projects/index.js.map +1 -1
  127. package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
  128. package/dist/lib/hexclave-app/users/index.d.ts +1 -1
  129. package/dist/lib/hooks.d.ts +1 -1
  130. package/dist/providers/hexclave-context.d.ts +1 -1
  131. package/dist/providers/hexclave-provider-client.d.ts +1 -1
  132. package/dist/providers/hexclave-provider.d.ts +1 -1
  133. package/dist/providers/translation-provider.d.ts +1 -1
  134. package/dist/pushed-config-error-overlay/index.d.ts +1 -1
  135. package/dist/pushed-config-error-overlay/index.test.js +1 -1
  136. package/dist/{quetzal-translations-CK45_4Dm.d.ts → quetzal-translations-XeH3zQ9l.d.ts} +3 -3
  137. package/dist/{quetzal-translations-CK45_4Dm.d.ts.map → quetzal-translations-XeH3zQ9l.d.ts.map} +1 -1
  138. package/dist/{translation-provider-DQ3BJepJ.d.ts → translation-provider-WOaZXqAz.d.ts} +2 -2
  139. package/dist/{translation-provider-DQ3BJepJ.d.ts.map → translation-provider-WOaZXqAz.d.ts.map} +1 -1
  140. package/package.json +4 -4
  141. package/src/dev-tool/index.test.ts +58 -0
  142. package/src/dev-tool/index.ts +27 -1
  143. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +1 -0
  144. package/src/lib/hexclave-app/projects/index.ts +1 -0
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/leave-team-section.d.ts
3
3
  declare function LeaveTeamSection(props: {
4
4
  team: Team;
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
 
3
3
  //#region src/components-page/account-settings/teams/team-api-keys-section.d.ts
4
4
  declare function TeamApiKeysSection(props: {
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
3
- let _hexclave_ui = require("@hexclave/ui");
4
- let react = require("react");
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
3
  let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
7
4
  let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
5
+ let _hexclave_ui = require("@hexclave/ui");
6
+ let react = require("react");
8
7
  let react_hook_form = require("react-hook-form");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
9
  let _________lib_hooks_js = require("../../../lib/hooks.js");
10
10
  let _________lib_translations_js = require("../../../lib/translations.js");
11
11
  let ___page_layout_js = require("../page-layout.js");
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-display-name-section.d.ts
3
3
  declare function TeamDisplayNameSection(props: {
4
4
  team: Team;
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-member-invitation-section.d.ts
3
3
  declare function TeamMemberInvitationSection(props: {
4
4
  team: Team;
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
3
- let _hexclave_ui = require("@hexclave/ui");
4
- let lucide_react = require("lucide-react");
5
- let react = require("react");
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
3
  let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
8
4
  let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
5
+ let _hexclave_ui = require("@hexclave/ui");
6
+ let react = require("react");
9
7
  let react_hook_form = require("react-hook-form");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ let lucide_react = require("lucide-react");
10
10
  let _________lib_hooks_js = require("../../../lib/hooks.js");
11
11
  let _________lib_translations_js = require("../../../lib/translations.js");
12
12
  let _________components_elements_form_warning_js = require("../../../components/elements/form-warning.js");
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-member-list-section.d.ts
3
3
  declare function TeamMemberListSection(props: {
4
4
  team: Team;
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-page.d.ts
3
3
  declare function TeamPage(props: {
4
4
  team: Team;
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-profile-image-section.d.ts
3
3
  declare function TeamProfileImageSection(props: {
4
4
  team: Team;
@@ -1,4 +1,4 @@
1
- import { K as Team } from "../../../client-app-B0kBC67Z.js";
1
+ import { K as Team } from "../../../client-app-oSumAWx3.js";
2
2
  //#region src/components-page/account-settings/teams/team-profile-user-section.d.ts
3
3
  declare function TeamUserProfileSection(props: {
4
4
  team: Team;
@@ -3,14 +3,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_rolldown_runtime = require("../rolldown-runtime-D6vf50IK.js");
4
4
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
5
5
  let _hexclave_ui = require("@hexclave/ui");
6
- let lucide_react = require("lucide-react");
7
6
  let react = require("react");
8
7
  react = require_rolldown_runtime.__toESM(react);
9
8
  let ___index_js = require("../index.js");
9
+ let ___lib_translations_js = require("../lib/translations.js");
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+ let lucide_react = require("lucide-react");
10
12
  let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
11
13
  let ___components_elements_sidebar_layout_js = require("../components/elements/sidebar-layout.js");
12
14
  let ___components_team_icon_js = require("../components/team-icon.js");
13
- let ___lib_translations_js = require("../lib/translations.js");
14
15
  let __account_settings_active_sessions_active_sessions_page_js = require("./account-settings/active-sessions/active-sessions-page.js");
15
16
  let __account_settings_api_keys_api_keys_page_js = require("./account-settings/api-keys/api-keys-page.js");
16
17
  let __account_settings_email_and_auth_email_and_auth_page_js = require("./account-settings/email-and-auth/email-and-auth-page.js");
@@ -20,7 +21,6 @@ let __account_settings_payments_payments_page_js = require("./account-settings/p
20
21
  let __account_settings_settings_settings_page_js = require("./account-settings/settings/settings-page.js");
21
22
  let __account_settings_teams_team_creation_page_js = require("./account-settings/teams/team-creation-page.js");
22
23
  let __account_settings_teams_team_page_js = require("./account-settings/teams/team-page.js");
23
- let react_jsx_runtime = require("react/jsx-runtime");
24
24
  //#region src/components-page/account-settings.tsx
25
25
  const iconMap = {
26
26
  Contact: lucide_react.Contact,
@@ -5,10 +5,10 @@ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/er
5
5
  let _hexclave_ui = require("@hexclave/ui");
6
6
  let react = require("react");
7
7
  let ___index_js = require("../index.js");
8
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
9
8
  let ___lib_translations_js = require("../lib/translations.js");
10
9
  let react_jsx_runtime = require("react/jsx-runtime");
11
10
  let _hexclave_shared = require("@hexclave/shared");
11
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
12
  let _hexclave_shared_dist_utils_react = require("@hexclave/shared/dist/utils/react");
13
13
  let ___components_credential_sign_in_js = require("../components/credential-sign-in.js");
14
14
  let ___components_credential_sign_up_js = require("../components/credential-sign-up.js");
@@ -6,8 +6,8 @@ let _hexclave_ui = require("@hexclave/ui");
6
6
  let react = require("react");
7
7
  let ___lib_translations_js = require("../lib/translations.js");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
- let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
10
9
  let ___lib_hooks_js = require("../lib/hooks.js");
10
+ let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
11
11
  //#region src/components-page/cli-auth-confirm.tsx
12
12
  async function postCliAuthComplete(app, body) {
13
13
  return await app[___lib_hexclave_app_common_js.hexclaveAppInternalsSymbol].sendRequest("/auth/cli/complete", {
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
4
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
5
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
4
6
  let _hexclave_ui = require("@hexclave/ui");
5
7
  let react = require("react");
8
+ let react_hook_form = require("react-hook-form");
6
9
  let ___index_js = require("../index.js");
7
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
10
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
8
11
  let ___lib_translations_js = require("../lib/translations.js");
9
12
  let react_jsx_runtime = require("react/jsx-runtime");
13
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
10
14
  let ___components_link_js = require("../components/link.js");
11
15
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
12
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
13
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
14
- let react_hook_form = require("react-hook-form");
15
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
16
16
  //#region src/components-page/forgot-password.tsx
17
17
  function ForgotPasswordForm({ onSent }) {
18
18
  const { t } = (0, ___lib_translations_js.useTranslation)();
@@ -1,2 +1,2 @@
1
- import { d as getRedirectToPageResult, l as BaseHandlerProps, u as HexclaveHandlerClient } from "../index-DwE1cNLH.js";
1
+ import { d as getRedirectToPageResult, l as BaseHandlerProps, u as HexclaveHandlerClient } from "../index-DE-_vkL4.js";
2
2
  export { BaseHandlerProps, HexclaveHandlerClient, getRedirectToPageResult };
@@ -4,13 +4,13 @@ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/er
4
4
  let react = require("react");
5
5
  let ___index_js = require("../index.js");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let ___lib_hooks_js = require("../lib/hooks.js");
7
8
  let _hexclave_shared = require("@hexclave/shared");
8
9
  let _hexclave_shared_dist_utils_react = require("@hexclave/shared/dist/utils/react");
9
10
  let ___components_message_cards_known_error_message_card_js = require("../components/message-cards/known-error-message-card.js");
10
11
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
11
12
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
12
13
  let __cli_auth_confirm_js = require("./cli-auth-confirm.js");
13
- let ___lib_hooks_js = require("../lib/hooks.js");
14
14
  let ___lib_hexclave_app_index_js = require("../lib/hexclave-app/index.js");
15
15
  let _hexclave_shared_dist_utils_objects = require("@hexclave/shared/dist/utils/objects");
16
16
  let _hexclave_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
@@ -1,2 +1,2 @@
1
- import { c as StackHandler, s as HexclaveHandler } from "../index-DwE1cNLH.js";
1
+ import { c as StackHandler, s as HexclaveHandler } from "../index-DE-_vkL4.js";
2
2
  export { HexclaveHandler, StackHandler, StackHandler as default };
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let _hexclave_ui = require("@hexclave/ui");
4
- let lucide_react = require("lucide-react");
5
4
  let react = require("react");
6
5
  let ___index_js = require("../index.js");
7
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
6
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
8
7
  let ___lib_translations_js = require("../lib/translations.js");
9
8
  let react_jsx_runtime = require("react/jsx-runtime");
10
9
  let _hexclave_shared = require("@hexclave/shared");
11
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
10
+ let lucide_react = require("lucide-react");
11
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
12
12
  //#region src/components-page/mfa.tsx
13
13
  function MfaForm({ onSuccess, onCancel }) {
14
14
  const hexclaveApp = (0, ___index_js.useStackApp)();
@@ -6,10 +6,10 @@ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/er
6
6
  let _hexclave_ui = require("@hexclave/ui");
7
7
  let react = require("react");
8
8
  let ___index_js = require("../index.js");
9
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
10
9
  let ___lib_translations_js = require("../lib/translations.js");
11
10
  let react_jsx_runtime = require("react/jsx-runtime");
12
11
  let _hexclave_shared = require("@hexclave/shared");
12
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
13
13
  let ___components_link_js = require("../components/link.js");
14
14
  let __error_page_js = require("./error-page.js");
15
15
  //#region src/components-page/oauth-callback.tsx
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
4
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
5
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
4
6
  let _hexclave_ui = require("@hexclave/ui");
5
7
  let react = require("react");
8
+ let react_hook_form = require("react-hook-form");
6
9
  let ___index_js = require("../index.js");
10
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
7
11
  let ___lib_translations_js = require("../lib/translations.js");
8
12
  let react_jsx_runtime = require("react/jsx-runtime");
9
13
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
10
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
11
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
12
- let react_hook_form = require("react-hook-form");
13
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
14
14
  //#region src/components-page/onboarding.tsx
15
15
  function Onboarding(props) {
16
16
  const { t } = (0, ___lib_translations_js.useTranslation)();
@@ -5,24 +5,24 @@ Object.defineProperties(exports, {
5
5
  });
6
6
  const require_rolldown_runtime = require("../rolldown-runtime-D6vf50IK.js");
7
7
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
8
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
9
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
8
10
  let _hexclave_ui = require("@hexclave/ui");
9
11
  let react = require("react");
12
+ let react_hook_form = require("react-hook-form");
10
13
  let ___index_js = require("../index.js");
11
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
14
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
12
15
  let ___lib_translations_js = require("../lib/translations.js");
13
16
  let react_jsx_runtime = require("react/jsx-runtime");
17
+ let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
18
+ let yup = require("yup");
19
+ yup = require_rolldown_runtime.__toESM(yup);
14
20
  let _hexclave_shared = require("@hexclave/shared");
21
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
15
22
  let _hexclave_shared_dist_utils_react = require("@hexclave/shared/dist/utils/react");
16
23
  let ___components_message_cards_message_card_js = require("../components/message-cards/message-card.js");
17
24
  let ___components_message_cards_predefined_message_card_js = require("../components/message-cards/predefined-message-card.js");
18
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
19
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
20
- let react_hook_form = require("react-hook-form");
21
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
22
25
  let _hexclave_shared_dist_utils_caches = require("@hexclave/shared/dist/utils/caches");
23
- let _hexclave_shared_dist_helpers_password = require("@hexclave/shared/dist/helpers/password");
24
- let yup = require("yup");
25
- yup = require_rolldown_runtime.__toESM(yup);
26
26
  //#region src/components-page/password-reset.tsx
27
27
  function PasswordResetForm(props) {
28
28
  const { t } = (0, ___lib_translations_js.useTranslation)();
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
4
+ let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
5
+ let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
4
6
  let _hexclave_ui = require("@hexclave/ui");
5
7
  let react = require("react");
8
+ let react_hook_form = require("react-hook-form");
6
9
  let ___index_js = require("../index.js");
7
- let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
10
+ let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
8
11
  let ___lib_translations_js = require("../lib/translations.js");
9
12
  let react_jsx_runtime = require("react/jsx-runtime");
10
- let _hookform_resolvers_yup = require("@hookform/resolvers/yup");
11
- let _hexclave_shared_dist_schema_fields = require("@hexclave/shared/dist/schema-fields");
12
- let react_hook_form = require("react-hook-form");
13
- let ___components_elements_form_warning_js = require("../components/elements/form-warning.js");
13
+ let ___components_elements_maybe_full_page_js = require("../components/elements/maybe-full-page.js");
14
14
  //#region src/components-page/team-creation.tsx
15
15
  function TeamCreation(props) {
16
16
  const { t } = (0, ___lib_translations_js.useTranslation)();
@@ -1,4 +1,4 @@
1
- import { a as StackClientApp } from "../client-app-B0kBC67Z.js";
1
+ import { a as StackClientApp } from "../client-app-oSumAWx3.js";
2
2
  //#region src/dev-tool/dev-tool-core.d.ts
3
3
  declare function createDevTool(app: StackClientApp<true>): () => void;
4
4
  //#endregion
@@ -1,4 +1,4 @@
1
- import { a as StackClientApp } from "../client-app-B0kBC67Z.js";
1
+ import { a as StackClientApp } from "../client-app-oSumAWx3.js";
2
2
  //#region src/dev-tool/index.d.ts
3
3
  /**
4
4
  * Mounts the Hexclave dev tool on the page.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/dev-tool/index.ts"],"mappings":";;;;;AAsGA;;;;;;;;AAAwF;;iBAAxE,YAAA,CAAa,GAAA,EAAK,cAAc,QAAQ,aAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/dev-tool/index.ts"],"mappings":";;;;;AA2GA;;;;;;;;AAAwF;;iBAAxE,YAAA,CAAa,GAAA,EAAK,cAAc,QAAQ,aAAA"}
@@ -15,11 +15,13 @@ function getOverride() {
15
15
  return null;
16
16
  }
17
17
  let activeDevToolOption = void 0;
18
+ let activeProjectIsDevelopmentEnvironment = false;
18
19
  function shouldShow() {
19
20
  const override = getOverride();
20
21
  if (override !== null) return override;
21
22
  if (!(0, ___in_page_ui_dom_js.canMountIntoDom)()) return false;
22
23
  if (activeDevToolOption === true) return true;
24
+ if (activeProjectIsDevelopmentEnvironment) return true;
23
25
  const nodeEnv = ___generated_env_js.envVars.NODE_ENV;
24
26
  if (nodeEnv !== void 0) return nodeEnv === "development";
25
27
  try {
@@ -74,10 +76,25 @@ function tryMount() {
74
76
  function mountDevTool(app, devToolOption) {
75
77
  activeApp = app;
76
78
  activeDevToolOption = devToolOption === false ? void 0 : devToolOption ?? void 0;
79
+ activeProjectIsDevelopmentEnvironment = false;
77
80
  tryMount();
81
+ queueMicrotask(() => {
82
+ (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
83
+ const project = await app.getProject();
84
+ if (activeApp !== app) return;
85
+ activeProjectIsDevelopmentEnvironment = project.isDevelopmentEnvironment;
86
+ if (activeProjectIsDevelopmentEnvironment && activeCleanup === null) tryMount();
87
+ }, {
88
+ noErrorLogging: true,
89
+ onError: (error) => {
90
+ (0, _hexclave_shared_dist_utils_errors.captureError)("dev-tool-project-detection", error);
91
+ }
92
+ });
93
+ });
78
94
  const myCleanup = activeCleanup;
79
95
  return () => {
80
96
  activeApp = null;
97
+ activeProjectIsDevelopmentEnvironment = false;
81
98
  if (activeCleanup === myCleanup && myCleanup != null) {
82
99
  activeCleanup = null;
83
100
  myCleanup();
@@ -111,7 +128,7 @@ if (typeof window !== "undefined") window.HexclaveDevTool = window.HexclaveDevTo
111
128
  activeCleanup();
112
129
  activeCleanup = null;
113
130
  }
114
- console.log("[Stack DevTool] Reset to default (auto-detect based on NODE_ENV or localhost/file: origin).");
131
+ console.log("[Stack DevTool] Reset to default (auto-detect based on project, NODE_ENV, or localhost/file: origin).");
115
132
  }
116
133
  };
117
134
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["envVars"],"sources":["../../src/dev-tool/index.ts"],"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\nimport type { StackClientApp } from \"../lib/hexclave-app\";\nimport { captureError } from \"@hexclave/shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { isLocalhost } from \"@hexclave/shared/dist/utils/urls\";\nimport { canMountIntoDom } from \"../in-page-ui/dom\";\nimport { envVars } from \"../generated/env\";\nimport type { createDevTool as CreateDevToolFn } from \"./dev-tool-core\";\n\n// Hexclave rebrand: UI-only local pref — straight rename (one-time reset is harmless)\nconst OVERRIDE_KEY = '__hexclave-dev-tool-override';\n\nfunction getOverride(): boolean | null {\n try {\n const val = localStorage.getItem(OVERRIDE_KEY);\n if (val === 'true') return true;\n if (val === 'false') return false;\n } catch {}\n return null;\n}\n\nlet activeDevToolOption: true | \"auto\" | undefined = undefined;\n\nfunction shouldShow(): boolean {\n const override = getOverride();\n if (override !== null) return override;\n if (!canMountIntoDom()) return false;\n\n // If devTool was explicitly set to true, always show\n if (activeDevToolOption === true) return true;\n\n // \"auto\" behavior (the default):\n const nodeEnv = envVars.NODE_ENV;\n if (nodeEnv !== undefined) {\n // NODE_ENV is available (bundler/process env exists) — only show in development\n return nodeEnv === \"development\";\n }\n\n // NODE_ENV not found (no process.env/import.meta) — show on localhost or file: protocol\n try {\n const url = new URL(window.location.href);\n if (url.protocol === \"file:\") return true;\n } catch {}\n return isLocalhost(window.location.href);\n}\n\nlet activeCleanup: (() => void) | null = null;\nlet activeApp: StackClientApp<true> | null = null;\nlet mountGeneration = 0;\n\nlet createDevToolPromise: Promise<typeof CreateDevToolFn> | null = null;\nfunction loadCreateDevTool(): Promise<typeof CreateDevToolFn> {\n if (!createDevToolPromise) {\n createDevToolPromise = import(\"./dev-tool-core\").then(m => m.createDevTool).catch((err) => {\n createDevToolPromise = null;\n throw err;\n });\n }\n return createDevToolPromise;\n}\n\nfunction tryMount() {\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n\n if (!shouldShow() || !activeApp || !canMountIntoDom()) return;\n\n const generation = ++mountGeneration;\n const app = activeApp;\n\n runAsynchronously(async () => {\n const createDevTool = await loadCreateDevTool();\n if (generation !== mountGeneration) return;\n if (!shouldShow() || activeApp !== app || !canMountIntoDom()) return;\n activeCleanup = createDevTool(app);\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"dev-tool-mount\", error);\n },\n });\n}\n\n/**\n * Mounts the Hexclave dev tool on the page.\n *\n * Visibility is determined by the `devTool` option:\n * - `true`: always show\n * - `false`: never show (caller gates this — mountDevTool won't be called)\n * - `\"auto\"` / `undefined`: show based on NODE_ENV or localhost/file: heuristics\n *\n * Console commands (also work in production):\n * HexclaveDevTool.enable() — force-show the dev tool\n * HexclaveDevTool.disable() — force-hide the dev tool\n * HexclaveDevTool.reset() — revert to auto behavior\n */\nexport function mountDevTool(app: StackClientApp<true>, devToolOption?: boolean | \"auto\"): () => void {\n activeApp = app;\n activeDevToolOption = devToolOption === false ? undefined : devToolOption ?? undefined;\n tryMount();\n\n // Capture the cleanup created by THIS specific mount call so that React\n // StrictMode's double-invoke doesn't let the first effect's cleanup tear\n // down the second mount (which would cause the tool to disappear silently).\n const myCleanup = activeCleanup;\n\n return () => {\n activeApp = null;\n if (activeCleanup === myCleanup && myCleanup != null) {\n activeCleanup = null;\n myCleanup();\n }\n };\n}\n\n// Expose console commands: HexclaveDevTool.enable() / .disable() / .reset()\nif (typeof window !== 'undefined') {\n // Hexclave rebrand: expose under both the legacy and new global names.\n (window as any).HexclaveDevTool = (window as any).HexclaveDevTool = {\n enable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'true');\n } catch {}\n tryMount();\n console.log('[Stack DevTool] Enabled. Refresh if the panel does not appear.');\n },\n disable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'false');\n } catch {}\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Disabled.');\n },\n reset() {\n try {\n localStorage.removeItem(OVERRIDE_KEY);\n } catch {}\n if (shouldShow()) {\n tryMount();\n } else if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Reset to default (auto-detect based on NODE_ENV or localhost/file: origin).');\n },\n };\n}\n\n"],"mappings":";;;;;;;AAcA,MAAM,eAAe;AAErB,SAAS,cAA8B;CACrC,IAAI;EACF,MAAM,MAAM,aAAa,QAAQ,YAAY;EAC7C,IAAI,QAAQ,QAAQ,OAAO;EAC3B,IAAI,QAAQ,SAAS,OAAO;CAC9B,QAAQ,CAAC;CACT,OAAO;AACT;AAEA,IAAI,sBAAiD,KAAA;AAErD,SAAS,aAAsB;CAC7B,MAAM,WAAW,YAAY;CAC7B,IAAI,aAAa,MAAM,OAAO;CAC9B,IAAI,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG,OAAO;CAG/B,IAAI,wBAAwB,MAAM,OAAO;CAGzC,MAAM,UAAUA,oBAAAA,QAAQ;CACxB,IAAI,YAAY,KAAA,GAEd,OAAO,YAAY;CAIrB,IAAI;EAEF,IAAI,IADY,IAAI,OAAO,SAAS,IAC9B,CAAC,CAAC,aAAa,SAAS,OAAO;CACvC,QAAQ,CAAC;CACT,QAAA,GAAA,iCAAA,YAAA,CAAmB,OAAO,SAAS,IAAI;AACzC;AAEA,IAAI,gBAAqC;AACzC,IAAI,YAAyC;AAC7C,IAAI,kBAAkB;AAEtB,IAAI,uBAA+D;AACnE,SAAS,oBAAqD;CAC5D,IAAI,CAAC,sBACH,uBAAuB,OAAO,qBAAkB,CAAC,MAAK,MAAK,EAAE,aAAa,CAAC,CAAC,OAAO,QAAQ;EACzF,uBAAuB;EACvB,MAAM;CACR,CAAC;CAEH,OAAO;AACT;AAEA,SAAS,WAAW;CAClB,IAAI,eAAe;EACjB,cAAc;EACd,gBAAgB;CAClB;CAEA,IAAI,CAAC,WAAW,KAAK,CAAC,aAAa,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG;CAEvD,MAAM,aAAa,EAAE;CACrB,MAAM,MAAM;CAEZ,CAAA,GAAA,qCAAA,kBAAA,CAAkB,YAAY;EAC5B,MAAM,gBAAgB,MAAM,kBAAkB;EAC9C,IAAI,eAAe,iBAAiB;EACpC,IAAI,CAAC,WAAW,KAAK,cAAc,OAAO,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG;EAC9D,gBAAgB,cAAc,GAAG;CACnC,GAAG;EACD,gBAAgB;EAChB,UAAU,UAAU;GAClB,CAAA,GAAA,mCAAA,aAAA,CAAa,kBAAkB,KAAK;EACtC;CACF,CAAC;AACH;;;;;;;;;;;;;;AAeA,SAAgB,aAAa,KAA2B,eAA8C;CACpG,YAAY;CACZ,sBAAsB,kBAAkB,QAAQ,KAAA,IAAY,iBAAiB,KAAA;CAC7E,SAAS;CAKT,MAAM,YAAY;CAElB,aAAa;EACX,YAAY;EACZ,IAAI,kBAAkB,aAAa,aAAa,MAAM;GACpD,gBAAgB;GAChB,UAAU;EACZ;CACF;AACF;AAGA,IAAI,OAAO,WAAW,aAEpB,OAAgB,kBAAkB,OAAgB,kBAAkB;CAClE,SAAS;EACP,IAAI;GACF,aAAa,QAAQ,cAAc,MAAM;EAC3C,QAAQ,CAAC;EACT,SAAS;EACT,QAAQ,IAAI,gEAAgE;CAC9E;CACA,UAAU;EACR,IAAI;GACF,aAAa,QAAQ,cAAc,OAAO;EAC5C,QAAQ,CAAC;EACT,IAAI,eAAe;GACjB,cAAc;GACd,gBAAgB;EAClB;EACA,QAAQ,IAAI,2BAA2B;CACzC;CACA,QAAQ;EACN,IAAI;GACF,aAAa,WAAW,YAAY;EACtC,QAAQ,CAAC;EACT,IAAI,WAAW,GACb,SAAS;OACJ,IAAI,eAAe;GACxB,cAAc;GACd,gBAAgB;EAClB;EACA,QAAQ,IAAI,6FAA6F;CAC3G;AACF"}
1
+ {"version":3,"file":"index.js","names":["envVars"],"sources":["../../src/dev-tool/index.ts"],"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\nimport type { StackClientApp } from \"../lib/hexclave-app\";\nimport { captureError } from \"@hexclave/shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { isLocalhost } from \"@hexclave/shared/dist/utils/urls\";\nimport { canMountIntoDom } from \"../in-page-ui/dom\";\nimport { envVars } from \"../generated/env\";\nimport type { createDevTool as CreateDevToolFn } from \"./dev-tool-core\";\n\n// Hexclave rebrand: UI-only local pref — straight rename (one-time reset is harmless)\nconst OVERRIDE_KEY = '__hexclave-dev-tool-override';\n\nfunction getOverride(): boolean | null {\n try {\n const val = localStorage.getItem(OVERRIDE_KEY);\n if (val === 'true') return true;\n if (val === 'false') return false;\n } catch {}\n return null;\n}\n\nlet activeDevToolOption: true | \"auto\" | undefined = undefined;\nlet activeProjectIsDevelopmentEnvironment = false;\n\nfunction shouldShow(): boolean {\n const override = getOverride();\n if (override !== null) return override;\n if (!canMountIntoDom()) return false;\n\n // If devTool was explicitly set to true, always show\n if (activeDevToolOption === true) return true;\n\n // Development environment projects should expose the tool even when the\n // consuming app itself was built or hosted as production.\n if (activeProjectIsDevelopmentEnvironment) return true;\n\n // \"auto\" behavior (the default):\n const nodeEnv = envVars.NODE_ENV;\n if (nodeEnv !== undefined) {\n // NODE_ENV is available (bundler/process env exists) — only show in development\n return nodeEnv === \"development\";\n }\n\n // NODE_ENV not found (no process.env/import.meta) — show on localhost or file: protocol\n try {\n const url = new URL(window.location.href);\n if (url.protocol === \"file:\") return true;\n } catch {}\n return isLocalhost(window.location.href);\n}\n\nlet activeCleanup: (() => void) | null = null;\nlet activeApp: StackClientApp<true> | null = null;\nlet mountGeneration = 0;\n\nlet createDevToolPromise: Promise<typeof CreateDevToolFn> | null = null;\nfunction loadCreateDevTool(): Promise<typeof CreateDevToolFn> {\n if (!createDevToolPromise) {\n createDevToolPromise = import(\"./dev-tool-core\").then(m => m.createDevTool).catch((err) => {\n createDevToolPromise = null;\n throw err;\n });\n }\n return createDevToolPromise;\n}\n\nfunction tryMount() {\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n\n if (!shouldShow() || !activeApp || !canMountIntoDom()) return;\n\n const generation = ++mountGeneration;\n const app = activeApp;\n\n runAsynchronously(async () => {\n const createDevTool = await loadCreateDevTool();\n if (generation !== mountGeneration) return;\n if (!shouldShow() || activeApp !== app || !canMountIntoDom()) return;\n activeCleanup = createDevTool(app);\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"dev-tool-mount\", error);\n },\n });\n}\n\n/**\n * Mounts the Hexclave dev tool on the page.\n *\n * Visibility is determined by the `devTool` option:\n * - `true`: always show\n * - `false`: never show (caller gates this — mountDevTool won't be called)\n * - `\"auto\"` / `undefined`: show based on NODE_ENV or localhost/file: heuristics\n *\n * Console commands (also work in production):\n * HexclaveDevTool.enable() — force-show the dev tool\n * HexclaveDevTool.disable() — force-hide the dev tool\n * HexclaveDevTool.reset() — revert to auto behavior\n */\nexport function mountDevTool(app: StackClientApp<true>, devToolOption?: boolean | \"auto\"): () => void {\n activeApp = app;\n activeDevToolOption = devToolOption === false ? undefined : devToolOption ?? undefined;\n activeProjectIsDevelopmentEnvironment = false;\n tryMount();\n\n // The project endpoint is also the source of config warnings, so this uses\n // the backend's development-environment flag instead of inferring it from\n // the SDK's build or the current page's origin.\n queueMicrotask(() => {\n runAsynchronously(async () => {\n const project = await app.getProject();\n if (activeApp !== app) return;\n activeProjectIsDevelopmentEnvironment = project.isDevelopmentEnvironment;\n if (activeProjectIsDevelopmentEnvironment && activeCleanup === null) {\n tryMount();\n }\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"dev-tool-project-detection\", error);\n },\n });\n });\n\n // Capture the cleanup created by THIS specific mount call so that React\n // StrictMode's double-invoke doesn't let the first effect's cleanup tear\n // down the second mount (which would cause the tool to disappear silently).\n const myCleanup = activeCleanup;\n\n return () => {\n activeApp = null;\n activeProjectIsDevelopmentEnvironment = false;\n if (activeCleanup === myCleanup && myCleanup != null) {\n activeCleanup = null;\n myCleanup();\n }\n };\n}\n\n// Expose console commands: HexclaveDevTool.enable() / .disable() / .reset()\nif (typeof window !== 'undefined') {\n // Hexclave rebrand: expose under both the legacy and new global names.\n (window as any).HexclaveDevTool = (window as any).HexclaveDevTool = {\n enable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'true');\n } catch {}\n tryMount();\n console.log('[Stack DevTool] Enabled. Refresh if the panel does not appear.');\n },\n disable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'false');\n } catch {}\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Disabled.');\n },\n reset() {\n try {\n localStorage.removeItem(OVERRIDE_KEY);\n } catch {}\n if (shouldShow()) {\n tryMount();\n } else if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Reset to default (auto-detect based on project, NODE_ENV, or localhost/file: origin).');\n },\n };\n}\n\n"],"mappings":";;;;;;;AAcA,MAAM,eAAe;AAErB,SAAS,cAA8B;CACrC,IAAI;EACF,MAAM,MAAM,aAAa,QAAQ,YAAY;EAC7C,IAAI,QAAQ,QAAQ,OAAO;EAC3B,IAAI,QAAQ,SAAS,OAAO;CAC9B,QAAQ,CAAC;CACT,OAAO;AACT;AAEA,IAAI,sBAAiD,KAAA;AACrD,IAAI,wCAAwC;AAE5C,SAAS,aAAsB;CAC7B,MAAM,WAAW,YAAY;CAC7B,IAAI,aAAa,MAAM,OAAO;CAC9B,IAAI,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG,OAAO;CAG/B,IAAI,wBAAwB,MAAM,OAAO;CAIzC,IAAI,uCAAuC,OAAO;CAGlD,MAAM,UAAUA,oBAAAA,QAAQ;CACxB,IAAI,YAAY,KAAA,GAEd,OAAO,YAAY;CAIrB,IAAI;EAEF,IAAI,IADY,IAAI,OAAO,SAAS,IAC9B,CAAC,CAAC,aAAa,SAAS,OAAO;CACvC,QAAQ,CAAC;CACT,QAAA,GAAA,iCAAA,YAAA,CAAmB,OAAO,SAAS,IAAI;AACzC;AAEA,IAAI,gBAAqC;AACzC,IAAI,YAAyC;AAC7C,IAAI,kBAAkB;AAEtB,IAAI,uBAA+D;AACnE,SAAS,oBAAqD;CAC5D,IAAI,CAAC,sBACH,uBAAuB,OAAO,qBAAkB,CAAC,MAAK,MAAK,EAAE,aAAa,CAAC,CAAC,OAAO,QAAQ;EACzF,uBAAuB;EACvB,MAAM;CACR,CAAC;CAEH,OAAO;AACT;AAEA,SAAS,WAAW;CAClB,IAAI,eAAe;EACjB,cAAc;EACd,gBAAgB;CAClB;CAEA,IAAI,CAAC,WAAW,KAAK,CAAC,aAAa,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG;CAEvD,MAAM,aAAa,EAAE;CACrB,MAAM,MAAM;CAEZ,CAAA,GAAA,qCAAA,kBAAA,CAAkB,YAAY;EAC5B,MAAM,gBAAgB,MAAM,kBAAkB;EAC9C,IAAI,eAAe,iBAAiB;EACpC,IAAI,CAAC,WAAW,KAAK,cAAc,OAAO,EAAA,GAAA,qBAAA,gBAAA,CAAiB,GAAG;EAC9D,gBAAgB,cAAc,GAAG;CACnC,GAAG;EACD,gBAAgB;EAChB,UAAU,UAAU;GAClB,CAAA,GAAA,mCAAA,aAAA,CAAa,kBAAkB,KAAK;EACtC;CACF,CAAC;AACH;;;;;;;;;;;;;;AAeA,SAAgB,aAAa,KAA2B,eAA8C;CACpG,YAAY;CACZ,sBAAsB,kBAAkB,QAAQ,KAAA,IAAY,iBAAiB,KAAA;CAC7E,wCAAwC;CACxC,SAAS;CAKT,qBAAqB;EACnB,CAAA,GAAA,qCAAA,kBAAA,CAAkB,YAAY;GAC5B,MAAM,UAAU,MAAM,IAAI,WAAW;GACrC,IAAI,cAAc,KAAK;GACvB,wCAAwC,QAAQ;GAChD,IAAI,yCAAyC,kBAAkB,MAC7D,SAAS;EAEb,GAAG;GACD,gBAAgB;GAChB,UAAU,UAAU;IAClB,CAAA,GAAA,mCAAA,aAAA,CAAa,8BAA8B,KAAK;GAClD;EACF,CAAC;CACH,CAAC;CAKD,MAAM,YAAY;CAElB,aAAa;EACX,YAAY;EACZ,wCAAwC;EACxC,IAAI,kBAAkB,aAAa,aAAa,MAAM;GACpD,gBAAgB;GAChB,UAAU;EACZ;CACF;AACF;AAGA,IAAI,OAAO,WAAW,aAEpB,OAAgB,kBAAkB,OAAgB,kBAAkB;CAClE,SAAS;EACP,IAAI;GACF,aAAa,QAAQ,cAAc,MAAM;EAC3C,QAAQ,CAAC;EACT,SAAS;EACT,QAAQ,IAAI,gEAAgE;CAC9E;CACA,UAAU;EACR,IAAI;GACF,aAAa,QAAQ,cAAc,OAAO;EAC5C,QAAQ,CAAC;EACT,IAAI,eAAe;GACjB,cAAc;GACd,gBAAgB;EAClB;EACA,QAAQ,IAAI,2BAA2B;CACzC;CACA,QAAQ;EACN,IAAI;GACF,aAAa,WAAW,YAAY;EACtC,QAAQ,CAAC;EACT,IAAI,WAAW,GACb,SAAS;OACJ,IAAI,eAAe;GACxB,cAAc;GACd,gBAAgB;EAClB;EACA,QAAQ,IAAI,uGAAuG;CACrH;AACF"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,40 @@
1
+ let vitest = require("vitest");
2
+ let ___lib_hexclave_app_index_js = require("../lib/hexclave-app/index.js");
3
+ let __dev_tool_core_js = require("./dev-tool-core.js");
4
+ let __index_js = require("./index.js");
5
+ //#region src/dev-tool/index.test.ts
6
+ vitest.vi.mock("./dev-tool-core", () => ({ createDevTool: vitest.vi.fn(() => () => {}) }));
7
+ (0, vitest.describe)("dev tool visibility", () => {
8
+ (0, vitest.afterEach)(() => {
9
+ vitest.vi.unstubAllEnvs();
10
+ vitest.vi.unstubAllGlobals();
11
+ vitest.vi.clearAllMocks();
12
+ });
13
+ (0, vitest.it)("shows for a development environment project in a production-hosted app", async () => {
14
+ const app = new ___lib_hexclave_app_index_js.StackClientApp({
15
+ baseUrl: "https://api.example.com",
16
+ projectId: "00000000-0000-4000-8000-000000000000",
17
+ publishableClientKey: "stack-pk-test",
18
+ tokenStore: "memory",
19
+ redirectMethod: "none",
20
+ devTool: false
21
+ });
22
+ const getProject = vitest.vi.fn(async () => ({ isDevelopmentEnvironment: true }));
23
+ Reflect.set(app, "getProject", getProject);
24
+ vitest.vi.stubEnv("NODE_ENV", "production");
25
+ vitest.vi.stubGlobal("window", { location: { href: "https://example.com" } });
26
+ vitest.vi.stubGlobal("document", {
27
+ body: { appendChild: () => {} },
28
+ createElement: () => ({})
29
+ });
30
+ vitest.vi.stubGlobal("localStorage", { getItem: () => null });
31
+ (0, __index_js.mountDevTool)(app);
32
+ await vitest.vi.waitFor(() => {
33
+ (0, vitest.expect)(getProject).toHaveBeenCalledOnce();
34
+ (0, vitest.expect)(__dev_tool_core_js.createDevTool).toHaveBeenCalledOnce();
35
+ });
36
+ });
37
+ });
38
+ //#endregion
39
+
40
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","names":["vi","StackClientApp","createDevTool"],"sources":["../../src/dev-tool/index.test.ts"],"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 { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { StackClientApp } from \"../lib/hexclave-app\";\nimport { createDevTool } from \"./dev-tool-core\";\nimport { mountDevTool } from \".\";\n\nvi.mock(\"./dev-tool-core\", () => ({\n createDevTool: vi.fn(() => () => {}),\n}));\n\ndescribe(\"dev tool visibility\", () => {\n afterEach(() => {\n vi.unstubAllEnvs();\n vi.unstubAllGlobals();\n vi.clearAllMocks();\n });\n\n it(\"shows for a development environment project in a production-hosted app\", async () => {\n const app = new StackClientApp({\n baseUrl: \"https://api.example.com\",\n projectId: \"00000000-0000-4000-8000-000000000000\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"none\",\n devTool: false,\n });\n const getProject = vi.fn(async () => ({\n isDevelopmentEnvironment: true,\n }));\n Reflect.set(app, \"getProject\", getProject);\n\n vi.stubEnv(\"NODE_ENV\", \"production\");\n vi.stubGlobal(\"window\", {\n location: {\n href: \"https://example.com\",\n },\n });\n vi.stubGlobal(\"document\", {\n body: {\n appendChild: () => {},\n },\n createElement: () => ({}),\n });\n vi.stubGlobal(\"localStorage\", {\n getItem: () => null,\n });\n\n mountDevTool(app);\n\n await vi.waitFor(() => {\n expect(getProject).toHaveBeenCalledOnce();\n expect(createDevTool).toHaveBeenCalledOnce();\n });\n });\n});\n"],"mappings":";;;;;AASAA,OAAAA,GAAG,KAAK,0BAA0B,EAChC,eAAeA,OAAAA,GAAG,eAAe,CAAC,CAAC,EACrC,EAAE;qBAEO,6BAA6B;CACpC,CAAA,GAAA,OAAA,UAAA,OAAgB;EACd,OAAA,GAAG,cAAc;EACjB,OAAA,GAAG,iBAAiB;EACpB,OAAA,GAAG,cAAc;CACnB,CAAC;CAED,CAAA,GAAA,OAAA,GAAA,CAAG,0EAA0E,YAAY;EACvF,MAAM,MAAM,IAAIC,6BAAAA,eAAe;GAC7B,SAAS;GACT,WAAW;GACX,sBAAsB;GACtB,YAAY;GACZ,gBAAgB;GAChB,SAAS;EACX,CAAC;EACD,MAAM,aAAaD,OAAAA,GAAG,GAAG,aAAa,EACpC,0BAA0B,KAC5B,EAAE;EACF,QAAQ,IAAI,KAAK,cAAc,UAAU;EAEzC,OAAA,GAAG,QAAQ,YAAY,YAAY;EACnC,OAAA,GAAG,WAAW,UAAU,EACtB,UAAU,EACR,MAAM,sBACR,EACF,CAAC;EACD,OAAA,GAAG,WAAW,YAAY;GACxB,MAAM,EACJ,mBAAmB,CAAC,EACtB;GACA,sBAAsB,CAAC;EACzB,CAAC;EACD,OAAA,GAAG,WAAW,gBAAgB,EAC5B,eAAe,KACjB,CAAC;EAED,CAAA,GAAA,WAAA,aAAA,CAAa,GAAG;EAEhB,MAAMA,OAAAA,GAAG,cAAc;GACrB,CAAA,GAAA,OAAA,OAAA,CAAO,UAAU,CAAC,CAAC,qBAAqB;GACxC,CAAA,GAAA,OAAA,OAAA,CAAOE,mBAAAA,aAAa,CAAC,CAAC,qBAAqB;EAC7C,CAAC;CACH,CAAC;AACH,CAAC"}
@@ -3,7 +3,7 @@ import { ApiKey, ApiKeyCreationOptions, ApiKeyType } from "../lib/hexclave-app/a
3
3
  //#region src/components/api-key-dialogs.d.ts
4
4
  declare const neverInMs: number;
5
5
  declare const expiresInOptions: {
6
- readonly [x: number]: "Never" | "1 day" | "7 days" | "30 days" | "90 days" | "1 year";
6
+ readonly [x: number]: "1 day" | "7 days" | "30 days" | "90 days" | "1 year" | "Never";
7
7
  };
8
8
  /**
9
9
  * Dialog for creating a new API key
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { runAsynchronously } from "@hexclave/shared/dist/utils/promises";
3
3
  import { captureError } from "@hexclave/shared/dist/utils/errors";
4
+ import { yupResolver } from "@hookform/resolvers/yup";
5
+ import { yupObject, yupString } from "@hexclave/shared/dist/schema-fields";
4
6
  import { ActionDialog, Button, CopyField, Input, Label, Typography } from "@hexclave/ui";
5
7
  import { useState } from "react";
8
+ import { useForm } from "react-hook-form";
6
9
  import { useUser } from "../index.js";
10
+ import { FormWarningText } from "../components/elements/form-warning.js";
7
11
  import { useTranslation } from "../lib/translations.js";
8
12
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import { yupResolver } from "@hookform/resolvers/yup";
10
- import { yupObject, yupString } from "@hexclave/shared/dist/schema-fields";
11
- import { useForm } from "react-hook-form";
12
- import { FormWarningText } from "../components/elements/form-warning.js";
13
13
  //#region src/components/api-key-dialogs.tsx
14
14
  const neverInMs = 1e3 * 60 * 60 * 24 * 365 * 200;
15
15
  const expiresInOptions = {
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
3
+ import { yupResolver } from "@hookform/resolvers/yup";
4
+ import { passwordSchema, strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
3
5
  import { Button, Input, Label, PasswordInput } from "@hexclave/ui";
4
6
  import { useState } from "react";
7
+ import { useForm } from "react-hook-form";
5
8
  import { useStackApp } from "../index.js";
6
9
  import { useTranslation } from "../lib/translations.js";
7
10
  import { jsx, jsxs } from "react/jsx-runtime";
8
- import { yupResolver } from "@hookform/resolvers/yup";
9
- import { passwordSchema, strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
10
- import { useForm } from "react-hook-form";
11
11
  import { FormWarningText } from "./elements/form-warning.js";
12
12
  import { StyledLink } from "./link.js";
13
13
  //#region src/components/credential-sign-in.tsx
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import { runAsynchronously, runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
3
+ import { yupResolver } from "@hookform/resolvers/yup";
4
+ import { passwordSchema, strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
3
5
  import { Button, Input, Label, PasswordInput } from "@hexclave/ui";
4
6
  import { useState } from "react";
7
+ import { useForm } from "react-hook-form";
5
8
  import { useTranslation } from "../lib/translations.js";
6
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
- import { useStackApp } from "../lib/hooks.js";
8
- import { yupResolver } from "@hookform/resolvers/yup";
9
- import { passwordSchema, strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
10
- import { useForm } from "react-hook-form";
10
+ import { FormWarningText } from "./elements/form-warning.js";
11
11
  import { getPasswordError } from "@hexclave/shared/dist/helpers/password";
12
12
  import * as yup from "yup";
13
- import { FormWarningText } from "./elements/form-warning.js";
13
+ import { useStackApp } from "../lib/hooks.js";
14
14
  //#region src/components/credential-sign-up.tsx
15
15
  function CredentialSignUp(props) {
16
16
  const { t } = useTranslation();
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { Button, Typography, cn } from "@hexclave/ui";
3
- import { XIcon } from "lucide-react";
4
3
  import "react";
5
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
- import { useStackApp } from "../../index.js";
5
+ import { XIcon } from "lucide-react";
7
6
  import { useHash } from "@hexclave/shared/dist/hooks/use-hash";
7
+ import { useStackApp } from "../../index.js";
8
8
  //#region src/components/elements/sidebar-layout.tsx
9
9
  function SidebarLayout(props) {
10
10
  const hash = useHash();
@@ -1,6 +1,6 @@
1
1
  import { Avatar, AvatarFallback, AvatarImage } from "@hexclave/ui";
2
- import { UserRound } from "lucide-react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { UserRound } from "lucide-react";
4
4
  //#region src/components/elements/user-avatar.tsx
5
5
  const defaultSize = 34;
6
6
  function UserAvatar(props) {
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { runAsynchronouslyWithAlert } from "@hexclave/shared/dist/utils/promises";
3
+ import { yupResolver } from "@hookform/resolvers/yup";
4
+ import { strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
3
5
  import { Button, Input, InputOTP, InputOTPGroup, InputOTPSlot, Label, Typography } from "@hexclave/ui";
4
6
  import { useEffect, useState } from "react";
7
+ import { useForm } from "react-hook-form";
5
8
  import { useTranslation } from "../lib/translations.js";
6
9
  import { jsx, jsxs } from "react/jsx-runtime";
7
- import { KnownErrors } from "@hexclave/shared";
8
- import { useStackApp } from "../lib/hooks.js";
9
- import { yupResolver } from "@hookform/resolvers/yup";
10
- import { strictEmailSchema, yupObject } from "@hexclave/shared/dist/schema-fields";
11
- import { useForm } from "react-hook-form";
12
10
  import { FormWarningText } from "./elements/form-warning.js";
11
+ import { useStackApp } from "../lib/hooks.js";
12
+ import { KnownErrors } from "@hexclave/shared";
13
13
  //#region src/components/magic-link-sign-in.tsx
14
14
  function OTP(props) {
15
15
  const { t } = useTranslation();
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { Typography } from "@hexclave/ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import { useTranslation } from "../../lib/translations.js";
5
4
  import { useStackApp } from "../../index.js";
6
5
  import { MessageCard } from "./message-card.js";
6
+ import { useTranslation } from "../../lib/translations.js";
7
7
  //#region src/components/message-cards/predefined-message-card.tsx
8
8
  function PredefinedMessageCard({ type, fullPage = false }) {
9
9
  const hexclaveApp = useStackApp();