@uptrademedia/site-kit 1.0.30 → 1.0.32

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 (59) hide show
  1. package/dist/{chunk-WNCM4GNY.js → chunk-7BEMFSF6.js} +41 -23
  2. package/dist/chunk-7BEMFSF6.js.map +1 -0
  3. package/dist/{chunk-L474IOHD.mjs → chunk-A37Z47FZ.mjs} +41 -23
  4. package/dist/chunk-A37Z47FZ.mjs.map +1 -0
  5. package/dist/{chunk-WPSRS352.mjs → chunk-BQOFRBGZ.mjs} +3 -3
  6. package/dist/chunk-BQOFRBGZ.mjs.map +1 -0
  7. package/dist/{chunk-HCFPU7TU.js → chunk-G7RSD56P.js} +3 -3
  8. package/dist/chunk-G7RSD56P.js.map +1 -0
  9. package/dist/{chunk-MDOHOEME.mjs → chunk-GM2ZDV2B.mjs} +63 -45
  10. package/dist/chunk-GM2ZDV2B.mjs.map +1 -0
  11. package/dist/{chunk-6J26EHDM.js → chunk-H5PVDCCM.js} +63 -45
  12. package/dist/chunk-H5PVDCCM.js.map +1 -0
  13. package/dist/{chunk-XFRPT5ZX.mjs → chunk-X66VOCWP.mjs} +26 -53
  14. package/dist/chunk-X66VOCWP.mjs.map +1 -0
  15. package/dist/{chunk-5R4R3WDP.js → chunk-Y4BW6XYJ.js} +26 -53
  16. package/dist/chunk-Y4BW6XYJ.js.map +1 -0
  17. package/dist/commerce/index.js +39 -39
  18. package/dist/commerce/index.mjs +1 -1
  19. package/dist/engage/index.d.mts +2 -2
  20. package/dist/engage/index.d.ts +2 -2
  21. package/dist/engage/index.js +4 -4
  22. package/dist/engage/index.mjs +1 -1
  23. package/dist/forms/index.d.mts +1 -1
  24. package/dist/forms/index.d.ts +1 -1
  25. package/dist/forms/index.js +6 -4
  26. package/dist/forms/index.js.map +1 -1
  27. package/dist/forms/index.mjs +6 -4
  28. package/dist/forms/index.mjs.map +1 -1
  29. package/dist/index.d.mts +2 -2
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.js +51 -39
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +24 -12
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/seo/index.d.mts +6 -18
  36. package/dist/seo/index.d.ts +6 -18
  37. package/dist/seo/index.js +2 -2
  38. package/dist/seo/index.mjs +1 -1
  39. package/dist/seo/register-sitemap-cli.js +112 -3
  40. package/dist/seo/register-sitemap-cli.js.map +1 -1
  41. package/dist/seo/register-sitemap-cli.mjs +106 -2
  42. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  43. package/dist/setup/client.js +3 -3
  44. package/dist/setup/client.mjs +1 -1
  45. package/dist/setup/index.js +3 -3
  46. package/dist/setup/index.mjs +1 -1
  47. package/dist/{types-B77UG-p-.d.mts → types-CYPI3-8j.d.mts} +2 -0
  48. package/dist/{types-B77UG-p-.d.ts → types-CYPI3-8j.d.ts} +2 -0
  49. package/dist/{types-CWKw0giL.d.ts → types-C_pfGZhI.d.mts} +1 -2
  50. package/dist/{types-CWKw0giL.d.mts → types-C_pfGZhI.d.ts} +1 -2
  51. package/package.json +1 -1
  52. package/dist/chunk-5R4R3WDP.js.map +0 -1
  53. package/dist/chunk-6J26EHDM.js.map +0 -1
  54. package/dist/chunk-HCFPU7TU.js.map +0 -1
  55. package/dist/chunk-L474IOHD.mjs.map +0 -1
  56. package/dist/chunk-MDOHOEME.mjs.map +0 -1
  57. package/dist/chunk-WNCM4GNY.js.map +0 -1
  58. package/dist/chunk-WPSRS352.mjs.map +0 -1
  59. package/dist/chunk-XFRPT5ZX.mjs.map +0 -1
