@cbjk_iris/schema 0.0.0-stage → 0.0.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.
@@ -0,0 +1,1021 @@
1
+ import { z } from "zod";
2
+ //#region src/texts.d.ts
3
+ /** Todas as chaves de texto, com o tipo completo. Fonte única da lista de chaves. */
4
+ declare const siteTextsSchema: z.ZodObject<{
5
+ headerCta: z.ZodString;
6
+ products: z.ZodObject<{
7
+ title: z.ZodString;
8
+ count: z.ZodString;
9
+ notFound: z.ZodString;
10
+ buy: z.ZodString;
11
+ whatsappNotice: z.ZodString;
12
+ onSale: z.ZodString;
13
+ madeToOrder: z.ZodString;
14
+ installment: z.ZodString;
15
+ interestFree: z.ZodString;
16
+ paymentMethods: z.ZodString;
17
+ noImage: z.ZodString;
18
+ buttons: z.ZodObject<{
19
+ whatsapp: z.ZodString;
20
+ mercadoLivre: z.ZodString;
21
+ shopee: z.ZodString;
22
+ amazon: z.ZodString;
23
+ external: z.ZodString;
24
+ }, z.core.$strict>;
25
+ cardLabel: z.ZodString;
26
+ platforms: z.ZodObject<{
27
+ whatsapp: z.ZodString;
28
+ mercadoLivre: z.ZodString;
29
+ shopee: z.ZodString;
30
+ amazon: z.ZodString;
31
+ external: z.ZodString;
32
+ }, z.core.$strict>;
33
+ }, z.core.$strict>;
34
+ services: z.ZodObject<{
35
+ title: z.ZodString;
36
+ count: z.ZodString;
37
+ notFound: z.ZodString;
38
+ quote: z.ZodString;
39
+ whatsappNotice: z.ZodString;
40
+ cardLink: z.ZodString;
41
+ }, z.core.$strict>;
42
+ detail: z.ZodObject<{
43
+ description: z.ZodString;
44
+ specs: z.ZodString;
45
+ }, z.core.$strict>;
46
+ gallery: z.ZodObject<{
47
+ title: z.ZodString;
48
+ empty: z.ZodString;
49
+ }, z.core.$strict>;
50
+ sections: z.ZodObject<{
51
+ seeAll: z.ZodString;
52
+ contact: z.ZodObject<{
53
+ phone: z.ZodString;
54
+ email: z.ZodString;
55
+ address: z.ZodString;
56
+ hours: z.ZodString;
57
+ whatsapp: z.ZodString;
58
+ mapTitle: z.ZodString;
59
+ }, z.core.$strict>;
60
+ }, z.core.$strict>;
61
+ leadForm: z.ZodObject<{
62
+ name: z.ZodString;
63
+ phone: z.ZodString;
64
+ email: z.ZodString;
65
+ message: z.ZodString;
66
+ submit: z.ZodString;
67
+ sending: z.ZodString;
68
+ success: z.ZodString;
69
+ error: z.ZodString;
70
+ whatsappIntro: z.ZodString;
71
+ }, z.core.$strict>;
72
+ footer: z.ZodObject<{
73
+ menu: z.ZodString;
74
+ contact: z.ZodString;
75
+ copyright: z.ZodString;
76
+ }, z.core.$strict>;
77
+ }, z.core.$strict>;
78
+ /** Textos padrão (DEFAULT_TEXTS): todas as chaves, sem a obsoleta buyOnWhatsapp. */
79
+ type DefaultTexts = z.output<typeof siteTextsSchema>;
80
+ /** Textos resolvidos, como o core os lê. */
81
+ type SiteTexts = Omit<DefaultTexts, "products"> & {
82
+ products: DefaultTexts["products"] & {
83
+ /** @deprecated use products.buttons.whatsapp. Sempre igual a ele depois de resolveTexts. */
84
+ buyOnWhatsapp: string;
85
+ };
86
+ };
87
+ /** Textos dos botões de compra, já resolvidos. */
88
+ type PurchaseButtonTexts = SiteTexts["products"]["buttons"];
89
+ /** Partial em profundidade (objetos); folhas e listas ficam como estão. */
90
+ type DeepPartial<T> = T extends readonly unknown[] ? T : T extends object ? { [K in keyof T]?: DeepPartial<T[K]>; } : T;
91
+ //#endregion
92
+ //#region src/site-config.d.ts
93
+ type MenuItem = {
94
+ title: string;
95
+ path?: string;
96
+ children?: MenuItem[];
97
+ };
98
+ declare const siteLogoSchema: z.ZodObject<{
99
+ src: z.ZodString;
100
+ alt: z.ZodString;
101
+ width: z.ZodNumber;
102
+ height: z.ZodNumber;
103
+ monochrome: z.ZodOptional<z.ZodBoolean>;
104
+ }, z.core.$strict>;
105
+ /** Fonte do Google (nome exato, ex.: "Playfair Display") ou arquivos locais. */
106
+ declare const brandFontSchema: z.ZodUnion<readonly [z.ZodObject<{
107
+ google: z.ZodString;
108
+ weights: z.ZodOptional<z.ZodArray<z.ZodString>>;
109
+ }, z.core.$strict>, z.ZodObject<{
110
+ local: z.ZodArray<z.ZodObject<{
111
+ path: z.ZodString;
112
+ weight: z.ZodString;
113
+ style: z.ZodOptional<z.ZodEnum<{
114
+ normal: "normal";
115
+ italic: "italic";
116
+ }>>;
117
+ }, z.core.$strict>>;
118
+ }, z.core.$strict>]>;
119
+ declare const brandSchema: z.ZodObject<{
120
+ logo: z.ZodOptional<z.ZodObject<{
121
+ src: z.ZodString;
122
+ alt: z.ZodString;
123
+ width: z.ZodNumber;
124
+ height: z.ZodNumber;
125
+ monochrome: z.ZodOptional<z.ZodBoolean>;
126
+ }, z.core.$strict>>;
127
+ logoText: z.ZodOptional<z.ZodString>;
128
+ colors: z.ZodObject<{
129
+ primary: z.ZodOptional<z.ZodString>;
130
+ cta: z.ZodOptional<z.ZodString>;
131
+ highlight: z.ZodOptional<z.ZodString>;
132
+ }, z.core.$strict>;
133
+ radius: z.ZodOptional<z.ZodString>;
134
+ shape: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
135
+ radius: "radius";
136
+ "radius-control": "radius-control";
137
+ "radius-card": "radius-card";
138
+ "radius-media": "radius-media";
139
+ "radius-surface": "radius-surface";
140
+ "radius-field": "radius-field";
141
+ "radius-card-compact": "radius-card-compact";
142
+ "border-width": "border-width";
143
+ "surface-border-width": "surface-border-width";
144
+ "card-ring-width": "card-ring-width";
145
+ "card-ring-color": "card-ring-color";
146
+ "popover-ring-color": "popover-ring-color";
147
+ "shadow-card": "shadow-card";
148
+ "shadow-card-hover": "shadow-card-hover";
149
+ "shadow-overlay": "shadow-overlay";
150
+ "shadow-control": "shadow-control";
151
+ "surface-alpha": "surface-alpha";
152
+ blur: "blur";
153
+ "header-alpha": "header-alpha";
154
+ "header-blur": "header-blur";
155
+ "overlay-alpha": "overlay-alpha";
156
+ "overlay-blur": "overlay-blur";
157
+ density: "density";
158
+ "control-case": "control-case";
159
+ "control-tracking": "control-tracking";
160
+ "control-weight": "control-weight";
161
+ "title-case": "title-case";
162
+ "title-tracking": "title-tracking";
163
+ "label-case": "label-case";
164
+ "label-tracking": "label-tracking";
165
+ "ring-width": "ring-width";
166
+ }> & z.core.$partial, z.ZodString>>;
167
+ fonts: z.ZodOptional<z.ZodObject<{
168
+ sans: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
169
+ google: z.ZodString;
170
+ weights: z.ZodOptional<z.ZodArray<z.ZodString>>;
171
+ }, z.core.$strict>, z.ZodObject<{
172
+ local: z.ZodArray<z.ZodObject<{
173
+ path: z.ZodString;
174
+ weight: z.ZodString;
175
+ style: z.ZodOptional<z.ZodEnum<{
176
+ normal: "normal";
177
+ italic: "italic";
178
+ }>>;
179
+ }, z.core.$strict>>;
180
+ }, z.core.$strict>]>>;
181
+ heading: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
182
+ google: z.ZodString;
183
+ weights: z.ZodOptional<z.ZodArray<z.ZodString>>;
184
+ }, z.core.$strict>, z.ZodObject<{
185
+ local: z.ZodArray<z.ZodObject<{
186
+ path: z.ZodString;
187
+ weight: z.ZodString;
188
+ style: z.ZodOptional<z.ZodEnum<{
189
+ normal: "normal";
190
+ italic: "italic";
191
+ }>>;
192
+ }, z.core.$strict>>;
193
+ }, z.core.$strict>]>>;
194
+ }, z.core.$strict>>;
195
+ overrides: z.ZodOptional<z.ZodObject<{
196
+ light: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
197
+ input: "input";
198
+ primary: "primary";
199
+ cta: "cta";
200
+ highlight: "highlight";
201
+ background: "background";
202
+ foreground: "foreground";
203
+ card: "card";
204
+ "card-foreground": "card-foreground";
205
+ popover: "popover";
206
+ "popover-foreground": "popover-foreground";
207
+ "primary-foreground": "primary-foreground";
208
+ "cta-foreground": "cta-foreground";
209
+ "highlight-foreground": "highlight-foreground";
210
+ secondary: "secondary";
211
+ "secondary-foreground": "secondary-foreground";
212
+ muted: "muted";
213
+ "muted-foreground": "muted-foreground";
214
+ accent: "accent";
215
+ "accent-foreground": "accent-foreground";
216
+ destructive: "destructive";
217
+ border: "border";
218
+ ring: "ring";
219
+ "chart-1": "chart-1";
220
+ "chart-2": "chart-2";
221
+ "chart-3": "chart-3";
222
+ "chart-4": "chart-4";
223
+ "chart-5": "chart-5";
224
+ sidebar: "sidebar";
225
+ "sidebar-foreground": "sidebar-foreground";
226
+ "sidebar-primary": "sidebar-primary";
227
+ "sidebar-primary-foreground": "sidebar-primary-foreground";
228
+ "sidebar-accent": "sidebar-accent";
229
+ "sidebar-accent-foreground": "sidebar-accent-foreground";
230
+ "sidebar-border": "sidebar-border";
231
+ "sidebar-ring": "sidebar-ring";
232
+ }> & z.core.$partial, z.ZodString>>;
233
+ dark: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
234
+ input: "input";
235
+ primary: "primary";
236
+ cta: "cta";
237
+ highlight: "highlight";
238
+ background: "background";
239
+ foreground: "foreground";
240
+ card: "card";
241
+ "card-foreground": "card-foreground";
242
+ popover: "popover";
243
+ "popover-foreground": "popover-foreground";
244
+ "primary-foreground": "primary-foreground";
245
+ "cta-foreground": "cta-foreground";
246
+ "highlight-foreground": "highlight-foreground";
247
+ secondary: "secondary";
248
+ "secondary-foreground": "secondary-foreground";
249
+ muted: "muted";
250
+ "muted-foreground": "muted-foreground";
251
+ accent: "accent";
252
+ "accent-foreground": "accent-foreground";
253
+ destructive: "destructive";
254
+ border: "border";
255
+ ring: "ring";
256
+ "chart-1": "chart-1";
257
+ "chart-2": "chart-2";
258
+ "chart-3": "chart-3";
259
+ "chart-4": "chart-4";
260
+ "chart-5": "chart-5";
261
+ sidebar: "sidebar";
262
+ "sidebar-foreground": "sidebar-foreground";
263
+ "sidebar-primary": "sidebar-primary";
264
+ "sidebar-primary-foreground": "sidebar-primary-foreground";
265
+ "sidebar-accent": "sidebar-accent";
266
+ "sidebar-accent-foreground": "sidebar-accent-foreground";
267
+ "sidebar-border": "sidebar-border";
268
+ "sidebar-ring": "sidebar-ring";
269
+ }> & z.core.$partial, z.ZodString>>;
270
+ }, z.core.$strict>>;
271
+ }, z.core.$strict>;
272
+ declare const contactSchema: z.ZodObject<{
273
+ phone: z.ZodOptional<z.ZodString>;
274
+ email: z.ZodOptional<z.ZodEmail>;
275
+ address: z.ZodOptional<z.ZodString>;
276
+ hours: z.ZodOptional<z.ZodArray<z.ZodString>>;
277
+ mapEmbedUrl: z.ZodOptional<z.ZodString>;
278
+ social: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
279
+ whatsapp: "whatsapp";
280
+ instagram: "instagram";
281
+ facebook: "facebook";
282
+ youtube: "youtube";
283
+ tiktok: "tiktok";
284
+ x: "x";
285
+ pinterest: "pinterest";
286
+ threads: "threads";
287
+ linkedin: "linkedin";
288
+ }> & z.core.$partial, z.ZodString>>;
289
+ }, z.core.$strict>;
290
+ /**
291
+ * Para onde vão os dados do formulário de lead:
292
+ * - "whatsapp": abre uma conversa com os dados preenchidos (não precisa de conta)
293
+ * - "endpoint": POST em JSON para um serviço de formulários (Formspree, Web3Forms...)
294
+ * - "backend": reservado para o template de backend (ainda não implementado)
295
+ */
296
+ declare const leadsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
297
+ provider: z.ZodLiteral<"whatsapp">;
298
+ intro: z.ZodOptional<z.ZodString>;
299
+ }, z.core.$strict>, z.ZodObject<{
300
+ provider: z.ZodLiteral<"endpoint">;
301
+ endpoint: z.ZodString;
302
+ extraFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
303
+ }, z.core.$strict>, z.ZodObject<{
304
+ provider: z.ZodLiteral<"backend">;
305
+ }, z.core.$strict>], "provider">;
306
+ declare const footerSchema: z.ZodObject<{
307
+ text: z.ZodOptional<z.ZodString>;
308
+ columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
309
+ title: z.ZodString;
310
+ links: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
311
+ label: z.ZodString;
312
+ href: z.ZodString;
313
+ }, z.core.$strict>, z.ZodObject<{
314
+ label: z.ZodString;
315
+ whatsapp: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodString]>;
316
+ }, z.core.$strict>]>>;
317
+ }, z.core.$strict>>>;
318
+ }, z.core.$strict>;
319
+ declare const siteConfigSchema: z.ZodObject<{
320
+ name: z.ZodString;
321
+ locale: z.ZodString;
322
+ currency: z.ZodString;
323
+ brand: z.ZodObject<{
324
+ logo: z.ZodOptional<z.ZodObject<{
325
+ src: z.ZodString;
326
+ alt: z.ZodString;
327
+ width: z.ZodNumber;
328
+ height: z.ZodNumber;
329
+ monochrome: z.ZodOptional<z.ZodBoolean>;
330
+ }, z.core.$strict>>;
331
+ logoText: z.ZodOptional<z.ZodString>;
332
+ colors: z.ZodObject<{
333
+ primary: z.ZodOptional<z.ZodString>;
334
+ cta: z.ZodOptional<z.ZodString>;
335
+ highlight: z.ZodOptional<z.ZodString>;
336
+ }, z.core.$strict>;
337
+ radius: z.ZodOptional<z.ZodString>;
338
+ shape: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
339
+ radius: "radius";
340
+ "radius-control": "radius-control";
341
+ "radius-card": "radius-card";
342
+ "radius-media": "radius-media";
343
+ "radius-surface": "radius-surface";
344
+ "radius-field": "radius-field";
345
+ "radius-card-compact": "radius-card-compact";
346
+ "border-width": "border-width";
347
+ "surface-border-width": "surface-border-width";
348
+ "card-ring-width": "card-ring-width";
349
+ "card-ring-color": "card-ring-color";
350
+ "popover-ring-color": "popover-ring-color";
351
+ "shadow-card": "shadow-card";
352
+ "shadow-card-hover": "shadow-card-hover";
353
+ "shadow-overlay": "shadow-overlay";
354
+ "shadow-control": "shadow-control";
355
+ "surface-alpha": "surface-alpha";
356
+ blur: "blur";
357
+ "header-alpha": "header-alpha";
358
+ "header-blur": "header-blur";
359
+ "overlay-alpha": "overlay-alpha";
360
+ "overlay-blur": "overlay-blur";
361
+ density: "density";
362
+ "control-case": "control-case";
363
+ "control-tracking": "control-tracking";
364
+ "control-weight": "control-weight";
365
+ "title-case": "title-case";
366
+ "title-tracking": "title-tracking";
367
+ "label-case": "label-case";
368
+ "label-tracking": "label-tracking";
369
+ "ring-width": "ring-width";
370
+ }> & z.core.$partial, z.ZodString>>;
371
+ fonts: z.ZodOptional<z.ZodObject<{
372
+ sans: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
373
+ google: z.ZodString;
374
+ weights: z.ZodOptional<z.ZodArray<z.ZodString>>;
375
+ }, z.core.$strict>, z.ZodObject<{
376
+ local: z.ZodArray<z.ZodObject<{
377
+ path: z.ZodString;
378
+ weight: z.ZodString;
379
+ style: z.ZodOptional<z.ZodEnum<{
380
+ normal: "normal";
381
+ italic: "italic";
382
+ }>>;
383
+ }, z.core.$strict>>;
384
+ }, z.core.$strict>]>>;
385
+ heading: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
386
+ google: z.ZodString;
387
+ weights: z.ZodOptional<z.ZodArray<z.ZodString>>;
388
+ }, z.core.$strict>, z.ZodObject<{
389
+ local: z.ZodArray<z.ZodObject<{
390
+ path: z.ZodString;
391
+ weight: z.ZodString;
392
+ style: z.ZodOptional<z.ZodEnum<{
393
+ normal: "normal";
394
+ italic: "italic";
395
+ }>>;
396
+ }, z.core.$strict>>;
397
+ }, z.core.$strict>]>>;
398
+ }, z.core.$strict>>;
399
+ overrides: z.ZodOptional<z.ZodObject<{
400
+ light: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
401
+ input: "input";
402
+ primary: "primary";
403
+ cta: "cta";
404
+ highlight: "highlight";
405
+ background: "background";
406
+ foreground: "foreground";
407
+ card: "card";
408
+ "card-foreground": "card-foreground";
409
+ popover: "popover";
410
+ "popover-foreground": "popover-foreground";
411
+ "primary-foreground": "primary-foreground";
412
+ "cta-foreground": "cta-foreground";
413
+ "highlight-foreground": "highlight-foreground";
414
+ secondary: "secondary";
415
+ "secondary-foreground": "secondary-foreground";
416
+ muted: "muted";
417
+ "muted-foreground": "muted-foreground";
418
+ accent: "accent";
419
+ "accent-foreground": "accent-foreground";
420
+ destructive: "destructive";
421
+ border: "border";
422
+ ring: "ring";
423
+ "chart-1": "chart-1";
424
+ "chart-2": "chart-2";
425
+ "chart-3": "chart-3";
426
+ "chart-4": "chart-4";
427
+ "chart-5": "chart-5";
428
+ sidebar: "sidebar";
429
+ "sidebar-foreground": "sidebar-foreground";
430
+ "sidebar-primary": "sidebar-primary";
431
+ "sidebar-primary-foreground": "sidebar-primary-foreground";
432
+ "sidebar-accent": "sidebar-accent";
433
+ "sidebar-accent-foreground": "sidebar-accent-foreground";
434
+ "sidebar-border": "sidebar-border";
435
+ "sidebar-ring": "sidebar-ring";
436
+ }> & z.core.$partial, z.ZodString>>;
437
+ dark: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
438
+ input: "input";
439
+ primary: "primary";
440
+ cta: "cta";
441
+ highlight: "highlight";
442
+ background: "background";
443
+ foreground: "foreground";
444
+ card: "card";
445
+ "card-foreground": "card-foreground";
446
+ popover: "popover";
447
+ "popover-foreground": "popover-foreground";
448
+ "primary-foreground": "primary-foreground";
449
+ "cta-foreground": "cta-foreground";
450
+ "highlight-foreground": "highlight-foreground";
451
+ secondary: "secondary";
452
+ "secondary-foreground": "secondary-foreground";
453
+ muted: "muted";
454
+ "muted-foreground": "muted-foreground";
455
+ accent: "accent";
456
+ "accent-foreground": "accent-foreground";
457
+ destructive: "destructive";
458
+ border: "border";
459
+ ring: "ring";
460
+ "chart-1": "chart-1";
461
+ "chart-2": "chart-2";
462
+ "chart-3": "chart-3";
463
+ "chart-4": "chart-4";
464
+ "chart-5": "chart-5";
465
+ sidebar: "sidebar";
466
+ "sidebar-foreground": "sidebar-foreground";
467
+ "sidebar-primary": "sidebar-primary";
468
+ "sidebar-primary-foreground": "sidebar-primary-foreground";
469
+ "sidebar-accent": "sidebar-accent";
470
+ "sidebar-accent-foreground": "sidebar-accent-foreground";
471
+ "sidebar-border": "sidebar-border";
472
+ "sidebar-ring": "sidebar-ring";
473
+ }> & z.core.$partial, z.ZodString>>;
474
+ }, z.core.$strict>>;
475
+ }, z.core.$strict>;
476
+ seo: z.ZodObject<{
477
+ title: z.ZodString;
478
+ titleTemplate: z.ZodString;
479
+ description: z.ZodOptional<z.ZodString>;
480
+ }, z.core.$strict>;
481
+ whatsapp: z.ZodObject<{
482
+ phone: z.ZodString;
483
+ messages: z.ZodObject<{
484
+ general: z.ZodString;
485
+ product: z.ZodString;
486
+ service: z.ZodString;
487
+ }, z.core.$strict>;
488
+ }, z.core.$strict>;
489
+ images: z.ZodObject<{
490
+ remoteHosts: z.ZodArray<z.ZodString>;
491
+ }, z.core.$strict>;
492
+ theme: z.ZodObject<{
493
+ name: z.ZodString;
494
+ colorMode: z.ZodEnum<{
495
+ light: "light";
496
+ dark: "dark";
497
+ system: "system";
498
+ }>;
499
+ style: z.ZodOptional<z.ZodEnum<{
500
+ flat: "flat";
501
+ sera: "sera";
502
+ soft: "soft";
503
+ glass: "glass";
504
+ }>>;
505
+ }, z.core.$strict>;
506
+ menu: z.ZodArray<z.ZodType<MenuItem, unknown, z.core.$ZodTypeInternals<MenuItem, unknown>>>;
507
+ contact: z.ZodOptional<z.ZodObject<{
508
+ phone: z.ZodOptional<z.ZodString>;
509
+ email: z.ZodOptional<z.ZodEmail>;
510
+ address: z.ZodOptional<z.ZodString>;
511
+ hours: z.ZodOptional<z.ZodArray<z.ZodString>>;
512
+ mapEmbedUrl: z.ZodOptional<z.ZodString>;
513
+ social: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
514
+ whatsapp: "whatsapp";
515
+ instagram: "instagram";
516
+ facebook: "facebook";
517
+ youtube: "youtube";
518
+ tiktok: "tiktok";
519
+ x: "x";
520
+ pinterest: "pinterest";
521
+ threads: "threads";
522
+ linkedin: "linkedin";
523
+ }> & z.core.$partial, z.ZodString>>;
524
+ }, z.core.$strict>>;
525
+ footer: z.ZodOptional<z.ZodObject<{
526
+ text: z.ZodOptional<z.ZodString>;
527
+ columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
528
+ title: z.ZodString;
529
+ links: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
530
+ label: z.ZodString;
531
+ href: z.ZodString;
532
+ }, z.core.$strict>, z.ZodObject<{
533
+ label: z.ZodString;
534
+ whatsapp: z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodString]>;
535
+ }, z.core.$strict>]>>;
536
+ }, z.core.$strict>>>;
537
+ }, z.core.$strict>>;
538
+ leads: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
539
+ provider: z.ZodLiteral<"whatsapp">;
540
+ intro: z.ZodOptional<z.ZodString>;
541
+ }, z.core.$strict>, z.ZodObject<{
542
+ provider: z.ZodLiteral<"endpoint">;
543
+ endpoint: z.ZodString;
544
+ extraFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
545
+ }, z.core.$strict>, z.ZodObject<{
546
+ provider: z.ZodLiteral<"backend">;
547
+ }, z.core.$strict>], "provider">>;
548
+ modules: z.ZodPipe<z.ZodOptional<z.ZodArray<z.ZodEnum<{
549
+ products: "products";
550
+ services: "services";
551
+ gallery: "gallery";
552
+ }>>>, z.ZodTransform<("products" | "services" | "gallery")[], ("products" | "services" | "gallery")[] | undefined>>;
553
+ commerce: z.ZodPipe<z.ZodOptional<z.ZodObject<{
554
+ buttonOrder: z.ZodOptional<z.ZodArray<z.ZodEnum<{
555
+ whatsapp: "whatsapp";
556
+ mercadoLivre: "mercadoLivre";
557
+ shopee: "shopee";
558
+ amazon: "amazon";
559
+ external: "external";
560
+ }>>>;
561
+ }, z.core.$strict>>, z.ZodTransform<{
562
+ buttonOrder: ("whatsapp" | "mercadoLivre" | "shopee" | "amazon" | "external")[];
563
+ }, {
564
+ buttonOrder?: ("whatsapp" | "mercadoLivre" | "shopee" | "amazon" | "external")[] | undefined;
565
+ } | undefined>>;
566
+ texts: z.ZodPipe<z.ZodOptional<z.ZodType<{
567
+ headerCta?: string | undefined;
568
+ services?: {
569
+ title?: string | undefined;
570
+ count?: string | undefined;
571
+ notFound?: string | undefined;
572
+ quote?: string | undefined;
573
+ whatsappNotice?: string | undefined;
574
+ cardLink?: string | undefined;
575
+ } | undefined;
576
+ detail?: {
577
+ description?: string | undefined;
578
+ specs?: string | undefined;
579
+ } | undefined;
580
+ gallery?: {
581
+ title?: string | undefined;
582
+ empty?: string | undefined;
583
+ } | undefined;
584
+ sections?: {
585
+ seeAll?: string | undefined;
586
+ contact?: {
587
+ phone?: string | undefined;
588
+ email?: string | undefined;
589
+ address?: string | undefined;
590
+ hours?: string | undefined;
591
+ whatsapp?: string | undefined;
592
+ mapTitle?: string | undefined;
593
+ } | undefined;
594
+ } | undefined;
595
+ leadForm?: {
596
+ name?: string | undefined;
597
+ phone?: string | undefined;
598
+ email?: string | undefined;
599
+ message?: string | undefined;
600
+ submit?: string | undefined;
601
+ sending?: string | undefined;
602
+ success?: string | undefined;
603
+ error?: string | undefined;
604
+ whatsappIntro?: string | undefined;
605
+ } | undefined;
606
+ footer?: {
607
+ menu?: string | undefined;
608
+ contact?: string | undefined;
609
+ copyright?: string | undefined;
610
+ } | undefined;
611
+ products?: {
612
+ title?: string | undefined;
613
+ count?: string | undefined;
614
+ notFound?: string | undefined;
615
+ buy?: string | undefined;
616
+ whatsappNotice?: string | undefined;
617
+ onSale?: string | undefined;
618
+ madeToOrder?: string | undefined;
619
+ installment?: string | undefined;
620
+ interestFree?: string | undefined;
621
+ paymentMethods?: string | undefined;
622
+ noImage?: string | undefined;
623
+ buttons?: {
624
+ whatsapp?: string | undefined;
625
+ mercadoLivre?: string | undefined;
626
+ shopee?: string | undefined;
627
+ amazon?: string | undefined;
628
+ external?: string | undefined;
629
+ } | undefined;
630
+ cardLabel?: string | undefined;
631
+ platforms?: {
632
+ whatsapp?: string | undefined;
633
+ mercadoLivre?: string | undefined;
634
+ shopee?: string | undefined;
635
+ amazon?: string | undefined;
636
+ external?: string | undefined;
637
+ } | undefined;
638
+ buyOnWhatsapp?: string | undefined;
639
+ } | undefined;
640
+ }, {
641
+ headerCta?: string | undefined;
642
+ services?: {
643
+ title?: string | undefined;
644
+ count?: string | undefined;
645
+ notFound?: string | undefined;
646
+ quote?: string | undefined;
647
+ whatsappNotice?: string | undefined;
648
+ cardLink?: string | undefined;
649
+ } | undefined;
650
+ detail?: {
651
+ description?: string | undefined;
652
+ specs?: string | undefined;
653
+ } | undefined;
654
+ gallery?: {
655
+ title?: string | undefined;
656
+ empty?: string | undefined;
657
+ } | undefined;
658
+ sections?: {
659
+ seeAll?: string | undefined;
660
+ contact?: {
661
+ phone?: string | undefined;
662
+ email?: string | undefined;
663
+ address?: string | undefined;
664
+ hours?: string | undefined;
665
+ whatsapp?: string | undefined;
666
+ mapTitle?: string | undefined;
667
+ } | undefined;
668
+ } | undefined;
669
+ leadForm?: {
670
+ name?: string | undefined;
671
+ phone?: string | undefined;
672
+ email?: string | undefined;
673
+ message?: string | undefined;
674
+ submit?: string | undefined;
675
+ sending?: string | undefined;
676
+ success?: string | undefined;
677
+ error?: string | undefined;
678
+ whatsappIntro?: string | undefined;
679
+ } | undefined;
680
+ footer?: {
681
+ menu?: string | undefined;
682
+ contact?: string | undefined;
683
+ copyright?: string | undefined;
684
+ } | undefined;
685
+ products?: {
686
+ title?: string | undefined;
687
+ count?: string | undefined;
688
+ notFound?: string | undefined;
689
+ buy?: string | undefined;
690
+ whatsappNotice?: string | undefined;
691
+ onSale?: string | undefined;
692
+ madeToOrder?: string | undefined;
693
+ installment?: string | undefined;
694
+ interestFree?: string | undefined;
695
+ paymentMethods?: string | undefined;
696
+ noImage?: string | undefined;
697
+ buttons?: {
698
+ whatsapp?: string | undefined;
699
+ mercadoLivre?: string | undefined;
700
+ shopee?: string | undefined;
701
+ amazon?: string | undefined;
702
+ external?: string | undefined;
703
+ } | undefined;
704
+ cardLabel?: string | undefined;
705
+ platforms?: {
706
+ whatsapp?: string | undefined;
707
+ mercadoLivre?: string | undefined;
708
+ shopee?: string | undefined;
709
+ amazon?: string | undefined;
710
+ external?: string | undefined;
711
+ } | undefined;
712
+ buyOnWhatsapp?: string | undefined;
713
+ } | undefined;
714
+ }, z.core.$ZodTypeInternals<{
715
+ headerCta?: string | undefined;
716
+ services?: {
717
+ title?: string | undefined;
718
+ count?: string | undefined;
719
+ notFound?: string | undefined;
720
+ quote?: string | undefined;
721
+ whatsappNotice?: string | undefined;
722
+ cardLink?: string | undefined;
723
+ } | undefined;
724
+ detail?: {
725
+ description?: string | undefined;
726
+ specs?: string | undefined;
727
+ } | undefined;
728
+ gallery?: {
729
+ title?: string | undefined;
730
+ empty?: string | undefined;
731
+ } | undefined;
732
+ sections?: {
733
+ seeAll?: string | undefined;
734
+ contact?: {
735
+ phone?: string | undefined;
736
+ email?: string | undefined;
737
+ address?: string | undefined;
738
+ hours?: string | undefined;
739
+ whatsapp?: string | undefined;
740
+ mapTitle?: string | undefined;
741
+ } | undefined;
742
+ } | undefined;
743
+ leadForm?: {
744
+ name?: string | undefined;
745
+ phone?: string | undefined;
746
+ email?: string | undefined;
747
+ message?: string | undefined;
748
+ submit?: string | undefined;
749
+ sending?: string | undefined;
750
+ success?: string | undefined;
751
+ error?: string | undefined;
752
+ whatsappIntro?: string | undefined;
753
+ } | undefined;
754
+ footer?: {
755
+ menu?: string | undefined;
756
+ contact?: string | undefined;
757
+ copyright?: string | undefined;
758
+ } | undefined;
759
+ products?: {
760
+ title?: string | undefined;
761
+ count?: string | undefined;
762
+ notFound?: string | undefined;
763
+ buy?: string | undefined;
764
+ whatsappNotice?: string | undefined;
765
+ onSale?: string | undefined;
766
+ madeToOrder?: string | undefined;
767
+ installment?: string | undefined;
768
+ interestFree?: string | undefined;
769
+ paymentMethods?: string | undefined;
770
+ noImage?: string | undefined;
771
+ buttons?: {
772
+ whatsapp?: string | undefined;
773
+ mercadoLivre?: string | undefined;
774
+ shopee?: string | undefined;
775
+ amazon?: string | undefined;
776
+ external?: string | undefined;
777
+ } | undefined;
778
+ cardLabel?: string | undefined;
779
+ platforms?: {
780
+ whatsapp?: string | undefined;
781
+ mercadoLivre?: string | undefined;
782
+ shopee?: string | undefined;
783
+ amazon?: string | undefined;
784
+ external?: string | undefined;
785
+ } | undefined;
786
+ buyOnWhatsapp?: string | undefined;
787
+ } | undefined;
788
+ }, {
789
+ headerCta?: string | undefined;
790
+ services?: {
791
+ title?: string | undefined;
792
+ count?: string | undefined;
793
+ notFound?: string | undefined;
794
+ quote?: string | undefined;
795
+ whatsappNotice?: string | undefined;
796
+ cardLink?: string | undefined;
797
+ } | undefined;
798
+ detail?: {
799
+ description?: string | undefined;
800
+ specs?: string | undefined;
801
+ } | undefined;
802
+ gallery?: {
803
+ title?: string | undefined;
804
+ empty?: string | undefined;
805
+ } | undefined;
806
+ sections?: {
807
+ seeAll?: string | undefined;
808
+ contact?: {
809
+ phone?: string | undefined;
810
+ email?: string | undefined;
811
+ address?: string | undefined;
812
+ hours?: string | undefined;
813
+ whatsapp?: string | undefined;
814
+ mapTitle?: string | undefined;
815
+ } | undefined;
816
+ } | undefined;
817
+ leadForm?: {
818
+ name?: string | undefined;
819
+ phone?: string | undefined;
820
+ email?: string | undefined;
821
+ message?: string | undefined;
822
+ submit?: string | undefined;
823
+ sending?: string | undefined;
824
+ success?: string | undefined;
825
+ error?: string | undefined;
826
+ whatsappIntro?: string | undefined;
827
+ } | undefined;
828
+ footer?: {
829
+ menu?: string | undefined;
830
+ contact?: string | undefined;
831
+ copyright?: string | undefined;
832
+ } | undefined;
833
+ products?: {
834
+ title?: string | undefined;
835
+ count?: string | undefined;
836
+ notFound?: string | undefined;
837
+ buy?: string | undefined;
838
+ whatsappNotice?: string | undefined;
839
+ onSale?: string | undefined;
840
+ madeToOrder?: string | undefined;
841
+ installment?: string | undefined;
842
+ interestFree?: string | undefined;
843
+ paymentMethods?: string | undefined;
844
+ noImage?: string | undefined;
845
+ buttons?: {
846
+ whatsapp?: string | undefined;
847
+ mercadoLivre?: string | undefined;
848
+ shopee?: string | undefined;
849
+ amazon?: string | undefined;
850
+ external?: string | undefined;
851
+ } | undefined;
852
+ cardLabel?: string | undefined;
853
+ platforms?: {
854
+ whatsapp?: string | undefined;
855
+ mercadoLivre?: string | undefined;
856
+ shopee?: string | undefined;
857
+ amazon?: string | undefined;
858
+ external?: string | undefined;
859
+ } | undefined;
860
+ buyOnWhatsapp?: string | undefined;
861
+ } | undefined;
862
+ }>>>, z.ZodTransform<SiteTexts, {
863
+ headerCta?: string | undefined;
864
+ services?: {
865
+ title?: string | undefined;
866
+ count?: string | undefined;
867
+ notFound?: string | undefined;
868
+ quote?: string | undefined;
869
+ whatsappNotice?: string | undefined;
870
+ cardLink?: string | undefined;
871
+ } | undefined;
872
+ detail?: {
873
+ description?: string | undefined;
874
+ specs?: string | undefined;
875
+ } | undefined;
876
+ gallery?: {
877
+ title?: string | undefined;
878
+ empty?: string | undefined;
879
+ } | undefined;
880
+ sections?: {
881
+ seeAll?: string | undefined;
882
+ contact?: {
883
+ phone?: string | undefined;
884
+ email?: string | undefined;
885
+ address?: string | undefined;
886
+ hours?: string | undefined;
887
+ whatsapp?: string | undefined;
888
+ mapTitle?: string | undefined;
889
+ } | undefined;
890
+ } | undefined;
891
+ leadForm?: {
892
+ name?: string | undefined;
893
+ phone?: string | undefined;
894
+ email?: string | undefined;
895
+ message?: string | undefined;
896
+ submit?: string | undefined;
897
+ sending?: string | undefined;
898
+ success?: string | undefined;
899
+ error?: string | undefined;
900
+ whatsappIntro?: string | undefined;
901
+ } | undefined;
902
+ footer?: {
903
+ menu?: string | undefined;
904
+ contact?: string | undefined;
905
+ copyright?: string | undefined;
906
+ } | undefined;
907
+ products?: {
908
+ title?: string | undefined;
909
+ count?: string | undefined;
910
+ notFound?: string | undefined;
911
+ buy?: string | undefined;
912
+ whatsappNotice?: string | undefined;
913
+ onSale?: string | undefined;
914
+ madeToOrder?: string | undefined;
915
+ installment?: string | undefined;
916
+ interestFree?: string | undefined;
917
+ paymentMethods?: string | undefined;
918
+ noImage?: string | undefined;
919
+ buttons?: {
920
+ whatsapp?: string | undefined;
921
+ mercadoLivre?: string | undefined;
922
+ shopee?: string | undefined;
923
+ amazon?: string | undefined;
924
+ external?: string | undefined;
925
+ } | undefined;
926
+ cardLabel?: string | undefined;
927
+ platforms?: {
928
+ whatsapp?: string | undefined;
929
+ mercadoLivre?: string | undefined;
930
+ shopee?: string | undefined;
931
+ amazon?: string | undefined;
932
+ external?: string | undefined;
933
+ } | undefined;
934
+ buyOnWhatsapp?: string | undefined;
935
+ } | undefined;
936
+ } | undefined>>;
937
+ }, z.core.$strict>;
938
+ /** O que o cliente escreve no site.config.ts (texts parcial, modules e commerce opcionais...). */
939
+ type SiteConfigInput = z.input<typeof siteConfigSchema>;
940
+ /** Config resolvido, com tudo preenchido. */
941
+ type SiteConfig = z.output<typeof siteConfigSchema>;
942
+ type BrandConfig = z.output<typeof brandSchema>;
943
+ type BrandColors = BrandConfig["colors"];
944
+ type BrandFont = z.output<typeof brandFontSchema>;
945
+ type SiteLogo = z.output<typeof siteLogoSchema>;
946
+ type ContactInfo = z.output<typeof contactSchema>;
947
+ type LeadsConfig = z.output<typeof leadsSchema>;
948
+ type FooterConfig = z.output<typeof footerSchema>;
949
+ type CommerceConfig = SiteConfig["commerce"];
950
+ /** Config inválido: a mensagem lista cada erro com o caminho do campo. */
951
+ declare class SiteConfigError extends Error {
952
+ readonly issues: z.core.$ZodIssue[];
953
+ constructor(issues: z.core.$ZodIssue[], file?: string);
954
+ }
955
+ /** Valida e preenche os padrões. Lança SiteConfigError, com mensagens em pt-BR. Roda no Node. */
956
+ declare function resolveSiteConfig(input: SiteConfigInput): SiteConfig;
957
+ //#endregion
958
+ //#region src/texts-defaults.d.ts
959
+ declare const DEFAULT_TEXTS: DefaultTexts;
960
+ /**
961
+ * Mescla os textos do cliente com DEFAULT_TEXTS. Fallback obsoleto: products.buyOnWhatsapp vale
962
+ * como products.buttons.whatsapp quando este falta; na saída, buyOnWhatsapp é sempre igual a ele.
963
+ */
964
+ declare function resolveTexts(partial?: DeepPartial<SiteTexts>): SiteTexts;
965
+ //#endregion
966
+ //#region src/constants.d.ts
967
+ /** Plataformas de compra, na ordem nativa (Q-07). */
968
+ declare const PURCHASE_PLATFORMS: readonly ["whatsapp", "mercadoLivre", "shopee", "amazon", "external"];
969
+ type PurchasePlatform = (typeof PURCHASE_PLATFORMS)[number];
970
+ /** Ordem padrão dos botões de compra; vale quando commerce.buttonOrder está ausente. */
971
+ declare const DEFAULT_BUTTON_ORDER: readonly PurchasePlatform[];
972
+ /** Ícones disponíveis para benefícios (lista fixa do lucide, ver core/src/sections/icons.ts). */
973
+ declare const SECTION_ICONS: readonly ["shield-check", "badge-check", "award", "star", "thumbs-up", "heart", "gem", "clock", "timer", "calendar", "truck", "package", "credit-card", "hand-coins", "wrench", "hammer", "ruler", "paint-roller", "house", "zap", "droplets", "lightbulb", "leaf", "recycle", "users", "headset", "phone", "message-circle", "map-pin", "sparkles"];
974
+ type SectionIcon = (typeof SECTION_ICONS)[number];
975
+ /** Campos do formulário de lead. */
976
+ declare const LEAD_FIELDS: readonly ["name", "phone", "email", "message"];
977
+ type LeadField = (typeof LEAD_FIELDS)[number];
978
+ declare const SOCIAL_NETWORKS: readonly ["instagram", "facebook", "youtube", "tiktok", "whatsapp", "x", "pinterest", "threads", "linkedin"];
979
+ type SocialNetwork = (typeof SOCIAL_NETWORKS)[number];
980
+ /** Variáveis de cor do tema (formato do shadcn/tweakcn). */
981
+ declare const COLOR_TOKENS: readonly ["background", "foreground", "card", "card-foreground", "popover", "popover-foreground", "primary", "primary-foreground", "cta", "cta-foreground", "highlight", "highlight-foreground", "secondary", "secondary-foreground", "muted", "muted-foreground", "accent", "accent-foreground", "destructive", "border", "input", "ring", "chart-1", "chart-2", "chart-3", "chart-4", "chart-5", "sidebar", "sidebar-foreground", "sidebar-primary", "sidebar-primary-foreground", "sidebar-accent", "sidebar-accent-foreground", "sidebar-border", "sidebar-ring"];
982
+ type ColorToken = (typeof COLOR_TOKENS)[number];
983
+ type ColorTokens = Record<ColorToken, string>;
984
+ /** "system": começa pelo tema do sistema e mostra o botão de troca. "light" | "dark": fixo. */
985
+ declare const COLOR_MODES: readonly ["system", "light", "dark"];
986
+ type ColorMode = (typeof COLOR_MODES)[number];
987
+ //#endregion
988
+ //#region src/modules.d.ts
989
+ declare const MODULES: readonly [{
990
+ readonly id: "products";
991
+ readonly name: "Produtos";
992
+ readonly routes: readonly ["produtos", "produto/[slug]"];
993
+ readonly menu: readonly ["/produtos"];
994
+ readonly contentDir: "content/products";
995
+ }, {
996
+ readonly id: "services";
997
+ readonly name: "Serviços";
998
+ readonly routes: readonly ["servicos", "servico/[slug]"];
999
+ readonly menu: readonly ["/servicos"];
1000
+ readonly contentDir: "content/services";
1001
+ }, {
1002
+ readonly id: "gallery";
1003
+ readonly name: "Últimos projetos";
1004
+ readonly routes: readonly ["ultimos-projetos"];
1005
+ readonly menu: readonly ["/ultimos-projetos"];
1006
+ readonly contentDir: "public/ultimos_projetos";
1007
+ }];
1008
+ type ModuleId = (typeof MODULES)[number]["id"];
1009
+ declare const MODULE_IDS: readonly ModuleId[];
1010
+ /** Módulos ativos quando siteConfig.modules está ausente (o comportamento de antes). */
1011
+ declare const DEFAULT_MODULES: readonly ModuleId[];
1012
+ //#endregion
1013
+ //#region src/defaults.d.ts
1014
+ /**
1015
+ * Preenche os padrões de um config JÁ VALIDADO, sem validar. Dá o mesmo resultado de
1016
+ * siteConfigSchema.parse para um config válido (teste de equivalência em site-config.test.ts).
1017
+ * Não muta a entrada.
1018
+ */
1019
+ declare function applySiteConfigDefaults(input: SiteConfigInput): SiteConfig;
1020
+ //#endregion
1021
+ export { SiteLogo as A, ContactInfo as C, SiteConfig as D, MenuItem as E, SiteTexts as F, siteConfigSchema as M, DeepPartial as N, SiteConfigError as O, PurchaseButtonTexts as P, CommerceConfig as S, LeadsConfig as T, DEFAULT_TEXTS as _, ModuleId as a, BrandConfig as b, ColorToken as c, LeadField as d, PURCHASE_PLATFORMS as f, SocialNetwork as g, SectionIcon as h, MODULE_IDS as i, resolveSiteConfig as j, SiteConfigInput as k, ColorTokens as l, SECTION_ICONS as m, DEFAULT_MODULES as n, COLOR_TOKENS as o, PurchasePlatform as p, MODULES as r, ColorMode as s, applySiteConfigDefaults as t, DEFAULT_BUTTON_ORDER as u, resolveTexts as v, FooterConfig as w, BrandFont as x, BrandColors as y };