@uptrademedia/site-kit 1.0.5 → 1.0.7

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 (169) hide show
  1. package/dist/analytics/index.js +7 -7
  2. package/dist/analytics/index.mjs +3 -3
  3. package/dist/api-QUIPJJCX.js +77 -0
  4. package/dist/api-QUIPJJCX.js.map +1 -0
  5. package/dist/api-V3BA5PMX.mjs +4 -0
  6. package/dist/api-V3BA5PMX.mjs.map +1 -0
  7. package/dist/blog/index.d.mts +2 -2
  8. package/dist/blog/index.d.ts +2 -2
  9. package/dist/blog/index.js +40 -6
  10. package/dist/blog/index.js.map +1 -1
  11. package/dist/blog/index.mjs +40 -6
  12. package/dist/blog/index.mjs.map +1 -1
  13. package/dist/blog/server.d.mts +3 -2
  14. package/dist/blog/server.d.ts +3 -2
  15. package/dist/blog/server.js +13 -6
  16. package/dist/blog/server.js.map +1 -1
  17. package/dist/blog/server.mjs +13 -6
  18. package/dist/blog/server.mjs.map +1 -1
  19. package/dist/{chunk-FKVJOT2F.mjs → chunk-42EXHJTC.mjs} +196 -7
  20. package/dist/chunk-42EXHJTC.mjs.map +1 -0
  21. package/dist/{scanner-AZV5I6US.mjs → chunk-44OMJFCG.mjs} +354 -14
  22. package/dist/chunk-44OMJFCG.mjs.map +1 -0
  23. package/dist/chunk-4TGJYNHV.js +981 -0
  24. package/dist/chunk-4TGJYNHV.js.map +1 -0
  25. package/dist/chunk-4XPGGLVP.mjs +53 -0
  26. package/dist/{chunk-NYKRE2FL.mjs.map → chunk-4XPGGLVP.mjs.map} +1 -1
  27. package/dist/{generators-TO2FKJR6.mjs → chunk-6ONUXZDO.mjs} +26 -9
  28. package/dist/chunk-6ONUXZDO.mjs.map +1 -0
  29. package/dist/chunk-CG53ASWX.mjs +729 -0
  30. package/dist/chunk-CG53ASWX.mjs.map +1 -0
  31. package/dist/{scanner-ETJAMIT7.js → chunk-DERI27QC.js} +448 -102
  32. package/dist/chunk-DERI27QC.js.map +1 -0
  33. package/dist/chunk-DYM5ML2V.mjs +1518 -0
  34. package/dist/chunk-DYM5ML2V.mjs.map +1 -0
  35. package/dist/chunk-FLZZOX44.js +1526 -0
  36. package/dist/chunk-FLZZOX44.js.map +1 -0
  37. package/dist/{chunk-7H6I3ECV.mjs → chunk-FQVGK746.mjs} +63 -3
  38. package/dist/chunk-FQVGK746.mjs.map +1 -0
  39. package/dist/{chunk-GQ6ZOU2N.mjs → chunk-JGQPAXTL.mjs} +4 -4
  40. package/dist/{chunk-GQ6ZOU2N.mjs.map → chunk-JGQPAXTL.mjs.map} +1 -1
  41. package/dist/{chunk-V3F5J6CV.js → chunk-JUEVN4Q4.js} +196 -7
  42. package/dist/chunk-JUEVN4Q4.js.map +1 -0
  43. package/dist/chunk-KKMGTT7F.mjs +968 -0
  44. package/dist/chunk-KKMGTT7F.mjs.map +1 -0
  45. package/dist/{chunk-XQJX252G.mjs → chunk-MB3WR5KJ.mjs} +28 -18
  46. package/dist/chunk-MB3WR5KJ.mjs.map +1 -0
  47. package/dist/{chunk-2IHTEKHU.mjs → chunk-QD5CN2OI.mjs} +16 -7
  48. package/dist/chunk-QD5CN2OI.mjs.map +1 -0
  49. package/dist/{chunk-SBVEYCSV.js → chunk-QQB4FO4Q.js} +7 -7
  50. package/dist/{chunk-SBVEYCSV.js.map → chunk-QQB4FO4Q.js.map} +1 -1
  51. package/dist/{generators-YZWIGHCO.js → chunk-S2GXR5HY.js} +26 -9
  52. package/dist/chunk-S2GXR5HY.js.map +1 -0
  53. package/dist/{chunk-O2OHHBUD.js → chunk-TDK7DLCH.js} +30 -20
  54. package/dist/chunk-TDK7DLCH.js.map +1 -0
  55. package/dist/{chunk-QP5NCO2E.js → chunk-VDI7KYME.js} +67 -2
  56. package/dist/chunk-VDI7KYME.js.map +1 -0
  57. package/dist/chunk-VOR53RUR.js +753 -0
  58. package/dist/chunk-VOR53RUR.js.map +1 -0
  59. package/dist/{chunk-GAJLEDRD.js → chunk-ZKJ7JKFV.js} +16 -7
  60. package/dist/chunk-ZKJ7JKFV.js.map +1 -0
  61. package/dist/chunk-ZSMWDLMK.js +63 -0
  62. package/dist/{chunk-EQCVQC35.js.map → chunk-ZSMWDLMK.js.map} +1 -1
  63. package/dist/cli/index.js +37269 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/index.mjs +37233 -0
  66. package/dist/cli/index.mjs.map +1 -0
  67. package/dist/commerce/index.js +1 -1
  68. package/dist/commerce/index.mjs +1 -1
  69. package/dist/commerce/server.d.mts +12 -3
  70. package/dist/commerce/server.d.ts +12 -3
  71. package/dist/commerce/server.js +71 -70
  72. package/dist/commerce/server.js.map +1 -1
  73. package/dist/commerce/server.mjs +71 -70
  74. package/dist/commerce/server.mjs.map +1 -1
  75. package/dist/engage/index.d.mts +6 -4
  76. package/dist/engage/index.d.ts +6 -4
  77. package/dist/engage/index.js +8 -4
  78. package/dist/engage/index.mjs +2 -2
  79. package/dist/forms/index.js +1 -1
  80. package/dist/forms/index.mjs +1 -1
  81. package/dist/generators-5EU4PTVF.js +33 -0
  82. package/dist/generators-5EU4PTVF.js.map +1 -0
  83. package/dist/generators-TYPILCWD.mjs +4 -0
  84. package/dist/generators-TYPILCWD.mjs.map +1 -0
  85. package/dist/images/index.js +11 -11
  86. package/dist/images/index.mjs +4 -4
  87. package/dist/index.d.mts +154 -5
  88. package/dist/index.d.ts +154 -5
  89. package/dist/index.js +940 -24
  90. package/dist/index.js.map +1 -1
  91. package/dist/index.mjs +819 -7
  92. package/dist/index.mjs.map +1 -1
  93. package/dist/llms/index.d.mts +657 -0
  94. package/dist/llms/index.d.ts +657 -0
  95. package/dist/llms/index.js +101 -0
  96. package/dist/llms/index.js.map +1 -0
  97. package/dist/llms/index.mjs +4 -0
  98. package/dist/llms/index.mjs.map +1 -0
  99. package/dist/migrator-ARLHUNB3.mjs +4 -0
  100. package/dist/migrator-ARLHUNB3.mjs.map +1 -0
  101. package/dist/migrator-VZLBH3VY.js +37 -0
  102. package/dist/migrator-VZLBH3VY.js.map +1 -0
  103. package/dist/redirects/index.js +1 -1
  104. package/dist/redirects/index.mjs +1 -1
  105. package/dist/reputation/index.js +1 -1
  106. package/dist/reputation/index.mjs +1 -1
  107. package/dist/{routing-BWjUF7lp.d.ts → routing-CF91y6NO.d.ts} +1 -1
  108. package/dist/{routing-CgmRi9tD.d.mts → routing-CIOFpFCB.d.mts} +1 -1
  109. package/dist/scanner-7ZMUM2P5.mjs +4 -0
  110. package/dist/scanner-7ZMUM2P5.mjs.map +1 -0
  111. package/dist/scanner-OY7UF3WA.js +53 -0
  112. package/dist/scanner-OY7UF3WA.js.map +1 -0
  113. package/dist/seo/index.d.mts +267 -7
  114. package/dist/seo/index.d.ts +267 -7
  115. package/dist/seo/index.js +432 -24
  116. package/dist/seo/index.js.map +1 -1
  117. package/dist/seo/index.mjs +400 -11
  118. package/dist/seo/index.mjs.map +1 -1
  119. package/dist/seo/server.d.mts +11 -4
  120. package/dist/seo/server.d.ts +11 -4
  121. package/dist/seo/server.js +17 -17
  122. package/dist/seo/server.mjs +3 -3
  123. package/dist/setup/client.js +1 -1
  124. package/dist/setup/client.mjs +1 -1
  125. package/dist/setup/index.js +3 -3
  126. package/dist/setup/index.mjs +2 -2
  127. package/dist/setup/server.js +3 -3
  128. package/dist/setup/server.mjs +2 -2
  129. package/dist/sitemap/index.js +2 -2
  130. package/dist/sitemap/index.js.map +1 -1
  131. package/dist/sitemap/index.mjs +2 -2
  132. package/dist/sitemap/index.mjs.map +1 -1
  133. package/dist/{types-C0pJGfbH.d.mts → types-D6FHAVWX.d.mts} +99 -3
  134. package/dist/{types-C0pJGfbH.d.ts → types-D6FHAVWX.d.ts} +99 -3
  135. package/dist/{types-BN4OwtCO.d.mts → types-DI0jnhjJ.d.mts} +2 -0
  136. package/dist/{types-BN4OwtCO.d.ts → types-DI0jnhjJ.d.ts} +2 -0
  137. package/dist/{types-BmzutFwy.d.ts → types-j8X4vUhB.d.mts} +19 -2
  138. package/dist/{types-BmzutFwy.d.mts → types-j8X4vUhB.d.ts} +19 -2
  139. package/dist/{web-vitals-BH55V7EJ.js → web-vitals-444RLW3B.js} +11 -11
  140. package/dist/{web-vitals-BH55V7EJ.js.map → web-vitals-444RLW3B.js.map} +1 -1
  141. package/dist/{web-vitals-RJYPWAR3.mjs → web-vitals-KPICZIEF.mjs} +3 -3
  142. package/dist/{web-vitals-RJYPWAR3.mjs.map → web-vitals-KPICZIEF.mjs.map} +1 -1
  143. package/package.json +9 -2
  144. package/dist/api-N35S3EES.js +0 -57
  145. package/dist/api-N35S3EES.js.map +0 -1
  146. package/dist/api-SYBTK7Z7.mjs +0 -4
  147. package/dist/api-SYBTK7Z7.mjs.map +0 -1
  148. package/dist/chunk-2IHTEKHU.mjs.map +0 -1
  149. package/dist/chunk-7H6I3ECV.mjs.map +0 -1
  150. package/dist/chunk-BGJLOJ7T.mjs +0 -605
  151. package/dist/chunk-BGJLOJ7T.mjs.map +0 -1
  152. package/dist/chunk-EQCVQC35.js +0 -35
  153. package/dist/chunk-FKVJOT2F.mjs.map +0 -1
  154. package/dist/chunk-GAJLEDRD.js.map +0 -1
  155. package/dist/chunk-NYKRE2FL.mjs +0 -31
  156. package/dist/chunk-O2OHHBUD.js.map +0 -1
  157. package/dist/chunk-QAYJV4KK.js +0 -608
  158. package/dist/chunk-QAYJV4KK.js.map +0 -1
  159. package/dist/chunk-QP5NCO2E.js.map +0 -1
  160. package/dist/chunk-V3F5J6CV.js.map +0 -1
  161. package/dist/chunk-XQJX252G.mjs.map +0 -1
  162. package/dist/generators-TO2FKJR6.mjs.map +0 -1
  163. package/dist/generators-YZWIGHCO.js.map +0 -1
  164. package/dist/migrator-V6KS75EA.mjs +0 -265
  165. package/dist/migrator-V6KS75EA.mjs.map +0 -1
  166. package/dist/migrator-XKM7YQCY.js +0 -272
  167. package/dist/migrator-XKM7YQCY.js.map +0 -1
  168. package/dist/scanner-AZV5I6US.mjs.map +0 -1
  169. package/dist/scanner-ETJAMIT7.js.map +0 -1
