@sudajs/cli 0.18.10 → 0.19.0

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.
package/dist/index.d.ts CHANGED
@@ -317,6 +317,239 @@ declare const updateContactFormInputSchema: z.ZodObject<{
317
317
  }[] | undefined;
318
318
  confirm?: boolean | undefined;
319
319
  }>;
320
+ declare const contactFormViewSchema: z.ZodObject<{
321
+ enabled: z.ZodBoolean;
322
+ title: z.ZodString;
323
+ successMessage: z.ZodString;
324
+ submitLabel: z.ZodString;
325
+ fields: z.ZodArray<z.ZodObject<{
326
+ id: z.ZodString;
327
+ type: z.ZodEnum<["text", "textarea", "checkbox", "radio", "select"]>;
328
+ label: z.ZodString;
329
+ placeholder: z.ZodOptional<z.ZodString>;
330
+ required: z.ZodDefault<z.ZodBoolean>;
331
+ options: z.ZodDefault<z.ZodArray<z.ZodObject<{
332
+ label: z.ZodString;
333
+ value: z.ZodString;
334
+ }, "strip", z.ZodTypeAny, {
335
+ value: string;
336
+ label: string;
337
+ }, {
338
+ value: string;
339
+ label: string;
340
+ }>, "many">>;
341
+ validation: z.ZodDefault<z.ZodObject<{
342
+ format: z.ZodOptional<z.ZodEnum<["email"]>>;
343
+ maxLength: z.ZodOptional<z.ZodNumber>;
344
+ }, "strip", z.ZodTypeAny, {
345
+ format?: "email" | undefined;
346
+ maxLength?: number | undefined;
347
+ }, {
348
+ format?: "email" | undefined;
349
+ maxLength?: number | undefined;
350
+ }>>;
351
+ }, "strip", z.ZodTypeAny, {
352
+ options: {
353
+ value: string;
354
+ label: string;
355
+ }[];
356
+ validation: {
357
+ format?: "email" | undefined;
358
+ maxLength?: number | undefined;
359
+ };
360
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
361
+ label: string;
362
+ id: string;
363
+ required: boolean;
364
+ placeholder?: string | undefined;
365
+ }, {
366
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
367
+ label: string;
368
+ id: string;
369
+ options?: {
370
+ value: string;
371
+ label: string;
372
+ }[] | undefined;
373
+ validation?: {
374
+ format?: "email" | undefined;
375
+ maxLength?: number | undefined;
376
+ } | undefined;
377
+ placeholder?: string | undefined;
378
+ required?: boolean | undefined;
379
+ }>, "many">;
380
+ notifications: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
381
+ id: z.ZodString;
382
+ type: z.ZodLiteral<"email">;
383
+ enabled: z.ZodBoolean;
384
+ label: z.ZodString;
385
+ recipients: z.ZodArray<z.ZodString, "many">;
386
+ }, "strip", z.ZodTypeAny, {
387
+ type: "email";
388
+ label: string;
389
+ id: string;
390
+ enabled: boolean;
391
+ recipients: string[];
392
+ }, {
393
+ type: "email";
394
+ label: string;
395
+ id: string;
396
+ enabled: boolean;
397
+ recipients: string[];
398
+ }>, z.ZodObject<{
399
+ id: z.ZodString;
400
+ type: z.ZodEnum<["slack", "wecom", "feishu", "dingtalk"]>;
401
+ enabled: z.ZodBoolean;
402
+ label: z.ZodString;
403
+ webhookUrlMasked: z.ZodNullable<z.ZodString>;
404
+ }, "strip", z.ZodTypeAny, {
405
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
406
+ label: string;
407
+ id: string;
408
+ enabled: boolean;
409
+ webhookUrlMasked: string | null;
410
+ }, {
411
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
412
+ label: string;
413
+ id: string;
414
+ enabled: boolean;
415
+ webhookUrlMasked: string | null;
416
+ }>]>, "many">;
417
+ webhooks: z.ZodArray<z.ZodObject<{
418
+ id: z.ZodString;
419
+ enabled: z.ZodBoolean;
420
+ label: z.ZodString;
421
+ event: z.ZodLiteral<"contact.submitted">;
422
+ urlMasked: z.ZodNullable<z.ZodString>;
423
+ }, "strip", z.ZodTypeAny, {
424
+ label: string;
425
+ id: string;
426
+ enabled: boolean;
427
+ event: "contact.submitted";
428
+ urlMasked: string | null;
429
+ }, {
430
+ label: string;
431
+ id: string;
432
+ enabled: boolean;
433
+ event: "contact.submitted";
434
+ urlMasked: string | null;
435
+ }>, "many">;
436
+ limits: z.ZodObject<{
437
+ maxNotificationChannels: z.ZodNumber;
438
+ maxWebhooks: z.ZodNumber;
439
+ }, "strip", z.ZodTypeAny, {
440
+ maxNotificationChannels: number;
441
+ maxWebhooks: number;
442
+ }, {
443
+ maxNotificationChannels: number;
444
+ maxWebhooks: number;
445
+ }>;
446
+ features: z.ZodObject<{
447
+ contactNotifications: z.ZodBoolean;
448
+ contactWebhooks: z.ZodBoolean;
449
+ }, "strip", z.ZodTypeAny, {
450
+ contactNotifications: boolean;
451
+ contactWebhooks: boolean;
452
+ }, {
453
+ contactNotifications: boolean;
454
+ contactWebhooks: boolean;
455
+ }>;
456
+ }, "strip", z.ZodTypeAny, {
457
+ title: string;
458
+ enabled: boolean;
459
+ successMessage: string;
460
+ submitLabel: string;
461
+ fields: {
462
+ options: {
463
+ value: string;
464
+ label: string;
465
+ }[];
466
+ validation: {
467
+ format?: "email" | undefined;
468
+ maxLength?: number | undefined;
469
+ };
470
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
471
+ label: string;
472
+ id: string;
473
+ required: boolean;
474
+ placeholder?: string | undefined;
475
+ }[];
476
+ notifications: ({
477
+ type: "email";
478
+ label: string;
479
+ id: string;
480
+ enabled: boolean;
481
+ recipients: string[];
482
+ } | {
483
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
484
+ label: string;
485
+ id: string;
486
+ enabled: boolean;
487
+ webhookUrlMasked: string | null;
488
+ })[];
489
+ webhooks: {
490
+ label: string;
491
+ id: string;
492
+ enabled: boolean;
493
+ event: "contact.submitted";
494
+ urlMasked: string | null;
495
+ }[];
496
+ limits: {
497
+ maxNotificationChannels: number;
498
+ maxWebhooks: number;
499
+ };
500
+ features: {
501
+ contactNotifications: boolean;
502
+ contactWebhooks: boolean;
503
+ };
504
+ }, {
505
+ title: string;
506
+ enabled: boolean;
507
+ successMessage: string;
508
+ submitLabel: string;
509
+ fields: {
510
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
511
+ label: string;
512
+ id: string;
513
+ options?: {
514
+ value: string;
515
+ label: string;
516
+ }[] | undefined;
517
+ validation?: {
518
+ format?: "email" | undefined;
519
+ maxLength?: number | undefined;
520
+ } | undefined;
521
+ placeholder?: string | undefined;
522
+ required?: boolean | undefined;
523
+ }[];
524
+ notifications: ({
525
+ type: "email";
526
+ label: string;
527
+ id: string;
528
+ enabled: boolean;
529
+ recipients: string[];
530
+ } | {
531
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
532
+ label: string;
533
+ id: string;
534
+ enabled: boolean;
535
+ webhookUrlMasked: string | null;
536
+ })[];
537
+ webhooks: {
538
+ label: string;
539
+ id: string;
540
+ enabled: boolean;
541
+ event: "contact.submitted";
542
+ urlMasked: string | null;
543
+ }[];
544
+ limits: {
545
+ maxNotificationChannels: number;
546
+ maxWebhooks: number;
547
+ };
548
+ features: {
549
+ contactNotifications: boolean;
550
+ contactWebhooks: boolean;
551
+ };
552
+ }>;
320
553
  declare const updateContactFormOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
321
554
  status: z.ZodLiteral<"needs_confirmation">;
322
555
  projectId: z.ZodString;
@@ -1063,6 +1296,13 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1063
1296
  card: string;
1064
1297
  button: string;
1065
1298
  }>;
1299
+ layout: z.ZodDefault<z.ZodObject<{
1300
+ contentWidth: z.ZodEnum<["1024px", "1200px", "1280px", "1440px"]>;
1301
+ }, "strip", z.ZodTypeAny, {
1302
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1303
+ }, {
1304
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1305
+ }>>;
1066
1306
  }, "strip", z.ZodTypeAny, {
1067
1307
  colors: {
1068
1308
  secondary: string;
@@ -1081,6 +1321,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1081
1321
  card: string;
1082
1322
  button: string;
1083
1323
  };
1324
+ layout: {
1325
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1326
+ };
1084
1327
  }, {
1085
1328
  colors: {
1086
1329
  background: string;
@@ -1099,6 +1342,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1099
1342
  card: string;
1100
1343
  button: string;
1101
1344
  };
1345
+ layout?: {
1346
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1347
+ } | undefined;
1102
1348
  }>;
1103
1349
  }, "strip", z.ZodTypeAny, {
1104
1350
  label: string;
@@ -1121,6 +1367,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1121
1367
  card: string;
1122
1368
  button: string;
1123
1369
  };
1370
+ layout: {
1371
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1372
+ };
1124
1373
  };
1125
1374
  description?: string | undefined;
1126
1375
  }, {
@@ -1144,6 +1393,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1144
1393
  card: string;
1145
1394
  button: string;
1146
1395
  };
1396
+ layout?: {
1397
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1398
+ } | undefined;
1147
1399
  };
1148
1400
  description?: string | undefined;
1149
1401
  }>, "many">;
@@ -1171,6 +1423,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1171
1423
  card: string;
1172
1424
  button: string;
1173
1425
  };
1426
+ layout: {
1427
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1428
+ };
1174
1429
  };
1175
1430
  description?: string | undefined;
1176
1431
  }[];
@@ -1198,6 +1453,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1198
1453
  card: string;
1199
1454
  button: string;
1200
1455
  };
1456
+ layout?: {
1457
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1458
+ } | undefined;
1201
1459
  };
1202
1460
  description?: string | undefined;
1203
1461
  }[];
@@ -1225,6 +1483,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1225
1483
  card: string;
1226
1484
  button: string;
1227
1485
  };
1486
+ layout: {
1487
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1488
+ };
1228
1489
  };
1229
1490
  description?: string | undefined;
1230
1491
  }[];
@@ -1252,6 +1513,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1252
1513
  card: string;
1253
1514
  button: string;
1254
1515
  };
1516
+ layout?: {
1517
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1518
+ } | undefined;
1255
1519
  };
1256
1520
  description?: string | undefined;
1257
1521
  }[];
@@ -1285,6 +1549,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1285
1549
  card: string;
1286
1550
  button: string;
1287
1551
  };
1552
+ layout: {
1553
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1554
+ };
1288
1555
  };
1289
1556
  description?: string | undefined;
1290
1557
  }[];
@@ -1318,6 +1585,9 @@ declare const themeSettingsViewSchema: z.ZodObject<{
1318
1585
  card: string;
1319
1586
  button: string;
1320
1587
  };
1588
+ layout?: {
1589
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1590
+ } | undefined;
1321
1591
  };
1322
1592
  description?: string | undefined;
1323
1593
  }[];
@@ -1452,6 +1722,13 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1452
1722
  card: string;
1453
1723
  button: string;
1454
1724
  }>;
1725
+ layout: z.ZodDefault<z.ZodObject<{
1726
+ contentWidth: z.ZodEnum<["1024px", "1200px", "1280px", "1440px"]>;
1727
+ }, "strip", z.ZodTypeAny, {
1728
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1729
+ }, {
1730
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1731
+ }>>;
1455
1732
  }, "strip", z.ZodTypeAny, {
1456
1733
  colors: {
1457
1734
  secondary: string;
@@ -1470,6 +1747,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1470
1747
  card: string;
1471
1748
  button: string;
1472
1749
  };
1750
+ layout: {
1751
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1752
+ };
1473
1753
  }, {
1474
1754
  colors: {
1475
1755
  background: string;
@@ -1488,6 +1768,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1488
1768
  card: string;
1489
1769
  button: string;
1490
1770
  };
1771
+ layout?: {
1772
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1773
+ } | undefined;
1491
1774
  }>;
