@sonordev/site-kit 1.5.0 → 1.5.2

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 (113) hide show
  1. package/dist/AnalyticsProvider-BBLU4U2T.mjs +4 -0
  2. package/dist/{AnalyticsProvider-OXX23PK5.mjs.map → AnalyticsProvider-BBLU4U2T.mjs.map} +1 -1
  3. package/dist/AnalyticsProvider-EMDIAAWR.js +25 -0
  4. package/dist/{AnalyticsProvider-KJWDN6YO.js.map → AnalyticsProvider-EMDIAAWR.js.map} +1 -1
  5. package/dist/SitemapSync-FKYWGDAD.js +13 -0
  6. package/dist/{SitemapSync-6I5JTLER.js.map → SitemapSync-FKYWGDAD.js.map} +1 -1
  7. package/dist/SitemapSync-YK6IXOSY.mjs +4 -0
  8. package/dist/{SitemapSync-6L45DHRH.mjs.map → SitemapSync-YK6IXOSY.mjs.map} +1 -1
  9. package/dist/analytics/index.js +9 -9
  10. package/dist/analytics/index.mjs +2 -2
  11. package/dist/{chunk-XTRXH5OL.mjs → chunk-35MALWVX.mjs} +4 -4
  12. package/dist/{chunk-XTRXH5OL.mjs.map → chunk-35MALWVX.mjs.map} +1 -1
  13. package/dist/{chunk-7URAOG2M.js → chunk-4MOJJSNA.js} +5 -2
  14. package/dist/chunk-4MOJJSNA.js.map +1 -0
  15. package/dist/{chunk-CYZYPWGW.mjs → chunk-4X5TFGKD.mjs} +3 -3
  16. package/dist/{chunk-CYZYPWGW.mjs.map → chunk-4X5TFGKD.mjs.map} +1 -1
  17. package/dist/{chunk-RRBBMEDL.js → chunk-ELDJDBQL.js} +7 -7
  18. package/dist/{chunk-RRBBMEDL.js.map → chunk-ELDJDBQL.js.map} +1 -1
  19. package/dist/{chunk-KMLCQYEV.mjs → chunk-FI2ME55T.mjs} +3 -3
  20. package/dist/{chunk-KMLCQYEV.mjs.map → chunk-FI2ME55T.mjs.map} +1 -1
  21. package/dist/{chunk-3QKTOTWS.mjs → chunk-FMB2RZDH.mjs} +77 -37
  22. package/dist/chunk-FMB2RZDH.mjs.map +1 -0
  23. package/dist/{chunk-DKSHZ7TG.js → chunk-FTSXKDP3.js} +24 -20
  24. package/dist/chunk-FTSXKDP3.js.map +1 -0
  25. package/dist/{chunk-5NXUENL3.js → chunk-GJD4CFHN.js} +3 -3
  26. package/dist/{chunk-5NXUENL3.js.map → chunk-GJD4CFHN.js.map} +1 -1
  27. package/dist/{chunk-JGNQK2G6.mjs → chunk-JFTGG6HK.mjs} +5 -2
  28. package/dist/chunk-JFTGG6HK.mjs.map +1 -0
  29. package/dist/{chunk-LTTTIJPN.js → chunk-KJN2C6YE.js} +5 -5
  30. package/dist/{chunk-LTTTIJPN.js.map → chunk-KJN2C6YE.js.map} +1 -1
  31. package/dist/{chunk-35L6FXF5.mjs → chunk-KRPFLF62.mjs} +24 -20
  32. package/dist/chunk-KRPFLF62.mjs.map +1 -0
  33. package/dist/{chunk-J4K335PQ.mjs → chunk-M5FLRLHI.mjs} +3 -3
  34. package/dist/{chunk-J4K335PQ.mjs.map → chunk-M5FLRLHI.mjs.map} +1 -1
  35. package/dist/{chunk-WY346LOO.mjs → chunk-MCGLYYAR.mjs} +3 -3
  36. package/dist/{chunk-WY346LOO.mjs.map → chunk-MCGLYYAR.mjs.map} +1 -1
  37. package/dist/{chunk-RJTBSSZB.mjs → chunk-NRNK7LXK.mjs} +4 -4
  38. package/dist/{chunk-RJTBSSZB.mjs.map → chunk-NRNK7LXK.mjs.map} +1 -1
  39. package/dist/{chunk-466AL5CC.js → chunk-OE5DEMCV.js} +4 -4
  40. package/dist/{chunk-466AL5CC.js.map → chunk-OE5DEMCV.js.map} +1 -1
  41. package/dist/{chunk-BPXMOHVH.mjs → chunk-PM2KQ6YK.mjs} +3 -3
  42. package/dist/{chunk-BPXMOHVH.mjs.map → chunk-PM2KQ6YK.mjs.map} +1 -1
  43. package/dist/{chunk-PJKHCYI5.js → chunk-PTTDKFL7.js} +77 -37
  44. package/dist/chunk-PTTDKFL7.js.map +1 -0
  45. package/dist/{chunk-YBQT623Y.js → chunk-QW4RQHSK.js} +9 -7
  46. package/dist/chunk-QW4RQHSK.js.map +1 -0
  47. package/dist/{chunk-AWSVC7SP.js → chunk-TC6TOW2T.js} +4 -4
  48. package/dist/{chunk-AWSVC7SP.js.map → chunk-TC6TOW2T.js.map} +1 -1
  49. package/dist/{chunk-HNCSTGVK.mjs → chunk-TSK35UHV.mjs} +9 -7
  50. package/dist/chunk-TSK35UHV.mjs.map +1 -0
  51. package/dist/{chunk-YP5YVWAG.js → chunk-WW7UM7XY.js} +5 -5
  52. package/dist/{chunk-YP5YVWAG.js.map → chunk-WW7UM7XY.js.map} +1 -1
  53. package/dist/{chunk-6YW6EWMH.js → chunk-ZQO6FZZB.js} +3 -3
  54. package/dist/{chunk-6YW6EWMH.js.map → chunk-ZQO6FZZB.js.map} +1 -1
  55. package/dist/cli/index.js +10 -10
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/index.mjs +4 -4
  58. package/dist/cli/index.mjs.map +1 -1
  59. package/dist/commerce/index.js +47 -47
  60. package/dist/commerce/index.mjs +3 -3
  61. package/dist/index.js +30 -30
  62. package/dist/index.mjs +4 -4
  63. package/dist/layout/client.js +2 -2
  64. package/dist/layout/client.mjs +1 -1
  65. package/dist/layout/index.js +6 -6
  66. package/dist/layout/index.mjs +3 -3
  67. package/dist/llms/index.js +12 -12
  68. package/dist/llms/index.mjs +2 -2
  69. package/dist/{scanner-LKJKW7IT.mjs → scanner-AF7YUCFG.mjs} +3 -3
  70. package/dist/{scanner-LKJKW7IT.mjs.map → scanner-AF7YUCFG.mjs.map} +1 -1
  71. package/dist/{scanner-GAF5PO5F.js → scanner-DBD5K6F7.js} +14 -14
  72. package/dist/{scanner-GAF5PO5F.js.map → scanner-DBD5K6F7.js.map} +1 -1
  73. package/dist/seo/client.d.mts +7 -1
  74. package/dist/seo/client.d.ts +7 -1
  75. package/dist/seo/client.js +2 -2
  76. package/dist/seo/client.mjs +1 -1
  77. package/dist/seo/index.d.mts +29 -4
  78. package/dist/seo/index.d.ts +29 -4
  79. package/dist/seo/index.js +42 -42
  80. package/dist/seo/index.mjs +5 -5
  81. package/dist/seo/register-sitemap-cli.js +1 -1
  82. package/dist/seo/register-sitemap-cli.js.map +1 -1
  83. package/dist/seo/register-sitemap-cli.mjs +1 -1
  84. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  85. package/dist/seo/server.js +4 -4
  86. package/dist/seo/server.mjs +2 -2
  87. package/dist/{server-api-FCTEQOTK.mjs → server-api-COVFLFZ2.mjs} +3 -3
  88. package/dist/{server-api-FCTEQOTK.mjs.map → server-api-COVFLFZ2.mjs.map} +1 -1
  89. package/dist/{server-api-SYINXTN7.js → server-api-XGKRGUMG.js} +21 -21
  90. package/dist/{server-api-SYINXTN7.js.map → server-api-XGKRGUMG.js.map} +1 -1
  91. package/dist/setup/index.js +2 -2
  92. package/dist/setup/index.mjs +1 -1
  93. package/dist/setup/server.js +2 -2
  94. package/dist/setup/server.mjs +1 -1
  95. package/dist/sitemap/index.d.mts +9 -0
  96. package/dist/sitemap/index.d.ts +9 -0
  97. package/dist/sitemap/index.js +157 -17
  98. package/dist/sitemap/index.js.map +1 -1
  99. package/dist/sitemap/index.mjs +157 -17
  100. package/dist/sitemap/index.mjs.map +1 -1
  101. package/package.json +3 -1
  102. package/dist/AnalyticsProvider-KJWDN6YO.js +0 -25
  103. package/dist/AnalyticsProvider-OXX23PK5.mjs +0 -4
  104. package/dist/SitemapSync-6I5JTLER.js +0 -13
  105. package/dist/SitemapSync-6L45DHRH.mjs +0 -4
  106. package/dist/chunk-35L6FXF5.mjs.map +0 -1
  107. package/dist/chunk-3QKTOTWS.mjs.map +0 -1
  108. package/dist/chunk-7URAOG2M.js.map +0 -1
  109. package/dist/chunk-DKSHZ7TG.js.map +0 -1
  110. package/dist/chunk-HNCSTGVK.mjs.map +0 -1
  111. package/dist/chunk-JGNQK2G6.mjs.map +0 -1
  112. package/dist/chunk-PJKHCYI5.js.map +0 -1
  113. package/dist/chunk-YBQT623Y.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-KRPFLF62.mjs';