@@ -1,11 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as ChatConfig } from '../types-C0pJGfbH.mjs';
3
- export { d as ChatConversation, c as ChatMessage, f as EngageAnalytics, e as EngageConfig, E as EngageElement, T as TargetingRules, b as TriggerConfig, a as WidgetConfig, W as WidgetType } from '../types-C0pJGfbH.mjs';
2
+ import { C as ChatConfig } from '../types-D6FHAVWX.mjs';
3
+ export { A as ActionConfig, h as ChatAvailability, g as ChatConversation, f as ChatMessage, a as DesignDocument, b as DesignNode, D as DesignRenderer, j as EngageAnalytics, i as EngageConfig, E as EngageContext, c as EngageElement, T as TargetingRules, e as TriggerConfig, d as WidgetConfig, W as WidgetType } from '../types-D6FHAVWX.mjs';
4
+ import 'react';
4
5
 
5
6
  /**
6
7
  * @uptrade/site-kit/engage - Engage Widget
7
8
  *
8
9
  * Loads and renders engagement widgets (popups, nudges, bars, chat) via Portal API
10
+ * Supports both legacy config-based rendering and new design_json from Engage Studio
9
11
  */
10
12
  interface EngageWidgetProps {
11
13
  apiUrl?: string;
@@ -20,8 +22,8 @@ declare function EngageWidget({ apiUrl: propApiUrl, apiKey: propApiKey, position
20
22
  interface ChatWidgetProps {
21
23
  projectId: string;
22
24
  config?: Partial<ChatConfig>;
23
- signalApiUrl?: string;
25
+ apiUrl?: string;
24
26
  }
25
- declare function ChatWidget({ projectId, config, signalApiUrl }: ChatWidgetProps): react_jsx_runtime.JSX.Element;
27
+ declare function ChatWidget({ projectId, config, apiUrl: propApiUrl }: ChatWidgetProps): react_jsx_runtime.JSX.Element;
26
28
 
27
29
  export { ChatConfig, ChatWidget, EngageWidget };
@@ -1,11 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { C as ChatConfig } from '../types-C0pJGfbH.js';
3
- export { d as ChatConversation, c as ChatMessage, f as EngageAnalytics, e as EngageConfig, E as EngageElement, T as TargetingRules, b as TriggerConfig, a as WidgetConfig, W as WidgetType } from '../types-C0pJGfbH.js';
2
+ import { C as ChatConfig } from '../types-D6FHAVWX.js';
3
+ export { A as ActionConfig, h as ChatAvailability, g as ChatConversation, f as ChatMessage, a as DesignDocument, b as DesignNode, D as DesignRenderer, j as EngageAnalytics, i as EngageConfig, E as EngageContext, c as EngageElement, T as TargetingRules, e as TriggerConfig, d as WidgetConfig, W as WidgetType } from '../types-D6FHAVWX.js';
4
+ import 'react';
4
5
 
5
6
  /**
6
7
  * @uptrade/site-kit/engage - Engage Widget
7
8
  *
8
9
  * Loads and renders engagement widgets (popups, nudges, bars, chat) via Portal API
10
+ * Supports both legacy config-based rendering and new design_json from Engage Studio
9
11
  */
10
12
  interface EngageWidgetProps {
11
13
  apiUrl?: string;
@@ -20,8 +22,8 @@ declare function EngageWidget({ apiUrl: propApiUrl, apiKey: propApiKey, position
20
22
  interface ChatWidgetProps {
21
23
  projectId: string;
22
24
  config?: Partial<ChatConfig>;
23
- signalApiUrl?: string;
25
+ apiUrl?: string;
24
26
  }
25
- declare function ChatWidget({ projectId, config, signalApiUrl }: ChatWidgetProps): react_jsx_runtime.JSX.Element;
27
+ declare function ChatWidget({ projectId, config, apiUrl: propApiUrl }: ChatWidgetProps): react_jsx_runtime.JSX.Element;
26
28
 
27
29
  export { ChatConfig, ChatWidget, EngageWidget };
@@ -1,17 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var chunkQAYJV4KK_js = require('../chunk-QAYJV4KK.js');
4
- require('../chunk-EQCVQC35.js');
3
+ var chunkFLZZOX44_js = require('../chunk-FLZZOX44.js');
4
+ require('../chunk-ZSMWDLMK.js');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "ChatWidget", {
9
9
  enumerable: true,
10
- get: function () { return chunkQAYJV4KK_js.ChatWidget; }
10
+ get: function () { return chunkFLZZOX44_js.ChatWidget; }
11
+ });
12
+ Object.defineProperty(exports, "DesignRenderer", {
13
+ enumerable: true,
14
+ get: function () { return chunkFLZZOX44_js.DesignRenderer; }
11
15
  });
12
16
  Object.defineProperty(exports, "EngageWidget", {
13
17
  enumerable: true,
14
- get: function () { return chunkQAYJV4KK_js.EngageWidget; }
18
+ get: function () { return chunkFLZZOX44_js.EngageWidget; }
15
19
  });
16
20
  //# sourceMappingURL=index.js.map
17
21
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { ChatWidget, EngageWidget } from '../chunk-BGJLOJ7T.mjs';
2
- import '../chunk-NYKRE2FL.mjs';
1
+ export { ChatWidget, DesignRenderer, EngageWidget } from '../chunk-DYM5ML2V.mjs';
2
+ import '../chunk-4XPGGLVP.mjs';
3
3
  //# sourceMappingURL=index.mjs.map
4
4
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkADHVEFWD_js = require('../chunk-ADHVEFWD.js');
4
- require('../chunk-EQCVQC35.js');
4
+ require('../chunk-ZSMWDLMK.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -1,5 +1,5 @@
1
1
  export { configureFormsApi, defineForm, field, formsApi, initializeForms } from '../chunk-SMUFNQLM.mjs';
2
- import '../chunk-NYKRE2FL.mjs';
2
+ import '../chunk-4XPGGLVP.mjs';
3
3
  import { useRef, useEffect, useCallback, useState, useMemo } from 'react';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
 
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var chunkS2GXR5HY_js = require('./chunk-S2GXR5HY.js');
4
+ require('./chunk-ZSMWDLMK.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "generateEnvFile", {
9
+ enumerable: true,
10
+ get: function () { return chunkS2GXR5HY_js.generateEnvFile; }
11
+ });
12
+ Object.defineProperty(exports, "generateProvider", {
13
+ enumerable: true,
14
+ get: function () { return chunkS2GXR5HY_js.generateProvider; }
15
+ });
16
+ Object.defineProperty(exports, "generateSetupRoute", {
17
+ enumerable: true,
18
+ get: function () { return chunkS2GXR5HY_js.generateSetupRoute; }
19
+ });
20
+ Object.defineProperty(exports, "migrateSitemap", {
21
+ enumerable: true,
22
+ get: function () { return chunkS2GXR5HY_js.migrateSitemap; }
23
+ });
24
+ Object.defineProperty(exports, "removeNextSitemapDependency", {
25
+ enumerable: true,
26
+ get: function () { return chunkS2GXR5HY_js.removeNextSitemapDependency; }
27
+ });
28
+ Object.defineProperty(exports, "selfDestruct", {
29
+ enumerable: true,
30
+ get: function () { return chunkS2GXR5HY_js.selfDestruct; }
31
+ });
32
+ //# sourceMappingURL=generators-5EU4PTVF.js.map
33
+ //# sourceMappingURL=generators-5EU4PTVF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"generators-5EU4PTVF.js"}
@@ -0,0 +1,4 @@
1
+ export { generateEnvFile, generateProvider, generateSetupRoute, migrateSitemap, removeNextSitemapDependency, selfDestruct } from './chunk-6ONUXZDO.mjs';
2
+ import './chunk-4XPGGLVP.mjs';
3
+ //# sourceMappingURL=generators-TYPILCWD.mjs.map
4
+ //# sourceMappingURL=generators-TYPILCWD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"generators-TYPILCWD.mjs"}
@@ -1,41 +1,41 @@
1
1
  'use strict';
2
2
 
3
- var chunkO2OHHBUD_js = require('../chunk-O2OHHBUD.js');
3
+ var chunkTDK7DLCH_js = require('../chunk-TDK7DLCH.js');
4
4
  require('../chunk-HCFPU7TU.js');
5
- require('../chunk-V3F5J6CV.js');
6
- require('../chunk-QAYJV4KK.js');
5
+ require('../chunk-JUEVN4Q4.js');
6
+ require('../chunk-FLZZOX44.js');
7
7
  require('../chunk-ADHVEFWD.js');
8
- require('../chunk-EQCVQC35.js');
8
+ require('../chunk-ZSMWDLMK.js');
9
9
 
10
10
 
11
11
 
12
12
  Object.defineProperty(exports, "ManagedImage", {
13
13
  enumerable: true,
14
- get: function () { return chunkO2OHHBUD_js.ManagedImage; }
14
+ get: function () { return chunkTDK7DLCH_js.ManagedImage; }
15
15
  });
16
16
  Object.defineProperty(exports, "assignImageToSlot", {
17
17
  enumerable: true,
18
- get: function () { return chunkO2OHHBUD_js.assignImageToSlot; }
18
+ get: function () { return chunkTDK7DLCH_js.assignImageToSlot; }
19
19
  });
20
20
  Object.defineProperty(exports, "clearImageSlot", {
21
21
  enumerable: true,
22
- get: function () { return chunkO2OHHBUD_js.clearImageSlot; }
22
+ get: function () { return chunkTDK7DLCH_js.clearImageSlot; }
23
23
  });
24
24
  Object.defineProperty(exports, "fetchManagedImage", {
25
25
  enumerable: true,
26
- get: function () { return chunkO2OHHBUD_js.fetchManagedImage; }
26
+ get: function () { return chunkTDK7DLCH_js.fetchManagedImage; }
27
27
  });
28
28
  Object.defineProperty(exports, "fetchManagedImages", {
29
29
  enumerable: true,
30
- get: function () { return chunkO2OHHBUD_js.fetchManagedImages; }
30
+ get: function () { return chunkTDK7DLCH_js.fetchManagedImages; }
31
31
  });
32
32
  Object.defineProperty(exports, "listImageFiles", {
33
33
  enumerable: true,
34
- get: function () { return chunkO2OHHBUD_js.listImageFiles; }
34
+ get: function () { return chunkTDK7DLCH_js.listImageFiles; }
35
35
  });
36
36
  Object.defineProperty(exports, "uploadImage", {
37
37
  enumerable: true,
38
- get: function () { return chunkO2OHHBUD_js.uploadImage; }
38
+ get: function () { return chunkTDK7DLCH_js.uploadImage; }
39
39
  });
40
40
  //# sourceMappingURL=index.js.map
41
41
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,8 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-XQJX252G.mjs';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-MB3WR5KJ.mjs';
2
2
  import '../chunk-WPSRS352.mjs';
3
- import '../chunk-FKVJOT2F.mjs';
4
- import '../chunk-BGJLOJ7T.mjs';
3
+ import '../chunk-42EXHJTC.mjs';
4
+ import '../chunk-DYM5ML2V.mjs';
5
5
  import '../chunk-SMUFNQLM.mjs';
6
- import '../chunk-NYKRE2FL.mjs';
6
+ import '../chunk-4XPGGLVP.mjs';
7
7
  //# sourceMappingURL=index.mjs.map
8
8
  //# sourceMappingURL=index.mjs.map
package/dist/index.d.mts CHANGED
@@ -1,16 +1,17 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React__default, { ReactNode } from 'react';
3
- export { c as ManagedFAQData, M as ManagedMetadataResult, b as ManagedSchemaProps } from './types-BmzutFwy.mjs';
3
+ export { c as ManagedFAQData, M as ManagedMetadataResult, b as ManagedSchemaProps } from './types-j8X4vUhB.mjs';
4
4
  export { c as AnalyticsConfig, b as AnalyticsEvent, P as PageView } from './types-DA_Kocle.mjs';
5
- export { C as ChatConfig, E as EngageElement, a as WidgetConfig } from './types-C0pJGfbH.mjs';
5
+ export { C as ChatConfig, c as EngageElement, d as WidgetConfig } from './types-D6FHAVWX.mjs';
6
6
  export { a as FormField, F as FormSubmission, M as ManagedFormConfig } from './types-lFLKKn0G.mjs';
7
- export { d as BlogAuthor, b as BlogCategory, B as BlogPostType } from './types-BN4OwtCO.mjs';
7
+ export { d as BlogAuthor, b as BlogCategory, B as BlogPostType } from './types-DI0jnhjJ.mjs';
8
8
  export { g as Cart, f as CartItem, e as CommerceCategory, C as CommerceOffering, c as CommerceSchedule, a as CommerceVariant, O as OfferingType } from './types-nB206tPK.mjs';
9
9
  export { n as CalendarView, C as CheckoutForm, p as EventCalendar, m as EventEmbed, o as EventModal, E as EventTile, O as OfferingCard, l as OfferingList, P as ProductEmbed, R as RegistrationForm, U as UpcomingEvents, k as createCheckoutSession, j as fetchNextEvent, a as fetchOffering, f as fetchOfferings, c as fetchProducts, h as fetchServices, i as fetchUpcomingEvents, s as formatDate, t as formatDateTime, q as formatPrice, A as getOfferingUrl, r as registerForEvent, u as useEventModal } from './useEventModal-6U1pF3_g.mjs';
10
10
  export { RedirectConfig, RedirectRule, clearRedirectCache, fetchRedirectRules, generateNextRedirects, handleManagedRedirects } from './redirects/index.mjs';
11
11
  export { ImageApiConfig, ImageFile, ManagedImage, ManagedImageData, ManagedImageProps, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from './images/index.mjs';
12
12
  export { S as SetupWizard } from './SetupWizard-Cki06kB0.mjs';
13
13
  export { Review, ReviewStats, TestimonialSection, TestimonialSectionProps, fetchReviewStats, fetchReviews } from './reputation/index.mjs';
14
+ export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOCitedContentProps, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOEntityProps, AEOProvenanceList, AEOProvenanceListProps, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, ContentProvenance, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMContactInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, createLLMsFullTxtHandler, createLLMsTxtHandler, createSpeakableSchema, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems as getLLMFAQItems, getServices as getLLMServices, getLLMsData, getPageSummaries, getSpeakableSelectorsForPage } from './llms/index.mjs';
14
15
  import 'next';
15
16
  import 'next/server';
16
17
 
@@ -72,7 +73,7 @@ interface SiteKitProviderProps extends SiteKitConfig {
72
73
  children: ReactNode;
73
74
  signalUrl?: string;
74
75
  }
75
- declare function SiteKitProvider({ children, apiUrl, signalUrl, apiKey, analytics, engage, forms, signal, debug, }: SiteKitProviderProps & {
76
+ declare function SiteKitProvider({ children, apiKey, apiUrl, signalUrl, analytics, engage, forms, signal, debug, }: SiteKitProviderProps & {
76
77
  signal?: SignalConfig$1;
77
78
  }): react_jsx_runtime.JSX.Element;
78
79
 
@@ -647,4 +648,152 @@ interface SetupAssistantProps {
647
648
  }
648
649
  declare function SetupAssistant({ apiUrl, signalUrl, supabaseUrl, supabaseKey, projectId, orgId, authToken, onComplete, welcomeMessage, }: SetupAssistantProps): react_jsx_runtime.JSX.Element;
649
650
 
650
- export { type Affiliate, AffiliateCard, type AffiliateCardProps, type AffiliateOffer, type AffiliateWithOffers, AffiliatesWidget, type AffiliatesWidgetProps, type EngageOverride, type ExperimentAssignment, type ExperimentConfig, ExperimentConversion, type ExperimentVariant, type MetaOverride, type PriceOverride, SetupAssistant, SignalBridge, type SignalBridgeProps, type SignalConfig, type SignalContextValue, type SignalEvent, SignalExperiment, type SignalOutcome, type SiteKitConfig, SiteKitProvider, type UseAffiliatesResult, fetchAffiliates, getTrackingUrl, useAffiliates, useExperimentVariant, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome, useSiteKit };
651
+ /**
652
+ * Sync Module Types - Booking Widget for Client Sites
653
+ */
654
+ interface BookingType {
655
+ id: string;
656
+ slug: string;
657
+ name: string;
658
+ description?: string;
659
+ duration_minutes: number;
660
+ buffer_before?: number;
661
+ buffer_after?: number;
662
+ color?: string;
663
+ location_type: 'video' | 'phone' | 'in_person' | 'custom';
664
+ location_details?: string;
665
+ price_cents?: number;
666
+ currency?: string;
667
+ is_active: boolean;
668
+ }
669
+ interface TimeSlot {
670
+ start: string;
671
+ end: string;
672
+ hostId?: string;
673
+ available: boolean;
674
+ }
675
+ interface Host {
676
+ id: string;
677
+ name: string;
678
+ email?: string;
679
+ avatar?: string;
680
+ title?: string;
681
+ bio?: string;
682
+ }
683
+ interface SlotHold {
684
+ holdId: string;
685
+ expiresAt: string;
686
+ expiresInSeconds: number;
687
+ }
688
+ interface BookingResult {
689
+ success: boolean;
690
+ booking: {
691
+ id: string;
692
+ confirmationCode: string;
693
+ scheduledAt: string;
694
+ durationMinutes: number;
695
+ hostName?: string;
696
+ timezone: string;
697
+ };
698
+ cancelUrl: string;
699
+ rescheduleUrl: string;
700
+ calendarLinks: {
701
+ google: string;
702
+ outlook: string;
703
+ ics: string;
704
+ };
705
+ }
706
+ interface BookingWidgetProps {
707
+ /** Organization slug (e.g., 'heinrich-law') */
708
+ orgSlug: string;
709
+ /** API base URL - defaults to https://api.uptrademedia.com */
710
+ apiUrl?: string;
711
+ /** Specific booking type slug to show (optional - shows all if not provided) */
712
+ bookingTypeSlug?: string;
713
+ /** Guest's timezone (auto-detected if not provided) */
714
+ timezone?: string;
715
+ /** Custom class name for styling */
716
+ className?: string;
717
+ /** Number of days to show availability for */
718
+ daysToShow?: number;
719
+ /** Called when booking is completed */
720
+ onBookingComplete?: (result: BookingResult) => void;
721
+ /** Called when an error occurs */
722
+ onError?: (error: Error) => void;
723
+ /** Hide the booking type selector (for single type embed) */
724
+ hideTypeSelector?: boolean;
725
+ /** Custom styles */
726
+ styles?: {
727
+ primaryColor?: string;
728
+ borderRadius?: string;
729
+ fontFamily?: string;
730
+ };
731
+ }
732
+ interface GuestInfo {
733
+ name: string;
734
+ email: string;
735
+ phone?: string;
736
+ notes?: string;
737
+ }
738
+ interface SyncWidgetConfig {
739
+ apiUrl: string;
740
+ orgSlug: string;
741
+ timezone: string;
742
+ }
743
+
744
+ declare function BookingWidget({ orgSlug, apiUrl, bookingTypeSlug, timezone: propTimezone, className, daysToShow, onBookingComplete, onError, hideTypeSelector, styles, }: BookingWidgetProps): react_jsx_runtime.JSX.Element;
745
+
746
+ /**
747
+ * Sync API Functions - Client-side API calls for booking widget
748
+ */
749
+
750
+ /**
751
+ * Fetch public booking types for an organization
752
+ */
753
+ declare function fetchBookingTypes(orgSlug: string, apiUrl?: string): Promise<BookingType[]>;
754
+ /**
755
+ * Fetch booking type details
756
+ */
757
+ declare function fetchBookingTypeDetails(orgSlug: string, typeSlug: string, apiUrl?: string): Promise<BookingType>;
758
+ /**
759
+ * Fetch available time slots for a specific date
760
+ */
761
+ declare function fetchAvailability(orgSlug: string, typeSlug: string, date: string, // YYYY-MM-DD format
762
+ apiUrl?: string, timezone?: string, hostId?: string): Promise<TimeSlot[]>;
763
+ /**
764
+ * Hold a time slot temporarily (5-10 minutes)
765
+ */
766
+ declare function createSlotHold(bookingTypeId: string, startTime: string, hostId: string | undefined, guestTimezone: string, apiUrl?: string): Promise<SlotHold>;
767
+ /**
768
+ * Release a slot hold
769
+ */
770
+ declare function releaseSlotHold(holdId: string, apiUrl?: string): Promise<void>;
771
+ /**
772
+ * Create a booking
773
+ */
774
+ declare function createBooking(bookingTypeId: string, startTime: string, guest: GuestInfo, timezone: string, hostId?: string, holdId?: string, apiUrl?: string): Promise<BookingResult>;
775
+ /**
776
+ * Get available dates for a month (helper for calendar view)
777
+ * Returns dates that have at least one available slot
778
+ */
779
+ declare function fetchAvailableDates(orgSlug: string, typeSlug: string, startDate: string, // YYYY-MM-DD
780
+ endDate: string, // YYYY-MM-DD
781
+ apiUrl?: string, timezone?: string): Promise<string[]>;
782
+ /**
783
+ * Detect user's timezone
784
+ */
785
+ declare function detectTimezone(): string;
786
+ /**
787
+ * Format time for display
788
+ */
789
+ declare function formatTime(isoString: string, timezone: string): string;
790
+ /**
791
+ * Format date for display
792
+ */
793
+ declare function formatDate(isoString: string, timezone: string): string;
794
+ /**
795
+ * Format duration for display
796
+ */
797
+ declare function formatDuration(minutes: number): string;
798
+
799
+ export { type Affiliate, AffiliateCard, type AffiliateCardProps, type AffiliateOffer, type AffiliateWithOffers, AffiliatesWidget, type AffiliatesWidgetProps, type BookingResult, type BookingType, BookingWidget, type BookingWidgetProps, type EngageOverride, type ExperimentAssignment, type ExperimentConfig, ExperimentConversion, type ExperimentVariant, type GuestInfo, type Host, type MetaOverride, type PriceOverride, SetupAssistant, SignalBridge, type SignalBridgeProps, type SignalConfig, type SignalContextValue, type SignalEvent, SignalExperiment, type SignalOutcome, type SiteKitConfig, SiteKitProvider, type SlotHold, type SyncWidgetConfig, type TimeSlot, type UseAffiliatesResult, createBooking, createSlotHold, detectTimezone, fetchAffiliates, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate as formatBookingDate, formatTime as formatBookingTime, formatDuration, getTrackingUrl, releaseSlotHold, useAffiliates, useExperimentVariant, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome, useSiteKit };
package/dist/index.d.ts CHANGED
@@ -1,16 +1,17 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React__default, { ReactNode } from 'react';
3
- export { c as ManagedFAQData, M as ManagedMetadataResult, b as ManagedSchemaProps } from './types-BmzutFwy.js';
3
+ export { c as ManagedFAQData, M as ManagedMetadataResult, b as ManagedSchemaProps } from './types-j8X4vUhB.js';
4
4
  export { c as AnalyticsConfig, b as AnalyticsEvent, P as PageView } from './types-DA_Kocle.js';
5
- export { C as ChatConfig, E as EngageElement, a as WidgetConfig } from './types-C0pJGfbH.js';
5
+ export { C as ChatConfig, c as EngageElement, d as WidgetConfig } from './types-D6FHAVWX.js';
6
6
  export { a as FormField, F as FormSubmission, M as ManagedFormConfig } from './types-lFLKKn0G.js';
7
- export { d as BlogAuthor, b as BlogCategory, B as BlogPostType } from './types-BN4OwtCO.js';
7
+ export { d as BlogAuthor, b as BlogCategory, B as BlogPostType } from './types-DI0jnhjJ.js';
8
8
  export { g as Cart, f as CartItem, e as CommerceCategory, C as CommerceOffering, c as CommerceSchedule, a as CommerceVariant, O as OfferingType } from './types-nB206tPK.js';
9
9
  export { n as CalendarView, C as CheckoutForm, p as EventCalendar, m as EventEmbed, o as EventModal, E as EventTile, O as OfferingCard, l as OfferingList, P as ProductEmbed, R as RegistrationForm, U as UpcomingEvents, k as createCheckoutSession, j as fetchNextEvent, a as fetchOffering, f as fetchOfferings, c as fetchProducts, h as fetchServices, i as fetchUpcomingEvents, s as formatDate, t as formatDateTime, q as formatPrice, A as getOfferingUrl, r as registerForEvent, u as useEventModal } from './useEventModal-BA8g-1-P.js';
10
10
  export { RedirectConfig, RedirectRule, clearRedirectCache, fetchRedirectRules, generateNextRedirects, handleManagedRedirects } from './redirects/index.js';
11
11
  export { ImageApiConfig, ImageFile, ManagedImage, ManagedImageData, ManagedImageProps, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from './images/index.js';
12
12
  export { S as SetupWizard } from './SetupWizard-Cki06kB0.js';
13
13
  export { Review, ReviewStats, TestimonialSection, TestimonialSectionProps, fetchReviewStats, fetchReviews } from './reputation/index.js';
14
+ export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOCitedContentProps, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOEntityProps, AEOProvenanceList, AEOProvenanceListProps, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, ContentProvenance, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMContactInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, createLLMsFullTxtHandler, createLLMsTxtHandler, createSpeakableSchema, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems as getLLMFAQItems, getServices as getLLMServices, getLLMsData, getPageSummaries, getSpeakableSelectorsForPage } from './llms/index.js';
14
15
  import 'next';
15
16
  import 'next/server';
16
17
 
@@ -72,7 +73,7 @@ interface SiteKitProviderProps extends SiteKitConfig {
72
73
  children: ReactNode;
73
74
  signalUrl?: string;
74
75
  }
75
- declare function SiteKitProvider({ children, apiUrl, signalUrl, apiKey, analytics, engage, forms, signal, debug, }: SiteKitProviderProps & {
76
+ declare function SiteKitProvider({ children, apiKey, apiUrl, signalUrl, analytics, engage, forms, signal, debug, }: SiteKitProviderProps & {
76
77
  signal?: SignalConfig$1;
77
78
  }): react_jsx_runtime.JSX.Element;
78
79
 
@@ -647,4 +648,152 @@ interface SetupAssistantProps {
647
648
  }
648
649
  declare function SetupAssistant({ apiUrl, signalUrl, supabaseUrl, supabaseKey, projectId, orgId, authToken, onComplete, welcomeMessage, }: SetupAssistantProps): react_jsx_runtime.JSX.Element;
649
650
 
650
- export { type Affiliate, AffiliateCard, type AffiliateCardProps, type AffiliateOffer, type AffiliateWithOffers, AffiliatesWidget, type AffiliatesWidgetProps, type EngageOverride, type ExperimentAssignment, type ExperimentConfig, ExperimentConversion, type ExperimentVariant, type MetaOverride, type PriceOverride, SetupAssistant, SignalBridge, type SignalBridgeProps, type SignalConfig, type SignalContextValue, type SignalEvent, SignalExperiment, type SignalOutcome, type SiteKitConfig, SiteKitProvider, type UseAffiliatesResult, fetchAffiliates, getTrackingUrl, useAffiliates, useExperimentVariant, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome, useSiteKit };
651
+ /**
652
+ * Sync Module Types - Booking Widget for Client Sites
653
+ */
654
+ interface BookingType {
655
+ id: string;
656
+ slug: string;
657
+ name: string;
658
+ description?: string;
659
+ duration_minutes: number;
660
+ buffer_before?: number;
661
+ buffer_after?: number;
662
+ color?: string;
663
+ location_type: 'video' | 'phone' | 'in_person' | 'custom';
664
+ location_details?: string;
665
+ price_cents?: number;
666
+ currency?: string;
667
+ is_active: boolean;
668
+ }
669
+ interface TimeSlot {
670
+ start: string;
671
+ end: string;
672
+ hostId?: string;
673
+ available: boolean;
674
+ }
675
+ interface Host {
676
+ id: string;
677
+ name: string;
678
+ email?: string;
679
+ avatar?: string;
680
+ title?: string;
681
+ bio?: string;
682
+ }
683
+ interface SlotHold {
684
+ holdId: string;
685
+ expiresAt: string;
686
+ expiresInSeconds: number;
687
+ }
688
+ interface BookingResult {
689
+ success: boolean;
690
+ booking: {
691
+ id: string;
692
+ confirmationCode: string;
693
+ scheduledAt: string;
694
+ durationMinutes: number;
695
+ hostName?: string;
696
+ timezone: string;
697
+ };
698
+ cancelUrl: string;
699
+ rescheduleUrl: string;
700
+ calendarLinks: {
701
+ google: string;
702
+ outlook: string;
703
+ ics: string;
704
+ };
705
+ }
706
+ interface BookingWidgetProps {
707
+ /** Organization slug (e.g., 'heinrich-law') */
708
+ orgSlug: string;
709
+ /** API base URL - defaults to https://api.uptrademedia.com */
710
+ apiUrl?: string;
711
+ /** Specific booking type slug to show (optional - shows all if not provided) */
712
+ bookingTypeSlug?: string;
713
+ /** Guest's timezone (auto-detected if not provided) */
714
+ timezone?: string;
715
+ /** Custom class name for styling */
716
+ className?: string;
717
+ /** Number of days to show availability for */
718
+ daysToShow?: number;
719
+ /** Called when booking is completed */
720
+ onBookingComplete?: (result: BookingResult) => void;
721
+ /** Called when an error occurs */
722
+ onError?: (error: Error) => void;
723
+ /** Hide the booking type selector (for single type embed) */
724
+ hideTypeSelector?: boolean;
725
+ /** Custom styles */
726
+ styles?: {
727
+ primaryColor?: string;
728
+ borderRadius?: string;
729
+ fontFamily?: string;
730
+ };
731
+ }
732
+ interface GuestInfo {
733
+ name: string;
734
+ email: string;
735
+ phone?: string;
736
+ notes?: string;
737
+ }
738
+ interface SyncWidgetConfig {
739
+ apiUrl: string;
740
+ orgSlug: string;
741
+ timezone: string;
742
+ }
743
+
744
+ declare function BookingWidget({ orgSlug, apiUrl, bookingTypeSlug, timezone: propTimezone, className, daysToShow, onBookingComplete, onError, hideTypeSelector, styles, }: BookingWidgetProps): react_jsx_runtime.JSX.Element;
745
+
746
+ /**
747
+ * Sync API Functions - Client-side API calls for booking widget
748
+ */
749
+
750
+ /**
751
+ * Fetch public booking types for an organization
752
+ */
753
+ declare function fetchBookingTypes(orgSlug: string, apiUrl?: string): Promise<BookingType[]>;
754
+ /**
755
+ * Fetch booking type details
756
+ */
757
+ declare function fetchBookingTypeDetails(orgSlug: string, typeSlug: string, apiUrl?: string): Promise<BookingType>;
758
+ /**
759
+ * Fetch available time slots for a specific date
760
+ */
761
+ declare function fetchAvailability(orgSlug: string, typeSlug: string, date: string, // YYYY-MM-DD format
762
+ apiUrl?: string, timezone?: string, hostId?: string): Promise<TimeSlot[]>;
763
+ /**
764
+ * Hold a time slot temporarily (5-10 minutes)
765
+ */
766
+ declare function createSlotHold(bookingTypeId: string, startTime: string, hostId: string | undefined, guestTimezone: string, apiUrl?: string): Promise<SlotHold>;
767
+ /**
768
+ * Release a slot hold
769
+ */
770
+ declare function releaseSlotHold(holdId: string, apiUrl?: string): Promise<void>;
771
+ /**
772
+ * Create a booking
773
+ */
774
+ declare function createBooking(bookingTypeId: string, startTime: string, guest: GuestInfo, timezone: string, hostId?: string, holdId?: string, apiUrl?: string): Promise<BookingResult>;
775
+ /**
776
+ * Get available dates for a month (helper for calendar view)
777
+ * Returns dates that have at least one available slot
778
+ */
779
+ declare function fetchAvailableDates(orgSlug: string, typeSlug: string, startDate: string, // YYYY-MM-DD
780
+ endDate: string, // YYYY-MM-DD
781
+ apiUrl?: string, timezone?: string): Promise<string[]>;
782
+ /**
783
+ * Detect user's timezone
784
+ */
785
+ declare function detectTimezone(): string;
786
+ /**
787
+ * Format time for display
788
+ */
789
+ declare function formatTime(isoString: string, timezone: string): string;
790
+ /**
791
+ * Format date for display
792
+ */
793
+ declare function formatDate(isoString: string, timezone: string): string;
794
+ /**
795
+ * Format duration for display
796
+ */
797
+ declare function formatDuration(minutes: number): string;
798
+
799
+ export { type Affiliate, AffiliateCard, type AffiliateCardProps, type AffiliateOffer, type AffiliateWithOffers, AffiliatesWidget, type AffiliatesWidgetProps, type BookingResult, type BookingType, BookingWidget, type BookingWidgetProps, type EngageOverride, type ExperimentAssignment, type ExperimentConfig, ExperimentConversion, type ExperimentVariant, type GuestInfo, type Host, type MetaOverride, type PriceOverride, SetupAssistant, SignalBridge, type SignalBridgeProps, type SignalConfig, type SignalContextValue, type SignalEvent, SignalExperiment, type SignalOutcome, type SiteKitConfig, SiteKitProvider, type SlotHold, type SyncWidgetConfig, type TimeSlot, type UseAffiliatesResult, createBooking, createSlotHold, detectTimezone, fetchAffiliates, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate as formatBookingDate, formatTime as formatBookingTime, formatDuration, getTrackingUrl, releaseSlotHold, useAffiliates, useExperimentVariant, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome, useSiteKit };