1492
1775
  }, "strip", z.ZodTypeAny, {
1493
1776
  label: string;
@@ -1510,6 +1793,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1510
1793
  card: string;
1511
1794
  button: string;
1512
1795
  };
1796
+ layout: {
1797
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1798
+ };
1513
1799
  };
1514
1800
  description?: string | undefined;
1515
1801
  }, {
@@ -1533,6 +1819,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1533
1819
  card: string;
1534
1820
  button: string;
1535
1821
  };
1822
+ layout?: {
1823
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1824
+ } | undefined;
1536
1825
  };
1537
1826
  description?: string | undefined;
1538
1827
  }>, "many">;
@@ -1560,6 +1849,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1560
1849
  card: string;
1561
1850
  button: string;
1562
1851
  };
1852
+ layout: {
1853
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1854
+ };
1563
1855
  };
1564
1856
  description?: string | undefined;
1565
1857
  }[];
@@ -1587,6 +1879,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1587
1879
  card: string;
1588
1880
  button: string;
1589
1881
  };
1882
+ layout?: {
1883
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1884
+ } | undefined;
1590
1885
  };
1591
1886
  description?: string | undefined;
1592
1887
  }[];
@@ -1614,6 +1909,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1614
1909
  card: string;
1615
1910
  button: string;
1616
1911
  };
1912
+ layout: {
1913
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1914
+ };
1617
1915
  };
1618
1916
  description?: string | undefined;
1619
1917
  }[];
@@ -1641,6 +1939,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1641
1939
  card: string;
1642
1940
  button: string;
1643
1941
  };
1942
+ layout?: {
1943
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1944
+ } | undefined;
1644
1945
  };
1645
1946
  description?: string | undefined;
1646
1947
  }[];
@@ -1674,6 +1975,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1674
1975
  card: string;
1675
1976
  button: string;
1676
1977
  };
1978
+ layout: {
1979
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
1980
+ };
1677
1981
  };
1678
1982
  description?: string | undefined;
1679
1983
  }[];
@@ -1707,6 +2011,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1707
2011
  card: string;
1708
2012
  button: string;
1709
2013
  };
2014
+ layout?: {
2015
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2016
+ } | undefined;
1710
2017
  };
1711
2018
  description?: string | undefined;
1712
2019
  }[];
@@ -1744,6 +2051,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1744
2051
  card: string;
1745
2052
  button: string;
1746
2053
  };
2054
+ layout: {
2055
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2056
+ };
1747
2057
  };
1748
2058
  description?: string | undefined;
1749
2059
  }[];
@@ -1781,6 +2091,9 @@ declare const updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status",
1781
2091
  card: string;
1782
2092
  button: string;
1783
2093
  };
2094
+ layout?: {
2095
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2096
+ } | undefined;
1784
2097
  };
1785
2098
  description?: string | undefined;
1786
2099
  }[];
@@ -1802,75 +2115,2258 @@ declare function buildTheme(root: string): Promise<ValidatedTheme>;
1802
2115
  declare function finalizeTheme(root: string): Promise<ValidatedTheme>;
1803
2116
  declare function findAnchorTagByHref(html: string, href: string): string | null;