@@ -533,27 +533,15 @@ declare function LocationPageContent({ projectId, path, section, fallback, class
533
533
  /**
534
534
  * SitemapSync - Automatically sync sitemap.xml to Portal API
535
535
  *
536
- * This component should be included in your root layout to ensure
537
- * seo_pages stays in sync with your actual sitemap.
538
- *
539
- * The sitemap.xml is the canonical source of truth for what pages exist.
540
- * Analytics will only track page views for pages that exist in seo_pages.
536
+ * Client-only component. Lives at package root so the main entry does not
537
+ * pull in seo/ (and server-only code). For use in SiteKitProvider and
538
+ * from @uptrademedia/site-kit/seo.
541
539
  *
542
540
  * @example
543
541
  * ```tsx
544
- * // app/layout.tsx
545
- * import { SitemapSync } from '@uptrade/seo'
546
- *
547
- * export default function RootLayout({ children }) {
548
- * return (
549
- * <html>
550
- * <body>
551
- * <SitemapSync />
552
- * {children}
553
- * </body>
554
- * </html>
555
- * )
556
- * }
542
+ * import { SitemapSync } from '@uptrademedia/site-kit'
543
+ * // or
544
+ * import { SitemapSync } from '@uptrademedia/site-kit/seo'
557
545
  * ```
558
546
  */
559
547
  interface SitemapSyncProps {
@@ -533,27 +533,15 @@ declare function LocationPageContent({ projectId, path, section, fallback, class
533
533
  /**
534
534
  * SitemapSync - Automatically sync sitemap.xml to Portal API
535
535
  *
536
- * This component should be included in your root layout to ensure
537
- * seo_pages stays in sync with your actual sitemap.
538
- *
539
- * The sitemap.xml is the canonical source of truth for what pages exist.
540
- * Analytics will only track page views for pages that exist in seo_pages.
536
+ * Client-only component. Lives at package root so the main entry does not
537
+ * pull in seo/ (and server-only code). For use in SiteKitProvider and
538
+ * from @uptrademedia/site-kit/seo.
541
539
  *
542
540
  * @example
543
541
  * ```tsx
544
- * // app/layout.tsx
545
- * import { SitemapSync } from '@uptrade/seo'
546
- *
547
- * export default function RootLayout({ children }) {
548
- * return (
549
- * <html>
550
- * <body>
551
- * <SitemapSync />
552
- * {children}
553
- * </body>
554
- * </html>
555
- * )
556
- * }
542
+ * import { SitemapSync } from '@uptrademedia/site-kit'
543
+ * // or
544
+ * import { SitemapSync } from '@uptrademedia/site-kit/seo'
557
545
  * ```
558
546
  */
559
547
  interface SitemapSyncProps {
package/dist/seo/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var chunkHCFPU7TU_js = require('../chunk-HCFPU7TU.js');
5
+ var chunkG7RSD56P_js = require('../chunk-G7RSD56P.js');
6
6
  var chunk6NTMCSHP_js = require('../chunk-6NTMCSHP.js');
7
7
  var chunkFOBATMSH_js = require('../chunk-FOBATMSH.js');
8
8
  require('../chunk-ZSMWDLMK.js');
@@ -754,7 +754,7 @@ async function LocationPageContent({
754
754
 
755
755
  Object.defineProperty(exports, "SitemapSync", {
756
756
  enumerable: true,
757
- get: function () { return chunkHCFPU7TU_js.SitemapSync; }
757
+ get: function () { return chunkG7RSD56P_js.SitemapSync; }
758
758
  });
759
759
  Object.defineProperty(exports, "generateSitemap", {
760
760
  enumerable: true,
@@ -1,4 +1,4 @@
1
- export { SitemapSync } from '../chunk-WPSRS352.mjs';
1
+ export { SitemapSync } from '../chunk-BQOFRBGZ.mjs';
2
2
  export { generateSitemap, getRedirect, getRobotsDirective, isIndexable } from '../chunk-WG2SI2UN.mjs';
3
3
  import { getSEOPageData, getABTest, recordABImpression, getSchemaMarkups, getEntityEnhancedSchema, getFAQData, getInternalLinks, getContentBlock, getEntities, getManagedScripts } from '../chunk-MLY7AWHG.mjs';
4
4
  export { getABTest, getContentBlock, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from '../chunk-MLY7AWHG.mjs';
@@ -1,9 +1,118 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunk6NTMCSHP_js = require('../chunk-6NTMCSHP.js');
5
- require('../chunk-FOBATMSH.js');
6
4
  require('../chunk-ZSMWDLMK.js');
5
+ var fs = require('fs');
6
+ var path = require('path');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
11
+ var path__default = /*#__PURE__*/_interopDefault(path);
12
+
13
+ function getApiConfig() {
14
+ const apiUrl = process.env.UPTRADE_API_URL || process.env.NEXT_PUBLIC_UPTRADE_API_URL || "https://api.uptrademedia.com";
15
+ const apiKey = process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY || "";
16
+ return { apiUrl, apiKey };
17
+ }
18
+ function discoverNextJsRoutes(appDir, basePath = "") {
19
+ const entries = [];
20
+ const items = fs__default.default.readdirSync(appDir, { withFileTypes: true });
21
+ for (const item of items) {
22
+ if (item.name.startsWith("_") || item.name.startsWith(".")) continue;
23
+ if (item.name === "api") continue;
24
+ if (item.name === "node_modules") continue;
25
+ const itemPath = path__default.default.join(appDir, item.name);
26
+ if (item.isDirectory()) {
27
+ const hasPage = fs__default.default.existsSync(path__default.default.join(itemPath, "page.tsx")) || fs__default.default.existsSync(path__default.default.join(itemPath, "page.js")) || fs__default.default.existsSync(path__default.default.join(itemPath, "page.jsx"));
28
+ const isRouteGroup = item.name.startsWith("(") && item.name.endsWith(")");
29
+ const isDynamic = item.name.startsWith("[") && item.name.endsWith("]");
30
+ let routePath = basePath;
31
+ if (!isRouteGroup && !isDynamic) {
32
+ routePath = `${basePath}/${item.name}`;
33
+ }
34
+ if (hasPage && !isDynamic) {
35
+ const priority = routePath === "" ? 1 : 0.8;
36
+ entries.push({ path: routePath || "/", priority });
37
+ }
38
+ if (!isDynamic) {
39
+ const subEntries = discoverNextJsRoutes(
40
+ itemPath,
41
+ isRouteGroup ? basePath : routePath
42
+ );
43
+ entries.push(...subEntries);
44
+ }
45
+ }
46
+ }
47
+ if (basePath === "") {
48
+ const hasRootPage = fs__default.default.existsSync(path__default.default.join(appDir, "page.tsx")) || fs__default.default.existsSync(path__default.default.join(appDir, "page.js")) || fs__default.default.existsSync(path__default.default.join(appDir, "page.jsx"));
49
+ if (hasRootPage) {
50
+ entries.unshift({ path: "/", priority: 1 });
51
+ }
52
+ }
53
+ return entries;
54
+ }
55
+ async function registerSitemapViaApi(entries, optimizeMeta) {
56
+ const { apiUrl, apiKey } = getApiConfig();
57
+ if (!apiKey) {
58
+ console.warn("[Uptrade] No API key (UPTRADE_API_KEY or NEXT_PUBLIC_UPTRADE_API_KEY)");
59
+ return { success: false, created: 0, updated: 0 };
60
+ }
61
+ try {
62
+ const response = await fetch(`${apiUrl}/api/public/seo/register-sitemap`, {
63
+ method: "POST",
64
+ headers: {
65
+ "Content-Type": "application/json",
66
+ "x-api-key": apiKey
67
+ },
68
+ body: JSON.stringify({ entries, optimize_meta: optimizeMeta })
69
+ });
70
+ if (!response.ok) {
71
+ console.error(`[Uptrade] Sitemap registration failed: ${response.status} ${response.statusText}`);
72
+ return { success: false, created: 0, updated: 0 };
73
+ }
74
+ return await response.json();
75
+ } catch (error) {
76
+ console.error("[Uptrade] Sitemap registration error:", error);
77
+ return { success: false, created: 0, updated: 0 };
78
+ }
79
+ }
80
+ async function registerLocalSitemap(options) {
81
+ let entries = options.entries || [];
82
+ if (options.autoDiscover && entries.length === 0) {
83
+ const cwd = process.cwd();
84
+ const appDirs = [
85
+ path__default.default.join(cwd, "app"),
86
+ path__default.default.join(cwd, "src", "app")
87
+ ];
88
+ for (const appDir of appDirs) {
89
+ if (fs__default.default.existsSync(appDir)) {
90
+ entries = discoverNextJsRoutes(appDir);
91
+ console.log(`[Uptrade] Auto-discovered ${entries.length} routes from ${path__default.default.relative(cwd, appDir)}`);
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ if (entries.length === 0) {
97
+ console.warn("[Uptrade] No sitemap entries to register");
98
+ return { success: true, created: 0, updated: 0 };
99
+ }
100
+ console.log(`[Uptrade] Registering ${entries.length} sitemap entries...`);
101
+ const payload = entries.map((e) => ({
102
+ path: e.path,
103
+ title: e.title,
104
+ priority: e.priority,
105
+ changefreq: e.changefreq
106
+ }));
107
+ const result = await registerSitemapViaApi(
108
+ payload,
109
+ options.optimize_meta !== false
110
+ );
111
+ if (result.success) {
112
+ console.log(`[Uptrade] Sitemap registered: ${result.created} new, ${result.updated} updated`);
113
+ }
114
+ return result;
115
+ }
7
116
 
8
117
  // src/seo/register-sitemap-cli.ts
9
118
  async function main() {
@@ -12,7 +121,7 @@ async function main() {
12
121
  const skipOptimize = args.includes("--no-optimize") || args.includes("--skip-optimize");
13
122
  console.log("[Uptrade] Registering sitemap entries...");
14
123
  try {
15
- const result = await chunk6NTMCSHP_js.registerLocalSitemap({
124
+ const result = await registerLocalSitemap({
16
125
  autoDiscover,
17
126
  optimize_meta: !skipOptimize
18
127
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/seo/register-sitemap-cli.ts"],"names":["registerLocalSitemap"],"mappings":";;;;;;;;AAmBA,eAAe,IAAA,GAAO;AACpB,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AACjC,EAAA,MAAM,eAAe,IAAA,CAAK,QAAA,CAAS,iBAAiB,CAAA,IAAK,IAAA,CAAK,SAAS,IAAI,CAAA;AAC3E,EAAA,MAAM,eAAe,IAAA,CAAK,QAAA,CAAS,eAAe,CAAA,IAAK,IAAA,CAAK,SAAS,iBAAiB,CAAA;AAEtF,EAAA,OAAA,CAAQ,IAAI,0CAA0C,CAAA;AAEtD,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAMA,qCAAA,CAAqB;AAAA,MACxC,YAAA;AAAA,MACA,eAAe,CAAC;AAAA,KACjB,CAAA;AAED,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,OAAA,CAAQ,IAAI,CAAA,gDAAA,CAA6C,CAAA;AACzD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AACpD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AACpD,MAAA,IAAI,MAAA,CAAO,OAAA,KAAY,KAAA,CAAA,IAAa,MAAA,CAAO,UAAU,CAAA,EAAG;AACtD,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AAAA,MACtD;AACA,MAAA,IAAI,MAAA,CAAO,mBAAmB,SAAA,EAAW;AACvC,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2DAAA,EAAyD,MAAA,CAAO,iBAAA,CAAkB,YAAY,CAAA,MAAA,CAAQ,CAAA;AAClH,QAAA,OAAA,CAAQ,IAAI,CAAA,yEAAA,CAA2E,CAAA;AAAA,MACzF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAM,6CAAwC,CAAA;AACtD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,2BAAsB,KAAK,CAAA;AACzC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,IAAA,EAAK","file":"register-sitemap-cli.js","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI script to register sitemap entries at build time\n * \n * Usage:\n * npx uptrade-register-sitemap\n * npx uptrade-register-sitemap --auto-discover\n * npx uptrade-register-sitemap --no-optimize # Skip Signal AI meta optimization\n * \n * Or in package.json:\n * {\n * \"scripts\": {\n * \"postbuild\": \"uptrade-register-sitemap --auto-discover\"\n * }\n * }\n */\n\nimport { registerLocalSitemap } from './routing'\n\nasync function main() {\n const args = process.argv.slice(2)\n const autoDiscover = args.includes('--auto-discover') || args.includes('-a')\n const skipOptimize = args.includes('--no-optimize') || args.includes('--skip-optimize')\n \n console.log('[Uptrade] Registering sitemap entries...')\n \n try {\n const result = await registerLocalSitemap({\n autoDiscover,\n optimize_meta: !skipOptimize,\n })\n \n if (result.success) {\n console.log(`[Uptrade] ✓ Sitemap registered successfully`)\n console.log(`[Uptrade] Created: ${result.created}`)\n console.log(`[Uptrade] Updated: ${result.updated}`)\n if (result.removed !== undefined && result.removed > 0) {\n console.log(`[Uptrade] Removed: ${result.removed}`)\n }\n if (result.meta_optimization?.triggered) {\n console.log(`[Uptrade] ✓ Signal AI meta optimization triggered for ${result.meta_optimization.pages_queued} pages`)\n console.log(`[Uptrade] (Running in background - check Portal SEO module for results)`)\n }\n process.exit(0)\n } else {\n console.error('[Uptrade] ✗ Failed to register sitemap')\n process.exit(1)\n }\n } catch (error) {\n console.error('[Uptrade] ✗ Error:', error)\n process.exit(1)\n }\n}\n\nmain()\n"]}
1
+ {"version":3,"sources":["../../src/seo/register-sitemap-cli-impl.ts","../../src/seo/register-sitemap-cli.ts"],"names":["fs","path"],"mappings":"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","file":"register-sitemap-cli.js","sourcesContent":["/**\n * Standalone implementation for uptrade-register-sitemap CLI.\n * Does NOT import from server-api or routing, so it can run in Node without\n * pulling in server-only (which throws when required outside Next.js server context).\n */\n\nimport fs from 'fs'\nimport path from 'path'\n\nfunction getApiConfig(): { apiUrl: string; apiKey: string } {\n const apiUrl =\n process.env.UPTRADE_API_URL ||\n process.env.NEXT_PUBLIC_UPTRADE_API_URL ||\n 'https://api.uptrademedia.com'\n const apiKey =\n process.env.UPTRADE_API_KEY ||\n process.env.NEXT_PUBLIC_UPTRADE_API_KEY ||\n ''\n return { apiUrl, apiKey }\n}\n\nfunction discoverNextJsRoutes(\n appDir: string,\n basePath: string = ''\n): Array<{ path: string; priority: number }> {\n const entries: Array<{ path: string; priority: number }> = []\n\n const items = fs.readdirSync(appDir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.name.startsWith('_') || item.name.startsWith('.')) continue\n if (item.name === 'api') continue\n if (item.name === 'node_modules') continue\n\n const itemPath = path.join(appDir, item.name)\n\n if (item.isDirectory()) {\n const hasPage =\n fs.existsSync(path.join(itemPath, 'page.tsx')) ||\n fs.existsSync(path.join(itemPath, 'page.js')) ||\n fs.existsSync(path.join(itemPath, 'page.jsx'))\n\n const isRouteGroup = item.name.startsWith('(') && item.name.endsWith(')')\n const isDynamic = item.name.startsWith('[') && item.name.endsWith(']')\n\n let routePath = basePath\n if (!isRouteGroup && !isDynamic) {\n routePath = `${basePath}/${item.name}`\n }\n\n if (hasPage && !isDynamic) {\n const priority = routePath === '' ? 1.0 : 0.8\n entries.push({ path: routePath || '/', priority })\n }\n\n if (!isDynamic) {\n const subEntries = discoverNextJsRoutes(\n itemPath,\n isRouteGroup ? basePath : routePath\n )\n entries.push(...subEntries)\n }\n }\n }\n\n if (basePath === '') {\n const hasRootPage =\n fs.existsSync(path.join(appDir, 'page.tsx')) ||\n fs.existsSync(path.join(appDir, 'page.js')) ||\n fs.existsSync(path.join(appDir, 'page.jsx'))\n if (hasRootPage) {\n entries.unshift({ path: '/', priority: 1.0 })\n }\n }\n\n return entries\n}\n\nasync function registerSitemapViaApi(\n entries: Array<{\n path: string\n title?: string\n priority?: number\n changefreq?: string\n }>,\n optimizeMeta: boolean\n): Promise<{\n success: boolean\n created: number\n updated: number\n removed?: number\n meta_optimization?: { triggered: boolean; pages_queued: number } | null\n}> {\n const { apiUrl, apiKey } = getApiConfig()\n if (!apiKey) {\n console.warn('[Uptrade] No API key (UPTRADE_API_KEY or NEXT_PUBLIC_UPTRADE_API_KEY)')\n return { success: false, created: 0, updated: 0 }\n }\n\n try {\n const response = await fetch(`${apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({ entries, optimize_meta: optimizeMeta }),\n })\n\n if (!response.ok) {\n console.error(`[Uptrade] Sitemap registration failed: ${response.status} ${response.statusText}`)\n return { success: false, created: 0, updated: 0 }\n }\n\n return await response.json()\n } catch (error) {\n console.error('[Uptrade] Sitemap registration error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport type RegisterLocalSitemapOptions = {\n entries?: Array<{\n path: string\n title?: string\n priority?: number\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n }>\n autoDiscover?: boolean\n optimize_meta?: boolean\n}\n\nexport type RegisterLocalSitemapResult = {\n success: boolean\n created: number\n updated: number\n removed?: number\n meta_optimization?: {\n triggered: boolean\n pages_queued: number\n } | null\n}\n\nexport async function registerLocalSitemap(\n options: RegisterLocalSitemapOptions\n): Promise<RegisterLocalSitemapResult> {\n let entries = options.entries || []\n\n if (options.autoDiscover && entries.length === 0) {\n const cwd = process.cwd()\n const appDirs = [\n path.join(cwd, 'app'),\n path.join(cwd, 'src', 'app'),\n ]\n for (const appDir of appDirs) {\n if (fs.existsSync(appDir)) {\n entries = discoverNextJsRoutes(appDir)\n console.log(`[Uptrade] Auto-discovered ${entries.length} routes from ${path.relative(cwd, appDir)}`)\n break\n }\n }\n }\n\n if (entries.length === 0) {\n console.warn('[Uptrade] No sitemap entries to register')\n return { success: true, created: 0, updated: 0 }\n }\n\n console.log(`[Uptrade] Registering ${entries.length} sitemap entries...`)\n const payload = entries.map((e) => ({\n path: e.path,\n title: e.title,\n priority: e.priority,\n changefreq: e.changefreq,\n }))\n const result = await registerSitemapViaApi(\n payload,\n options.optimize_meta !== false\n )\n\n if (result.success) {\n console.log(`[Uptrade] Sitemap registered: ${result.created} new, ${result.updated} updated`)\n }\n\n return result\n}\n","#!/usr/bin/env node\n/**\n * CLI script to register sitemap entries at build time\n * \n * Usage:\n * npx uptrade-register-sitemap\n * npx uptrade-register-sitemap --auto-discover\n * npx uptrade-register-sitemap --no-optimize # Skip Signal AI meta optimization\n * \n * Or in package.json:\n * {\n * \"scripts\": {\n * \"postbuild\": \"uptrade-register-sitemap --auto-discover\"\n * }\n * }\n */\n\nimport { registerLocalSitemap } from './register-sitemap-cli-impl'\n\nasync function main() {\n const args = process.argv.slice(2)\n const autoDiscover = args.includes('--auto-discover') || args.includes('-a')\n const skipOptimize = args.includes('--no-optimize') || args.includes('--skip-optimize')\n \n console.log('[Uptrade] Registering sitemap entries...')\n \n try {\n const result = await registerLocalSitemap({\n autoDiscover,\n optimize_meta: !skipOptimize,\n })\n \n if (result.success) {\n console.log(`[Uptrade] ✓ Sitemap registered successfully`)\n console.log(`[Uptrade] Created: ${result.created}`)\n console.log(`[Uptrade] Updated: ${result.updated}`)\n if (result.removed !== undefined && result.removed > 0) {\n console.log(`[Uptrade] Removed: ${result.removed}`)\n }\n if (result.meta_optimization?.triggered) {\n console.log(`[Uptrade] ✓ Signal AI meta optimization triggered for ${result.meta_optimization.pages_queued} pages`)\n console.log(`[Uptrade] (Running in background - check Portal SEO module for results)`)\n }\n process.exit(0)\n } else {\n console.error('[Uptrade] ✗ Failed to register sitemap')\n process.exit(1)\n }\n } catch (error) {\n console.error('[Uptrade] ✗ Error:', error)\n process.exit(1)\n }\n}\n\nmain()\n"]}
@@ -1,7 +1,111 @@
1
1
  #!/usr/bin/env node
2
- import { registerLocalSitemap } from '../chunk-WG2SI2UN.mjs';
3
- import '../chunk-MLY7AWHG.mjs';
4
2
  import '../chunk-4XPGGLVP.mjs';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+
6
+ function getApiConfig() {
7
+ const apiUrl = process.env.UPTRADE_API_URL || process.env.NEXT_PUBLIC_UPTRADE_API_URL || "https://api.uptrademedia.com";
8
+ const apiKey = process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY || "";
9
+ return { apiUrl, apiKey };
10
+ }
11
+ function discoverNextJsRoutes(appDir, basePath = "") {
12
+ const entries = [];
13
+ const items = fs.readdirSync(appDir, { withFileTypes: true });
14
+ for (const item of items) {
15
+ if (item.name.startsWith("_") || item.name.startsWith(".")) continue;
16
+ if (item.name === "api") continue;
17
+ if (item.name === "node_modules") continue;
18
+ const itemPath = path.join(appDir, item.name);
19
+ if (item.isDirectory()) {
20
+ const hasPage = fs.existsSync(path.join(itemPath, "page.tsx")) || fs.existsSync(path.join(itemPath, "page.js")) || fs.existsSync(path.join(itemPath, "page.jsx"));
21
+ const isRouteGroup = item.name.startsWith("(") && item.name.endsWith(")");
22
+ const isDynamic = item.name.startsWith("[") && item.name.endsWith("]");
23
+ let routePath = basePath;
24
+ if (!isRouteGroup && !isDynamic) {
25
+ routePath = `${basePath}/${item.name}`;
26
+ }
27
+ if (hasPage && !isDynamic) {
28
+ const priority = routePath === "" ? 1 : 0.8;
29
+ entries.push({ path: routePath || "/", priority });
30
+ }
31
+ if (!isDynamic) {
32
+ const subEntries = discoverNextJsRoutes(
33
+ itemPath,
34
+ isRouteGroup ? basePath : routePath
35
+ );
36
+ entries.push(...subEntries);
37
+ }
38
+ }
39
+ }
40
+ if (basePath === "") {
41
+ const hasRootPage = fs.existsSync(path.join(appDir, "page.tsx")) || fs.existsSync(path.join(appDir, "page.js")) || fs.existsSync(path.join(appDir, "page.jsx"));
42
+ if (hasRootPage) {
43
+ entries.unshift({ path: "/", priority: 1 });
44
+ }
45
+ }
46
+ return entries;
47
+ }
48
+ async function registerSitemapViaApi(entries, optimizeMeta) {
49
+ const { apiUrl, apiKey } = getApiConfig();
50
+ if (!apiKey) {
51
+ console.warn("[Uptrade] No API key (UPTRADE_API_KEY or NEXT_PUBLIC_UPTRADE_API_KEY)");
52
+ return { success: false, created: 0, updated: 0 };
53
+ }
54
+ try {
55
+ const response = await fetch(`${apiUrl}/api/public/seo/register-sitemap`, {
56
+ method: "POST",
57
+ headers: {
58
+ "Content-Type": "application/json",
59
+ "x-api-key": apiKey
60
+ },
61
+ body: JSON.stringify({ entries, optimize_meta: optimizeMeta })
62
+ });
63
+ if (!response.ok) {
64
+ console.error(`[Uptrade] Sitemap registration failed: ${response.status} ${response.statusText}`);
65
+ return { success: false, created: 0, updated: 0 };
66
+ }
67
+ return await response.json();
68
+ } catch (error) {
69
+ console.error("[Uptrade] Sitemap registration error:", error);
70
+ return { success: false, created: 0, updated: 0 };
71
+ }
72
+ }
73
+ async function registerLocalSitemap(options) {
74
+ let entries = options.entries || [];
75
+ if (options.autoDiscover && entries.length === 0) {
76
+ const cwd = process.cwd();
77
+ const appDirs = [
78
+ path.join(cwd, "app"),
79
+ path.join(cwd, "src", "app")
80
+ ];
81
+ for (const appDir of appDirs) {
82
+ if (fs.existsSync(appDir)) {
83
+ entries = discoverNextJsRoutes(appDir);
84
+ console.log(`[Uptrade] Auto-discovered ${entries.length} routes from ${path.relative(cwd, appDir)}`);
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ if (entries.length === 0) {
90
+ console.warn("[Uptrade] No sitemap entries to register");
91
+ return { success: true, created: 0, updated: 0 };
92
+ }
93
+ console.log(`[Uptrade] Registering ${entries.length} sitemap entries...`);
94
+ const payload = entries.map((e) => ({
95
+ path: e.path,
96
+ title: e.title,
97
+ priority: e.priority,
98
+ changefreq: e.changefreq
99
+ }));
100
+ const result = await registerSitemapViaApi(
101
+ payload,
102
+ options.optimize_meta !== false
103
+ );
104
+ if (result.success) {
105
+ console.log(`[Uptrade] Sitemap registered: ${result.created} new, ${result.updated} updated`);
106
+ }
107
+ return result;
108
+ }
5
109
 
6
110
  // src/seo/register-sitemap-cli.ts
7
111
  async function main() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/seo/register-sitemap-cli.ts"],"names":[],"mappings":";;;;;;AAmBA,eAAe,IAAA,GAAO;AACpB,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AACjC,EAAA,MAAM,eAAe,IAAA,CAAK,QAAA,CAAS,iBAAiB,CAAA,IAAK,IAAA,CAAK,SAAS,IAAI,CAAA;AAC3E,EAAA,MAAM,eAAe,IAAA,CAAK,QAAA,CAAS,eAAe,CAAA,IAAK,IAAA,CAAK,SAAS,iBAAiB,CAAA;AAEtF,EAAA,OAAA,CAAQ,IAAI,0CAA0C,CAAA;AAEtD,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,oBAAA,CAAqB;AAAA,MACxC,YAAA;AAAA,MACA,eAAe,CAAC;AAAA,KACjB,CAAA;AAED,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,OAAA,CAAQ,IAAI,CAAA,gDAAA,CAA6C,CAAA;AACzD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AACpD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AACpD,MAAA,IAAI,MAAA,CAAO,OAAA,KAAY,KAAA,CAAA,IAAa,MAAA,CAAO,UAAU,CAAA,EAAG;AACtD,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AAAA,MACtD;AACA,MAAA,IAAI,MAAA,CAAO,mBAAmB,SAAA,EAAW;AACvC,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2DAAA,EAAyD,MAAA,CAAO,iBAAA,CAAkB,YAAY,CAAA,MAAA,CAAQ,CAAA;AAClH,QAAA,OAAA,CAAQ,IAAI,CAAA,yEAAA,CAA2E,CAAA;AAAA,MACzF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAM,6CAAwC,CAAA;AACtD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,2BAAsB,KAAK,CAAA;AACzC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,IAAA,EAAK","file":"register-sitemap-cli.mjs","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI script to register sitemap entries at build time\n * \n * Usage:\n * npx uptrade-register-sitemap\n * npx uptrade-register-sitemap --auto-discover\n * npx uptrade-register-sitemap --no-optimize # Skip Signal AI meta optimization\n * \n * Or in package.json:\n * {\n * \"scripts\": {\n * \"postbuild\": \"uptrade-register-sitemap --auto-discover\"\n * }\n * }\n */\n\nimport { registerLocalSitemap } from './routing'\n\nasync function main() {\n const args = process.argv.slice(2)\n const autoDiscover = args.includes('--auto-discover') || args.includes('-a')\n const skipOptimize = args.includes('--no-optimize') || args.includes('--skip-optimize')\n \n console.log('[Uptrade] Registering sitemap entries...')\n \n try {\n const result = await registerLocalSitemap({\n autoDiscover,\n optimize_meta: !skipOptimize,\n })\n \n if (result.success) {\n console.log(`[Uptrade] ✓ Sitemap registered successfully`)\n console.log(`[Uptrade] Created: ${result.created}`)\n console.log(`[Uptrade] Updated: ${result.updated}`)\n if (result.removed !== undefined && result.removed > 0) {\n console.log(`[Uptrade] Removed: ${result.removed}`)\n }\n if (result.meta_optimization?.triggered) {\n console.log(`[Uptrade] ✓ Signal AI meta optimization triggered for ${result.meta_optimization.pages_queued} pages`)\n console.log(`[Uptrade] (Running in background - check Portal SEO module for results)`)\n }\n process.exit(0)\n } else {\n console.error('[Uptrade] ✗ Failed to register sitemap')\n process.exit(1)\n }\n } catch (error) {\n console.error('[Uptrade] ✗ Error:', error)\n process.exit(1)\n }\n}\n\nmain()\n"]}
1
+ {"version":3,"sources":["../../src/seo/register-sitemap-cli-impl.ts","../../src/seo/register-sitemap-cli.ts"],"names":[],"mappings":"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","file":"register-sitemap-cli.mjs","sourcesContent":["/**\n * Standalone implementation for uptrade-register-sitemap CLI.\n * Does NOT import from server-api or routing, so it can run in Node without\n * pulling in server-only (which throws when required outside Next.js server context).\n */\n\nimport fs from 'fs'\nimport path from 'path'\n\nfunction getApiConfig(): { apiUrl: string; apiKey: string } {\n const apiUrl =\n process.env.UPTRADE_API_URL ||\n process.env.NEXT_PUBLIC_UPTRADE_API_URL ||\n 'https://api.uptrademedia.com'\n const apiKey =\n process.env.UPTRADE_API_KEY ||\n process.env.NEXT_PUBLIC_UPTRADE_API_KEY ||\n ''\n return { apiUrl, apiKey }\n}\n\nfunction discoverNextJsRoutes(\n appDir: string,\n basePath: string = ''\n): Array<{ path: string; priority: number }> {\n const entries: Array<{ path: string; priority: number }> = []\n\n const items = fs.readdirSync(appDir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.name.startsWith('_') || item.name.startsWith('.')) continue\n if (item.name === 'api') continue\n if (item.name === 'node_modules') continue\n\n const itemPath = path.join(appDir, item.name)\n\n if (item.isDirectory()) {\n const hasPage =\n fs.existsSync(path.join(itemPath, 'page.tsx')) ||\n fs.existsSync(path.join(itemPath, 'page.js')) ||\n fs.existsSync(path.join(itemPath, 'page.jsx'))\n\n const isRouteGroup = item.name.startsWith('(') && item.name.endsWith(')')\n const isDynamic = item.name.startsWith('[') && item.name.endsWith(']')\n\n let routePath = basePath\n if (!isRouteGroup && !isDynamic) {\n routePath = `${basePath}/${item.name}`\n }\n\n if (hasPage && !isDynamic) {\n const priority = routePath === '' ? 1.0 : 0.8\n entries.push({ path: routePath || '/', priority })\n }\n\n if (!isDynamic) {\n const subEntries = discoverNextJsRoutes(\n itemPath,\n isRouteGroup ? basePath : routePath\n )\n entries.push(...subEntries)\n }\n }\n }\n\n if (basePath === '') {\n const hasRootPage =\n fs.existsSync(path.join(appDir, 'page.tsx')) ||\n fs.existsSync(path.join(appDir, 'page.js')) ||\n fs.existsSync(path.join(appDir, 'page.jsx'))\n if (hasRootPage) {\n entries.unshift({ path: '/', priority: 1.0 })\n }\n }\n\n return entries\n}\n\nasync function registerSitemapViaApi(\n entries: Array<{\n path: string\n title?: string\n priority?: number\n changefreq?: string\n }>,\n optimizeMeta: boolean\n): Promise<{\n success: boolean\n created: number\n updated: number\n removed?: number\n meta_optimization?: { triggered: boolean; pages_queued: number } | null\n}> {\n const { apiUrl, apiKey } = getApiConfig()\n if (!apiKey) {\n console.warn('[Uptrade] No API key (UPTRADE_API_KEY or NEXT_PUBLIC_UPTRADE_API_KEY)')\n return { success: false, created: 0, updated: 0 }\n }\n\n try {\n const response = await fetch(`${apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({ entries, optimize_meta: optimizeMeta }),\n })\n\n if (!response.ok) {\n console.error(`[Uptrade] Sitemap registration failed: ${response.status} ${response.statusText}`)\n return { success: false, created: 0, updated: 0 }\n }\n\n return await response.json()\n } catch (error) {\n console.error('[Uptrade] Sitemap registration error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport type RegisterLocalSitemapOptions = {\n entries?: Array<{\n path: string\n title?: string\n priority?: number\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n }>\n autoDiscover?: boolean\n optimize_meta?: boolean\n}\n\nexport type RegisterLocalSitemapResult = {\n success: boolean\n created: number\n updated: number\n removed?: number\n meta_optimization?: {\n triggered: boolean\n pages_queued: number\n } | null\n}\n\nexport async function registerLocalSitemap(\n options: RegisterLocalSitemapOptions\n): Promise<RegisterLocalSitemapResult> {\n let entries = options.entries || []\n\n if (options.autoDiscover && entries.length === 0) {\n const cwd = process.cwd()\n const appDirs = [\n path.join(cwd, 'app'),\n path.join(cwd, 'src', 'app'),\n ]\n for (const appDir of appDirs) {\n if (fs.existsSync(appDir)) {\n entries = discoverNextJsRoutes(appDir)\n console.log(`[Uptrade] Auto-discovered ${entries.length} routes from ${path.relative(cwd, appDir)}`)\n break\n }\n }\n }\n\n if (entries.length === 0) {\n console.warn('[Uptrade] No sitemap entries to register')\n return { success: true, created: 0, updated: 0 }\n }\n\n console.log(`[Uptrade] Registering ${entries.length} sitemap entries...`)\n const payload = entries.map((e) => ({\n path: e.path,\n title: e.title,\n priority: e.priority,\n changefreq: e.changefreq,\n }))\n const result = await registerSitemapViaApi(\n payload,\n options.optimize_meta !== false\n )\n\n if (result.success) {\n console.log(`[Uptrade] Sitemap registered: ${result.created} new, ${result.updated} updated`)\n }\n\n return result\n}\n","#!/usr/bin/env node\n/**\n * CLI script to register sitemap entries at build time\n * \n * Usage:\n * npx uptrade-register-sitemap\n * npx uptrade-register-sitemap --auto-discover\n * npx uptrade-register-sitemap --no-optimize # Skip Signal AI meta optimization\n * \n * Or in package.json:\n * {\n * \"scripts\": {\n * \"postbuild\": \"uptrade-register-sitemap --auto-discover\"\n * }\n * }\n */\n\nimport { registerLocalSitemap } from './register-sitemap-cli-impl'\n\nasync function main() {\n const args = process.argv.slice(2)\n const autoDiscover = args.includes('--auto-discover') || args.includes('-a')\n const skipOptimize = args.includes('--no-optimize') || args.includes('--skip-optimize')\n \n console.log('[Uptrade] Registering sitemap entries...')\n \n try {\n const result = await registerLocalSitemap({\n autoDiscover,\n optimize_meta: !skipOptimize,\n })\n \n if (result.success) {\n console.log(`[Uptrade] ✓ Sitemap registered successfully`)\n console.log(`[Uptrade] Created: ${result.created}`)\n console.log(`[Uptrade] Updated: ${result.updated}`)\n if (result.removed !== undefined && result.removed > 0) {\n console.log(`[Uptrade] Removed: ${result.removed}`)\n }\n if (result.meta_optimization?.triggered) {\n console.log(`[Uptrade] ✓ Signal AI meta optimization triggered for ${result.meta_optimization.pages_queued} pages`)\n console.log(`[Uptrade] (Running in background - check Portal SEO module for results)`)\n }\n process.exit(0)\n } else {\n console.error('[Uptrade] ✗ Failed to register sitemap')\n process.exit(1)\n }\n } catch (error) {\n console.error('[Uptrade] ✗ Error:', error)\n process.exit(1)\n }\n}\n\nmain()\n"]}
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkDRFTRTKV_js = require('../chunk-DRFTRTKV.js');
5
- var chunk5R4R3WDP_js = require('../chunk-5R4R3WDP.js');
5
+ var chunkY4BW6XYJ_js = require('../chunk-Y4BW6XYJ.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
 
8
8
 
@@ -21,11 +21,11 @@ Object.defineProperty(exports, "getSnippetsByModule", {
21
21
  });
22
22
  Object.defineProperty(exports, "SetupWizard", {
23
23
  enumerable: true,
24
- get: function () { return chunk5R4R3WDP_js.SetupWizard; }
24
+ get: function () { return chunkY4BW6XYJ_js.SetupWizard; }
25
25
  });
26
26
  Object.defineProperty(exports, "UptradeSetup", {
27
27
  enumerable: true,
28
- get: function () { return chunk5R4R3WDP_js.SetupWizard; }
28
+ get: function () { return chunkY4BW6XYJ_js.SetupWizard; }
29
29
  });
30
30
  //# sourceMappingURL=client.js.map
31
31
  //# sourceMappingURL=client.js.map
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  export { IntegrationCodeView, generateIntegrationCode, getSnippetsByModule } from '../chunk-EL5QTAA3.mjs';
3
- export { SetupWizard, SetupWizard as UptradeSetup } from '../chunk-XFRPT5ZX.mjs';
3
+ export { SetupWizard, SetupWizard as UptradeSetup } from '../chunk-X66VOCWP.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  //# sourceMappingURL=client.mjs.map
6
6
  //# sourceMappingURL=client.mjs.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunkDRFTRTKV_js = require('../chunk-DRFTRTKV.js');
4
4
  var chunkKBS3KW2U_js = require('../chunk-KBS3KW2U.js');
5
- var chunk5R4R3WDP_js = require('../chunk-5R4R3WDP.js');
5
+ var chunkY4BW6XYJ_js = require('../chunk-Y4BW6XYJ.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
 
8
8
 
@@ -25,11 +25,11 @@ Object.defineProperty(exports, "handleRequest", {
25
25
  });
26
26
  Object.defineProperty(exports, "SetupWizard", {
27
27
  enumerable: true,
28
- get: function () { return chunk5R4R3WDP_js.SetupWizard; }
28
+ get: function () { return chunkY4BW6XYJ_js.SetupWizard; }
29
29
  });
30
30
  Object.defineProperty(exports, "UptradeSetup", {
31
31
  enumerable: true,
32
- get: function () { return chunk5R4R3WDP_js.SetupWizard; }
32
+ get: function () { return chunkY4BW6XYJ_js.SetupWizard; }
33
33
  });
34
34
  //# sourceMappingURL=index.js.map
35
35
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  export { IntegrationCodeView, generateIntegrationCode, getSnippetsByModule } from '../chunk-EL5QTAA3.mjs';
2
2
  export { handleRequest } from '../chunk-IT6R5VAZ.mjs';
3
- export { SetupWizard, SetupWizard as UptradeSetup } from '../chunk-XFRPT5ZX.mjs';
3
+ export { SetupWizard, SetupWizard as UptradeSetup } from '../chunk-X66VOCWP.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -57,6 +57,8 @@ interface FormField {
57
57
  options?: FieldOption[];
58
58
  /** Validation */
59
59
  is_required: boolean;
60
+ /** When true, label is hidden and used as placeholder (e.g. subscribe forms) */
61
+ hide_label?: boolean;
60
62
  validation?: ValidationRules;
61
63
  /** Conditional logic */
62
64
  conditional?: ConditionalLogic;
@@ -57,6 +57,8 @@ interface FormField {
57
57
  options?: FieldOption[];
58
58
  /** Validation */
59
59
  is_required: boolean;
60
+ /** When true, label is hidden and used as placeholder (e.g. subscribe forms) */
61
+ hide_label?: boolean;
60
62
  validation?: ValidationRules;
61
63
  /** Conditional logic */
62
64
  conditional?: ConditionalLogic;
@@ -157,9 +157,8 @@ interface ChatConfig {
157
157
  buttonIcon?: 'chat' | 'help' | 'custom';
158
158
  buttonColor?: string;
159
159
  buttonText?: string;
160
- /** Brand colors (primary -> secondary gradient) */
160
+ /** Brand primary color */
161
161
  brandPrimary?: string;
162
- brandSecondary?: string;
163
162
  /** Welcome message */
164
163
  welcomeMessage?: string;
165
164
  /** Operating hours */
@@ -157,9 +157,8 @@ interface ChatConfig {
157
157
  buttonIcon?: 'chat' | 'help' | 'custom';
158
158
  buttonColor?: string;
159
159
  buttonText?: string;
160
- /** Brand colors (primary -> secondary gradient) */
160
+ /** Brand primary color */
161
161
  brandPrimary?: string;
162
- brandSecondary?: string;
163
162
  /** Welcome message */
164
163
  welcomeMessage?: string;
165
164
  /** Operating hours */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uptrademedia/site-kit",
3
- "version": "1.0.30",
3
+ "version": "1.0.32",
4
4
  "description": "Complete client-side integration kit for Uptrade Portal - SEO, Analytics, Engage, Forms, Blog",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",