@hexclave/next 1.0.14 → 1.0.16

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 (220) hide show
  1. package/dist/clickmap/clickmap-core.d.ts +15 -0
  2. package/dist/clickmap/clickmap-core.d.ts.map +1 -0
  3. package/dist/clickmap/clickmap-core.js +1527 -0
  4. package/dist/clickmap/clickmap-core.js.map +1 -0
  5. package/dist/clickmap/clickmap-styles.d.ts +5 -0
  6. package/dist/clickmap/clickmap-styles.d.ts.map +1 -0
  7. package/dist/clickmap/clickmap-styles.js +1095 -0
  8. package/dist/clickmap/clickmap-styles.js.map +1 -0
  9. package/dist/clickmap/index.d.ts +16 -0
  10. package/dist/clickmap/index.d.ts.map +1 -0
  11. package/dist/clickmap/index.js +74 -0
  12. package/dist/clickmap/index.js.map +1 -0
  13. package/dist/components/api-key-dialogs.d.ts +1 -1
  14. package/dist/components/api-key-dialogs.js +5 -5
  15. package/dist/components/credential-sign-in.js +3 -3
  16. package/dist/components/credential-sign-up.js +5 -5
  17. package/dist/components/elements/sidebar-layout.js +1 -1
  18. package/dist/components/elements/user-avatar.js +1 -1
  19. package/dist/components/magic-link-sign-in.js +5 -5
  20. package/dist/components/message-cards/known-error-message-card.d.ts +1 -1
  21. package/dist/components/message-cards/predefined-message-card.js +1 -1
  22. package/dist/components/passkey-button.js +1 -1
  23. package/dist/components/profile-image-editor.js +1 -1
  24. package/dist/components/team-icon.js +1 -1
  25. package/dist/components/team-switcher.js +2 -2
  26. package/dist/components/user-button.js +1 -1
  27. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  28. package/dist/components-page/account-settings/editable-text.js +1 -1
  29. package/dist/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  30. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  31. package/dist/components-page/account-settings/email-and-auth/password-section.js +3 -3
  32. package/dist/components-page/account-settings/teams/team-api-keys-section.js +1 -1
  33. package/dist/components-page/account-settings/teams/team-creation-page.js +3 -3
  34. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  35. package/dist/components-page/account-settings.js +3 -3
  36. package/dist/components-page/auth-page.js +2 -2
  37. package/dist/components-page/cli-auth-confirm.js +2 -2
  38. package/dist/components-page/cli-auth-confirm.test.js +1 -1
  39. package/dist/components-page/email-verification.js +1 -1
  40. package/dist/components-page/forgot-password.d.ts.map +1 -1
  41. package/dist/components-page/forgot-password.js +6 -7
  42. package/dist/components-page/forgot-password.js.map +1 -1
  43. package/dist/components-page/hexclave-handler-client.d.ts +1 -1
  44. package/dist/components-page/hexclave-handler-client.js +2 -2
  45. package/dist/components-page/magic-link-callback.js +1 -1
  46. package/dist/components-page/mfa.js +7 -22
  47. package/dist/components-page/mfa.js.map +1 -1
  48. package/dist/components-page/oauth-callback.js +2 -2
  49. package/dist/components-page/onboarding.js +4 -4
  50. package/dist/components-page/password-reset.d.ts.map +1 -1
  51. package/dist/components-page/password-reset.js +12 -14
  52. package/dist/components-page/password-reset.js.map +1 -1
  53. package/dist/components-page/team-creation.js +5 -5
  54. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  55. package/dist/dev-tool/dev-tool-core.js +258 -262
  56. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  57. package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
  58. package/dist/dev-tool/dev-tool-styles.d.ts.map +1 -1
  59. package/dist/dev-tool/dev-tool-styles.js +13 -143
  60. package/dist/dev-tool/dev-tool-styles.js.map +1 -1
  61. package/dist/dev-tool/index.d.ts.map +1 -1
  62. package/dist/dev-tool/index.js +4 -11
  63. package/dist/dev-tool/index.js.map +1 -1
  64. package/dist/esm/clickmap/clickmap-core.d.ts +15 -0
  65. package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -0
  66. package/dist/esm/clickmap/clickmap-core.js +1525 -0
  67. package/dist/esm/clickmap/clickmap-core.js.map +1 -0
  68. package/dist/esm/clickmap/clickmap-styles.d.ts +5 -0
  69. package/dist/esm/clickmap/clickmap-styles.d.ts.map +1 -0
  70. package/dist/esm/clickmap/clickmap-styles.js +1093 -0
  71. package/dist/esm/clickmap/clickmap-styles.js.map +1 -0
  72. package/dist/esm/clickmap/index.d.ts +16 -0
  73. package/dist/esm/clickmap/index.d.ts.map +1 -0
  74. package/dist/esm/clickmap/index.js +72 -0
  75. package/dist/esm/clickmap/index.js.map +1 -0
  76. package/dist/esm/components/api-key-dialogs.d.ts +1 -1
  77. package/dist/esm/components/api-key-dialogs.js +5 -5
  78. package/dist/esm/components/credential-sign-in.js +3 -3
  79. package/dist/esm/components/credential-sign-up.js +5 -5
  80. package/dist/esm/components/elements/sidebar-layout.js +1 -1
  81. package/dist/esm/components/elements/user-avatar.js +1 -1
  82. package/dist/esm/components/magic-link-sign-in.js +5 -5
  83. package/dist/esm/components/message-cards/predefined-message-card.js +1 -1
  84. package/dist/esm/components/passkey-button.js +1 -1
  85. package/dist/esm/components/profile-image-editor.js +1 -1
  86. package/dist/esm/components/team-icon.js +1 -1
  87. package/dist/esm/components/team-switcher.js +2 -2
  88. package/dist/esm/components/user-button.js +1 -1
  89. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  90. package/dist/esm/components-page/account-settings/editable-text.js +1 -1
  91. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +3 -3
  92. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  93. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +3 -3
  94. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js +1 -1
  95. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +3 -3
  96. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +4 -4
  97. package/dist/esm/components-page/account-settings.d.ts +1 -1
  98. package/dist/esm/components-page/account-settings.js +3 -3
  99. package/dist/esm/components-page/auth-page.js +2 -2
  100. package/dist/esm/components-page/cli-auth-confirm.js +2 -2
  101. package/dist/esm/components-page/cli-auth-confirm.test.js +1 -1
  102. package/dist/esm/components-page/email-verification.js +1 -1
  103. package/dist/esm/components-page/forgot-password.d.ts.map +1 -1
  104. package/dist/esm/components-page/forgot-password.js +6 -7
  105. package/dist/esm/components-page/forgot-password.js.map +1 -1
  106. package/dist/esm/components-page/hexclave-handler-client.d.ts +1 -1
  107. package/dist/esm/components-page/hexclave-handler-client.js +2 -2
  108. package/dist/esm/components-page/magic-link-callback.js +1 -1
  109. package/dist/esm/components-page/mfa.js +7 -22
  110. package/dist/esm/components-page/mfa.js.map +1 -1
  111. package/dist/esm/components-page/oauth-callback.js +2 -2
  112. package/dist/esm/components-page/onboarding.js +4 -4
  113. package/dist/esm/components-page/password-reset.d.ts.map +1 -1
  114. package/dist/esm/components-page/password-reset.js +11 -13
  115. package/dist/esm/components-page/password-reset.js.map +1 -1
  116. package/dist/esm/components-page/team-creation.js +5 -5
  117. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  118. package/dist/esm/dev-tool/dev-tool-core.js +35 -39
  119. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  120. package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
  121. package/dist/esm/dev-tool/dev-tool-styles.d.ts.map +1 -1
  122. package/dist/esm/dev-tool/dev-tool-styles.js +13 -143
  123. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
  124. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  125. package/dist/esm/dev-tool/index.js +1 -8
  126. package/dist/esm/dev-tool/index.js.map +1 -1
  127. package/dist/esm/generated/global-css.d.ts +1 -1
  128. package/dist/esm/generated/global-css.js +1 -1
  129. package/dist/esm/generated/global-css.js.map +1 -1
  130. package/dist/esm/generated/quetzal-translations.d.ts +2 -2
  131. package/dist/esm/in-page-ui/base-styles.d.ts +5 -0
  132. package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -0
  133. package/dist/esm/in-page-ui/base-styles.js +166 -0
  134. package/dist/esm/in-page-ui/base-styles.js.map +1 -0
  135. package/dist/esm/in-page-ui/dom.d.ts +15 -0
  136. package/dist/esm/in-page-ui/dom.d.ts.map +1 -0
  137. package/dist/esm/in-page-ui/dom.js +44 -0
  138. package/dist/esm/in-page-ui/dom.js.map +1 -0
  139. package/dist/esm/lib/auth.js +2 -2
  140. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +6 -2
  141. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  142. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +21 -1
  143. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  144. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  145. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  146. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  147. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  148. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  149. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  150. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  151. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  152. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  153. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  154. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  155. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +2 -2
  156. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  157. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  158. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  159. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  160. package/dist/esm/lib/hexclave-app/users/index.d.ts +1 -1
  161. package/dist/esm/providers/theme-provider.js +1 -1
  162. package/dist/esm/providers/translation-provider.js +1 -1
  163. package/dist/generated/global-css.d.ts +1 -1
  164. package/dist/generated/global-css.js +1 -1
  165. package/dist/generated/global-css.js.map +1 -1
  166. package/dist/generated/quetzal-translations.d.ts +2 -2
  167. package/dist/in-page-ui/base-styles.d.ts +5 -0
  168. package/dist/in-page-ui/base-styles.d.ts.map +1 -0
  169. package/dist/in-page-ui/base-styles.js +168 -0
  170. package/dist/in-page-ui/base-styles.js.map +1 -0
  171. package/dist/in-page-ui/dom.d.ts +15 -0
  172. package/dist/in-page-ui/dom.d.ts.map +1 -0
  173. package/dist/in-page-ui/dom.js +51 -0
  174. package/dist/in-page-ui/dom.js.map +1 -0
  175. package/dist/index.d.ts +1 -1
  176. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  177. package/dist/lib/auth.js +2 -2
  178. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +5 -1
  179. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  180. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +21 -1
  181. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  182. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  183. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -2
  184. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  185. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  186. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts +13 -0
  187. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  188. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +146 -14
  189. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  190. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +221 -0
  191. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  192. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  193. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  194. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +5 -0
  195. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  196. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  197. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  198. package/dist/lib/hexclave-app/common.d.ts +1 -1
  199. package/dist/providers/hexclave-provider-client.d.ts +1 -1
  200. package/dist/providers/theme-provider.js +1 -1
  201. package/dist/providers/translation-provider.js +1 -1
  202. package/dist/{storage-CKzvsBxG.d.ts → storage-ksajV_p6.d.ts} +1 -1
  203. package/dist/{storage-CKzvsBxG.d.ts.map → storage-ksajV_p6.d.ts.map} +1 -1
  204. package/package.json +4 -4
  205. package/src/clickmap/clickmap-core.ts +1997 -0
  206. package/src/clickmap/clickmap-styles.ts +1102 -0
  207. package/src/clickmap/index.ts +95 -0
  208. package/src/components-page/forgot-password.tsx +1 -2
  209. package/src/components-page/mfa.tsx +12 -21
  210. package/src/components-page/password-reset.tsx +4 -6
  211. package/src/dev-tool/dev-tool-core.ts +38 -65
  212. package/src/dev-tool/dev-tool-styles.ts +13 -142
  213. package/src/dev-tool/index.ts +1 -14
  214. package/src/in-page-ui/base-styles.ts +171 -0
  215. package/src/in-page-ui/dom.ts +80 -0
  216. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +23 -1
  217. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +7 -0
  218. package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +287 -0
  219. package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +226 -16
  220. package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +3 -0