1804
2117
  declare const __testUtils: {
1805
- createThemeProjectRequire: typeof createThemeProjectRequire;
1806
- createRemotePageDraft: typeof createRemotePageDraft;
1807
- findAnchorTagByHref: typeof findAnchorTagByHref;
1808
- formatMissingSharpWarning: typeof formatMissingSharpWarning;
1809
- loadThemeScopedRenderer: typeof loadThemeScopedRenderer;
1810
- normalizePlaywrightModule: typeof normalizePlaywrightModule;
1811
- normalizeSharpModule: typeof normalizeSharpModule;
1812
- initThemeWithKey: typeof initThemeWithKey;
1813
- performActivateTheme: typeof performActivateTheme;
1814
- performConfirmedPageOperation: typeof performConfirmedPageOperation;
1815
- performUpdateContactForm: typeof performUpdateContactForm;
1816
- performUpdateThemeSettings: typeof performUpdateThemeSettings;
1817
- getRemoteThemeSettings: typeof getRemoteThemeSettings;
1818
- renderDevStarterPageHtml: typeof renderDevStarterPageHtml;
1819
- writeVitePreviewEntries: typeof writeVitePreviewEntries;
1820
- resolveDevStarterSlug: typeof resolveDevStarterSlug;
1821
- resolveScreenshotOptions: typeof resolveScreenshotOptions;
1822
- slugifyThemeName: typeof slugifyThemeName;
1823
- validateThemeKey: typeof validateThemeKey;
1824
- validateThemeName: typeof validateThemeName;
1825
- validateThemeCssTokenContract: typeof validateThemeCssTokenContract;
1826
- validateThemeTailwindContract: typeof validateThemeTailwindContract;
1827
- validateThemeLocales: typeof validateThemeLocales;
1828
- validateThemePreviewLocales: typeof validateThemePreviewLocales;
1829
- resolveThemePreviewLocale: typeof resolveThemePreviewLocale;
1830
- withSerializedVitePreviewLocaleLoad: typeof withSerializedVitePreviewLocaleLoad;
1831
- toViteModuleUrl: typeof toViteModuleUrl;
1832
- updateRemotePageDraft: typeof updateRemotePageDraft;
1833
- };
1834
- declare function watchTheme(root: string, port: number): Promise<void>;
1835
- declare function writeVitePreviewEntries(root: string): Promise<void>;
1836
- declare function withSerializedVitePreviewLocaleLoad<Result>(server: object, load: () => Promise<Result>): Promise<Result>;
1837
- declare function resolveDevStarterSlug(pathname: string): string | null | undefined;
1838
- declare function resolveThemePreviewLocale(params: {
1839
- previewLocales: string[] | undefined;
1840
- explicitLang?: string | null;
1841
- acceptLanguage?: string;
1842
- }): string;
1843
- /**
1844
- * Theme-project-scoped renderer bundle. We deliberately resolve `react`,
1845
- * `react-dom/server` and `@sudajs/theme-engine/server` through the theme
1846
- * project's own `require` graph instead of the CLI's, because the theme's
1847
- * local `dist/index.js` was already loaded against that copy of React. Importing
1848
- * a different React instance from the CLI side would yield two React
1849
- * dispatchers; client components inside the theme would call hooks against
1850
- * the CLI's React (whose dispatcher is `null` outside a render), producing
1851
- * `Cannot read properties of null (reading 'useState')`.
1852
- */
1853
- interface ThemeRenderer {
1854
- ThemeRender: typeof ThemeRender;
1855
- extractLayoutChrome: typeof extractLayoutChrome;
1856
- resolveAssetPath: typeof resolveAssetPath;
1857
- createElement: typeof createElement;
1858
- renderToString: typeof renderToString;
1859
- }
1860
- declare function loadThemeScopedRenderer(themeRoot: string): Promise<ThemeRenderer>;
1861
- declare function renderDevStarterPageHtml(theme: ValidatedTheme, page: ThemeStarterPage, renderer: ThemeRenderer, locale?: string, preserveLang?: boolean, previewLocaleMessages?: ThemePreviewLocaleMessages): string;
1862
- interface ScreenshotOptions extends ThemeRootOptions {
1863
- device?: string[] | string;
1864
- output?: string;
1865
- width?: string;
1866
- height?: string;
1867
- port?: string;
1868
- fullPage?: boolean;
1869
- }
1870
- interface ResolvedScreenshotOptions {
1871
- targets: ScreenshotTarget[];
1872
- port: number;
1873
- fullPage: boolean;
2118
+ activateThemeOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
2119
+ status: z.ZodLiteral<"needs_confirmation">;
2120
+ projectId: z.ZodString;
2121
+ themeKey: z.ZodString;
2122
+ themeVersion: z.ZodNullable<z.ZodString>;
2123
+ impact: z.ZodString;
2124
+ }, "strip", z.ZodTypeAny, {
2125
+ projectId: string;
2126
+ status: "needs_confirmation";
2127
+ impact: string;
2128
+ themeKey: string;
2129
+ themeVersion: string | null;
2130
+ }, {
2131
+ projectId: string;
2132
+ status: "needs_confirmation";
2133
+ impact: string;
2134
+ themeKey: string;
2135
+ themeVersion: string | null;
2136
+ }>, z.ZodObject<{
2137
+ status: z.ZodLiteral<"activated">;
2138
+ projectId: z.ZodString;
2139
+ themeKey: z.ZodString;
2140
+ themeVersion: z.ZodNullable<z.ZodString>;
2141
+ }, "strip", z.ZodTypeAny, {
2142
+ projectId: string;
2143
+ status: "activated";
2144
+ themeKey: string;
2145
+ themeVersion: string | null;
2146
+ }, {
2147
+ projectId: string;
2148
+ status: "activated";
2149
+ themeKey: string;
2150
+ themeVersion: string | null;
2151
+ }>]>;
2152
+ contactFormOutputSchema: z.ZodObject<{
2153
+ contactForm: z.ZodObject<{
2154
+ enabled: z.ZodBoolean;
2155
+ title: z.ZodString;
2156
+ successMessage: z.ZodString;
2157
+ submitLabel: z.ZodString;
2158
+ fields: z.ZodArray<z.ZodObject<{
2159
+ id: z.ZodString;
2160
+ type: z.ZodEnum<["text", "textarea", "checkbox", "radio", "select"]>;
2161
+ label: z.ZodString;
2162
+ placeholder: z.ZodOptional<z.ZodString>;
2163
+ required: z.ZodDefault<z.ZodBoolean>;
2164
+ options: z.ZodDefault<z.ZodArray<z.ZodObject<{
2165
+ label: z.ZodString;
2166
+ value: z.ZodString;
2167
+ }, "strip", z.ZodTypeAny, {
2168
+ value: string;
2169
+ label: string;
2170
+ }, {
2171
+ value: string;
2172
+ label: string;
2173
+ }>, "many">>;
2174
+ validation: z.ZodDefault<z.ZodObject<{
2175
+ format: z.ZodOptional<z.ZodEnum<["email"]>>;
2176
+ maxLength: z.ZodOptional<z.ZodNumber>;
2177
+ }, "strip", z.ZodTypeAny, {
2178
+ format?: "email" | undefined;
2179
+ maxLength?: number | undefined;
2180
+ }, {
2181
+ format?: "email" | undefined;
2182
+ maxLength?: number | undefined;
2183
+ }>>;
2184
+ }, "strip", z.ZodTypeAny, {
2185
+ options: {
2186
+ value: string;
2187
+ label: string;
2188
+ }[];
2189
+ validation: {
2190
+ format?: "email" | undefined;
2191
+ maxLength?: number | undefined;
2192
+ };
2193
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2194
+ label: string;
2195
+ id: string;
2196
+ required: boolean;
2197
+ placeholder?: string | undefined;
2198
+ }, {
2199
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2200
+ label: string;
2201
+ id: string;
2202
+ options?: {
2203
+ value: string;
2204
+ label: string;
2205
+ }[] | undefined;
2206
+ validation?: {
2207
+ format?: "email" | undefined;
2208
+ maxLength?: number | undefined;
2209
+ } | undefined;
2210
+ placeholder?: string | undefined;
2211
+ required?: boolean | undefined;
2212
+ }>, "many">;
2213
+ notifications: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2214
+ id: z.ZodString;
2215
+ type: z.ZodLiteral<"email">;
2216
+ enabled: z.ZodBoolean;
2217
+ label: z.ZodString;
2218
+ recipients: z.ZodArray<z.ZodString, "many">;
2219
+ }, "strip", z.ZodTypeAny, {
2220
+ type: "email";
2221
+ label: string;
2222
+ id: string;
2223
+ enabled: boolean;
2224
+ recipients: string[];
2225
+ }, {
2226
+ type: "email";
2227
+ label: string;
2228
+ id: string;
2229
+ enabled: boolean;
2230
+ recipients: string[];
2231
+ }>, z.ZodObject<{
2232
+ id: z.ZodString;
2233
+ type: z.ZodEnum<["slack", "wecom", "feishu", "dingtalk"]>;
2234
+ enabled: z.ZodBoolean;
2235
+ label: z.ZodString;
2236
+ webhookUrlMasked: z.ZodNullable<z.ZodString>;
2237
+ }, "strip", z.ZodTypeAny, {
2238
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2239
+ label: string;
2240
+ id: string;
2241
+ enabled: boolean;
2242
+ webhookUrlMasked: string | null;
2243
+ }, {
2244
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2245
+ label: string;
2246
+ id: string;
2247
+ enabled: boolean;
2248
+ webhookUrlMasked: string | null;
2249
+ }>]>, "many">;
2250
+ webhooks: z.ZodArray<z.ZodObject<{
2251
+ id: z.ZodString;
2252
+ enabled: z.ZodBoolean;
2253
+ label: z.ZodString;
2254
+ event: z.ZodLiteral<"contact.submitted">;
2255
+ urlMasked: z.ZodNullable<z.ZodString>;
2256
+ }, "strip", z.ZodTypeAny, {
2257
+ label: string;
2258
+ id: string;
2259
+ enabled: boolean;
2260
+ event: "contact.submitted";
2261
+ urlMasked: string | null;
2262
+ }, {
2263
+ label: string;
2264
+ id: string;
2265
+ enabled: boolean;
2266
+ event: "contact.submitted";
2267
+ urlMasked: string | null;
2268
+ }>, "many">;
2269
+ limits: z.ZodObject<{
2270
+ maxNotificationChannels: z.ZodNumber;
2271
+ maxWebhooks: z.ZodNumber;
2272
+ }, "strip", z.ZodTypeAny, {
2273
+ maxNotificationChannels: number;
2274
+ maxWebhooks: number;
2275
+ }, {
2276
+ maxNotificationChannels: number;
2277
+ maxWebhooks: number;
2278
+ }>;
2279
+ features: z.ZodObject<{
2280
+ contactNotifications: z.ZodBoolean;
2281
+ contactWebhooks: z.ZodBoolean;
2282
+ }, "strip", z.ZodTypeAny, {
2283
+ contactNotifications: boolean;
2284
+ contactWebhooks: boolean;
2285
+ }, {
2286
+ contactNotifications: boolean;
2287
+ contactWebhooks: boolean;
2288
+ }>;
2289
+ }, "strip", z.ZodTypeAny, {
2290
+ title: string;
2291
+ enabled: boolean;
2292
+ successMessage: string;
2293
+ submitLabel: string;
2294
+ fields: {
2295
+ options: {
2296
+ value: string;
2297
+ label: string;
2298
+ }[];
2299
+ validation: {
2300
+ format?: "email" | undefined;
2301
+ maxLength?: number | undefined;
2302
+ };
2303
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2304
+ label: string;
2305
+ id: string;
2306
+ required: boolean;
2307
+ placeholder?: string | undefined;
2308
+ }[];
2309
+ notifications: ({
2310
+ type: "email";
2311
+ label: string;
2312
+ id: string;
2313
+ enabled: boolean;
2314
+ recipients: string[];
2315
+ } | {
2316
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2317
+ label: string;
2318
+ id: string;
2319
+ enabled: boolean;
2320
+ webhookUrlMasked: string | null;
2321
+ })[];
2322
+ webhooks: {
2323
+ label: string;
2324
+ id: string;
2325
+ enabled: boolean;
2326
+ event: "contact.submitted";
2327
+ urlMasked: string | null;
2328
+ }[];
2329
+ limits: {
2330
+ maxNotificationChannels: number;
2331
+ maxWebhooks: number;
2332
+ };
2333
+ features: {
2334
+ contactNotifications: boolean;
2335
+ contactWebhooks: boolean;
2336
+ };
2337
+ }, {
2338
+ title: string;
2339
+ enabled: boolean;
2340
+ successMessage: string;
2341
+ submitLabel: string;
2342
+ fields: {
2343
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2344
+ label: string;
2345
+ id: string;
2346
+ options?: {
2347
+ value: string;
2348
+ label: string;
2349
+ }[] | undefined;
2350
+ validation?: {
2351
+ format?: "email" | undefined;
2352
+ maxLength?: number | undefined;
2353
+ } | undefined;
2354
+ placeholder?: string | undefined;
2355
+ required?: boolean | undefined;
2356
+ }[];
2357
+ notifications: ({
2358
+ type: "email";
2359
+ label: string;
2360
+ id: string;
2361
+ enabled: boolean;
2362
+ recipients: string[];
2363
+ } | {
2364
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2365
+ label: string;
2366
+ id: string;
2367
+ enabled: boolean;
2368
+ webhookUrlMasked: string | null;
2369
+ })[];
2370
+ webhooks: {
2371
+ label: string;
2372
+ id: string;
2373
+ enabled: boolean;
2374
+ event: "contact.submitted";
2375
+ urlMasked: string | null;
2376
+ }[];
2377
+ limits: {
2378
+ maxNotificationChannels: number;
2379
+ maxWebhooks: number;
2380
+ };
2381
+ features: {
2382
+ contactNotifications: boolean;
2383
+ contactWebhooks: boolean;
2384
+ };
2385
+ }>;
2386
+ }, "strip", z.ZodTypeAny, {
2387
+ contactForm: {
2388
+ title: string;
2389
+ enabled: boolean;
2390
+ successMessage: string;
2391
+ submitLabel: string;
2392
+ fields: {
2393
+ options: {
2394
+ value: string;
2395
+ label: string;
2396
+ }[];
2397
+ validation: {
2398
+ format?: "email" | undefined;
2399
+ maxLength?: number | undefined;
2400
+ };
2401
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2402
+ label: string;
2403
+ id: string;
2404
+ required: boolean;
2405
+ placeholder?: string | undefined;
2406
+ }[];
2407
+ notifications: ({
2408
+ type: "email";
2409
+ label: string;
2410
+ id: string;
2411
+ enabled: boolean;
2412
+ recipients: string[];
2413
+ } | {
2414
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2415
+ label: string;
2416
+ id: string;
2417
+ enabled: boolean;
2418
+ webhookUrlMasked: string | null;
2419
+ })[];
2420
+ webhooks: {
2421
+ label: string;
2422
+ id: string;
2423
+ enabled: boolean;
2424
+ event: "contact.submitted";
2425
+ urlMasked: string | null;
2426
+ }[];
2427
+ limits: {
2428
+ maxNotificationChannels: number;
2429
+ maxWebhooks: number;
2430
+ };
2431
+ features: {
2432
+ contactNotifications: boolean;
2433
+ contactWebhooks: boolean;
2434
+ };
2435
+ };
2436
+ }, {
2437
+ contactForm: {
2438
+ title: string;
2439
+ enabled: boolean;
2440
+ successMessage: string;
2441
+ submitLabel: string;
2442
+ fields: {
2443
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
2444
+ label: string;
2445
+ id: string;
2446
+ options?: {
2447
+ value: string;
2448
+ label: string;
2449
+ }[] | undefined;
2450
+ validation?: {
2451
+ format?: "email" | undefined;
2452
+ maxLength?: number | undefined;
2453
+ } | undefined;
2454
+ placeholder?: string | undefined;
2455
+ required?: boolean | undefined;
2456
+ }[];
2457
+ notifications: ({
2458
+ type: "email";
2459
+ label: string;
2460
+ id: string;
2461
+ enabled: boolean;
2462
+ recipients: string[];
2463
+ } | {
2464
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
2465
+ label: string;
2466
+ id: string;
2467
+ enabled: boolean;
2468
+ webhookUrlMasked: string | null;
2469
+ })[];
2470
+ webhooks: {
2471
+ label: string;
2472
+ id: string;
2473
+ enabled: boolean;
2474
+ event: "contact.submitted";
2475
+ urlMasked: string | null;
2476
+ }[];
2477
+ limits: {
2478
+ maxNotificationChannels: number;
2479
+ maxWebhooks: number;
2480
+ };
2481
+ features: {
2482
+ contactNotifications: boolean;
2483
+ contactWebhooks: boolean;
2484
+ };
2485
+ };
2486
+ }>;
2487
+ createPageDraftOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
2488
+ status: z.ZodLiteral<"created">;
2489
+ pageId: z.ZodString;
2490
+ }, "strip", z.ZodTypeAny, {
2491
+ status: "created";
2492
+ pageId: string;
2493
+ }, {
2494
+ status: "created";
2495
+ pageId: string;
2496
+ }>, z.ZodObject<{
2497
+ status: z.ZodLiteral<"invalid">;
2498
+ valid: z.ZodLiteral<false>;
2499
+ issues: z.ZodArray<z.ZodObject<{
2500
+ path: z.ZodString;
2501
+ message: z.ZodString;
2502
+ }, "strip", z.ZodTypeAny, {
2503
+ path: string;
2504
+ message: string;
2505
+ }, {
2506
+ path: string;
2507
+ message: string;
2508
+ }>, "many">;
2509
+ }, "strip", z.ZodTypeAny, {
2510
+ status: "invalid";
2511
+ issues: {
2512
+ path: string;
2513
+ message: string;
2514
+ }[];
2515
+ valid: false;
2516
+ }, {
2517
+ status: "invalid";
2518
+ issues: {
2519
+ path: string;
2520
+ message: string;
2521
+ }[];
2522
+ valid: false;
2523
+ }>]>;
2524
+ createProjectOutputSchema: z.ZodObject<{
2525
+ projectId: z.ZodString;
2526
+ name: z.ZodString;
2527
+ defaultDomain: z.ZodNullable<z.ZodString>;
2528
+ dashboardUrl: z.ZodString;
2529
+ }, "strip", z.ZodTypeAny, {
2530
+ projectId: string;
2531
+ name: string;
2532
+ defaultDomain: string | null;
2533
+ dashboardUrl: string;
2534
+ }, {
2535
+ projectId: string;
2536
+ name: string;
2537
+ defaultDomain: string | null;
2538
+ dashboardUrl: string;
2539
+ }>;
2540
+ createThemeProjectRequire: typeof createThemeProjectRequire;
2541
+ createVisualAuditPage: typeof createVisualAuditPage;
2542
+ createRemotePageDraft: typeof createRemotePageDraft;
2543
+ destructivePageOperationOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
2544
+ status: z.ZodLiteral<"needs_confirmation">;
2545
+ projectId: z.ZodString;
2546
+ slug: z.ZodString;
2547
+ impact: z.ZodString;
2548
+ }, "strip", z.ZodTypeAny, {
2549
+ projectId: string;
2550
+ slug: string;
2551
+ status: "needs_confirmation";
2552
+ impact: string;
2553
+ }, {
2554
+ projectId: string;
2555
+ slug: string;
2556
+ status: "needs_confirmation";
2557
+ impact: string;
2558
+ }>, z.ZodObject<{
2559
+ status: z.ZodEnum<["deleted", "published"]>;
2560
+ projectId: z.ZodString;
2561
+ slug: z.ZodString;
2562
+ pageId: z.ZodString;
2563
+ }, "strip", z.ZodTypeAny, {
2564
+ projectId: string;
2565
+ slug: string;
2566
+ status: "deleted" | "published";
2567
+ pageId: string;
2568
+ }, {
2569
+ projectId: string;
2570
+ slug: string;
2571
+ status: "deleted" | "published";
2572
+ pageId: string;
2573
+ }>]>;
2574
+ findAnchorTagByHref: typeof findAnchorTagByHref;
2575
+ formatMissingSharpWarning: typeof formatMissingSharpWarning;
2576
+ loadThemeScopedRenderer: typeof loadThemeScopedRenderer;
2577
+ normalizePlaywrightModule: typeof normalizePlaywrightModule;
2578
+ normalizeSharpModule: typeof normalizeSharpModule;
2579
+ initThemeWithKey: typeof initThemeWithKey;
2580
+ performActivateTheme: typeof performActivateTheme;
2581
+ performConfirmedPageOperation: typeof performConfirmedPageOperation;
2582
+ performUpdateContactForm: typeof performUpdateContactForm;
2583
+ performUpdateThemeSettings: typeof performUpdateThemeSettings;
2584
+ getRemoteContactForm: typeof getRemoteContactForm;
2585
+ getRemoteThemeSettings: typeof getRemoteThemeSettings;
2586
+ listProjectsOutputSchema: z.ZodObject<{
2587
+ projects: z.ZodArray<z.ZodObject<{
2588
+ projectId: z.ZodString;
2589
+ name: z.ZodString;
2590
+ defaultDomain: z.ZodNullable<z.ZodString>;
2591
+ role: z.ZodString;
2592
+ isOwner: z.ZodBoolean;
2593
+ activeThemeKey: z.ZodNullable<z.ZodString>;
2594
+ activeThemeVersion: z.ZodNullable<z.ZodString>;
2595
+ }, "strip", z.ZodTypeAny, {
2596
+ projectId: string;
2597
+ name: string;
2598
+ defaultDomain: string | null;
2599
+ role: string;
2600
+ isOwner: boolean;
2601
+ activeThemeKey: string | null;
2602
+ activeThemeVersion: string | null;
2603
+ }, {
2604
+ projectId: string;
2605
+ name: string;
2606
+ defaultDomain: string | null;
2607
+ role: string;
2608
+ isOwner: boolean;
2609
+ activeThemeKey: string | null;
2610
+ activeThemeVersion: string | null;
2611
+ }>, "many">;
2612
+ }, "strip", z.ZodTypeAny, {
2613
+ projects: {
2614
+ projectId: string;
2615
+ name: string;
2616
+ defaultDomain: string | null;
2617
+ role: string;
2618
+ isOwner: boolean;
2619
+ activeThemeKey: string | null;
2620
+ activeThemeVersion: string | null;
2621
+ }[];
2622
+ }, {
2623
+ projects: {
2624
+ projectId: string;
2625
+ name: string;
2626
+ defaultDomain: string | null;
2627
+ role: string;
2628
+ isOwner: boolean;
2629
+ activeThemeKey: string | null;
2630
+ activeThemeVersion: string | null;
2631
+ }[];
2632
+ }>;
2633
+ renderDevStarterPageHtml: typeof renderDevStarterPageHtml;
2634
+ renderDevEditorPageHtml: typeof renderDevEditorPageHtml;
2635
+ writeVitePreviewEntries: typeof writeVitePreviewEntries;
2636
+ resolveDevEditorSlug: typeof resolveDevEditorSlug;
2637
+ resolveDevStarterSlug: typeof resolveDevStarterSlug;
2638
+ resolveDevVisualAuditComponent: typeof resolveDevVisualAuditComponent;
2639
+ getThemeVisualAuditComponentTypes: typeof getThemeVisualAuditComponentTypes;
2640
+ resolveScreenshotOptions: typeof resolveScreenshotOptions;
2641
+ resolveVisualCheckOptions: typeof resolveVisualCheckOptions;
2642
+ slugifyThemeName: typeof slugifyThemeName;
2643
+ validateThemeKey: typeof validateThemeKey;
2644
+ validateThemeName: typeof validateThemeName;
2645
+ validateThemeCssTokenContract: typeof validateThemeCssTokenContract;
2646
+ validateThemeTailwindContract: typeof validateThemeTailwindContract;
2647
+ validateThemeLocales: typeof validateThemeLocales;
2648
+ validateThemePreviewLocales: typeof validateThemePreviewLocales;
2649
+ resolveThemePreviewLocale: typeof resolveThemePreviewLocale;
2650
+ withSerializedVitePreviewLocaleLoad: typeof withSerializedVitePreviewLocaleLoad;
2651
+ toViteModuleUrl: typeof toViteModuleUrl;
2652
+ themeSettingsOutputSchema: z.ZodObject<{
2653
+ themeSettings: z.ZodObject<{
2654
+ themeKey: z.ZodString;
2655
+ themeVersion: z.ZodString;
2656
+ designSystem: z.ZodEffects<z.ZodObject<{
2657
+ version: z.ZodLiteral<1>;
2658
+ defaultPresetId: z.ZodString;
2659
+ presets: z.ZodArray<z.ZodObject<{
2660
+ id: z.ZodString;
2661
+ label: z.ZodString;
2662
+ description: z.ZodOptional<z.ZodString>;
2663
+ tokens: z.ZodObject<{
2664
+ colors: z.ZodEffects<z.ZodObject<{
2665
+ background: z.ZodString;
2666
+ foreground: z.ZodString;
2667
+ primary: z.ZodString;
2668
+ primaryForeground: z.ZodString;
2669
+ secondary: z.ZodOptional<z.ZodString>;
2670
+ secondaryForeground: z.ZodOptional<z.ZodString>;
2671
+ accent: z.ZodString;
2672
+ accentForeground: z.ZodString;
2673
+ muted: z.ZodString;
2674
+ mutedForeground: z.ZodString;
2675
+ }, "strip", z.ZodTypeAny, {
2676
+ background: string;
2677
+ foreground: string;
2678
+ primary: string;
2679
+ primaryForeground: string;
2680
+ accent: string;
2681
+ accentForeground: string;
2682
+ muted: string;
2683
+ mutedForeground: string;
2684
+ secondary?: string | undefined;
2685
+ secondaryForeground?: string | undefined;
2686
+ }, {
2687
+ background: string;
2688
+ foreground: string;
2689
+ primary: string;
2690
+ primaryForeground: string;
2691
+ accent: string;
2692
+ accentForeground: string;
2693
+ muted: string;
2694
+ mutedForeground: string;
2695
+ secondary?: string | undefined;
2696
+ secondaryForeground?: string | undefined;
2697
+ }>, {
2698
+ secondary: string;
2699
+ secondaryForeground: string;
2700
+ background: string;
2701
+ foreground: string;
2702
+ primary: string;
2703
+ primaryForeground: string;
2704
+ accent: string;
2705
+ accentForeground: string;
2706
+ muted: string;
2707
+ mutedForeground: string;
2708
+ }, {
2709
+ background: string;
2710
+ foreground: string;
2711
+ primary: string;
2712
+ primaryForeground: string;
2713
+ accent: string;
2714
+ accentForeground: string;
2715
+ muted: string;
2716
+ mutedForeground: string;
2717
+ secondary?: string | undefined;
2718
+ secondaryForeground?: string | undefined;
2719
+ }>;
2720
+ radius: z.ZodObject<{
2721
+ card: z.ZodString;
2722
+ button: z.ZodString;
2723
+ input: z.ZodString;
2724
+ }, "strip", z.ZodTypeAny, {
2725
+ input: string;
2726
+ card: string;
2727
+ button: string;
2728
+ }, {
2729
+ input: string;
2730
+ card: string;
2731
+ button: string;
2732
+ }>;
2733
+ layout: z.ZodDefault<z.ZodObject<{
2734
+ contentWidth: z.ZodEnum<["1024px", "1200px", "1280px", "1440px"]>;
2735
+ }, "strip", z.ZodTypeAny, {
2736
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2737
+ }, {
2738
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2739
+ }>>;
2740
+ }, "strip", z.ZodTypeAny, {
2741
+ colors: {
2742
+ secondary: string;
2743
+ secondaryForeground: string;
2744
+ background: string;
2745
+ foreground: string;
2746
+ primary: string;
2747
+ primaryForeground: string;
2748
+ accent: string;
2749
+ accentForeground: string;
2750
+ muted: string;
2751
+ mutedForeground: string;
2752
+ };
2753
+ radius: {
2754
+ input: string;
2755
+ card: string;
2756
+ button: string;
2757
+ };
2758
+ layout: {
2759
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2760
+ };
2761
+ }, {
2762
+ colors: {
2763
+ background: string;
2764
+ foreground: string;
2765
+ primary: string;
2766
+ primaryForeground: string;
2767
+ accent: string;
2768
+ accentForeground: string;
2769
+ muted: string;
2770
+ mutedForeground: string;
2771
+ secondary?: string | undefined;
2772
+ secondaryForeground?: string | undefined;
2773
+ };
2774
+ radius: {
2775
+ input: string;
2776
+ card: string;
2777
+ button: string;
2778
+ };
2779
+ layout?: {
2780
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2781
+ } | undefined;
2782
+ }>;
2783
+ }, "strip", z.ZodTypeAny, {
2784
+ label: string;
2785
+ id: string;
2786
+ tokens: {
2787
+ colors: {
2788
+ secondary: string;
2789
+ secondaryForeground: string;
2790
+ background: string;
2791
+ foreground: string;
2792
+ primary: string;
2793
+ primaryForeground: string;
2794
+ accent: string;
2795
+ accentForeground: string;
2796
+ muted: string;
2797
+ mutedForeground: string;
2798
+ };
2799
+ radius: {
2800
+ input: string;
2801
+ card: string;
2802
+ button: string;
2803
+ };
2804
+ layout: {
2805
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2806
+ };
2807
+ };
2808
+ description?: string | undefined;
2809
+ }, {
2810
+ label: string;
2811
+ id: string;
2812
+ tokens: {
2813
+ colors: {
2814
+ background: string;
2815
+ foreground: string;
2816
+ primary: string;
2817
+ primaryForeground: string;
2818
+ accent: string;
2819
+ accentForeground: string;
2820
+ muted: string;
2821
+ mutedForeground: string;
2822
+ secondary?: string | undefined;
2823
+ secondaryForeground?: string | undefined;
2824
+ };
2825
+ radius: {
2826
+ input: string;
2827
+ card: string;
2828
+ button: string;
2829
+ };
2830
+ layout?: {
2831
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2832
+ } | undefined;
2833
+ };
2834
+ description?: string | undefined;
2835
+ }>, "many">;
2836
+ }, "strip", z.ZodTypeAny, {
2837
+ version: 1;
2838
+ defaultPresetId: string;
2839
+ presets: {
2840
+ label: string;
2841
+ id: string;
2842
+ tokens: {
2843
+ colors: {
2844
+ secondary: string;
2845
+ secondaryForeground: string;
2846
+ background: string;
2847
+ foreground: string;
2848
+ primary: string;
2849
+ primaryForeground: string;
2850
+ accent: string;
2851
+ accentForeground: string;
2852
+ muted: string;
2853
+ mutedForeground: string;
2854
+ };
2855
+ radius: {
2856
+ input: string;
2857
+ card: string;
2858
+ button: string;
2859
+ };
2860
+ layout: {
2861
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2862
+ };
2863
+ };
2864
+ description?: string | undefined;
2865
+ }[];
2866
+ }, {
2867
+ version: 1;
2868
+ defaultPresetId: string;
2869
+ presets: {
2870
+ label: string;
2871
+ id: string;
2872
+ tokens: {
2873
+ colors: {
2874
+ background: string;
2875
+ foreground: string;
2876
+ primary: string;
2877
+ primaryForeground: string;
2878
+ accent: string;
2879
+ accentForeground: string;
2880
+ muted: string;
2881
+ mutedForeground: string;
2882
+ secondary?: string | undefined;
2883
+ secondaryForeground?: string | undefined;
2884
+ };
2885
+ radius: {
2886
+ input: string;
2887
+ card: string;
2888
+ button: string;
2889
+ };
2890
+ layout?: {
2891
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2892
+ } | undefined;
2893
+ };
2894
+ description?: string | undefined;
2895
+ }[];
2896
+ }>, {
2897
+ version: 1;
2898
+ defaultPresetId: string;
2899
+ presets: {
2900
+ label: string;
2901
+ id: string;
2902
+ tokens: {
2903
+ colors: {
2904
+ secondary: string;
2905
+ secondaryForeground: string;
2906
+ background: string;
2907
+ foreground: string;
2908
+ primary: string;
2909
+ primaryForeground: string;
2910
+ accent: string;
2911
+ accentForeground: string;
2912
+ muted: string;
2913
+ mutedForeground: string;
2914
+ };
2915
+ radius: {
2916
+ input: string;
2917
+ card: string;
2918
+ button: string;
2919
+ };
2920
+ layout: {
2921
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2922
+ };
2923
+ };
2924
+ description?: string | undefined;
2925
+ }[];
2926
+ }, {
2927
+ version: 1;
2928
+ defaultPresetId: string;
2929
+ presets: {
2930
+ label: string;
2931
+ id: string;
2932
+ tokens: {
2933
+ colors: {
2934
+ background: string;
2935
+ foreground: string;
2936
+ primary: string;
2937
+ primaryForeground: string;
2938
+ accent: string;
2939
+ accentForeground: string;
2940
+ muted: string;
2941
+ mutedForeground: string;
2942
+ secondary?: string | undefined;
2943
+ secondaryForeground?: string | undefined;
2944
+ };
2945
+ radius: {
2946
+ input: string;
2947
+ card: string;
2948
+ button: string;
2949
+ };
2950
+ layout?: {
2951
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2952
+ } | undefined;
2953
+ };
2954
+ description?: string | undefined;
2955
+ }[];
2956
+ }>;
2957
+ rootProps: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2958
+ schema: z.ZodUnknown;
2959
+ }, "strip", z.ZodTypeAny, {
2960
+ themeKey: string;
2961
+ themeVersion: string;
2962
+ designSystem: {
2963
+ version: 1;
2964
+ defaultPresetId: string;
2965
+ presets: {
2966
+ label: string;
2967
+ id: string;
2968
+ tokens: {
2969
+ colors: {
2970
+ secondary: string;
2971
+ secondaryForeground: string;
2972
+ background: string;
2973
+ foreground: string;
2974
+ primary: string;
2975
+ primaryForeground: string;
2976
+ accent: string;
2977
+ accentForeground: string;
2978
+ muted: string;
2979
+ mutedForeground: string;
2980
+ };
2981
+ radius: {
2982
+ input: string;
2983
+ card: string;
2984
+ button: string;
2985
+ };
2986
+ layout: {
2987
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
2988
+ };
2989
+ };
2990
+ description?: string | undefined;
2991
+ }[];
2992
+ };
2993
+ rootProps: Record<string, unknown>;
2994
+ schema?: unknown;
2995
+ }, {
2996
+ themeKey: string;
2997
+ themeVersion: string;
2998
+ designSystem: {
2999
+ version: 1;
3000
+ defaultPresetId: string;
3001
+ presets: {
3002
+ label: string;
3003
+ id: string;
3004
+ tokens: {
3005
+ colors: {
3006
+ background: string;
3007
+ foreground: string;
3008
+ primary: string;
3009
+ primaryForeground: string;
3010
+ accent: string;
3011
+ accentForeground: string;
3012
+ muted: string;
3013
+ mutedForeground: string;
3014
+ secondary?: string | undefined;
3015
+ secondaryForeground?: string | undefined;
3016
+ };
3017
+ radius: {
3018
+ input: string;
3019
+ card: string;
3020
+ button: string;
3021
+ };
3022
+ layout?: {
3023
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3024
+ } | undefined;
3025
+ };
3026
+ description?: string | undefined;
3027
+ }[];
3028
+ };
3029
+ rootProps: Record<string, unknown>;
3030
+ schema?: unknown;
3031
+ }>;
3032
+ }, "strip", z.ZodTypeAny, {
3033
+ themeSettings: {
3034
+ themeKey: string;
3035
+ themeVersion: string;
3036
+ designSystem: {
3037
+ version: 1;
3038
+ defaultPresetId: string;
3039
+ presets: {
3040
+ label: string;
3041
+ id: string;
3042
+ tokens: {
3043
+ colors: {
3044
+ secondary: string;
3045
+ secondaryForeground: string;
3046
+ background: string;
3047
+ foreground: string;
3048
+ primary: string;
3049
+ primaryForeground: string;
3050
+ accent: string;
3051
+ accentForeground: string;
3052
+ muted: string;
3053
+ mutedForeground: string;
3054
+ };
3055
+ radius: {
3056
+ input: string;
3057
+ card: string;
3058
+ button: string;
3059
+ };
3060
+ layout: {
3061
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3062
+ };
3063
+ };
3064
+ description?: string | undefined;
3065
+ }[];
3066
+ };
3067
+ rootProps: Record<string, unknown>;
3068
+ schema?: unknown;
3069
+ };
3070
+ }, {
3071
+ themeSettings: {
3072
+ themeKey: string;
3073
+ themeVersion: string;
3074
+ designSystem: {
3075
+ version: 1;
3076
+ defaultPresetId: string;
3077
+ presets: {
3078
+ label: string;
3079
+ id: string;
3080
+ tokens: {
3081
+ colors: {
3082
+ background: string;
3083
+ foreground: string;
3084
+ primary: string;
3085
+ primaryForeground: string;
3086
+ accent: string;
3087
+ accentForeground: string;
3088
+ muted: string;
3089
+ mutedForeground: string;
3090
+ secondary?: string | undefined;
3091
+ secondaryForeground?: string | undefined;
3092
+ };
3093
+ radius: {
3094
+ input: string;
3095
+ card: string;
3096
+ button: string;
3097
+ };
3098
+ layout?: {
3099
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3100
+ } | undefined;
3101
+ };
3102
+ description?: string | undefined;
3103
+ }[];
3104
+ };
3105
+ rootProps: Record<string, unknown>;
3106
+ schema?: unknown;
3107
+ };
3108
+ }>;
3109
+ updateContactFormOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
3110
+ status: z.ZodLiteral<"needs_confirmation">;
3111
+ projectId: z.ZodString;
3112
+ impact: z.ZodString;
3113
+ draft: z.ZodObject<Omit<{
3114
+ projectId: z.ZodString;
3115
+ enabled: z.ZodOptional<z.ZodBoolean>;
3116
+ title: z.ZodOptional<z.ZodString>;
3117
+ successMessage: z.ZodOptional<z.ZodString>;
3118
+ submitLabel: z.ZodOptional<z.ZodString>;
3119
+ fields: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
3120
+ id: z.ZodString;
3121
+ type: z.ZodEnum<["text", "textarea", "checkbox", "radio", "select"]>;
3122
+ label: z.ZodString;
3123
+ placeholder: z.ZodOptional<z.ZodString>;
3124
+ required: z.ZodDefault<z.ZodBoolean>;
3125
+ options: z.ZodDefault<z.ZodArray<z.ZodObject<{
3126
+ label: z.ZodString;
3127
+ value: z.ZodString;
3128
+ }, "strip", z.ZodTypeAny, {
3129
+ value: string;
3130
+ label: string;
3131
+ }, {
3132
+ value: string;
3133
+ label: string;
3134
+ }>, "many">>;
3135
+ validation: z.ZodDefault<z.ZodObject<{
3136
+ format: z.ZodOptional<z.ZodEnum<["email"]>>;
3137
+ maxLength: z.ZodOptional<z.ZodNumber>;
3138
+ }, "strip", z.ZodTypeAny, {
3139
+ format?: "email" | undefined;
3140
+ maxLength?: number | undefined;
3141
+ }, {
3142
+ format?: "email" | undefined;
3143
+ maxLength?: number | undefined;
3144
+ }>>;
3145
+ }, "strip", z.ZodTypeAny, {
3146
+ options: {
3147
+ value: string;
3148
+ label: string;
3149
+ }[];
3150
+ validation: {
3151
+ format?: "email" | undefined;
3152
+ maxLength?: number | undefined;
3153
+ };
3154
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3155
+ label: string;
3156
+ id: string;
3157
+ required: boolean;
3158
+ placeholder?: string | undefined;
3159
+ }, {
3160
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3161
+ label: string;
3162
+ id: string;
3163
+ options?: {
3164
+ value: string;
3165
+ label: string;
3166
+ }[] | undefined;
3167
+ validation?: {
3168
+ format?: "email" | undefined;
3169
+ maxLength?: number | undefined;
3170
+ } | undefined;
3171
+ placeholder?: string | undefined;
3172
+ required?: boolean | undefined;
3173
+ }>, "many">, {
3174
+ options: {
3175
+ value: string;
3176
+ label: string;
3177
+ }[];
3178
+ validation: {
3179
+ format?: "email" | undefined;
3180
+ maxLength?: number | undefined;
3181
+ };
3182
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3183
+ label: string;
3184
+ id: string;
3185
+ required: boolean;
3186
+ placeholder?: string | undefined;
3187
+ }[], {
3188
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3189
+ label: string;
3190
+ id: string;
3191
+ options?: {
3192
+ value: string;
3193
+ label: string;
3194
+ }[] | undefined;
3195
+ validation?: {
3196
+ format?: "email" | undefined;
3197
+ maxLength?: number | undefined;
3198
+ } | undefined;
3199
+ placeholder?: string | undefined;
3200
+ required?: boolean | undefined;
3201
+ }[]>>;
3202
+ notifications: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3203
+ id: z.ZodString;
3204
+ type: z.ZodLiteral<"email">;
3205
+ enabled: z.ZodDefault<z.ZodBoolean>;
3206
+ label: z.ZodString;
3207
+ recipients: z.ZodArray<z.ZodString, "many">;
3208
+ }, "strip", z.ZodTypeAny, {
3209
+ type: "email";
3210
+ label: string;
3211
+ id: string;
3212
+ enabled: boolean;
3213
+ recipients: string[];
3214
+ }, {
3215
+ type: "email";
3216
+ label: string;
3217
+ id: string;
3218
+ recipients: string[];
3219
+ enabled?: boolean | undefined;
3220
+ }>, z.ZodObject<{
3221
+ id: z.ZodString;
3222
+ type: z.ZodEnum<["slack", "wecom", "feishu", "dingtalk"]>;
3223
+ enabled: z.ZodDefault<z.ZodBoolean>;
3224
+ label: z.ZodString;
3225
+ webhookUrl: z.ZodOptional<z.ZodString>;
3226
+ }, "strip", z.ZodTypeAny, {
3227
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3228
+ label: string;
3229
+ id: string;
3230
+ enabled: boolean;
3231
+ webhookUrl?: string | undefined;
3232
+ }, {
3233
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3234
+ label: string;
3235
+ id: string;
3236
+ enabled?: boolean | undefined;
3237
+ webhookUrl?: string | undefined;
3238
+ }>]>, "many">>;
3239
+ webhooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
3240
+ id: z.ZodString;
3241
+ enabled: z.ZodDefault<z.ZodBoolean>;
3242
+ label: z.ZodString;
3243
+ event: z.ZodDefault<z.ZodLiteral<"contact.submitted">>;
3244
+ url: z.ZodOptional<z.ZodString>;
3245
+ }, "strip", z.ZodTypeAny, {
3246
+ label: string;
3247
+ id: string;
3248
+ enabled: boolean;
3249
+ event: "contact.submitted";
3250
+ url?: string | undefined;
3251
+ }, {
3252
+ label: string;
3253
+ id: string;
3254
+ enabled?: boolean | undefined;
3255
+ event?: "contact.submitted" | undefined;
3256
+ url?: string | undefined;
3257
+ }>, "many">>;
3258
+ confirm: z.ZodOptional<z.ZodBoolean>;
3259
+ }, "confirm">, "strip", z.ZodTypeAny, {
3260
+ projectId: string;
3261
+ title?: string | undefined;
3262
+ enabled?: boolean | undefined;
3263
+ successMessage?: string | undefined;
3264
+ submitLabel?: string | undefined;
3265
+ fields?: {
3266
+ options: {
3267
+ value: string;
3268
+ label: string;
3269
+ }[];
3270
+ validation: {
3271
+ format?: "email" | undefined;
3272
+ maxLength?: number | undefined;
3273
+ };
3274
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3275
+ label: string;
3276
+ id: string;
3277
+ required: boolean;
3278
+ placeholder?: string | undefined;
3279
+ }[] | undefined;
3280
+ notifications?: ({
3281
+ type: "email";
3282
+ label: string;
3283
+ id: string;
3284
+ enabled: boolean;
3285
+ recipients: string[];
3286
+ } | {
3287
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3288
+ label: string;
3289
+ id: string;
3290
+ enabled: boolean;
3291
+ webhookUrl?: string | undefined;
3292
+ })[] | undefined;
3293
+ webhooks?: {
3294
+ label: string;
3295
+ id: string;
3296
+ enabled: boolean;
3297
+ event: "contact.submitted";
3298
+ url?: string | undefined;
3299
+ }[] | undefined;
3300
+ }, {
3301
+ projectId: string;
3302
+ title?: string | undefined;
3303
+ enabled?: boolean | undefined;
3304
+ successMessage?: string | undefined;
3305
+ submitLabel?: string | undefined;
3306
+ fields?: {
3307
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3308
+ label: string;
3309
+ id: string;
3310
+ options?: {
3311
+ value: string;
3312
+ label: string;
3313
+ }[] | undefined;
3314
+ validation?: {
3315
+ format?: "email" | undefined;
3316
+ maxLength?: number | undefined;
3317
+ } | undefined;
3318
+ placeholder?: string | undefined;
3319
+ required?: boolean | undefined;
3320
+ }[] | undefined;
3321
+ notifications?: ({
3322
+ type: "email";
3323
+ label: string;
3324
+ id: string;
3325
+ recipients: string[];
3326
+ enabled?: boolean | undefined;
3327
+ } | {
3328
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3329
+ label: string;
3330
+ id: string;
3331
+ enabled?: boolean | undefined;
3332
+ webhookUrl?: string | undefined;
3333
+ })[] | undefined;
3334
+ webhooks?: {
3335
+ label: string;
3336
+ id: string;
3337
+ enabled?: boolean | undefined;
3338
+ event?: "contact.submitted" | undefined;
3339
+ url?: string | undefined;
3340
+ }[] | undefined;
3341
+ }>;
3342
+ }, "strip", z.ZodTypeAny, {
3343
+ projectId: string;
3344
+ status: "needs_confirmation";
3345
+ impact: string;
3346
+ draft: {
3347
+ projectId: string;
3348
+ title?: string | undefined;
3349
+ enabled?: boolean | undefined;
3350
+ successMessage?: string | undefined;
3351
+ submitLabel?: string | undefined;
3352
+ fields?: {
3353
+ options: {
3354
+ value: string;
3355
+ label: string;
3356
+ }[];
3357
+ validation: {
3358
+ format?: "email" | undefined;
3359
+ maxLength?: number | undefined;
3360
+ };
3361
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3362
+ label: string;
3363
+ id: string;
3364
+ required: boolean;
3365
+ placeholder?: string | undefined;
3366
+ }[] | undefined;
3367
+ notifications?: ({
3368
+ type: "email";
3369
+ label: string;
3370
+ id: string;
3371
+ enabled: boolean;
3372
+ recipients: string[];
3373
+ } | {
3374
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3375
+ label: string;
3376
+ id: string;
3377
+ enabled: boolean;
3378
+ webhookUrl?: string | undefined;
3379
+ })[] | undefined;
3380
+ webhooks?: {
3381
+ label: string;
3382
+ id: string;
3383
+ enabled: boolean;
3384
+ event: "contact.submitted";
3385
+ url?: string | undefined;
3386
+ }[] | undefined;
3387
+ };
3388
+ }, {
3389
+ projectId: string;
3390
+ status: "needs_confirmation";
3391
+ impact: string;
3392
+ draft: {
3393
+ projectId: string;
3394
+ title?: string | undefined;
3395
+ enabled?: boolean | undefined;
3396
+ successMessage?: string | undefined;
3397
+ submitLabel?: string | undefined;
3398
+ fields?: {
3399
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3400
+ label: string;
3401
+ id: string;
3402
+ options?: {
3403
+ value: string;
3404
+ label: string;
3405
+ }[] | undefined;
3406
+ validation?: {
3407
+ format?: "email" | undefined;
3408
+ maxLength?: number | undefined;
3409
+ } | undefined;
3410
+ placeholder?: string | undefined;
3411
+ required?: boolean | undefined;
3412
+ }[] | undefined;
3413
+ notifications?: ({
3414
+ type: "email";
3415
+ label: string;
3416
+ id: string;
3417
+ recipients: string[];
3418
+ enabled?: boolean | undefined;
3419
+ } | {
3420
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3421
+ label: string;
3422
+ id: string;
3423
+ enabled?: boolean | undefined;
3424
+ webhookUrl?: string | undefined;
3425
+ })[] | undefined;
3426
+ webhooks?: {
3427
+ label: string;
3428
+ id: string;
3429
+ enabled?: boolean | undefined;
3430
+ event?: "contact.submitted" | undefined;
3431
+ url?: string | undefined;
3432
+ }[] | undefined;
3433
+ };
3434
+ }>, z.ZodObject<{
3435
+ status: z.ZodLiteral<"updated">;
3436
+ projectId: z.ZodString;
3437
+ contactForm: z.ZodObject<{
3438
+ enabled: z.ZodBoolean;
3439
+ title: z.ZodString;
3440
+ successMessage: z.ZodString;
3441
+ submitLabel: z.ZodString;
3442
+ fields: z.ZodArray<z.ZodObject<{
3443
+ id: z.ZodString;
3444
+ type: z.ZodEnum<["text", "textarea", "checkbox", "radio", "select"]>;
3445
+ label: z.ZodString;
3446
+ placeholder: z.ZodOptional<z.ZodString>;
3447
+ required: z.ZodDefault<z.ZodBoolean>;
3448
+ options: z.ZodDefault<z.ZodArray<z.ZodObject<{
3449
+ label: z.ZodString;
3450
+ value: z.ZodString;
3451
+ }, "strip", z.ZodTypeAny, {
3452
+ value: string;
3453
+ label: string;
3454
+ }, {
3455
+ value: string;
3456
+ label: string;
3457
+ }>, "many">>;
3458
+ validation: z.ZodDefault<z.ZodObject<{
3459
+ format: z.ZodOptional<z.ZodEnum<["email"]>>;
3460
+ maxLength: z.ZodOptional<z.ZodNumber>;
3461
+ }, "strip", z.ZodTypeAny, {
3462
+ format?: "email" | undefined;
3463
+ maxLength?: number | undefined;
3464
+ }, {
3465
+ format?: "email" | undefined;
3466
+ maxLength?: number | undefined;
3467
+ }>>;
3468
+ }, "strip", z.ZodTypeAny, {
3469
+ options: {
3470
+ value: string;
3471
+ label: string;
3472
+ }[];
3473
+ validation: {
3474
+ format?: "email" | undefined;
3475
+ maxLength?: number | undefined;
3476
+ };
3477
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3478
+ label: string;
3479
+ id: string;
3480
+ required: boolean;
3481
+ placeholder?: string | undefined;
3482
+ }, {
3483
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3484
+ label: string;
3485
+ id: string;
3486
+ options?: {
3487
+ value: string;
3488
+ label: string;
3489
+ }[] | undefined;
3490
+ validation?: {
3491
+ format?: "email" | undefined;
3492
+ maxLength?: number | undefined;
3493
+ } | undefined;
3494
+ placeholder?: string | undefined;
3495
+ required?: boolean | undefined;
3496
+ }>, "many">;
3497
+ notifications: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3498
+ id: z.ZodString;
3499
+ type: z.ZodLiteral<"email">;
3500
+ enabled: z.ZodBoolean;
3501
+ label: z.ZodString;
3502
+ recipients: z.ZodArray<z.ZodString, "many">;
3503
+ }, "strip", z.ZodTypeAny, {
3504
+ type: "email";
3505
+ label: string;
3506
+ id: string;
3507
+ enabled: boolean;
3508
+ recipients: string[];
3509
+ }, {
3510
+ type: "email";
3511
+ label: string;
3512
+ id: string;
3513
+ enabled: boolean;
3514
+ recipients: string[];
3515
+ }>, z.ZodObject<{
3516
+ id: z.ZodString;
3517
+ type: z.ZodEnum<["slack", "wecom", "feishu", "dingtalk"]>;
3518
+ enabled: z.ZodBoolean;
3519
+ label: z.ZodString;
3520
+ webhookUrlMasked: z.ZodNullable<z.ZodString>;
3521
+ }, "strip", z.ZodTypeAny, {
3522
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3523
+ label: string;
3524
+ id: string;
3525
+ enabled: boolean;
3526
+ webhookUrlMasked: string | null;
3527
+ }, {
3528
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3529
+ label: string;
3530
+ id: string;
3531
+ enabled: boolean;
3532
+ webhookUrlMasked: string | null;
3533
+ }>]>, "many">;
3534
+ webhooks: z.ZodArray<z.ZodObject<{
3535
+ id: z.ZodString;
3536
+ enabled: z.ZodBoolean;
3537
+ label: z.ZodString;
3538
+ event: z.ZodLiteral<"contact.submitted">;
3539
+ urlMasked: z.ZodNullable<z.ZodString>;
3540
+ }, "strip", z.ZodTypeAny, {
3541
+ label: string;
3542
+ id: string;
3543
+ enabled: boolean;
3544
+ event: "contact.submitted";
3545
+ urlMasked: string | null;
3546
+ }, {
3547
+ label: string;
3548
+ id: string;
3549
+ enabled: boolean;
3550
+ event: "contact.submitted";
3551
+ urlMasked: string | null;
3552
+ }>, "many">;
3553
+ limits: z.ZodObject<{
3554
+ maxNotificationChannels: z.ZodNumber;
3555
+ maxWebhooks: z.ZodNumber;
3556
+ }, "strip", z.ZodTypeAny, {
3557
+ maxNotificationChannels: number;
3558
+ maxWebhooks: number;
3559
+ }, {
3560
+ maxNotificationChannels: number;
3561
+ maxWebhooks: number;
3562
+ }>;
3563
+ features: z.ZodObject<{
3564
+ contactNotifications: z.ZodBoolean;
3565
+ contactWebhooks: z.ZodBoolean;
3566
+ }, "strip", z.ZodTypeAny, {
3567
+ contactNotifications: boolean;
3568
+ contactWebhooks: boolean;
3569
+ }, {
3570
+ contactNotifications: boolean;
3571
+ contactWebhooks: boolean;
3572
+ }>;
3573
+ }, "strip", z.ZodTypeAny, {
3574
+ title: string;
3575
+ enabled: boolean;
3576
+ successMessage: string;
3577
+ submitLabel: string;
3578
+ fields: {
3579
+ options: {
3580
+ value: string;
3581
+ label: string;
3582
+ }[];
3583
+ validation: {
3584
+ format?: "email" | undefined;
3585
+ maxLength?: number | undefined;
3586
+ };
3587
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3588
+ label: string;
3589
+ id: string;
3590
+ required: boolean;
3591
+ placeholder?: string | undefined;
3592
+ }[];
3593
+ notifications: ({
3594
+ type: "email";
3595
+ label: string;
3596
+ id: string;
3597
+ enabled: boolean;
3598
+ recipients: string[];
3599
+ } | {
3600
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3601
+ label: string;
3602
+ id: string;
3603
+ enabled: boolean;
3604
+ webhookUrlMasked: string | null;
3605
+ })[];
3606
+ webhooks: {
3607
+ label: string;
3608
+ id: string;
3609
+ enabled: boolean;
3610
+ event: "contact.submitted";
3611
+ urlMasked: string | null;
3612
+ }[];
3613
+ limits: {
3614
+ maxNotificationChannels: number;
3615
+ maxWebhooks: number;
3616
+ };
3617
+ features: {
3618
+ contactNotifications: boolean;
3619
+ contactWebhooks: boolean;
3620
+ };
3621
+ }, {
3622
+ title: string;
3623
+ enabled: boolean;
3624
+ successMessage: string;
3625
+ submitLabel: string;
3626
+ fields: {
3627
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3628
+ label: string;
3629
+ id: string;
3630
+ options?: {
3631
+ value: string;
3632
+ label: string;
3633
+ }[] | undefined;
3634
+ validation?: {
3635
+ format?: "email" | undefined;
3636
+ maxLength?: number | undefined;
3637
+ } | undefined;
3638
+ placeholder?: string | undefined;
3639
+ required?: boolean | undefined;
3640
+ }[];
3641
+ notifications: ({
3642
+ type: "email";
3643
+ label: string;
3644
+ id: string;
3645
+ enabled: boolean;
3646
+ recipients: string[];
3647
+ } | {
3648
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3649
+ label: string;
3650
+ id: string;
3651
+ enabled: boolean;
3652
+ webhookUrlMasked: string | null;
3653
+ })[];
3654
+ webhooks: {
3655
+ label: string;
3656
+ id: string;
3657
+ enabled: boolean;
3658
+ event: "contact.submitted";
3659
+ urlMasked: string | null;
3660
+ }[];
3661
+ limits: {
3662
+ maxNotificationChannels: number;
3663
+ maxWebhooks: number;
3664
+ };
3665
+ features: {
3666
+ contactNotifications: boolean;
3667
+ contactWebhooks: boolean;
3668
+ };
3669
+ }>;
3670
+ }, "strip", z.ZodTypeAny, {
3671
+ projectId: string;
3672
+ status: "updated";
3673
+ contactForm: {
3674
+ title: string;
3675
+ enabled: boolean;
3676
+ successMessage: string;
3677
+ submitLabel: string;
3678
+ fields: {
3679
+ options: {
3680
+ value: string;
3681
+ label: string;
3682
+ }[];
3683
+ validation: {
3684
+ format?: "email" | undefined;
3685
+ maxLength?: number | undefined;
3686
+ };
3687
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3688
+ label: string;
3689
+ id: string;
3690
+ required: boolean;
3691
+ placeholder?: string | undefined;
3692
+ }[];
3693
+ notifications: ({
3694
+ type: "email";
3695
+ label: string;
3696
+ id: string;
3697
+ enabled: boolean;
3698
+ recipients: string[];
3699
+ } | {
3700
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3701
+ label: string;
3702
+ id: string;
3703
+ enabled: boolean;
3704
+ webhookUrlMasked: string | null;
3705
+ })[];
3706
+ webhooks: {
3707
+ label: string;
3708
+ id: string;
3709
+ enabled: boolean;
3710
+ event: "contact.submitted";
3711
+ urlMasked: string | null;
3712
+ }[];
3713
+ limits: {
3714
+ maxNotificationChannels: number;
3715
+ maxWebhooks: number;
3716
+ };
3717
+ features: {
3718
+ contactNotifications: boolean;
3719
+ contactWebhooks: boolean;
3720
+ };
3721
+ };
3722
+ }, {
3723
+ projectId: string;
3724
+ status: "updated";
3725
+ contactForm: {
3726
+ title: string;
3727
+ enabled: boolean;
3728
+ successMessage: string;
3729
+ submitLabel: string;
3730
+ fields: {
3731
+ type: "text" | "textarea" | "checkbox" | "radio" | "select";
3732
+ label: string;
3733
+ id: string;
3734
+ options?: {
3735
+ value: string;
3736
+ label: string;
3737
+ }[] | undefined;
3738
+ validation?: {
3739
+ format?: "email" | undefined;
3740
+ maxLength?: number | undefined;
3741
+ } | undefined;
3742
+ placeholder?: string | undefined;
3743
+ required?: boolean | undefined;
3744
+ }[];
3745
+ notifications: ({
3746
+ type: "email";
3747
+ label: string;
3748
+ id: string;
3749
+ enabled: boolean;
3750
+ recipients: string[];
3751
+ } | {
3752
+ type: "slack" | "wecom" | "feishu" | "dingtalk";
3753
+ label: string;
3754
+ id: string;
3755
+ enabled: boolean;
3756
+ webhookUrlMasked: string | null;
3757
+ })[];
3758
+ webhooks: {
3759
+ label: string;
3760
+ id: string;
3761
+ enabled: boolean;
3762
+ event: "contact.submitted";
3763
+ urlMasked: string | null;
3764
+ }[];
3765
+ limits: {
3766
+ maxNotificationChannels: number;
3767
+ maxWebhooks: number;
3768
+ };
3769
+ features: {
3770
+ contactNotifications: boolean;
3771
+ contactWebhooks: boolean;
3772
+ };
3773
+ };
3774
+ }>]>;
3775
+ updatePageDraftOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
3776
+ status: z.ZodLiteral<"updated">;
3777
+ pageId: z.ZodString;
3778
+ }, "strip", z.ZodTypeAny, {
3779
+ status: "updated";
3780
+ pageId: string;
3781
+ }, {
3782
+ status: "updated";
3783
+ pageId: string;
3784
+ }>, z.ZodObject<{
3785
+ status: z.ZodLiteral<"invalid">;
3786
+ valid: z.ZodLiteral<false>;
3787
+ issues: z.ZodArray<z.ZodObject<{
3788
+ path: z.ZodString;
3789
+ message: z.ZodString;
3790
+ }, "strip", z.ZodTypeAny, {
3791
+ path: string;
3792
+ message: string;
3793
+ }, {
3794
+ path: string;
3795
+ message: string;
3796
+ }>, "many">;
3797
+ }, "strip", z.ZodTypeAny, {
3798
+ status: "invalid";
3799
+ issues: {
3800
+ path: string;
3801
+ message: string;
3802
+ }[];
3803
+ valid: false;
3804
+ }, {
3805
+ status: "invalid";
3806
+ issues: {
3807
+ path: string;
3808
+ message: string;
3809
+ }[];
3810
+ valid: false;
3811
+ }>]>;
3812
+ updateRemotePageDraft: typeof updateRemotePageDraft;
3813
+ updateThemeSettingsOutputSchema: z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
3814
+ status: z.ZodLiteral<"needs_confirmation">;
3815
+ projectId: z.ZodString;
3816
+ impact: z.ZodString;
3817
+ draft: z.ZodObject<Omit<{
3818
+ projectId: z.ZodString;
3819
+ rootProps: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3820
+ confirm: z.ZodOptional<z.ZodBoolean>;
3821
+ }, "confirm">, "strip", z.ZodTypeAny, {
3822
+ projectId: string;
3823
+ rootProps: Record<string, unknown>;
3824
+ }, {
3825
+ projectId: string;
3826
+ rootProps: Record<string, unknown>;
3827
+ }>;
3828
+ }, "strip", z.ZodTypeAny, {
3829
+ projectId: string;
3830
+ status: "needs_confirmation";
3831
+ impact: string;
3832
+ draft: {
3833
+ projectId: string;
3834
+ rootProps: Record<string, unknown>;
3835
+ };
3836
+ }, {
3837
+ projectId: string;
3838
+ status: "needs_confirmation";
3839
+ impact: string;
3840
+ draft: {
3841
+ projectId: string;
3842
+ rootProps: Record<string, unknown>;
3843
+ };
3844
+ }>, z.ZodObject<{
3845
+ status: z.ZodLiteral<"updated">;
3846
+ projectId: z.ZodString;
3847
+ themeSettings: z.ZodObject<{
3848
+ themeKey: z.ZodString;
3849
+ themeVersion: z.ZodString;
3850
+ designSystem: z.ZodEffects<z.ZodObject<{
3851
+ version: z.ZodLiteral<1>;
3852
+ defaultPresetId: z.ZodString;
3853
+ presets: z.ZodArray<z.ZodObject<{
3854
+ id: z.ZodString;
3855
+ label: z.ZodString;
3856
+ description: z.ZodOptional<z.ZodString>;
3857
+ tokens: z.ZodObject<{
3858
+ colors: z.ZodEffects<z.ZodObject<{
3859
+ background: z.ZodString;
3860
+ foreground: z.ZodString;
3861
+ primary: z.ZodString;
3862
+ primaryForeground: z.ZodString;
3863
+ secondary: z.ZodOptional<z.ZodString>;
3864
+ secondaryForeground: z.ZodOptional<z.ZodString>;
3865
+ accent: z.ZodString;
3866
+ accentForeground: z.ZodString;
3867
+ muted: z.ZodString;
3868
+ mutedForeground: z.ZodString;
3869
+ }, "strip", z.ZodTypeAny, {
3870
+ background: string;
3871
+ foreground: string;
3872
+ primary: string;
3873
+ primaryForeground: string;
3874
+ accent: string;
3875
+ accentForeground: string;
3876
+ muted: string;
3877
+ mutedForeground: string;
3878
+ secondary?: string | undefined;
3879
+ secondaryForeground?: string | undefined;
3880
+ }, {
3881
+ background: string;
3882
+ foreground: string;
3883
+ primary: string;
3884
+ primaryForeground: string;
3885
+ accent: string;
3886
+ accentForeground: string;
3887
+ muted: string;
3888
+ mutedForeground: string;
3889
+ secondary?: string | undefined;
3890
+ secondaryForeground?: string | undefined;
3891
+ }>, {
3892
+ secondary: string;
3893
+ secondaryForeground: string;
3894
+ background: string;
3895
+ foreground: string;
3896
+ primary: string;
3897
+ primaryForeground: string;
3898
+ accent: string;
3899
+ accentForeground: string;
3900
+ muted: string;
3901
+ mutedForeground: string;
3902
+ }, {
3903
+ background: string;
3904
+ foreground: string;
3905
+ primary: string;
3906
+ primaryForeground: string;
3907
+ accent: string;
3908
+ accentForeground: string;
3909
+ muted: string;
3910
+ mutedForeground: string;
3911
+ secondary?: string | undefined;
3912
+ secondaryForeground?: string | undefined;
3913
+ }>;
3914
+ radius: z.ZodObject<{
3915
+ card: z.ZodString;
3916
+ button: z.ZodString;
3917
+ input: z.ZodString;
3918
+ }, "strip", z.ZodTypeAny, {
3919
+ input: string;
3920
+ card: string;
3921
+ button: string;
3922
+ }, {
3923
+ input: string;
3924
+ card: string;
3925
+ button: string;
3926
+ }>;
3927
+ layout: z.ZodDefault<z.ZodObject<{
3928
+ contentWidth: z.ZodEnum<["1024px", "1200px", "1280px", "1440px"]>;
3929
+ }, "strip", z.ZodTypeAny, {
3930
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3931
+ }, {
3932
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3933
+ }>>;
3934
+ }, "strip", z.ZodTypeAny, {
3935
+ colors: {
3936
+ secondary: string;
3937
+ secondaryForeground: string;
3938
+ background: string;
3939
+ foreground: string;
3940
+ primary: string;
3941
+ primaryForeground: string;
3942
+ accent: string;
3943
+ accentForeground: string;
3944
+ muted: string;
3945
+ mutedForeground: string;
3946
+ };
3947
+ radius: {
3948
+ input: string;
3949
+ card: string;
3950
+ button: string;
3951
+ };
3952
+ layout: {
3953
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3954
+ };
3955
+ }, {
3956
+ colors: {
3957
+ background: string;
3958
+ foreground: string;
3959
+ primary: string;
3960
+ primaryForeground: string;
3961
+ accent: string;
3962
+ accentForeground: string;
3963
+ muted: string;
3964
+ mutedForeground: string;
3965
+ secondary?: string | undefined;
3966
+ secondaryForeground?: string | undefined;
3967
+ };
3968
+ radius: {
3969
+ input: string;
3970
+ card: string;
3971
+ button: string;
3972
+ };
3973
+ layout?: {
3974
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
3975
+ } | undefined;
3976
+ }>;
3977
+ }, "strip", z.ZodTypeAny, {
3978
+ label: string;
3979
+ id: string;
3980
+ tokens: {
3981
+ colors: {
3982
+ secondary: string;
3983
+ secondaryForeground: string;
3984
+ background: string;
3985
+ foreground: string;
3986
+ primary: string;
3987
+ primaryForeground: string;
3988
+ accent: string;
3989
+ accentForeground: string;
3990
+ muted: string;
3991
+ mutedForeground: string;
3992
+ };
3993
+ radius: {
3994
+ input: string;
3995
+ card: string;
3996
+ button: string;
3997
+ };
3998
+ layout: {
3999
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4000
+ };
4001
+ };
4002
+ description?: string | undefined;
4003
+ }, {
4004
+ label: string;
4005
+ id: string;
4006
+ tokens: {
4007
+ colors: {
4008
+ background: string;
4009
+ foreground: string;
4010
+ primary: string;
4011
+ primaryForeground: string;
4012
+ accent: string;
4013
+ accentForeground: string;
4014
+ muted: string;
4015
+ mutedForeground: string;
4016
+ secondary?: string | undefined;
4017
+ secondaryForeground?: string | undefined;
4018
+ };
4019
+ radius: {
4020
+ input: string;
4021
+ card: string;
4022
+ button: string;
4023
+ };
4024
+ layout?: {
4025
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4026
+ } | undefined;
4027
+ };
4028
+ description?: string | undefined;
4029
+ }>, "many">;
4030
+ }, "strip", z.ZodTypeAny, {
4031
+ version: 1;
4032
+ defaultPresetId: string;
4033
+ presets: {
4034
+ label: string;
4035
+ id: string;
4036
+ tokens: {
4037
+ colors: {
4038
+ secondary: string;
4039
+ secondaryForeground: string;
4040
+ background: string;
4041
+ foreground: string;
4042
+ primary: string;
4043
+ primaryForeground: string;
4044
+ accent: string;
4045
+ accentForeground: string;
4046
+ muted: string;
4047
+ mutedForeground: string;
4048
+ };
4049
+ radius: {
4050
+ input: string;
4051
+ card: string;
4052
+ button: string;
4053
+ };
4054
+ layout: {
4055
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4056
+ };
4057
+ };
4058
+ description?: string | undefined;
4059
+ }[];
4060
+ }, {
4061
+ version: 1;
4062
+ defaultPresetId: string;
4063
+ presets: {
4064
+ label: string;
4065
+ id: string;
4066
+ tokens: {
4067
+ colors: {
4068
+ background: string;
4069
+ foreground: string;
4070
+ primary: string;
4071
+ primaryForeground: string;
4072
+ accent: string;
4073
+ accentForeground: string;
4074
+ muted: string;
4075
+ mutedForeground: string;
4076
+ secondary?: string | undefined;
4077
+ secondaryForeground?: string | undefined;
4078
+ };
4079
+ radius: {
4080
+ input: string;
4081
+ card: string;
4082
+ button: string;
4083
+ };
4084
+ layout?: {
4085
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4086
+ } | undefined;
4087
+ };
4088
+ description?: string | undefined;
4089
+ }[];
4090
+ }>, {
4091
+ version: 1;
4092
+ defaultPresetId: string;
4093
+ presets: {
4094
+ label: string;
4095
+ id: string;
4096
+ tokens: {
4097
+ colors: {
4098
+ secondary: string;
4099
+ secondaryForeground: string;
4100
+ background: string;
4101
+ foreground: string;
4102
+ primary: string;
4103
+ primaryForeground: string;
4104
+ accent: string;
4105
+ accentForeground: string;
4106
+ muted: string;
4107
+ mutedForeground: string;
4108
+ };
4109
+ radius: {
4110
+ input: string;
4111
+ card: string;
4112
+ button: string;
4113
+ };
4114
+ layout: {
4115
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4116
+ };
4117
+ };
4118
+ description?: string | undefined;
4119
+ }[];
4120
+ }, {
4121
+ version: 1;
4122
+ defaultPresetId: string;
4123
+ presets: {
4124
+ label: string;
4125
+ id: string;
4126
+ tokens: {
4127
+ colors: {
4128
+ background: string;
4129
+ foreground: string;
4130
+ primary: string;
4131
+ primaryForeground: string;
4132
+ accent: string;
4133
+ accentForeground: string;
4134
+ muted: string;
4135
+ mutedForeground: string;
4136
+ secondary?: string | undefined;
4137
+ secondaryForeground?: string | undefined;
4138
+ };
4139
+ radius: {
4140
+ input: string;
4141
+ card: string;
4142
+ button: string;
4143
+ };
4144
+ layout?: {
4145
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4146
+ } | undefined;
4147
+ };
4148
+ description?: string | undefined;
4149
+ }[];
4150
+ }>;
4151
+ rootProps: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4152
+ schema: z.ZodUnknown;
4153
+ }, "strip", z.ZodTypeAny, {
4154
+ themeKey: string;
4155
+ themeVersion: string;
4156
+ designSystem: {
4157
+ version: 1;
4158
+ defaultPresetId: string;
4159
+ presets: {
4160
+ label: string;
4161
+ id: string;
4162
+ tokens: {
4163
+ colors: {
4164
+ secondary: string;
4165
+ secondaryForeground: string;
4166
+ background: string;
4167
+ foreground: string;
4168
+ primary: string;
4169
+ primaryForeground: string;
4170
+ accent: string;
4171
+ accentForeground: string;
4172
+ muted: string;
4173
+ mutedForeground: string;
4174
+ };
4175
+ radius: {
4176
+ input: string;
4177
+ card: string;
4178
+ button: string;
4179
+ };
4180
+ layout: {
4181
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4182
+ };
4183
+ };
4184
+ description?: string | undefined;
4185
+ }[];
4186
+ };
4187
+ rootProps: Record<string, unknown>;
4188
+ schema?: unknown;
4189
+ }, {
4190
+ themeKey: string;
4191
+ themeVersion: string;
4192
+ designSystem: {
4193
+ version: 1;
4194
+ defaultPresetId: string;
4195
+ presets: {
4196
+ label: string;
4197
+ id: string;
4198
+ tokens: {
4199
+ colors: {
4200
+ background: string;
4201
+ foreground: string;
4202
+ primary: string;
4203
+ primaryForeground: string;
4204
+ accent: string;
4205
+ accentForeground: string;
4206
+ muted: string;
4207
+ mutedForeground: string;
4208
+ secondary?: string | undefined;
4209
+ secondaryForeground?: string | undefined;
4210
+ };
4211
+ radius: {
4212
+ input: string;
4213
+ card: string;
4214
+ button: string;
4215
+ };
4216
+ layout?: {
4217
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4218
+ } | undefined;
4219
+ };
4220
+ description?: string | undefined;
4221
+ }[];
4222
+ };
4223
+ rootProps: Record<string, unknown>;
4224
+ schema?: unknown;
4225
+ }>;
4226
+ }, "strip", z.ZodTypeAny, {
4227
+ projectId: string;
4228
+ status: "updated";
4229
+ themeSettings: {
4230
+ themeKey: string;
4231
+ themeVersion: string;
4232
+ designSystem: {
4233
+ version: 1;
4234
+ defaultPresetId: string;
4235
+ presets: {
4236
+ label: string;
4237
+ id: string;
4238
+ tokens: {
4239
+ colors: {
4240
+ secondary: string;
4241
+ secondaryForeground: string;
4242
+ background: string;
4243
+ foreground: string;
4244
+ primary: string;
4245
+ primaryForeground: string;
4246
+ accent: string;
4247
+ accentForeground: string;
4248
+ muted: string;
4249
+ mutedForeground: string;
4250
+ };
4251
+ radius: {
4252
+ input: string;
4253
+ card: string;
4254
+ button: string;
4255
+ };
4256
+ layout: {
4257
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4258
+ };
4259
+ };
4260
+ description?: string | undefined;
4261
+ }[];
4262
+ };
4263
+ rootProps: Record<string, unknown>;
4264
+ schema?: unknown;
4265
+ };
4266
+ }, {
4267
+ projectId: string;
4268
+ status: "updated";
4269
+ themeSettings: {
4270
+ themeKey: string;
4271
+ themeVersion: string;
4272
+ designSystem: {
4273
+ version: 1;
4274
+ defaultPresetId: string;
4275
+ presets: {
4276
+ label: string;
4277
+ id: string;
4278
+ tokens: {
4279
+ colors: {
4280
+ background: string;
4281
+ foreground: string;
4282
+ primary: string;
4283
+ primaryForeground: string;
4284
+ accent: string;
4285
+ accentForeground: string;
4286
+ muted: string;
4287
+ mutedForeground: string;
4288
+ secondary?: string | undefined;
4289
+ secondaryForeground?: string | undefined;
4290
+ };
4291
+ radius: {
4292
+ input: string;
4293
+ card: string;
4294
+ button: string;
4295
+ };
4296
+ layout?: {
4297
+ contentWidth: "1024px" | "1200px" | "1280px" | "1440px";
4298
+ } | undefined;
4299
+ };
4300
+ description?: string | undefined;
4301
+ }[];
4302
+ };
4303
+ rootProps: Record<string, unknown>;
4304
+ schema?: unknown;
4305
+ };
4306
+ }>]>;
4307
+ };
4308
+ declare function watchTheme(root: string, port: number): Promise<void>;
4309
+ interface ViteDevPreviewOptions {
4310
+ showDevTools?: boolean;
4311
+ }
4312
+ declare function writeVitePreviewEntries(root: string): Promise<void>;
4313
+ declare function withSerializedVitePreviewLocaleLoad<Result>(server: object, load: () => Promise<Result>): Promise<Result>;
4314
+ declare function resolveDevVisualAuditComponent(pathname: string): string | undefined;
4315
+ declare function getThemeVisualAuditComponentTypes(theme: Pick<ValidatedTheme, "module">): string[];
4316
+ declare function createVisualAuditPage(theme: ValidatedTheme, type: string): ThemeStarterPage | null;
4317
+ declare function resolveDevEditorSlug(pathname: string): string | null | undefined;
4318
+ declare function resolveDevStarterSlug(pathname: string): string | null | undefined;
4319
+ declare function resolveThemePreviewLocale(params: {
4320
+ previewLocales: string[] | undefined;
4321
+ explicitLang?: string | null;
4322
+ acceptLanguage?: string;
4323
+ }): string;
4324
+ /**
4325
+ * Theme-project-scoped renderer bundle. We deliberately resolve `react`,
4326
+ * `react-dom/server` and `@sudajs/theme-engine/server` through the theme
4327
+ * project's own `require` graph instead of the CLI's, because the theme's
4328
+ * local `dist/index.js` was already loaded against that copy of React. Importing
4329
+ * a different React instance from the CLI side would yield two React
4330
+ * dispatchers; client components inside the theme would call hooks against
4331
+ * the CLI's React (whose dispatcher is `null` outside a render), producing
4332
+ * `Cannot read properties of null (reading 'useState')`.
4333
+ */
4334
+ interface ThemeRenderer {
4335
+ ThemeRender: typeof ThemeRender;
4336
+ extractLayoutChrome: typeof extractLayoutChrome;
4337
+ resolveAssetPath: typeof resolveAssetPath;
4338
+ createElement: typeof createElement;
4339
+ renderToString: typeof renderToString;
4340
+ }
4341
+ declare function loadThemeScopedRenderer(themeRoot: string): Promise<ThemeRenderer>;
4342
+ declare function renderDevStarterPageHtml(theme: ValidatedTheme, page: ThemeStarterPage, renderer: ThemeRenderer, locale?: string, preserveLang?: boolean, previewLocaleMessages?: ThemePreviewLocaleMessages, searchParams?: URLSearchParams, options?: ViteDevPreviewOptions): string;
4343
+ declare function renderDevEditorPageHtml(theme: ValidatedTheme, page: ThemeStarterPage, renderer: ThemeRenderer, locale?: string, searchParams?: URLSearchParams, previewLocaleMessages?: ThemePreviewLocaleMessages): string;
4344
+ interface ScreenshotOptions extends ThemeRootOptions {
4345
+ device?: string[] | string;
4346
+ output?: string;
4347
+ width?: string;
4348
+ height?: string;
4349
+ port?: string;
4350
+ fullPage?: boolean;
4351
+ }
4352
+ interface VisualCheckOptions extends ThemeRootOptions {
4353
+ device?: string[] | string;
4354
+ output?: string;
4355
+ port?: string;
4356
+ preset?: string[] | string;
4357
+ fullPage?: boolean;
4358
+ }
4359
+ interface ResolvedScreenshotOptions {
4360
+ targets: ScreenshotTarget[];
4361
+ port: number;
4362
+ fullPage: boolean;
4363
+ }
4364
+ interface ResolvedVisualCheckOptions {
4365
+ devices: ScreenshotDevice[];
4366
+ fullPage: boolean;
4367
+ outputDir: string;
4368
+ port: number;
4369
+ presetIds: string[];
1874
4370
  }