2
+ import './chunk-4XPGGLVP.mjs';
3
+ //# sourceMappingURL=AnalyticsProvider-BBLU4U2T.mjs.map
4
+ //# sourceMappingURL=AnalyticsProvider-BBLU4U2T.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-OXX23PK5.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-BBLU4U2T.mjs"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var chunkFTSXKDP3_js = require('./chunk-FTSXKDP3.js');
4
+ require('./chunk-ZSMWDLMK.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "AnalyticsProvider", {
9
+ enumerable: true,
10
+ get: function () { return chunkFTSXKDP3_js.AnalyticsProvider; }
11
+ });
12
+ Object.defineProperty(exports, "useAnalytics", {
13
+ enumerable: true,
14
+ get: function () { return chunkFTSXKDP3_js.useAnalytics; }
15
+ });
16
+ Object.defineProperty(exports, "useAnalyticsOptional", {
17
+ enumerable: true,
18
+ get: function () { return chunkFTSXKDP3_js.useAnalyticsOptional; }
19
+ });
20
+ Object.defineProperty(exports, "useTrackEvent", {
21
+ enumerable: true,
22
+ get: function () { return chunkFTSXKDP3_js.useTrackEvent; }
23
+ });
24
+ //# sourceMappingURL=AnalyticsProvider-EMDIAAWR.js.map
25
+ //# sourceMappingURL=AnalyticsProvider-EMDIAAWR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-KJWDN6YO.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-EMDIAAWR.js"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var chunkQW4RQHSK_js = require('./chunk-QW4RQHSK.js');
4
+ require('./chunk-ZSMWDLMK.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "SitemapSync", {
9
+ enumerable: true,
10
+ get: function () { return chunkQW4RQHSK_js.SitemapSync; }
11
+ });
12
+ //# sourceMappingURL=SitemapSync-FKYWGDAD.js.map
13
+ //# sourceMappingURL=SitemapSync-FKYWGDAD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-6I5JTLER.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-FKYWGDAD.js"}
@@ -0,0 +1,4 @@
1
+ export { SitemapSync } from './chunk-TSK35UHV.mjs';
2
+ import './chunk-4XPGGLVP.mjs';
3
+ //# sourceMappingURL=SitemapSync-YK6IXOSY.mjs.map
4
+ //# sourceMappingURL=SitemapSync-YK6IXOSY.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-6L45DHRH.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-YK6IXOSY.mjs"}
@@ -1,39 +1,39 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkAWSVC7SP_js = require('../chunk-AWSVC7SP.js');
5
- var chunkDKSHZ7TG_js = require('../chunk-DKSHZ7TG.js');
4
+ var chunkTC6TOW2T_js = require('../chunk-TC6TOW2T.js');
5
+ var chunkFTSXKDP3_js = require('../chunk-FTSXKDP3.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "ContactTracking", {
11
11
  enumerable: true,
12
- get: function () { return chunkAWSVC7SP_js.ContactTracking; }
12
+ get: function () { return chunkTC6TOW2T_js.ContactTracking; }
13
13
  });