@@ -1,6 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_chunk = require('../chunk-BE-pF4vm.js');
3
+ let _hexclave_shared_dist_utils_dev_tool = require("@hexclave/shared/dist/utils/dev-tool");
3
4
  let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
5
+ let ___in_page_ui_dom_js = require("../in-page-ui/dom.js");
4
6
  let ___lib_hexclave_app_common_js = require("../lib/hexclave-app/common.js");
5
7
  let _hexclave_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
6
8
  let ___lib_hexclave_app_url_targets_js = require("../lib/hexclave-app/url-targets.js");
@@ -12,7 +14,7 @@ let __dev_tool_trigger_position_js = require("./dev-tool-trigger-position.js");
12
14
  //#region src/dev-tool/dev-tool-core.ts
13
15
  const STORAGE_KEY = "__hexclave-dev-tool-state";
14
16
  const TRIGGER_POS_KEY = "hexclave-devtool-trigger-position";
15
- const ROOT_ID = "__hexclave-dev-tool-root";
17
+ const ROOT_ID = _hexclave_shared_dist_utils_dev_tool.DEV_TOOL_ROOT_ID;
16
18
  const GLOBAL_INSTANCE_KEY = "__hexclave-dev-tool-instance";
17
19
  const MAX_LOG_ENTRIES = 500;
18
20
  const CONSOLE_LOG_BATCH_SIZE = 100;
@@ -102,19 +104,6 @@ function createStateStore() {
102
104
  }
103
105
  };
104
106
  }