1875
4371
  declare const SCREENSHOT_DEVICES: readonly ["desktop", "tablet", "mobile"];
1876
4372
  type ScreenshotDevice = (typeof SCREENSHOT_DEVICES)[number];
@@ -1883,6 +4379,7 @@ interface ScreenshotTarget {
1883
4379
  };
1884
4380
  }
1885
4381
  declare function resolveScreenshotOptions(root: string, options: ScreenshotOptions): ResolvedScreenshotOptions;
4382
+ declare function resolveVisualCheckOptions(root: string, theme: ValidatedTheme, options: VisualCheckOptions): ResolvedVisualCheckOptions;
1886
4383
  interface PlaywrightModule {
1887
4384
  chromium: {
1888
4385
  launch: (options?: {
@@ -1899,6 +4396,8 @@ interface PlaywrightModule {
1899
4396
  goto: (url: string, options?: {
1900
4397
  waitUntil?: string;
1901
4398
  }) => Promise<unknown>;
4399
+ evaluate: <Result>(pageFunction: () => Result) => Promise<Result>;
4400
+ on: (event: "pageerror", listener: (error: Error) => void) => void;
1902
4401
  screenshot: (options: {
1903
4402
  path: string;
1904
4403
  fullPage?: boolean;
@@ -1965,6 +4464,7 @@ declare function performActivateTheme(auth: CliAuthContext, input: {
1965
4464
  themeVersion?: string | undefined;
1966
4465
  confirm?: boolean | undefined;
1967
4466
  }, fetcher?: FetchJsonFn): Promise<z.infer<typeof activateThemeOutputSchema>>;
4467
+ declare function getRemoteContactForm(auth: CliAuthContext, projectId: string, fetcher?: FetchJsonFn): Promise<z.infer<typeof contactFormViewSchema>>;
1968
4468
  declare function performUpdateContactForm(auth: CliAuthContext, input: z.infer<typeof updateContactFormInputSchema>, fetcher?: FetchJsonFn): Promise<z.infer<typeof updateContactFormOutputSchema>>;
1969
4469
  declare function getRemoteThemeSettings(auth: CliAuthContext, projectId: string, fetcher?: FetchJsonFn): Promise<z.infer<typeof themeSettingsViewSchema>>;
1970
4470
  declare function performUpdateThemeSettings(auth: CliAuthContext, input: z.infer<typeof updateThemeSettingsInputSchema>, fetcher?: FetchJsonFn): Promise<z.infer<typeof updateThemeSettingsOutputSchema>>;