14
14
  Object.defineProperty(exports, "useContactTracking", {
15
15
  enumerable: true,
16
- get: function () { return chunkAWSVC7SP_js.useContactTracking; }
16
+ get: function () { return chunkTC6TOW2T_js.useContactTracking; }
17
17
  });
18
18
  Object.defineProperty(exports, "AnalyticsProvider", {
19
19
  enumerable: true,
20
- get: function () { return chunkDKSHZ7TG_js.AnalyticsProvider; }
20
+ get: function () { return chunkFTSXKDP3_js.AnalyticsProvider; }
21
21
  });
22
22
  Object.defineProperty(exports, "WebVitals", {
23
23
  enumerable: true,
24
- get: function () { return chunkDKSHZ7TG_js.WebVitals; }
24
+ get: function () { return chunkFTSXKDP3_js.WebVitals; }
25
25
  });
26
26
  Object.defineProperty(exports, "useAnalytics", {
27
27
  enumerable: true,
28
- get: function () { return chunkDKSHZ7TG_js.useAnalytics; }
28
+ get: function () { return chunkFTSXKDP3_js.useAnalytics; }
29
29
  });
30
30
  Object.defineProperty(exports, "useAnalyticsOptional", {
31
31
  enumerable: true,
32
- get: function () { return chunkDKSHZ7TG_js.useAnalyticsOptional; }
32
+ get: function () { return chunkFTSXKDP3_js.useAnalyticsOptional; }
33
33
  });