105
- function isDevToolGlobalInstance(value) {
106
- return typeof value === "object" && value !== null && typeof Reflect.get(value, "cleanup") === "function";
107
- }
108
- function getGlobalDevToolInstance() {
109
- if (typeof window === "undefined") return null;
110
- const value = Reflect.get(window, GLOBAL_INSTANCE_KEY);
111
- return isDevToolGlobalInstance(value) ? value : null;
112
- }
113
- function setGlobalDevToolInstance(instance) {
114
- if (typeof window === "undefined") return;
115
- if (instance === null) Reflect.deleteProperty(window, GLOBAL_INSTANCE_KEY);
116
- else Reflect.set(window, GLOBAL_INSTANCE_KEY, instance);
117
- }
118
107
  function getGlobalLogStore() {
119
108
  const g = globalThis;
120
109
  if (!g.__STACK_DEV_TOOL_LOG_STORE__) g.__STACK_DEV_TOOL_LOG_STORE__ = {
@@ -194,27 +183,6 @@ function generateRandomEmail() {
194
183
  for (let i = 0; i < 8; i++) id += chars[Math.floor(Math.random() * 36)];
195
184
  return `dev-${id}@test.hexclave.com`;
196
185
  }
197
- function h(tag, attrs, ...children) {
198
- const el = document.createElement(tag);
199
- if (attrs) for (const [k, v] of Object.entries(attrs)) {
200
- if (v == null) continue;
201
- if (k === "className") el.className = v;
202
- else if (k === "style" && typeof v === "object") Object.assign(el.style, v);
203
- else if (k.startsWith("on") && typeof v === "function") el.addEventListener(k.slice(2).toLowerCase(), v);
204
- else el.setAttribute(k, String(v));
205
- }
206
- for (const child of children) {
207
- if (child == null) continue;
208
- el.appendChild(typeof child === "string" ? document.createTextNode(child) : child);
209
- }
210
- return el;
211
- }
212
- function setHtml(el, html) {
213
- el.innerHTML = html;
214
- }
215
- function hasAppendChild(value) {
216
- return typeof value === "object" && value !== null && typeof Reflect.get(value, "appendChild") === "function";
217
- }
218
186
  function appendInlineMarkdown(container, text) {
219
187
  const tokenPattern = /(\[[^\]]+\]\([^)]+\)|`[^`\n]+`|\*\*[^*\n]+\*\*|__[^_\n]+__|\*[^*\n]+\*|_[^_\n]+_)/g;
220
188
  let lastIndex = 0;
@@ -222,13 +190,13 @@ function appendInlineMarkdown(container, text) {
222
190
  while ((match = tokenPattern.exec(text)) !== null) {
223
191
  if (match.index > lastIndex) container.appendChild(document.createTextNode(text.slice(lastIndex, match.index)));
224
192
  const token = match[0];
225
- if (token.startsWith("`")) container.appendChild(h("code", { className: "sdt-ai-inline-code" }, token.slice(1, -1)));
193
+ if (token.startsWith("`")) container.appendChild((0, ___in_page_ui_dom_js.h)("code", { className: "sdt-ai-inline-code" }, token.slice(1, -1)));
226
194
  else if (token.startsWith("**") || token.startsWith("__")) {
227
- const bold = h("strong", { className: "sdt-ai-bold" });
195
+ const bold = (0, ___in_page_ui_dom_js.h)("strong", { className: "sdt-ai-bold" });
228
196
  appendInlineMarkdown(bold, token.slice(2, -2));
229
197
  container.appendChild(bold);
230
198
  } else if (token.startsWith("*") || token.startsWith("_")) {
231
- const italic = h("em");
199
+ const italic = (0, ___in_page_ui_dom_js.h)("em");
232
200
  appendInlineMarkdown(italic, token.slice(1, -1));
233
201
  container.appendChild(italic);
234
202
  } else {
@@ -237,7 +205,7 @@ function appendInlineMarkdown(container, text) {
237
205
  const [, linkText, href] = linkMatch;
238
206
  const trimmedHref = href.trim();
239
207
  if (/^(https?:\/\/|mailto:)/i.test(trimmedHref)) {
240
- const link = h("a", {
208
+ const link = (0, ___in_page_ui_dom_js.h)("a", {
241
209
  className: "sdt-ai-link",
242
210
  href: trimmedHref,
243
211
  target: "_blank",
@@ -319,14 +287,14 @@ function createTrigger(onClick) {
319
287
  btn.style.left = pos.left + "px";
320
288
  btn.style.top = pos.top + "px";
321
289
  }
322
- const btn = h("button", {
290
+ const btn = (0, ___in_page_ui_dom_js.h)("button", {
323
291
  className: "sdt-trigger",
324
292
  "aria-label": "Toggle Hexclave Dev Tools",
325
293
  "data-hexclave-devtool-trigger": "true",
326
294
  title: "Hexclave Dev Tools"
327
295
  });
328
- const logoSpan = h("span", { className: "sdt-trigger-logo" });
329
- setHtml(logoSpan, HEXCLAVE_LOGO_SVG);
296
+ const logoSpan = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-trigger-logo" });
297
+ (0, ___in_page_ui_dom_js.setHtml)(logoSpan, HEXCLAVE_LOGO_SVG);
330
298
  btn.appendChild(logoSpan);
331
299
  let placement = loadPlacement() ?? { corner: "bottom-right" };
332
300
  let pos = (0, __dev_tool_trigger_position_js.resolveTriggerPosition)(placement, triggerSize, {
@@ -413,21 +381,21 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
413
381
  const barClass = variant === "pills" ? "sdt-console-tabs" : "sdt-tabbar";
414
382
  const tabClass = variant === "pills" ? "sdt-console-tab" : "sdt-tab";
415
383
  const indicatorClass = variant === "pills" ? "sdt-console-tab-indicator" : "sdt-tab-indicator";
416
- const bar = h("div", { className: barClass });
417
- const indicator = h("div", { className: indicatorClass });
384
+ const bar = (0, ___in_page_ui_dom_js.h)("div", { className: barClass });
385
+ const indicator = (0, ___in_page_ui_dom_js.h)("div", { className: indicatorClass });
418
386
  indicator.style.opacity = "0";
419
387
  bar.appendChild(indicator);
420
388
  let current = activeTab;
421
389
  let isInitial = true;
422
390
  const buttons = tabs.map((tab) => {
423
- const btn = h("button", {
391
+ const btn = (0, ___in_page_ui_dom_js.h)("button", {
424
392
  className: tabClass,
425
393
  "data-tab-id": tab.id,
426
394
  "data-active": String(tab.id === activeTab)
427
395
  });
428
396
  if (tab.icon) {
429
- const iconSpan = h("span", { className: "sdt-tab-icon" });
430
- setHtml(iconSpan, tab.icon);
397
+ const iconSpan = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-tab-icon" });
398
+ (0, ___in_page_ui_dom_js.setHtml)(iconSpan, tab.icon);
431
399
  btn.appendChild(iconSpan);
432
400
  }
433
401
  btn.appendChild(document.createTextNode(tab.label));
@@ -435,7 +403,7 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
435
403
  bar.appendChild(btn);
436
404
  return btn;
437
405
  });
438
- if (variant === "bar") bar.appendChild(h("div", { className: "sdt-tabbar-spacer" }));
406
+ if (variant === "bar") bar.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tabbar-spacer" }));
439
407
  if (opts?.trailing) bar.appendChild(opts.trailing);
440
408
  function measure() {
441
409
  const btn = bar.querySelector(`[data-tab-id="${current}"]`);
@@ -463,14 +431,14 @@ function createTabBar(tabs, activeTab, onTabChange, opts) {
463
431
  };
464
432
  }
465
433
  function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unable to load content", errorDetail, openExternallyLabel) {
466
- const container = h("div", { className: "sdt-iframe-container" });
467
- if (openExternallyLabel != null) container.appendChild(h("div", { className: "sdt-iframe-toolbar" }, h("a", {
434
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-container" });
435
+ if (openExternallyLabel != null) container.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-toolbar" }, (0, ___in_page_ui_dom_js.h)("a", {
468
436
  href: src,
469
437
  target: "_blank",
470
438
  rel: "noopener noreferrer",
471
439
  className: "sdt-iframe-open-link"
472
440
  }, openExternallyLabel)));
473
- const loadingEl = h("div", { className: "sdt-iframe-loading" }, loadingMsg);
441
+ const loadingEl = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-loading" }, loadingMsg);
474
442
  container.appendChild(loadingEl);
475
443
  const iframe = document.createElement("iframe");
476
444
  iframe.src = src;
@@ -484,18 +452,18 @@ function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unab
484
452
  iframe.addEventListener("error", () => {
485
453
  loadingEl.style.display = "none";
486
454
  container.innerHTML = "";
487
- const errDiv = h("div", { className: "sdt-iframe-error" });
488
- errDiv.appendChild(h("div", null, errorMsg));
489
- if (errorDetail) errDiv.appendChild(h("div", { style: {
455
+ const errDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-iframe-error" });
456
+ errDiv.appendChild((0, ___in_page_ui_dom_js.h)("div", null, errorMsg));
457
+ if (errorDetail) errDiv.appendChild((0, ___in_page_ui_dom_js.h)("div", { style: {
490
458
  fontSize: "12px",
491
459
  color: "var(--sdt-text-tertiary)"
492
460
  } }, errorDetail));
493
- const retryBtn = h("button", { className: "sdt-iframe-error-btn" }, "Retry");
461
+ const retryBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-iframe-error-btn" }, "Retry");
494
462
  retryBtn.addEventListener("click", () => {
495
463
  container.replaceWith(createIframeTab(src, title, loadingMsg, errorMsg, errorDetail, openExternallyLabel));
496
464
  });
497
465
  errDiv.appendChild(retryBtn);
498
- const link = h("a", {
466
+ const link = (0, ___in_page_ui_dom_js.h)("a", {
499
467
  href: src,
500
468
  target: "_blank",
501
469
  rel: "noopener noreferrer",
@@ -511,34 +479,38 @@ function createIframeTab(src, title, loadingMsg = "Loading…", errorMsg = "Unab
511
479
  container.appendChild(iframe);
512
480
  return container;
513
481
  }
482
+ function hasPersistentTokenStoreForDevTool(app) {
483
+ return app[___lib_hexclave_app_common_js.hexclaveAppInternalsSymbol].getConstructorOptions().tokenStore !== null;
484
+ }
514
485
  function createOverviewTab(app) {
515
- const container = h("div", { className: "sdt-ov" });
516
- const heroCard = h("div", { className: "sdt-ov-card sdt-ov-card-hero" });
517
- heroCard.appendChild(h("div", { className: "sdt-ov-label" }, "Identity"));
518
- const userRow = h("div", { className: "sdt-ov-user-row" });
519
- const avatar = h("div", { className: "sdt-ov-avatar" }, "?");
520
- const userMeta = h("div", { className: "sdt-ov-user-meta" });
521
- const userName = h("div", { className: "sdt-ov-user-name" }, "Loading…");
522
- const userEmail = h("div", { className: "sdt-ov-user-email" }, "");
523
- const authIndicator = h("div", {
486
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov" });
487
+ const hasPersistentTokenStore = hasPersistentTokenStoreForDevTool(app);
488
+ const heroCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-hero" });
489
+ heroCard.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-label" }, "Identity"));
490
+ const userRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-row" });
491
+ const avatar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-avatar" }, "?");
492
+ const userMeta = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-meta" });
493
+ const userName = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-name" }, "Loading…");
494
+ const userEmail = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-user-email" }, "");
495
+ const authIndicator = (0, ___in_page_ui_dom_js.h)("div", {
524
496
  className: "sdt-ov-auth-indicator",
525
497
  style: { display: "none" }
526
498
  }, "Authenticated");
527
499
  userMeta.append(userName, userEmail, authIndicator);
528
500
  userRow.append(avatar, userMeta);
529
501
  heroCard.appendChild(userRow);
530
- const actions = h("div", { className: "sdt-ov-actions" });
531
- const toast = h("div", {
502
+ const actions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-actions" });
503
+ const toast = (0, ___in_page_ui_dom_js.h)("div", {
532
504
  className: "sdt-ov-toast",
533
505
  style: { display: "none" }
534
506
  });
535
- const emailRow = h("div", { className: "sdt-ov-email-input" });
536
- const emailInput = h("input", {
507
+ const emailRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-email-input" });
508
+ const emailInput = (0, ___in_page_ui_dom_js.h)("input", {
537
509
  type: "email",
538
510
  placeholder: "Sign in as email…"
539
511
  });
540
- const emailBtn = h("button", null);
541
- setHtml(emailBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
512
+ const emailBtn = (0, ___in_page_ui_dom_js.h)("button", null);
513
+ (0, ___in_page_ui_dom_js.setHtml)(emailBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
542
514
  emailRow.append(emailInput, emailBtn);
543
515
  function isBestEffortOverviewError(error) {
544
516
  if (error instanceof DOMException && error.name === "AbortError") return true;
@@ -558,8 +530,17 @@ function createOverviewTab(app) {
558
530
  let loading = false;
559
531
  function rebuildActions() {
560
532
  actions.innerHTML = "";
533
+ if (!hasPersistentTokenStore) {
534
+ userName.textContent = "Current user unavailable";
535
+ userEmail.textContent = "This app was initialized without a token store";
536
+ actions.appendChild((0, ___in_page_ui_dom_js.h)("button", {
537
+ className: "sdt-ov-btn sdt-ov-btn-wide",
538
+ disabled: "true"
539
+ }, "Session actions unavailable"));
540
+ return;
541
+ }
561
542
  if (currentUser) {
562
- const signOutBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-danger" }, "Sign Out");
543
+ const signOutBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-danger" }, "Sign Out");
563
544
  signOutBtn.disabled = loading;
564
545
  signOutBtn.addEventListener("click", () => {
565
546
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
@@ -575,14 +556,14 @@ function createOverviewTab(app) {
575
556
  await refreshUser();
576
557
  });
577
558
  });
578
- const randomBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-primary" }, "Random User");
559
+ const randomBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-primary" }, "Random User");
579
560
  randomBtn.disabled = loading;
580
561
  randomBtn.addEventListener("click", () => {
581
562
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doQuickSignIn());
582
563
  });
583
564
  actions.append(signOutBtn, randomBtn);
584
565
  } else {
585
- const quickBtn = h("button", { className: "sdt-ov-btn sdt-ov-btn-primary sdt-ov-btn-wide" }, loading ? "Working…" : "Quick Sign In");
566
+ const quickBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ov-btn sdt-ov-btn-primary sdt-ov-btn-wide" }, loading ? "Working…" : "Quick Sign In");
586
567
  quickBtn.disabled = loading;
587
568
  quickBtn.addEventListener("click", () => {
588
569
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doQuickSignIn());
@@ -680,10 +661,10 @@ function createOverviewTab(app) {
680
661
  if (e.key === "Enter") (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(doSignInAs(emailInput.value));
681
662
  });
682
663
  heroCard.append(actions, toast);
683
- const methodsCard = h("div", { className: "sdt-ov-card sdt-ov-card-auth" });
684
- methodsCard.appendChild(h("div", { className: "sdt-ov-label" }, "Auth Methods"));
685
- const authGrid = h("div", { className: "sdt-ov-auth-grid" });
686
- for (let i = 0; i < 3; i++) authGrid.appendChild(h("div", { className: "sdt-ov-method sdt-ov-skeleton-pill" }));
664
+ const methodsCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-auth" });
665
+ methodsCard.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-label" }, "Auth Methods"));
666
+ const authGrid = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-auth-grid" });
667
+ for (let i = 0; i < 3; i++) authGrid.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-skeleton-pill" }));
687
668
  methodsCard.appendChild(authGrid);
688
669
  let hasActiveAuthMethod = null;
689
670
  async function loadAuthMethods() {
@@ -707,18 +688,18 @@ function createOverviewTab(app) {
707
688
  }
708
689
  ];
709
690
  for (const m of methods) {
710
- const pill = h("div", { className: `sdt-ov-method ${m.enabled ? "sdt-ov-method-on" : "sdt-ov-method-off"}` });
711
- pill.appendChild(h("span", { className: "sdt-ov-method-name" }, m.label));
691
+ const pill = (0, ___in_page_ui_dom_js.h)("div", { className: `sdt-ov-method ${m.enabled ? "sdt-ov-method-on" : "sdt-ov-method-off"}` });
692
+ pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, m.label));
712
693
  authGrid.appendChild(pill);
713
694
  }
714
695
  for (const p of config.oauthProviders) {
715
- const pill = h("div", { className: "sdt-ov-method sdt-ov-method-on sdt-ov-method-oauth" });
716
- pill.appendChild(h("span", { className: "sdt-ov-method-name" }, p.id));
696
+ const pill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-method-on sdt-ov-method-oauth" });
697
+ pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, p.id));
717
698
  authGrid.appendChild(pill);
718
699
  }
719
700
  if (!config.signUpEnabled) {
720
- const pill = h("div", { className: "sdt-ov-method sdt-ov-method-warn" });
721
- pill.appendChild(h("span", { className: "sdt-ov-method-name" }, "Sign-up off"));
701
+ const pill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-method sdt-ov-method-warn" });
702
+ pill.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-method-name" }, "Sign-up off"));
722
703
  authGrid.appendChild(pill);
723
704
  }
724
705
  buildChecklist();
@@ -730,7 +711,7 @@ function createOverviewTab(app) {
730
711
  }
731
712
  }
732
713
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(loadAuthMethods());
733
- const checksCard = h("div", { className: "sdt-ov-card sdt-ov-card-checks" });
714
+ const checksCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-card sdt-ov-card-checks" });
734
715
  const projectId = app.projectId;
735
716
  let checksCardMounted = false;
736
717
  function buildChecklist() {
@@ -746,10 +727,14 @@ function createOverviewTab(app) {
746
727
  label: "Auth method active",
747
728
  hint: hasActiveAuthMethod === null ? "Still checking project config" : null
748
729
  },
749
- {
730
+ hasPersistentTokenStore ? {
750
731
  ok: !!currentUser,
751
732
  label: "Sign in a test user",
752
733
  hint: "Use “Quick Sign In” above →"
734
+ } : {
735
+ ok: true,
736
+ label: "Current-user tools unavailable",
737
+ hint: null
753
738
  }
754
739
  ];
755
740
  const passCount = checks.filter((c) => c.ok).length;
@@ -764,31 +749,42 @@ function createOverviewTab(app) {
764
749
  container.appendChild(checksCard);
765
750
  checksCardMounted = true;
766
751
  }
767
- const titleRow = h("div", { className: "sdt-ov-checks-header" });
768
- const titleLabel = h("div", {
752
+ const titleRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-header" });
753
+ const titleLabel = (0, ___in_page_ui_dom_js.h)("div", {
769
754
  className: "sdt-ov-label",
770
755
  style: {
771
756
  marginBottom: "0",
772
757
  color: "var(--sdt-warning)"
773
758
  }
774
759
  }, "Setup");
775
- const badge = h("span", { className: "sdt-ov-checks-badge sdt-ov-checks-badge-warn" }, `${passCount}\u200a/\u200a${checks.length}`);
760
+ const badge = (0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-checks-badge sdt-ov-checks-badge-warn" }, `${passCount}\u200a/\u200a${checks.length}`);
776
761
  titleRow.append(titleLabel, badge);
777
762
  checksCard.appendChild(titleRow);
778
- const bar = h("div", { className: "sdt-ov-checks-bar" });
779
- const fill = h("div", { className: "sdt-ov-checks-bar-fill" });
763
+ const bar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-bar" });
764
+ const fill = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-checks-bar-fill" });
780
765
  fill.style.width = `${passCount / checks.length * 100}%`;
781
766
  bar.appendChild(fill);
782
767
  checksCard.appendChild(bar);
783
768
  for (const c of checks) {
784
- const row = h("div", { className: "sdt-ov-setup-row" });
785
- row.appendChild(h("span", { className: `sdt-ov-setup-dot ${c.ok ? "sdt-ov-setup-dot-ok" : "sdt-ov-setup-dot-warn"}` }));
786
- row.appendChild(h("span", { className: "sdt-ov-setup-label" }, c.label));
787
- if (!c.ok && c.hint) row.appendChild(h("span", { className: "sdt-ov-setup-hint" }, c.hint));
769
+ const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ov-setup-row" });
770
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ov-setup-dot ${c.ok ? "sdt-ov-setup-dot-ok" : "sdt-ov-setup-dot-warn"}` }));
771
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-setup-label" }, c.label));
772
+ if (!c.ok && c.hint) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ov-setup-hint" }, c.hint));
788
773
  checksCard.appendChild(row);
789
774
  }
790
775
  }
791
776
  async function refreshUser() {
777
+ if (!hasPersistentTokenStore) {
778
+ avatar.className = "sdt-ov-avatar";
779
+ avatar.textContent = "?";
780
+ userName.textContent = "Current user unavailable";
781
+ userEmail.textContent = "This app was initialized without a token store";
782
+ authIndicator.style.display = "none";
783
+ currentUser = null;
784
+ rebuildActions();
785
+ buildChecklist();
786
+ return;
787
+ }
792
788
  try {
793
789
  currentUser = await app.getUser();
794
790
  if (currentUser) {
@@ -830,31 +826,31 @@ function createOverviewTab(app) {
830
826
  };
831
827
  }
832
828
  function createConsoleTab(logStore) {
833
- const container = h("div", { className: "sdt-console-panel" });
829
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-panel" });
834
830
  const EVENT_TYPE_STYLES = {
835
831
  "error": "sdt-badge-error",
836
832
  "info": "sdt-badge-info"
837
833
  };
838
- const title = h("div", { className: "sdt-console-title" }, "Logs");
839
- const actions = h("div", { className: "sdt-console-actions" });
840
- const copyBtn = h("button", {
834
+ const title = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-title" }, "Logs");
835
+ const actions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-actions" });
836
+ const copyBtn = (0, ___in_page_ui_dom_js.h)("button", {
841
837
  className: "sdt-console-action-btn",
842
838
  title: "Copy logs"
843
839
  });
844
- setHtml(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
845
- const exportBtn = h("button", {
840
+ (0, ___in_page_ui_dom_js.setHtml)(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
841
+ const exportBtn = (0, ___in_page_ui_dom_js.h)("button", {
846
842
  className: "sdt-console-action-btn",
847
843
  title: "Export logs"
848
844
  });
849
- setHtml(exportBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></svg>Export");
850
- const clearBtn = h("button", {
845
+ (0, ___in_page_ui_dom_js.setHtml)(exportBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><polyline points=\"7 10 12 15 17 10\"/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/></svg>Export");
846
+ const clearBtn = (0, ___in_page_ui_dom_js.h)("button", {
851
847
  className: "sdt-console-action-btn",
852
848
  title: "Clear logs"
853
849
  });
854
- setHtml(clearBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/></svg>Clear");
850
+ (0, ___in_page_ui_dom_js.setHtml)(clearBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 6 5 6 21 6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/></svg>Clear");
855
851
  actions.append(copyBtn, exportBtn, clearBtn);
856
- container.appendChild(h("div", { className: "sdt-console-header" }, title, actions));
857
- const contentArea = h("div", { className: "sdt-console-log-scroll sdt-tab-content-fade" });
852
+ container.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-header" }, title, actions));
853
+ const contentArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-console-log-scroll sdt-tab-content-fade" });
858
854
  container.appendChild(contentArea);
859
855
  let visibleLogCount = CONSOLE_LOG_BATCH_SIZE;
860
856
  function getMergedLogs() {
@@ -889,19 +885,19 @@ function createConsoleTab(logStore) {
889
885
  function renderLogItem(item) {
890
886
  if (item.kind === "api") {
891
887
  const log = item.entry;
892
- const row = h("div", { className: "sdt-log-item" });
893
- row.appendChild(h("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
894
- row.appendChild(h("span", { className: `sdt-log-method sdt-log-method-${log.method.toLowerCase()}` }, log.method));
895
- row.appendChild(h("span", { className: "sdt-log-url" }, log.url));
896
- if (log.status !== void 0) row.appendChild(h("span", { className: `sdt-log-status ${log.status < 400 ? "sdt-log-status-ok" : "sdt-log-status-err"}` }, String(log.status)));
897
- if (log.duration !== void 0) row.appendChild(h("span", { className: "sdt-log-time" }, log.duration + "ms"));
888
+ const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-item" });
889
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
890
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-log-method sdt-log-method-${log.method.toLowerCase()}` }, log.method));
891
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-url" }, log.url));
892
+ if (log.status !== void 0) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-log-status ${log.status < 400 ? "sdt-log-status-ok" : "sdt-log-status-err"}` }, String(log.status)));
893
+ if (log.duration !== void 0) row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, log.duration + "ms"));
898
894
  return row;
899
895
  }
900
896
  const log = item.entry;
901
- const row = h("div", { className: "sdt-log-item" });
902
- row.appendChild(h("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
903
- row.appendChild(h("span", { className: `sdt-badge ${EVENT_TYPE_STYLES[log.type] || "sdt-badge-info"}` }, log.type));
904
- row.appendChild(h("span", { className: "sdt-log-message" }, log.message));
897
+ const row = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-item" });
898
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-time" }, formatTimestamp(log.timestamp)));
899
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-badge ${EVENT_TYPE_STYLES[log.type] || "sdt-badge-info"}` }, log.type));
900
+ row.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-log-message" }, log.message));
905
901
  return row;
906
902
  }
907
903
  function renderLogs() {
@@ -913,9 +909,9 @@ function createConsoleTab(logStore) {
913
909
  contentArea.innerHTML = "<div class=\"sdt-empty-state\"><div class=\"sdt-empty-state-icon\">📋</div><div>No logs recorded yet</div><div style=\"font-size:12px;color:var(--sdt-text-tertiary)\">API calls and auth events will appear here</div></div>";
914
910
  return;
915
911
  }
916
- const list = h("div", { className: "sdt-log-list" });
912
+ const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-list" });
917
913
  for (const item of merged.slice(0, visibleLogCount)) list.appendChild(renderLogItem(item));
918
- if (visibleLogCount < merged.length) list.appendChild(h("div", { className: "sdt-log-load-hint" }, `${merged.length - visibleLogCount} older logs available`));
914
+ if (visibleLogCount < merged.length) list.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-log-load-hint" }, `${merged.length - visibleLogCount} older logs available`));
919
915
  contentArea.appendChild(list);
920
916
  contentArea.scrollTop = Math.min(previousScrollTop, contentArea.scrollHeight);
921
917
  }
@@ -933,14 +929,14 @@ function createConsoleTab(logStore) {
933
929
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(formatLogsForExport()).then(() => {
934
930
  copyBtn.textContent = "✓ Copied";
935
931
  setTimeout(() => {
936
- setHtml(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
932
+ (0, ___in_page_ui_dom_js.setHtml)(copyBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>Copy");
937
933
  }, 1500);
938
934
  }));
939
935
  });
940
936
  exportBtn.addEventListener("click", () => {
941
937
  const blob = new Blob([formatLogsForExport()], { type: "text/plain;charset=utf-8" });
942
938
  const url = URL.createObjectURL(blob);
943
- const link = h("a", {
939
+ const link = (0, ___in_page_ui_dom_js.h)("a", {
944
940
  href: url,
945
941
  download: `hexclave-dev-tool-logs-${(/* @__PURE__ */ new Date()).toISOString()}.txt`
946
942
  });
@@ -965,13 +961,13 @@ function createConsoleTab(logStore) {
965
961
  };
966
962
  }
967
963
  function createAITab(app) {
968
- const container = h("div", { className: "sdt-ai-container" });
964
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-container" });
969
965
  const apiBaseUrl = resolveApiBaseUrl(app);
970
966
  const messages = [];
971
967
  let aiLoading = false;
972
968
  let activeAiAbortController = null;
973
- const messagesArea = h("div", { className: "sdt-ai-messages" });
974
- const inputArea = h("div", { className: "sdt-ai-input-area" });
969
+ const messagesArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-messages" });
970
+ const inputArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-input-area" });
975
971
  const SUGGESTED_QUESTIONS = [
976
972
  {
977
973
  icon: "🔒",
@@ -1000,34 +996,34 @@ function createAITab(app) {
1000
996
  return headers;
1001
997
  }
1002
998
  function renderToolCard(toolCall) {
1003
- const toolCard = h("div", { className: "sdt-ai-tool-card" });
1004
- const header = h("button", {
999
+ const toolCard = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-card" });
1000
+ const header = (0, ___in_page_ui_dom_js.h)("button", {
1005
1001
  className: "sdt-ai-tool-header",
1006
1002
  type: "button"
1007
1003
  });
1008
- header.appendChild(h("span", { className: "sdt-ai-tool-name" }, toolCall.toolName));
1009
- header.appendChild(h("span", { className: `sdt-ai-tool-status sdt-ai-tool-status-${toolCall.state}` }, toolCall.state));
1010
- header.appendChild(h("span", { className: `sdt-ai-tool-chevron${toolCall.isExpanded ? " sdt-ai-tool-chevron-open" : ""}` }, "▾"));
1004
+ header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-tool-name" }, toolCall.toolName));
1005
+ header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ai-tool-status sdt-ai-tool-status-${toolCall.state}` }, toolCall.state));
1006
+ header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-ai-tool-chevron${toolCall.isExpanded ? " sdt-ai-tool-chevron-open" : ""}` }, "▾"));
1011
1007
  header.addEventListener("click", () => {
1012
1008
  toolCall.isExpanded = !toolCall.isExpanded;
1013
1009
  renderMessages();
1014
1010
  });
1015
1011
  toolCard.appendChild(header);
1016
1012
  if (toolCall.isExpanded) {
1017
- const body = h("div", { className: "sdt-ai-tool-body" });
1013
+ const body = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-body" });
1018
1014
  if (toolCall.argsText !== null) {
1019
- body.appendChild(h("div", { className: "sdt-ai-tool-label" }, "Args"));
1020
- const argsPre = h("pre", { className: "sdt-ai-tool-pre" });
1021
- argsPre.appendChild(h("code", null, toolCall.argsText));
1015
+ body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, "Args"));
1016
+ const argsPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
1017
+ argsPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, toolCall.argsText));
1022
1018
  body.appendChild(argsPre);
1023
1019
  }
1024
1020
  if (toolCall.resultText !== null) {
1025
- body.appendChild(h("div", { className: "sdt-ai-tool-label" }, toolCall.state === "error" ? "Error" : "Result"));
1026
- const resultPre = h("pre", { className: "sdt-ai-tool-pre" });
1027
- resultPre.appendChild(h("code", null, toolCall.resultText));
1021
+ body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, toolCall.state === "error" ? "Error" : "Result"));
1022
+ const resultPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
1023
+ resultPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, toolCall.resultText));
1028
1024
  body.appendChild(resultPre);
1029
1025
  }
1030
- if (toolCall.state === "running") body.appendChild(h("div", { className: "sdt-ai-tool-running" }, "Running..."));
1026
+ if (toolCall.state === "running") body.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-running" }, "Running..."));
1031
1027
  toolCard.appendChild(body);
1032
1028
  }
1033
1029
  return toolCard;
@@ -1035,17 +1031,17 @@ function createAITab(app) {
1035
1031
  function renderMessages() {
1036
1032
  messagesArea.innerHTML = "";
1037
1033
  if (messages.length === 0) {
1038
- const empty = h("div", { className: "sdt-ai-empty" });
1039
- const icon = h("div", { className: "sdt-ai-empty-icon" });
1040
- setHtml(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
1034
+ const empty = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty" });
1035
+ const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-icon" });
1036
+ (0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
1041
1037
  empty.appendChild(icon);
1042
- empty.appendChild(h("div", { className: "sdt-ai-empty-title" }, "Ask AI"));
1043
- empty.appendChild(h("div", { className: "sdt-ai-empty-desc" }, "Get help with Hexclave integration, troubleshooting, and best practices."));
1044
- const suggestions = h("div", { className: "sdt-ai-suggestions" });
1038
+ empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-title" }, "Ask AI"));
1039
+ empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-empty-desc" }, "Get help with Hexclave integration, troubleshooting, and best practices."));
1040
+ const suggestions = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-suggestions" });
1045
1041
  for (const q of SUGGESTED_QUESTIONS) {
1046
- const btn = h("button", { className: "sdt-ai-suggestion" });
1047
- btn.appendChild(h("span", { className: "sdt-ai-suggestion-icon" }, q.icon));
1048
- btn.appendChild(h("span", null, q.text));
1042
+ const btn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ai-suggestion" });
1043
+ btn.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-suggestion-icon" }, q.icon));
1044
+ btn.appendChild((0, ___in_page_ui_dom_js.h)("span", null, q.text));
1049
1045
  btn.addEventListener("click", () => {
1050
1046
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(sendMessage(q.text));
1051
1047
  });
@@ -1055,43 +1051,43 @@ function createAITab(app) {
1055
1051
  messagesArea.appendChild(empty);
1056
1052
  return;
1057
1053
  }
1058
- const list = h("div", { className: "sdt-ai-message-list" });
1054
+ const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-message-list" });
1059
1055
  for (const msg of messages) if (msg.role === "user") {
1060
- const msgDiv = h("div", { className: "sdt-ai-msg sdt-ai-msg-user" });
1061
- const bubble = h("div", { className: "sdt-ai-bubble sdt-ai-bubble-user" });
1062
- bubble.appendChild(h("p", null, msg.content));
1056
+ const msgDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-msg sdt-ai-msg-user" });
1057
+ const bubble = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-bubble sdt-ai-bubble-user" });
1058
+ bubble.appendChild((0, ___in_page_ui_dom_js.h)("p", null, msg.content));
1063
1059
  msgDiv.appendChild(bubble);
1064
- const avatarDiv = h("div", { className: "sdt-ai-avatar sdt-ai-avatar-user" });
1065
- setHtml(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>");
1060
+ const avatarDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-avatar sdt-ai-avatar-user" });
1061
+ (0, ___in_page_ui_dom_js.setHtml)(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/></svg>");
1066
1062
  msgDiv.appendChild(avatarDiv);
1067
1063
  list.appendChild(msgDiv);
1068
1064
  } else {
1069
- const msgDiv = h("div", { className: "sdt-ai-msg sdt-ai-msg-assistant" });
1070
- const avatarDiv = h("div", { className: "sdt-ai-avatar sdt-ai-avatar-assistant" });
1071
- setHtml(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
1065
+ const msgDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-msg sdt-ai-msg-assistant" });
1066
+ const avatarDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-avatar sdt-ai-avatar-assistant" });
1067
+ (0, ___in_page_ui_dom_js.setHtml)(avatarDiv, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"/></svg>");
1072
1068
  msgDiv.appendChild(avatarDiv);
1073
- const bubble = h("div", { className: "sdt-ai-bubble sdt-ai-bubble-assistant" });
1069
+ const bubble = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-bubble sdt-ai-bubble-assistant" });
1074
1070
  if (msg.parts.length === 0) bubble.innerHTML = "<div class=\"sdt-ai-thinking\"><span class=\"sdt-ai-thinking-dot\"></span><span class=\"sdt-ai-thinking-dot\"></span><span class=\"sdt-ai-thinking-dot\"></span></div>";
1075
1071
  else for (const part of msg.parts) {
1076
1072
  if (part.type === "text") {
1077
- const textContainer = h("div", { className: "sdt-ai-part-text" });
1073
+ const textContainer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-part-text" });
1078
1074
  renderMarkdownInto(textContainer, part.content);
1079
1075
  bubble.appendChild(textContainer);
1080
1076
  continue;
1081
1077
  }
1082
1078
  const toolCall = msg.toolCallsById.get(part.toolCallId);
1083
1079
  if (toolCall == null) {
1084
- const missingTool = h("div", { className: "sdt-ai-tool-card" });
1085
- const missingBody = h("div", { className: "sdt-ai-tool-body" });
1086
- missingBody.appendChild(h("div", { className: "sdt-ai-tool-label" }, "Error"));
1087
- const missingPre = h("pre", { className: "sdt-ai-tool-pre" });
1088
- missingPre.appendChild(h("code", null, `Missing tool call state for ${part.toolCallId}`));
1080
+ const missingTool = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-card" });
1081
+ const missingBody = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-body" });
1082
+ missingBody.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tool-label" }, "Error"));
1083
+ const missingPre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-tool-pre" });
1084
+ missingPre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, `Missing tool call state for ${part.toolCallId}`));
1089
1085
  missingBody.appendChild(missingPre);
1090
1086
  missingTool.appendChild(missingBody);
1091
1087
  bubble.appendChild(missingTool);
1092
1088
  continue;
1093
1089
  }
1094
- const toolsContainer = h("div", { className: "sdt-ai-tools" });
1090
+ const toolsContainer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-tools" });
1095
1091
  toolsContainer.appendChild(renderToolCard(toolCall));
1096
1092
  bubble.appendChild(toolsContainer);
1097
1093
  }
@@ -1103,7 +1099,7 @@ function createAITab(app) {
1103
1099
  }
1104
1100
  function renderMarkdownInto(el, content) {
1105
1101
  function appendBlockWithInlineMarkdown(tag, className, text) {
1106
- const block = h(tag, { className });
1102
+ const block = (0, ___in_page_ui_dom_js.h)(tag, { className });
1107
1103
  appendInlineMarkdown(block, text);
1108
1104
  el.appendChild(block);
1109
1105
  }
@@ -1120,10 +1116,10 @@ function createAITab(app) {
1120
1116
  i++;
1121
1117
  }
1122
1118
  i++;
1123
- const block = h("div", { className: "sdt-ai-code-block" });
1124
- const header = h("div", { className: "sdt-ai-code-header" });
1125
- header.appendChild(h("span", { className: "sdt-ai-code-lang" }, lang || "CODE"));
1126
- const copyBtn = h("button", { className: "sdt-ai-copy-btn" }, "⎘");
1119
+ const block = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-code-block" });
1120
+ const header = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-code-header" });
1121
+ header.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-ai-code-lang" }, lang || "CODE"));
1122
+ const copyBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-ai-copy-btn" }, "⎘");
1127
1123
  const code = codeLines.join("\n");
1128
1124
  copyBtn.addEventListener("click", () => {
1129
1125
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(code).then(() => {
@@ -1135,8 +1131,8 @@ function createAITab(app) {
1135
1131
  });
1136
1132
  header.appendChild(copyBtn);
1137
1133
  block.appendChild(header);
1138
- const pre = h("pre", { className: "sdt-ai-code-pre" });
1139
- pre.appendChild(h("code", null, code));
1134
+ const pre = (0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-ai-code-pre" });
1135
+ pre.appendChild((0, ___in_page_ui_dom_js.h)("code", null, code));
1140
1136
  block.appendChild(pre);
1141
1137
  el.appendChild(block);
1142
1138
  continue;
@@ -1148,9 +1144,9 @@ function createAITab(app) {
1148
1144
  continue;
1149
1145
  }
1150
1146
  if (/^[-*] /.test(line)) {
1151
- const ul = h("ul", { className: "sdt-ai-list" });
1147
+ const ul = (0, ___in_page_ui_dom_js.h)("ul", { className: "sdt-ai-list" });
1152
1148
  while (i < lines.length && /^[-*] /.test(lines[i])) {
1153
- const li = h("li");
1149
+ const li = (0, ___in_page_ui_dom_js.h)("li");
1154
1150
  appendInlineMarkdown(li, lines[i].replace(/^[-*] /, ""));
1155
1151
  ul.appendChild(li);
1156
1152
  i++;
@@ -1159,9 +1155,9 @@ function createAITab(app) {
1159
1155
  continue;
1160
1156
  }
1161
1157
  if (/^\d+\. /.test(line)) {
1162
- const ol = h("ol", { className: "sdt-ai-list sdt-ai-list-ordered" });
1158
+ const ol = (0, ___in_page_ui_dom_js.h)("ol", { className: "sdt-ai-list sdt-ai-list-ordered" });
1163
1159
  while (i < lines.length && /^\d+\. /.test(lines[i])) {
1164
- const li = h("li");
1160
+ const li = (0, ___in_page_ui_dom_js.h)("li");
1165
1161
  appendInlineMarkdown(li, lines[i].replace(/^\d+\. /, ""));
1166
1162
  ol.appendChild(li);
1167
1163
  i++;
@@ -1415,8 +1411,8 @@ function createAITab(app) {
1415
1411
  renderInput();
1416
1412
  }
1417
1413
  }
1418
- const inputWrapper = h("div", { className: "sdt-ai-input-wrapper" });
1419
- const input = h("input", {
1414
+ const inputWrapper = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-ai-input-wrapper" });
1415
+ const input = (0, ___in_page_ui_dom_js.h)("input", {
1420
1416
  type: "text",
1421
1417
  className: "sdt-ai-input",
1422
1418
  placeholder: "Ask anything about Hexclave...",
@@ -1424,11 +1420,11 @@ function createAITab(app) {
1424
1420
  autocorrect: "off",
1425
1421
  spellcheck: "false"
1426
1422
  });
1427
- const sendBtn = h("button", {
1423
+ const sendBtn = (0, ___in_page_ui_dom_js.h)("button", {
1428
1424
  className: "sdt-ai-send-btn",
1429
1425
  title: "Send"
1430
1426
  });
1431
- setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1427
+ (0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1432
1428
  function renderInput() {
1433
1429
  input.disabled = false;
1434
1430
  input.placeholder = messages.length === 0 ? "Ask anything about Hexclave..." : "Ask a follow-up...";
@@ -1436,17 +1432,17 @@ function createAITab(app) {
1436
1432
  sendBtn.classList.add("sdt-ai-send-btn-active");
1437
1433
  sendBtn.classList.add("sdt-ai-stop-btn");
1438
1434
  sendBtn.setAttribute("title", "Stop");
1439
- setHtml(sendBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"/></svg>");
1435
+ (0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"/></svg>");
1440
1436
  } else if (input.value.trim()) {
1441
1437
  sendBtn.classList.add("sdt-ai-send-btn-active");
1442
1438
  sendBtn.classList.remove("sdt-ai-stop-btn");
1443
1439
  sendBtn.setAttribute("title", "Send");
1444
- setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1440
+ (0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1445
1441
  } else {
1446
1442
  sendBtn.classList.remove("sdt-ai-send-btn-active");
1447
1443
  sendBtn.classList.remove("sdt-ai-stop-btn");
1448
1444
  sendBtn.setAttribute("title", "Send");
1449
- setHtml(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1445
+ (0, ___in_page_ui_dom_js.setHtml)(sendBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>");
1450
1446
  }
1451
1447
  }
1452
1448
  input.addEventListener("input", renderInput);
@@ -1469,12 +1465,12 @@ function createAITab(app) {
1469
1465
  }
1470
1466
  renderInput();
1471
1467
  });
1472
- const newChatBtn = h("button", {
1468
+ const newChatBtn = (0, ___in_page_ui_dom_js.h)("button", {
1473
1469
  className: "sdt-ai-new-chat",
1474
1470
  title: "New conversation",
1475
1471
  style: { display: "none" }
1476
1472
  });
1477
- setHtml(newChatBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>");
1473
+ (0, ___in_page_ui_dom_js.setHtml)(newChatBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/></svg>");
1478
1474
  newChatBtn.addEventListener("click", () => {
1479
1475
  if (aiLoading) activeAiAbortController?.abort();
1480
1476
  messages.length = 0;
@@ -1494,26 +1490,26 @@ function createDashboardTab(app) {
1494
1490
  return createIframeTab(resolveDashboardUrl(app), "Hexclave Dashboard", "Loading dashboard…", "Unable to load dashboard", "The dashboard may require authentication or block framing", "Open in New Tab");
1495
1491
  }
1496
1492
  function createSupportTab(app) {
1497
- const container = h("div", { className: "sdt-support-tab" });
1493
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-tab" });
1498
1494
  const apiBaseUrl = resolveApiBaseUrl(app);
1499
1495
  function createFeedbackForm() {
1500
- const pane = h("div", { className: "sdt-support-feedback-pane" });
1501
- const form = h("form", { className: "sdt-support-form" });
1496
+ const pane = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-feedback-pane" });
1497
+ const form = (0, ___in_page_ui_dom_js.h)("form", { className: "sdt-support-form" });
1502
1498
  let feedbackType = "feedback";
1503
1499
  let status = "idle";
1504
1500
  let errorMessage = "";
1505
- const nameInput = h("input", {
1501
+ const nameInput = (0, ___in_page_ui_dom_js.h)("input", {
1506
1502
  className: "sdt-support-input",
1507
1503
  type: "text",
1508
1504
  placeholder: "Your name"
1509
1505
  });
1510
- const emailInput = h("input", {
1506
+ const emailInput = (0, ___in_page_ui_dom_js.h)("input", {
1511
1507
  className: "sdt-support-input",
1512
1508
  type: "email",
1513
1509
  placeholder: "you@example.com",
1514
1510
  required: "true"
1515
1511
  });
1516
- const messageInput = h("textarea", {
1512
+ const messageInput = (0, ___in_page_ui_dom_js.h)("textarea", {
1517
1513
  className: "sdt-support-textarea",
1518
1514
  placeholder: "What's on your mind?",
1519
1515
  required: "true",
@@ -1522,11 +1518,11 @@ function createSupportTab(app) {
1522
1518
  function render() {
1523
1519
  form.innerHTML = "";
1524
1520
  if (status === "success") {
1525
- const successDiv = h("div", { className: "sdt-support-status sdt-support-status-success" });
1526
- const icon = h("div", { className: "sdt-support-status-icon" });
1527
- setHtml(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M6 10l3 3 5-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>");
1528
- successDiv.append(icon, h("div", { className: "sdt-support-status-title" }, "Feedback sent"), h("div", { className: "sdt-support-status-msg" }, "Thank you! We'll get back to you soon."));
1529
- const resetBtn = h("button", {
1521
+ const successDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status sdt-support-status-success" });
1522
+ const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-icon" });
1523
+ (0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M6 10l3 3 5-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>");
1524
+ successDiv.append(icon, (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-title" }, "Feedback sent"), (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-msg" }, "Thank you! We'll get back to you soon."));
1525
+ const resetBtn = (0, ___in_page_ui_dom_js.h)("button", {
1530
1526
  className: "sdt-support-submit",
1531
1527
  style: {
1532
1528
  marginTop: "12px",
@@ -1542,11 +1538,11 @@ function createSupportTab(app) {
1542
1538
  return;
1543
1539
  }
1544
1540
  if (status === "error") {
1545
- const errDiv = h("div", { className: "sdt-support-status sdt-support-status-error" });
1546
- const icon = h("div", { className: "sdt-support-status-icon" });
1547
- setHtml(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10 6v5m0 3h.01\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>");
1548
- errDiv.append(icon, h("div", { className: "sdt-support-status-title" }, "Failed to send"), h("div", { className: "sdt-support-status-msg" }, errorMessage || "Please try again."));
1549
- const retryBtn = h("button", {
1541
+ const errDiv = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status sdt-support-status-error" });
1542
+ const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-icon" });
1543
+ (0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10 6v5m0 3h.01\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/></svg>");
1544
+ errDiv.append(icon, (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-title" }, "Failed to send"), (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-status-msg" }, errorMessage || "Please try again."));
1545
+ const retryBtn = (0, ___in_page_ui_dom_js.h)("button", {
1550
1546
  className: "sdt-support-submit",
1551
1547
  style: {
1552
1548
  marginTop: "12px",
@@ -1562,47 +1558,47 @@ function createSupportTab(app) {
1562
1558
  form.appendChild(errDiv);
1563
1559
  return;
1564
1560
  }
1565
- const nameField = h("div", { className: "sdt-support-field" });
1566
- const nameLabel = h("label", { className: "sdt-support-label" }, "Name ");
1567
- nameLabel.appendChild(h("span", { className: "sdt-support-optional" }, "optional"));
1561
+ const nameField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
1562
+ const nameLabel = (0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, "Name ");
1563
+ nameLabel.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-support-optional" }, "optional"));
1568
1564
  nameField.append(nameLabel, nameInput);
1569
1565
  form.appendChild(nameField);
1570
- const emailField = h("div", { className: "sdt-support-field" });
1571
- emailField.append(h("label", { className: "sdt-support-label" }, "Email"), emailInput);
1566
+ const emailField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
1567
+ emailField.append((0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, "Email"), emailInput);
1572
1568
  form.appendChild(emailField);
1573
- const msgField = h("div", { className: "sdt-support-field" });
1574
- msgField.append(h("label", { className: "sdt-support-label" }, feedbackType === "bug" ? "Description" : "Message"), messageInput);
1569
+ const msgField = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-field" });
1570
+ msgField.append((0, ___in_page_ui_dom_js.h)("label", { className: "sdt-support-label" }, feedbackType === "bug" ? "Description" : "Message"), messageInput);
1575
1571
  messageInput.placeholder = feedbackType === "bug" ? "Steps to reproduce, expected vs. actual behavior…" : "What's on your mind?";
1576
1572
  form.appendChild(msgField);
1577
- const typeCards = h("div", { className: "sdt-support-type-cards" });
1578
- const feedbackBtn = h("button", {
1573
+ const typeCards = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-type-cards" });
1574
+ const feedbackBtn = (0, ___in_page_ui_dom_js.h)("button", {
1579
1575
  type: "button",
1580
1576
  className: `sdt-support-type-card ${feedbackType === "feedback" ? "sdt-support-type-card-active" : ""}`
1581
1577
  });
1582
- setHtml(feedbackBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg><span>Feedback</span>");
1578
+ (0, ___in_page_ui_dom_js.setHtml)(feedbackBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg><span>Feedback</span>");
1583
1579
  feedbackBtn.addEventListener("click", () => {
1584
1580
  feedbackType = "feedback";
1585
1581
  render();
1586
1582
  });
1587
- const bugBtn = h("button", {
1583
+ const bugBtn = (0, ___in_page_ui_dom_js.h)("button", {
1588
1584
  type: "button",
1589
1585
  className: `sdt-support-type-card ${feedbackType === "bug" ? "sdt-support-type-card-active" : ""}`
1590
1586
  });
1591
- setHtml(bugBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2l1.88 1.88M14.12 3.88L16 2M9 7.13v-1a3.003 3.003 0 1 1 6 0v1\"/><path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\"/><path d=\"M12 20v-9M6.53 9C4.6 8.8 3 7.1 3 5M6 13H2M6 17H3M21 5c0 2.1-1.6 3.8-3.53 4M18 13h4M21 17h-3\"/></svg><span>Bug Report</span>");
1587
+ (0, ___in_page_ui_dom_js.setHtml)(bugBtn, "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2l1.88 1.88M14.12 3.88L16 2M9 7.13v-1a3.003 3.003 0 1 1 6 0v1\"/><path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\"/><path d=\"M12 20v-9M6.53 9C4.6 8.8 3 7.1 3 5M6 13H2M6 17H3M21 5c0 2.1-1.6 3.8-3.53 4M18 13h4M21 17h-3\"/></svg><span>Bug Report</span>");
1592
1588
  bugBtn.addEventListener("click", () => {
1593
1589
  feedbackType = "bug";
1594
1590
  render();
1595
1591
  });
1596
1592
  typeCards.append(feedbackBtn, bugBtn);
1597
1593
  form.appendChild(typeCards);
1598
- const submitBtn = h("button", {
1594
+ const submitBtn = (0, ___in_page_ui_dom_js.h)("button", {
1599
1595
  type: "submit",
1600
1596
  className: "sdt-support-submit"
1601
1597
  });
1602
- setHtml(submitBtn, "Submit <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
1598
+ (0, ___in_page_ui_dom_js.setHtml)(submitBtn, "Submit <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>");
1603
1599
  submitBtn.disabled = status === "submitting";
1604
1600
  form.appendChild(submitBtn);
1605
- const channels = h("div", { className: "sdt-support-channels" });
1601
+ const channels = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-support-channels" });
1606
1602
  channels.innerHTML = `
1607
1603
  <a href="https://discord.hexclave.com" target="_blank" rel="noopener noreferrer" class="sdt-support-channel">
1608
1604
  <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>
@@ -1659,7 +1655,7 @@ function createSupportTab(app) {
1659
1655
  return container;
1660
1656
  }
1661
1657
  function createComponentsTab(app) {
1662
- const container = h("div", { className: "sdt-pg-layout" });
1658
+ const container = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-layout" });
1663
1659
  const apiBaseUrl = resolveApiBaseUrl(app);
1664
1660
  const urls = app.urls;
1665
1661
  const urlOptions = app[___lib_hexclave_app_common_js.hexclaveAppInternalsSymbol].getConstructorOptions().urls ?? {};
@@ -1766,28 +1762,28 @@ function createComponentsTab(app) {
1766
1762
  const resolved = new URL(url, window.location.origin);
1767
1763
  return `${resolved.pathname}${resolved.search}${resolved.hash}`;
1768
1764
  }
1769
- const sidebar = h("div", { className: "sdt-pg-sidebar" });
1770
- const mainArea = h("div", { className: "sdt-pg-main" });
1765
+ const sidebar = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-sidebar" });
1766
+ const mainArea = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-main" });
1771
1767
  function renderSidebar() {
1772
1768
  sidebar.innerHTML = "";
1773
1769
  const pages = buildPages();
1774
1770
  const outdatedCount = pages.filter((p) => p.versionStatus === "outdated").length;
1775
- const head = h("div", { className: "sdt-pg-sidebar-head" });
1776
- head.appendChild(h("span", { className: "sdt-pg-sidebar-title" }, "Pages"));
1777
- head.appendChild(h("span", { className: "sdt-pg-sidebar-count" }, String(pages.length)));
1778
- if (outdatedCount > 0) head.appendChild(h("span", { className: "sdt-pg-sidebar-warn" }, `${outdatedCount} outdated`));
1771
+ const head = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-sidebar-head" });
1772
+ head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-title" }, "Pages"));
1773
+ head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-count" }, String(pages.length)));
1774
+ if (outdatedCount > 0) head.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-sidebar-warn" }, `${outdatedCount} outdated`));
1779
1775
  sidebar.appendChild(head);
1780
- const list = h("div", { className: "sdt-pg-list" });
1776
+ const list = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-list" });
1781
1777
  for (const page of pages) {
1782
1778
  const isOutdated = page.versionStatus === "outdated";
1783
- const item = h("div", {
1779
+ const item = (0, ___in_page_ui_dom_js.h)("div", {
1784
1780
  className: `sdt-pg-item ${isOutdated ? "sdt-pg-item-warn" : ""}`,
1785
1781
  "data-selected": String(selectedKey === page.key)
1786
1782
  });
1787
1783
  const dotClass = isOutdated ? "sdt-pg-item-dot-warn" : page.classification === "custom" ? "sdt-pg-item-dot-custom" : "sdt-pg-item-dot-handler";
1788
- item.appendChild(h("span", { className: `sdt-pg-item-dot ${dotClass}` }));
1789
- item.appendChild(h("span", { className: "sdt-pg-item-label" }, page.label));
1790
- if (isOutdated) item.appendChild(h("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
1784
+ item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: `sdt-pg-item-dot ${dotClass}` }));
1785
+ item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-item-label" }, page.label));
1786
+ if (isOutdated) item.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
1791
1787
  item.addEventListener("click", () => {
1792
1788
  selectedKey = page.key;
1793
1789
  renderSidebar();
@@ -1799,23 +1795,23 @@ function createComponentsTab(app) {
1799
1795
  }
1800
1796
  function renderDetail(page) {
1801
1797
  mainArea.innerHTML = "";
1802
- const detail = h("div", { className: "sdt-pg-detail" });
1803
- const header = h("div", { className: "sdt-pg-header" });
1804
- const headerTop = h("div", { className: "sdt-pg-header-top" });
1805
- headerTop.appendChild(h("h3", { className: "sdt-pg-title" }, `${page.label} Page`));
1806
- headerTop.appendChild(h("a", {
1798
+ const detail = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-detail" });
1799
+ const header = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-header" });
1800
+ const headerTop = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-header-top" });
1801
+ headerTop.appendChild((0, ___in_page_ui_dom_js.h)("h3", { className: "sdt-pg-title" }, `${page.label} Page`));
1802
+ headerTop.appendChild((0, ___in_page_ui_dom_js.h)("a", {
1807
1803
  href: page.url,
1808
1804
  target: "_blank",
1809
1805
  rel: "noopener noreferrer",
1810
1806
  className: "sdt-pg-title-url"
1811
1807
  }, getCompactUrl(page.url)));
1812
- if (page.versionStatus === "outdated") headerTop.appendChild(h("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
1808
+ if (page.versionStatus === "outdated") headerTop.appendChild((0, ___in_page_ui_dom_js.h)("span", { className: "sdt-pg-badge sdt-pg-badge-outdated" }, "Outdated"));
1813
1809
  header.appendChild(headerTop);
1814
1810
  const redirectMethod = `hexclaveApp.redirectTo${page.key.charAt(0).toUpperCase()}${page.key.slice(1)}()`;
1815
- const codeRow = h("div", { className: "sdt-pg-code-inline" });
1816
- codeRow.appendChild(h("code", { className: "sdt-pg-code" }, redirectMethod));
1817
- const openBtn = h("button", { className: "sdt-pg-copy-btn sdt-pg-open-btn" });
1818
- setHtml(openBtn, "Open <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
1811
+ const codeRow = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-code-inline" });
1812
+ codeRow.appendChild((0, ___in_page_ui_dom_js.h)("code", { className: "sdt-pg-code" }, redirectMethod));
1813
+ const openBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-pg-copy-btn sdt-pg-open-btn" });
1814
+ (0, ___in_page_ui_dom_js.setHtml)(openBtn, "Open <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
1819
1815
  openBtn.addEventListener("click", () => {
1820
1816
  const resolved = new URL(page.url, window.location.origin);
1821
1817
  window.open(resolved.toString(), "_blank", "noopener,noreferrer");
@@ -1832,11 +1828,11 @@ function createComponentsTab(app) {
1832
1828
  else if (prompt.fullPrompt) promptText = prompt.fullPrompt;
1833
1829
  else promptText = "";
1834
1830
  if (promptText) {
1835
- const section = h("div", { className: "sdt-pg-section" });
1836
- section.appendChild(h("div", { className: "sdt-pg-section-label" }, isOutdated ? "Use this prompt to upgrade your component:" : "Want to customize this page? Paste this prompt into your coding agent."));
1837
- section.appendChild(h("pre", { className: "sdt-pg-pre" }, promptText));
1838
- const footer = h("div", { className: "sdt-pg-section-footer" });
1839
- const copyBtn = h("button", { className: "sdt-pg-copy-btn" }, "Copy prompt");
1831
+ const section = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section" });
1832
+ section.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section-label" }, isOutdated ? "Use this prompt to upgrade your component:" : "Want to customize this page? Paste this prompt into your coding agent."));
1833
+ section.appendChild((0, ___in_page_ui_dom_js.h)("pre", { className: "sdt-pg-pre" }, promptText));
1834
+ const footer = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-section-footer" });
1835
+ const copyBtn = (0, ___in_page_ui_dom_js.h)("button", { className: "sdt-pg-copy-btn" }, "Copy prompt");
1840
1836
  copyBtn.addEventListener("click", () => {
1841
1837
  (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(navigator.clipboard.writeText(promptText).then(() => {
1842
1838
  copyBtn.textContent = "✓ Copied";
@@ -1855,12 +1851,12 @@ function createComponentsTab(app) {
1855
1851
  }
1856
1852
  function renderEmptyMain() {
1857
1853
  mainArea.innerHTML = "";
1858
- const empty = h("div", { className: "sdt-pg-empty" });
1859
- const icon = h("div", { className: "sdt-pg-empty-icon" });
1860
- setHtml(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/></svg>");
1854
+ const empty = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty" });
1855
+ const icon = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-icon" });
1856
+ (0, ___in_page_ui_dom_js.setHtml)(icon, "<svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"/></svg>");
1861
1857
  empty.appendChild(icon);
1862
- empty.appendChild(h("div", { className: "sdt-pg-empty-text" }, "Select a page to inspect"));
1863
- empty.appendChild(h("div", { className: "sdt-pg-empty-sub" }, "View configuration, preview, and upgrade prompts"));
1858
+ empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-text" }, "Select a page to inspect"));
1859
+ empty.appendChild((0, ___in_page_ui_dom_js.h)("div", { className: "sdt-pg-empty-sub" }, "View configuration, preview, and upgrade prompts"));
1864
1860
  mainArea.appendChild(empty);
1865
1861
  }
1866
1862
  renderSidebar();
@@ -1869,7 +1865,7 @@ function createComponentsTab(app) {
1869
1865
  return container;
1870
1866
  }
1871
1867
  function createPanel(app, state, logStore, onClose) {
1872
- const panel = h("div", { className: "sdt-panel" });
1868
+ const panel = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-panel" });
1873
1869
  let panelAnimationTimeout = null;
1874
1870
  function animateNextPanelGeometryChange() {
1875
1871
  panel.classList.add("sdt-panel-geometry-animated");
@@ -1895,34 +1891,34 @@ function createPanel(app, state, logStore, onClose) {
1895
1891
  const storedActiveTab = state.get().activeTab;
1896
1892
  const activeTab = tabs.some((tab) => tab.id === storedActiveTab) ? storedActiveTab : DEFAULT_STATE.activeTab;
1897
1893
  applyPanelMode(activeTab);
1898
- const inner = h("div", { className: "sdt-panel-inner" });
1899
- const closeBtn = h("button", {
1894
+ const inner = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-panel-inner" });
1895
+ const closeBtn = (0, ___in_page_ui_dom_js.h)("button", {
1900
1896
  className: "sdt-close-btn",
1901
1897
  "aria-label": "Close"
1902
1898
  });
1903
- setHtml(closeBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"3\" x2=\"11\" y2=\"11\"/><line x1=\"11\" y1=\"3\" x2=\"3\" y2=\"11\"/></svg>");
1899
+ (0, ___in_page_ui_dom_js.setHtml)(closeBtn, "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"3\" x2=\"11\" y2=\"11\"/><line x1=\"11\" y1=\"3\" x2=\"3\" y2=\"11\"/></svg>");
1904
1900
  closeBtn.addEventListener("click", onClose);
1905
- const docsLink = h("a", {
1901
+ const docsLink = (0, ___in_page_ui_dom_js.h)("a", {
1906
1902
  href: DOCS_URL,
1907
1903
  target: "_blank",
1908
1904
  rel: "noopener noreferrer",
1909
1905
  className: "sdt-docs-link"
1910
1906
  });
1911
1907
  docsLink.appendChild(document.createTextNode("Docs"));
1912
- const docsIcon = h("span", {
1908
+ const docsIcon = (0, ___in_page_ui_dom_js.h)("span", {
1913
1909
  className: "sdt-docs-link-icon",
1914
1910
  "aria-hidden": "true"
1915
1911
  });
1916
- setHtml(docsIcon, "<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
1912
+ (0, ___in_page_ui_dom_js.setHtml)(docsIcon, "<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 17L17 7\"/><path d=\"M7 7h10v10\"/></svg>");
1917
1913
  docsLink.appendChild(docsIcon);
1918
1914
  const tabBar = createTabBar(tabs, activeTab, (id) => {
1919
1915
  state.update({ activeTab: id });
1920
1916
  applyPanelMode(id, { animate: true });
1921
1917
  showTab(id);
1922
- }, { trailing: h("div", { className: "sdt-tabbar-actions" }, docsLink, closeBtn) });
1918
+ }, { trailing: (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tabbar-actions" }, docsLink, closeBtn) });
1923
1919
  inner.appendChild(tabBar.el);
1924
- const content = h("div", { className: "sdt-content" });
1925
- const layers = h("div", { className: "sdt-tab-layers" });
1920
+ const content = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-content" });
1921
+ const layers = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tab-layers" });
1926
1922
  content.appendChild(layers);
1927
1923
  inner.appendChild(content);
1928
1924
  const mountedPanes = /* @__PURE__ */ new Map();
@@ -1935,7 +1931,7 @@ function createPanel(app, state, logStore, onClose) {
1935
1931
  }
1936
1932
  function getOrCreatePane(tabId) {
1937
1933
  if (mountedPanes.has(tabId)) return mountedPanes.get(tabId);
1938
- const pane = h("div", { className: "sdt-tab-pane" });
1934
+ const pane = (0, ___in_page_ui_dom_js.h)("div", { className: "sdt-tab-pane" });
1939
1935
  if (tabId === "dashboard") pane.classList.add("sdt-tab-pane-iframe");
1940
1936
  switch (tabId) {
1941
1937
  case "overview":
@@ -1969,7 +1965,7 @@ function createPanel(app, state, logStore, onClose) {
1969
1965
  }
1970
1966
  showTab(activeTab);
1971
1967
  function addResizeHandle(edge) {
1972
- const handle = h("div", { className: `sdt-resize-handle sdt-resize-${edge}` });
1968
+ const handle = (0, ___in_page_ui_dom_js.h)("div", { className: `sdt-resize-handle sdt-resize-${edge}` });
1973
1969
  let startX = 0;
1974
1970
  let startY = 0;
1975
1971
  let startW = 0;
@@ -2024,8 +2020,8 @@ function createPanel(app, state, logStore, onClose) {
2024
2020
  function createDevTool(app) {
2025
2021
  if (typeof document === "undefined" || typeof document.createElement !== "function") return () => {};
2026
2022
  const body = Reflect.get(document, "body");
2027
- if (!hasAppendChild(body)) return () => {};
2028
- getGlobalDevToolInstance()?.cleanup();
2023
+ if (!(0, ___in_page_ui_dom_js.hasAppendChild)(body)) return () => {};
2024
+ (0, ___in_page_ui_dom_js.getGlobalUiInstance)(GLOBAL_INSTANCE_KEY)?.cleanup();
2029
2025
  let existingRoot = document.getElementById(ROOT_ID);
2030
2026
  while (existingRoot !== null) {
2031
2027
  existingRoot.remove();
@@ -2034,7 +2030,7 @@ function createDevTool(app) {
2034
2030
  const root = document.createElement("div");
2035
2031
  root.id = ROOT_ID;
2036
2032
  body.appendChild(root);
2037
- const wrapper = h("div", { className: "hexclave-devtool" });
2033
+ const wrapper = (0, ___in_page_ui_dom_js.h)("div", { className: "hexclave-devtool" });
2038
2034
  root.appendChild(wrapper);
2039
2035
  const style = document.createElement("style");
2040
2036
  style.textContent = __dev_tool_styles_js.devToolCSS;
@@ -2099,13 +2095,13 @@ function createDevTool(app) {
2099
2095
  const instance = { cleanup: () => {
2100
2096
  if (didCleanup) return;
2101
2097
  didCleanup = true;
2102
- if (getGlobalDevToolInstance() === instance) setGlobalDevToolInstance(null);
2098
+ if ((0, ___in_page_ui_dom_js.getGlobalUiInstance)(GLOBAL_INSTANCE_KEY) === instance) (0, ___in_page_ui_dom_js.setGlobalUiInstance)(GLOBAL_INSTANCE_KEY, null);
2103
2099
  trigger.cleanup();
2104
2100
  removeRequestListener();
2105
2101
  panel?.cleanup();
2106
2102
  if (root.parentNode) root.parentNode.removeChild(root);
2107
2103
  } };
2108
- setGlobalDevToolInstance(instance);
2104
+ (0, ___in_page_ui_dom_js.setGlobalUiInstance)(GLOBAL_INSTANCE_KEY, instance);
2109
2105
  return () => {
2110
2106
  instance.cleanup();
2111
2107
  };