34
34
  Object.defineProperty(exports, "useTrackEvent", {
35
35
  enumerable: true,
36
- get: function () { return chunkDKSHZ7TG_js.useTrackEvent; }
36
+ get: function () { return chunkFTSXKDP3_js.useTrackEvent; }
37
37
  });
38
38
  //# sourceMappingURL=index.js.map
39
39
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ContactTracking, useContactTracking } from '../chunk-BPXMOHVH.mjs';
3
- export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-35L6FXF5.mjs';
2
+ export { ContactTracking, useContactTracking } from '../chunk-PM2KQ6YK.mjs';
3
+ export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-KRPFLF62.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -53,7 +53,7 @@ function SiteKitIdentityProvider({
53
53
  return /* @__PURE__ */ jsx(SiteKitIdentityContext.Provider, { value, children });
54
54
  }
55
55
  var LazyAnalyticsProvider = dynamic(
56
- () => import('./AnalyticsProvider-OXX23PK5.mjs').then((m) => ({ default: m.AnalyticsProvider })),
56
+ () => import('./AnalyticsProvider-BBLU4U2T.mjs').then((m) => ({ default: m.AnalyticsProvider })),
57
57
  { ssr: false }
58
58
  );
59
59
  var LazyEngageWidget = dynamic(
@@ -65,7 +65,7 @@ var LazySignalBridge = dynamic(
65
65
  { ssr: false }
66
66
  );
67
67
  var LazySitemapSync = dynamic(
68
- () => import('./SitemapSync-6L45DHRH.mjs').then((m) => ({ default: m.SitemapSync })),
68
+ () => import('./SitemapSync-YK6IXOSY.mjs').then((m) => ({ default: m.SitemapSync })),
69
69
  { ssr: false }
70
70
  );
71
71
  function SiteKitClientProviders({
@@ -152,5 +152,5 @@ function SiteKitClientProviders({
152
152
  }
153
153
 
154
154
  export { SiteKitClientProviders };
155
- //# sourceMappingURL=chunk-XTRXH5OL.mjs.map
156
- //# sourceMappingURL=chunk-XTRXH5OL.mjs.map
155
+ //# sourceMappingURL=chunk-35MALWVX.mjs.map
156
+ //# sourceMappingURL=chunk-35MALWVX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/identity.tsx","../src/layout/SiteKitClientProviders.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-XTRXH5OL.mjs","sourcesContent":["/**\n * @sonordev/site-kit/shared — Unified Identity Management\n *\n * Single source of truth for visitor and session IDs across\n * Analytics, Signal, and Engage modules.\n *\n * Storage keys:\n * localStorage: _uptrade_vid (visitor ID, persists ~forever)\n * sessionStorage: _uptrade_sid (session ID, per-tab)\n * sessionStorage: _uptrade_stime (last activity timestamp for timeout)\n */\n\n'use client'\n\nimport React, { createContext, useContext, useMemo } from 'react'\n\n// ============================================\n// ID Generation\n// ============================================\n\nfunction generateId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID()\n }\n // Fallback for older environments\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16)\n })\n}\n\n/**\n * Get or create a persistent visitor ID.\n * Stored in localStorage under `_uptrade_vid`.\n */\nexport function getOrCreateVisitorId(): string {\n if (typeof window === 'undefined') return ''\n\n const key = '_uptrade_vid'\n let visitorId = localStorage.getItem(key)\n\n if (!visitorId) {\n visitorId = generateId()\n localStorage.setItem(key, visitorId)\n }\n\n return visitorId\n}\n\n/**\n * Get or create a session ID with inactivity timeout.\n * Stored in sessionStorage under `_uptrade_sid`.\n * Session expires after `timeoutMinutes` of inactivity (default 30).\n */\nexport function getOrCreateSessionId(timeoutMinutes = 30): string {\n if (typeof window === 'undefined') return ''\n\n const key = '_uptrade_sid'\n const timeKey = '_uptrade_stime'\n const now = Date.now()\n const timeoutMs = timeoutMinutes * 60 * 1000\n\n const existingSession = sessionStorage.getItem(key)\n const lastActivity = sessionStorage.getItem(timeKey)\n\n if (existingSession && lastActivity) {\n const elapsed = now - parseInt(lastActivity, 10)\n if (elapsed < timeoutMs) {\n // Session still active — refresh timestamp\n sessionStorage.setItem(timeKey, now.toString())\n return existingSession\n }\n }\n\n // New session (first visit or timeout expired)\n const newSession = generateId()\n sessionStorage.setItem(key, newSession)\n sessionStorage.setItem(timeKey, now.toString())\n return newSession\n}\n\n// ============================================\n// React Context\n// ============================================\n\nexport interface SiteKitIdentity {\n visitorId: string\n sessionId: string\n}\n\nconst SiteKitIdentityContext = createContext<SiteKitIdentity | null>(null)\n\nexport interface SiteKitIdentityProviderProps {\n visitorId: string\n sessionId: string\n children: React.ReactNode\n}\n\nexport function SiteKitIdentityProvider({\n visitorId,\n sessionId,\n children,\n}: SiteKitIdentityProviderProps) {\n const value = useMemo(() => ({ visitorId, sessionId }), [visitorId, sessionId])\n\n return (\n <SiteKitIdentityContext.Provider value={value}>\n {children}\n </SiteKitIdentityContext.Provider>\n )\n}\n\n/**\n * Access the shared visitor/session identity.\n * Falls back to generating IDs directly if used outside of SiteKitIdentityProvider.\n */\nexport function useSiteKitIdentity(): SiteKitIdentity {\n const context = useContext(SiteKitIdentityContext)\n if (context) return context\n\n // Fallback for standalone usage outside SiteKitLayout\n return {\n visitorId: getOrCreateVisitorId(),\n sessionId: getOrCreateSessionId(),\n }\n}\n","'use client'\n\n/**\n * SiteKitClientProviders — Client Island\n *\n * This is the 'use client' boundary for SiteKitLayout.\n * It composes the client-only providers (Analytics, Engage, Signal, SitemapSync)\n * that require React context or browser APIs.\n *\n * All modules are lazy-loaded via next/dynamic so their JS is only downloaded\n * when the feature is enabled — keeping the initial bundle lightweight.\n *\n * All modules share a unified identity (visitor ID + session ID) via\n * SiteKitIdentityProvider, ensuring consistent tracking across Analytics,\n * Signal, and Engage.\n *\n * Props are passed down from the server-side SiteKitLayout component,\n * which reads env vars at render time.\n */\n\nimport React, { Suspense, useCallback, useRef, useState, type ReactNode } from 'react'\nimport dynamic from 'next/dynamic'\nimport {\n SiteKitIdentityProvider,\n getOrCreateVisitorId,\n getOrCreateSessionId,\n} from '../shared/identity'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\n// Lazy-load feature modules — JS only downloaded when feature is enabled\nconst LazyAnalyticsProvider = dynamic(\n () => import('../analytics/AnalyticsProvider').then(m => ({ default: m.AnalyticsProvider })),\n { ssr: false },\n)\nconst LazyEngageWidget = dynamic(\n () => import('../engage/EngageWidget').then(m => ({ default: m.EngageWidget })),\n { ssr: false },\n)\nconst LazySignalBridge = dynamic(\n () => import('../signal/SignalBridge').then(m => ({ default: m.SignalBridge })),\n { ssr: false },\n)\nconst LazySitemapSync = dynamic(\n () => import('../SitemapSync').then(m => ({ default: m.SitemapSync })),\n { ssr: false },\n)\n\nexport interface SiteKitClientProvidersProps {\n children: ReactNode\n apiKey: string\n apiUrl: string\n projectId?: string\n analytics?: boolean | AnalyticsConfig\n engage?: boolean | EngageConfig\n signal?: boolean | SignalConfig\n sitemapSync?: boolean\n debug?: boolean\n}\n\nexport function SiteKitClientProviders({\n children,\n apiKey,\n apiUrl,\n projectId,\n analytics = true,\n engage = true,\n signal = false,\n sitemapSync = true,\n debug = false,\n}: SiteKitClientProvidersProps) {\n // Set window globals for modules that still read from them\n if (typeof window !== 'undefined') {\n ;(window as any).__SITE_KIT_API_URL__ = apiUrl\n ;(window as any).__SITE_KIT_API_KEY__ = apiKey\n ;(window as any).__SITE_KIT_DEBUG__ = debug\n }\n\n // Unified identity — single source of truth for all modules\n const [visitorId] = useState(() => getOrCreateVisitorId())\n const [sessionId] = useState(() => getOrCreateSessionId())\n\n // Page metadata bridge: Analytics writes, Signal reads\n const pageMetadataRef = useRef<Record<string, unknown> | null>(null)\n const onPageMetadata = useCallback((metadata: Record<string, unknown>) => {\n pageMetadataRef.current = metadata\n }, [])\n\n let content = <>{children}</>\n\n // Wrap with SignalBridge if enabled\n if (signal) {\n const signalConfig: SignalConfig =\n typeof signal === 'object' ? signal : {}\n content = (\n <LazySignalBridge\n enabled\n realtime={signalConfig.realtime !== false}\n experiments={signalConfig.experiments !== false}\n behaviorTracking={signalConfig.behaviorTracking !== false}\n visitorId={visitorId}\n sessionId={sessionId}\n pageMetadataRef={pageMetadataRef}\n >\n {content}\n </LazySignalBridge>\n )\n }\n\n // Wrap with Analytics if enabled\n if (analytics) {\n const analyticsConfig: AnalyticsConfig =\n typeof analytics === 'object' ? analytics : {}\n content = (\n <Suspense fallback={null}>\n <LazyAnalyticsProvider\n apiUrl={apiUrl}\n apiKey={apiKey}\n trackPageViews={analyticsConfig.trackPageViews !== false}\n trackWebVitals={analyticsConfig.trackWebVitals !== false}\n trackScrollDepth={analyticsConfig.trackScrollDepth !== false}\n trackClicks={analyticsConfig.trackClicks !== false}\n debug={debug}\n externalVisitorId={visitorId}\n externalSessionId={sessionId}\n onPageMetadata={onPageMetadata}\n >\n {content}\n </LazyAnalyticsProvider>\n </Suspense>\n )\n }\n\n // Add Engage widget if enabled (renders alongside, doesn't wrap)\n if (engage) {\n const engageConfig: EngageConfig =\n typeof engage === 'object' ? engage : {}\n content = (\n <>\n {content}\n <LazyEngageWidget\n apiUrl={apiUrl}\n apiKey={apiKey}\n projectId={projectId}\n position={engageConfig.position || 'bottom-right'}\n chatEnabled={engageConfig.chatEnabled !== false}\n />\n </>\n )\n }\n\n // Add SitemapSync if enabled\n if (sitemapSync) {\n content = (\n <>\n {content}\n <LazySitemapSync debug={debug} />\n </>\n )\n }\n\n return (\n <SiteKitIdentityProvider visitorId={visitorId} sessionId={sessionId}>\n {content}\n </SiteKitIdentityProvider>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/shared/identity.tsx","../src/layout/SiteKitClientProviders.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-35MALWVX.mjs","sourcesContent":["/**\n * @sonordev/site-kit/shared — Unified Identity Management\n *\n * Single source of truth for visitor and session IDs across\n * Analytics, Signal, and Engage modules.\n *\n * Storage keys:\n * localStorage: _uptrade_vid (visitor ID, persists ~forever)\n * sessionStorage: _uptrade_sid (session ID, per-tab)\n * sessionStorage: _uptrade_stime (last activity timestamp for timeout)\n */\n\n'use client'\n\nimport React, { createContext, useContext, useMemo } from 'react'\n\n// ============================================\n// ID Generation\n// ============================================\n\nfunction generateId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID()\n }\n // Fallback for older environments\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16)\n })\n}\n\n/**\n * Get or create a persistent visitor ID.\n * Stored in localStorage under `_uptrade_vid`.\n */\nexport function getOrCreateVisitorId(): string {\n if (typeof window === 'undefined') return ''\n\n const key = '_uptrade_vid'\n let visitorId = localStorage.getItem(key)\n\n if (!visitorId) {\n visitorId = generateId()\n localStorage.setItem(key, visitorId)\n }\n\n return visitorId\n}\n\n/**\n * Get or create a session ID with inactivity timeout.\n * Stored in sessionStorage under `_uptrade_sid`.\n * Session expires after `timeoutMinutes` of inactivity (default 30).\n */\nexport function getOrCreateSessionId(timeoutMinutes = 30): string {\n if (typeof window === 'undefined') return ''\n\n const key = '_uptrade_sid'\n const timeKey = '_uptrade_stime'\n const now = Date.now()\n const timeoutMs = timeoutMinutes * 60 * 1000\n\n const existingSession = sessionStorage.getItem(key)\n const lastActivity = sessionStorage.getItem(timeKey)\n\n if (existingSession && lastActivity) {\n const elapsed = now - parseInt(lastActivity, 10)\n if (elapsed < timeoutMs) {\n // Session still active — refresh timestamp\n sessionStorage.setItem(timeKey, now.toString())\n return existingSession\n }\n }\n\n // New session (first visit or timeout expired)\n const newSession = generateId()\n sessionStorage.setItem(key, newSession)\n sessionStorage.setItem(timeKey, now.toString())\n return newSession\n}\n\n// ============================================\n// React Context\n// ============================================\n\nexport interface SiteKitIdentity {\n visitorId: string\n sessionId: string\n}\n\nconst SiteKitIdentityContext = createContext<SiteKitIdentity | null>(null)\n\nexport interface SiteKitIdentityProviderProps {\n visitorId: string\n sessionId: string\n children: React.ReactNode\n}\n\nexport function SiteKitIdentityProvider({\n visitorId,\n sessionId,\n children,\n}: SiteKitIdentityProviderProps) {\n const value = useMemo(() => ({ visitorId, sessionId }), [visitorId, sessionId])\n\n return (\n <SiteKitIdentityContext.Provider value={value}>\n {children}\n </SiteKitIdentityContext.Provider>\n )\n}\n\n/**\n * Access the shared visitor/session identity.\n * Falls back to generating IDs directly if used outside of SiteKitIdentityProvider.\n */\nexport function useSiteKitIdentity(): SiteKitIdentity {\n const context = useContext(SiteKitIdentityContext)\n if (context) return context\n\n // Fallback for standalone usage outside SiteKitLayout\n return {\n visitorId: getOrCreateVisitorId(),\n sessionId: getOrCreateSessionId(),\n }\n}\n","'use client'\n\n/**\n * SiteKitClientProviders — Client Island\n *\n * This is the 'use client' boundary for SiteKitLayout.\n * It composes the client-only providers (Analytics, Engage, Signal, SitemapSync)\n * that require React context or browser APIs.\n *\n * All modules are lazy-loaded via next/dynamic so their JS is only downloaded\n * when the feature is enabled — keeping the initial bundle lightweight.\n *\n * All modules share a unified identity (visitor ID + session ID) via\n * SiteKitIdentityProvider, ensuring consistent tracking across Analytics,\n * Signal, and Engage.\n *\n * Props are passed down from the server-side SiteKitLayout component,\n * which reads env vars at render time.\n */\n\nimport React, { Suspense, useCallback, useRef, useState, type ReactNode } from 'react'\nimport dynamic from 'next/dynamic'\nimport {\n SiteKitIdentityProvider,\n getOrCreateVisitorId,\n getOrCreateSessionId,\n} from '../shared/identity'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\n// Lazy-load feature modules — JS only downloaded when feature is enabled\nconst LazyAnalyticsProvider = dynamic(\n () => import('../analytics/AnalyticsProvider').then(m => ({ default: m.AnalyticsProvider })),\n { ssr: false },\n)\nconst LazyEngageWidget = dynamic(\n () => import('../engage/EngageWidget').then(m => ({ default: m.EngageWidget })),\n { ssr: false },\n)\nconst LazySignalBridge = dynamic(\n () => import('../signal/SignalBridge').then(m => ({ default: m.SignalBridge })),\n { ssr: false },\n)\nconst LazySitemapSync = dynamic(\n () => import('../SitemapSync').then(m => ({ default: m.SitemapSync })),\n { ssr: false },\n)\n\nexport interface SiteKitClientProvidersProps {\n children: ReactNode\n apiKey: string\n apiUrl: string\n projectId?: string\n analytics?: boolean | AnalyticsConfig\n engage?: boolean | EngageConfig\n signal?: boolean | SignalConfig\n sitemapSync?: boolean\n debug?: boolean\n}\n\nexport function SiteKitClientProviders({\n children,\n apiKey,\n apiUrl,\n projectId,\n analytics = true,\n engage = true,\n signal = false,\n sitemapSync = true,\n debug = false,\n}: SiteKitClientProvidersProps) {\n // Set window globals for modules that still read from them\n if (typeof window !== 'undefined') {\n ;(window as any).__SITE_KIT_API_URL__ = apiUrl\n ;(window as any).__SITE_KIT_API_KEY__ = apiKey\n ;(window as any).__SITE_KIT_DEBUG__ = debug\n }\n\n // Unified identity — single source of truth for all modules\n const [visitorId] = useState(() => getOrCreateVisitorId())\n const [sessionId] = useState(() => getOrCreateSessionId())\n\n // Page metadata bridge: Analytics writes, Signal reads\n const pageMetadataRef = useRef<Record<string, unknown> | null>(null)\n const onPageMetadata = useCallback((metadata: Record<string, unknown>) => {\n pageMetadataRef.current = metadata\n }, [])\n\n let content = <>{children}</>\n\n // Wrap with SignalBridge if enabled\n if (signal) {\n const signalConfig: SignalConfig =\n typeof signal === 'object' ? signal : {}\n content = (\n <LazySignalBridge\n enabled\n realtime={signalConfig.realtime !== false}\n experiments={signalConfig.experiments !== false}\n behaviorTracking={signalConfig.behaviorTracking !== false}\n visitorId={visitorId}\n sessionId={sessionId}\n pageMetadataRef={pageMetadataRef}\n >\n {content}\n </LazySignalBridge>\n )\n }\n\n // Wrap with Analytics if enabled\n if (analytics) {\n const analyticsConfig: AnalyticsConfig =\n typeof analytics === 'object' ? analytics : {}\n content = (\n <Suspense fallback={null}>\n <LazyAnalyticsProvider\n apiUrl={apiUrl}\n apiKey={apiKey}\n trackPageViews={analyticsConfig.trackPageViews !== false}\n trackWebVitals={analyticsConfig.trackWebVitals !== false}\n trackScrollDepth={analyticsConfig.trackScrollDepth !== false}\n trackClicks={analyticsConfig.trackClicks !== false}\n debug={debug}\n externalVisitorId={visitorId}\n externalSessionId={sessionId}\n onPageMetadata={onPageMetadata}\n >\n {content}\n </LazyAnalyticsProvider>\n </Suspense>\n )\n }\n\n // Add Engage widget if enabled (renders alongside, doesn't wrap)\n if (engage) {\n const engageConfig: EngageConfig =\n typeof engage === 'object' ? engage : {}\n content = (\n <>\n {content}\n <LazyEngageWidget\n apiUrl={apiUrl}\n apiKey={apiKey}\n projectId={projectId}\n position={engageConfig.position || 'bottom-right'}\n chatEnabled={engageConfig.chatEnabled !== false}\n />\n </>\n )\n }\n\n // Add SitemapSync if enabled\n if (sitemapSync) {\n content = (\n <>\n {content}\n <LazySitemapSync debug={debug} />\n </>\n )\n }\n\n return (\n <SiteKitIdentityProvider visitorId={visitorId} sessionId={sessionId}>\n {content}\n </SiteKitIdentityProvider>\n )\n}\n"]}
@@ -14321,6 +14321,9 @@ function extractReactHookFormFields(content, filePath) {
14321
14321
  return forms;
14322
14322
  }
14323
14323
  function detectFormLibrary(content) {
14324
+ if (content.includes("@sonordev/site-kit") || content.includes("@uptrademedia/site-kit") || content.includes("ManagedForm")) {
14325
+ return "site-kit";
14326
+ }
14324
14327
  if (content.includes("react-hook-form") || content.includes("useForm")) {
14325
14328
  return "react-hook-form";
14326
14329
  }
@@ -14860,5 +14863,5 @@ exports.scanForSchemas = scanForSchemas;
14860
14863
  exports.scanForSitemapFiles = scanForSitemapFiles;
14861
14864
  exports.scanForSitemaps = scanForSitemaps;
14862
14865
  exports.scanForWidgets = scanForWidgets;
14863
- //# sourceMappingURL=chunk-7URAOG2M.js.map
14864
- //# sourceMappingURL=chunk-7URAOG2M.js.map
14866
+ //# sourceMappingURL=chunk-4MOJJSNA.js.map
14867
+ //# sourceMappingURL=chunk-4MOJJSNA.js.map