@roottale/cms-renderer-next 0.40.0 → 0.41.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.
@@ -1,5 +1,7 @@
1
1
  import { z } from 'zod';
2
+ export { R as RootTaleCssVars, t as themeToCssVars } from './theme-css-vars-BiyHBsJG.js';
2
3
  import { ReactElement, CSSProperties, ReactNode } from 'react';
4
+ import '@roottale/cms-client/server';
3
5
 
4
6
  /**
5
7
  * `@roottale/cms-renderer-next/templates` — canonical `SiteConfig` 스키마.
@@ -19,6 +21,7 @@ import { ReactElement, CSSProperties, ReactNode } from 'react';
19
21
  * - `site.url` 은 optional — 스타터/외부 사이트가 `SITE_URL` env 로 런타임 해석하는
20
22
  * 기존 패턴(P4 스타터)과 충돌하므로 config 강제 대신 env fallback 허용.
21
23
  * - 빌트인에 `rich-text` 추가 (P4 스타터 기 운영 섹션 — "동일 패턴" 군).
24
+ * allow: SIZE_OK — canonical SectionSchema registry이며 W1-2 계약이 이 파일 수정을 요구한다.
22
25
  */
23
26
 
24
27
  declare const NavItemSchema: z.ZodObject<{
@@ -28,25 +31,25 @@ declare const NavItemSchema: z.ZodObject<{
28
31
  label: z.ZodString;
29
32
  href: z.ZodString;
30
33
  }, "strip", z.ZodTypeAny, {
31
- label: string;
32
34
  href: string;
33
- }, {
34
35
  label: string;
36
+ }, {
35
37
  href: string;
38
+ label: string;
36
39
  }>, "many">>;
37
40
  }, "strip", z.ZodTypeAny, {
38
- label: string;
39
41
  href: string;
42
+ label: string;
40
43
  children?: {
41
- label: string;
42
44
  href: string;
45
+ label: string;
43
46
  }[] | undefined;
44
47
  }, {
45
- label: string;
46
48
  href: string;
49
+ label: string;
47
50
  children?: {
48
- label: string;
49
51
  href: string;
52
+ label: string;
50
53
  }[] | undefined;
51
54
  }>;
52
55
  type NavItem = z.infer<typeof NavItemSchema>;
@@ -54,11 +57,11 @@ declare const CtaSchema: z.ZodObject<{
54
57
  label: z.ZodString;
55
58
  href: z.ZodString;
56
59
  }, "strip", z.ZodTypeAny, {
57
- label: string;
58
60
  href: string;
59
- }, {
60
61
  label: string;
62
+ }, {
61
63
  href: string;
64
+ label: string;
62
65
  }>;
63
66
  type SectionCta = z.infer<typeof CtaSchema>;
64
67
  declare const HeroSectionSchema: z.ZodObject<{
@@ -78,65 +81,65 @@ declare const HeroSectionSchema: z.ZodObject<{
78
81
  label: z.ZodString;
79
82
  href: z.ZodString;
80
83
  }, "strip", z.ZodTypeAny, {
81
- label: string;
82
84
  href: string;
83
- }, {
84
85
  label: string;
86
+ }, {
85
87
  href: string;
88
+ label: string;
86
89
  }>>;
87
90
  }, "strip", z.ZodTypeAny, {
88
91
  title: string;
89
- eyebrow?: string | undefined;
90
92
  description?: string | undefined;
93
+ eyebrow?: string | undefined;
91
94
  imageSrc?: string | undefined;
92
95
  imageAlt?: string | undefined;
93
96
  cta?: {
94
- label: string;
95
97
  href: string;
98
+ label: string;
96
99
  } | undefined;
97
100
  }, {
98
101
  title: string;
99
- eyebrow?: string | undefined;
100
102
  description?: string | undefined;
103
+ eyebrow?: string | undefined;
101
104
  imageSrc?: string | undefined;
102
105
  imageAlt?: string | undefined;
103
106
  cta?: {
104
- label: string;
105
107
  href: string;
108
+ label: string;
106
109
  } | undefined;
107
110
  }>;
108
111
  }, "strip", z.ZodTypeAny, {
109
112
  type: "hero";
110
- variant: "split" | "image" | "minimal";
113
+ variant: "image" | "split" | "minimal";
111
114
  props: {
112
115
  title: string;
113
- eyebrow?: string | undefined;
114
116
  description?: string | undefined;
117
+ eyebrow?: string | undefined;
115
118
  imageSrc?: string | undefined;
116
119
  imageAlt?: string | undefined;
117
120
  cta?: {
118
- label: string;
119
121
  href: string;
122
+ label: string;
120
123
  } | undefined;
121
124
  };
122
- id?: string | undefined;
123
125
  theme?: Record<string, string> | undefined;
126
+ id?: string | undefined;
124
127
  }, {
125
128
  type: "hero";
126
129
  props: {
127
130
  title: string;
128
- eyebrow?: string | undefined;
129
131
  description?: string | undefined;
132
+ eyebrow?: string | undefined;
130
133
  imageSrc?: string | undefined;
131
134
  imageAlt?: string | undefined;
132
135
  cta?: {
133
- label: string;
134
136
  href: string;
137
+ label: string;
135
138
  } | undefined;
136
139
  };
137
- id?: string | undefined;
138
- variant?: "split" | "image" | "minimal" | undefined;
139
140
  theme?: Record<string, string> | undefined;
141
+ id?: string | undefined;
142
+ variant?: "image" | "split" | "minimal" | undefined;
140
143
  }>;
141
144
  declare const RichTextSectionSchema: z.ZodObject<{
142
145
  id: z.ZodOptional<z.ZodString>;
@@ -161,18 +164,18 @@ declare const RichTextSectionSchema: z.ZodObject<{
161
164
  body: string;
162
165
  heading?: string | undefined;
163
166
  };
167
+ theme?: Record<string, string> | undefined;
164
168
  id?: string | undefined;
165
169
  variant?: string | undefined;
166
- theme?: Record<string, string> | undefined;
167
170
  }, {
168
171
  type: "rich-text";
169
172
  props: {
170
173
  body: string;
171
174
  heading?: string | undefined;
172
175
  };
176
+ theme?: Record<string, string> | undefined;
173
177
  id?: string | undefined;
174
178
  variant?: string | undefined;
175
- theme?: Record<string, string> | undefined;
176
179
  }>;
177
180
  declare const ServicesSectionSchema: z.ZodObject<{
178
181
  id: z.ZodOptional<z.ZodString>;
@@ -202,16 +205,16 @@ declare const ServicesSectionSchema: z.ZodObject<{
202
205
  href?: string | undefined;
203
206
  description?: string | undefined;
204
207
  }[];
205
- description?: string | undefined;
206
208
  heading?: string | undefined;
209
+ description?: string | undefined;
207
210
  }, {
208
211
  items: {
209
212
  title: string;
210
213
  href?: string | undefined;
211
214
  description?: string | undefined;
212
215
  }[];
213
- description?: string | undefined;
214
216
  heading?: string | undefined;
217
+ description?: string | undefined;
215
218
  }>;
216
219
  }, "strip", z.ZodTypeAny, {
217
220
  type: "services";
@@ -222,11 +225,11 @@ declare const ServicesSectionSchema: z.ZodObject<{
222
225
  href?: string | undefined;
223
226
  description?: string | undefined;
224
227
  }[];
225
- description?: string | undefined;
226
228
  heading?: string | undefined;
229
+ description?: string | undefined;
227
230
  };
228
- id?: string | undefined;
229
231
  theme?: Record<string, string> | undefined;
232
+ id?: string | undefined;
230
233
  }, {
231
234
  type: "services";
232
235
  props: {
@@ -235,12 +238,12 @@ declare const ServicesSectionSchema: z.ZodObject<{
235
238
  href?: string | undefined;
236
239
  description?: string | undefined;
237
240
  }[];
238
- description?: string | undefined;
239
241
  heading?: string | undefined;
242
+ description?: string | undefined;
240
243
  };
244
+ theme?: Record<string, string> | undefined;
241
245
  id?: string | undefined;
242
246
  variant?: "grid" | "list" | undefined;
243
- theme?: Record<string, string> | undefined;
244
247
  }>;
245
248
  declare const FaqSectionSchema: z.ZodObject<{
246
249
  id: z.ZodOptional<z.ZodString>;
@@ -287,9 +290,9 @@ declare const FaqSectionSchema: z.ZodObject<{
287
290
  jsonLd: boolean;
288
291
  heading?: string | undefined;
289
292
  };
293
+ theme?: Record<string, string> | undefined;
290
294
  id?: string | undefined;
291
295
  variant?: string | undefined;
292
- theme?: Record<string, string> | undefined;
293
296
  }, {
294
297
  type: "faq";
295
298
  props: {
@@ -300,9 +303,9 @@ declare const FaqSectionSchema: z.ZodObject<{
300
303
  heading?: string | undefined;
301
304
  jsonLd?: boolean | undefined;
302
305
  };
306
+ theme?: Record<string, string> | undefined;
303
307
  id?: string | undefined;
304
308
  variant?: string | undefined;
305
- theme?: Record<string, string> | undefined;
306
309
  }>;
307
310
  declare const CtaBannerSectionSchema: z.ZodObject<{
308
311
  id: z.ZodOptional<z.ZodString>;
@@ -317,25 +320,25 @@ declare const CtaBannerSectionSchema: z.ZodObject<{
317
320
  label: z.ZodString;
318
321
  href: z.ZodString;
319
322
  }, "strip", z.ZodTypeAny, {
320
- label: string;
321
323
  href: string;
322
- }, {
323
324
  label: string;
325
+ }, {
324
326
  href: string;
327
+ label: string;
325
328
  }>>;
326
329
  }, "strip", z.ZodTypeAny, {
327
330
  title: string;
328
331
  description?: string | undefined;
329
332
  cta?: {
330
- label: string;
331
333
  href: string;
334
+ label: string;
332
335
  } | undefined;
333
336
  }, {
334
337
  title: string;
335
338
  description?: string | undefined;
336
339
  cta?: {
337
- label: string;
338
340
  href: string;
341
+ label: string;
339
342
  } | undefined;
340
343
  }>;
341
344
  }, "strip", z.ZodTypeAny, {
@@ -344,26 +347,26 @@ declare const CtaBannerSectionSchema: z.ZodObject<{
344
347
  title: string;
345
348
  description?: string | undefined;
346
349
  cta?: {
347
- label: string;
348
350
  href: string;
351
+ label: string;
349
352
  } | undefined;
350
353
  };
354
+ theme?: Record<string, string> | undefined;
351
355
  id?: string | undefined;
352
356
  variant?: string | undefined;
353
- theme?: Record<string, string> | undefined;
354
357
  }, {
355
358
  type: "cta-banner";
356
359
  props: {
357
360
  title: string;
358
361
  description?: string | undefined;
359
362
  cta?: {
360
- label: string;
361
363
  href: string;
364
+ label: string;
362
365
  } | undefined;
363
366
  };
367
+ theme?: Record<string, string> | undefined;
364
368
  id?: string | undefined;
365
369
  variant?: string | undefined;
366
- theme?: Record<string, string> | undefined;
367
370
  }>;
368
371
  /** → `RootTaleBlogList` 위임 (cms-bound). */
369
372
  declare const BlogListSectionSchema: z.ZodObject<{
@@ -379,38 +382,38 @@ declare const BlogListSectionSchema: z.ZodObject<{
379
382
  blogBasePath: z.ZodOptional<z.ZodString>;
380
383
  emptyMessage: z.ZodOptional<z.ZodString>;
381
384
  }, "strip", z.ZodTypeAny, {
382
- heading?: string | undefined;
383
385
  limit?: number | undefined;
384
- blogBasePath?: string | undefined;
385
386
  emptyMessage?: string | undefined;
386
- }, {
387
387
  heading?: string | undefined;
388
- limit?: number | undefined;
389
388
  blogBasePath?: string | undefined;
389
+ }, {
390
+ limit?: number | undefined;
390
391
  emptyMessage?: string | undefined;
392
+ heading?: string | undefined;
393
+ blogBasePath?: string | undefined;
391
394
  }>;
392
395
  }, "strip", z.ZodTypeAny, {
393
396
  type: "blog-list";
394
397
  props: {
395
- heading?: string | undefined;
396
398
  limit?: number | undefined;
397
- blogBasePath?: string | undefined;
398
399
  emptyMessage?: string | undefined;
400
+ heading?: string | undefined;
401
+ blogBasePath?: string | undefined;
399
402
  };
403
+ theme?: Record<string, string> | undefined;
400
404
  id?: string | undefined;
401
405
  variant?: string | undefined;
402
- theme?: Record<string, string> | undefined;
403
406
  }, {
404
407
  type: "blog-list";
405
408
  props: {
406
- heading?: string | undefined;
407
409
  limit?: number | undefined;
408
- blogBasePath?: string | undefined;
409
410
  emptyMessage?: string | undefined;
411
+ heading?: string | undefined;
412
+ blogBasePath?: string | undefined;
410
413
  };
414
+ theme?: Record<string, string> | undefined;
411
415
  id?: string | undefined;
412
416
  variant?: string | undefined;
413
- theme?: Record<string, string> | undefined;
414
417
  }>;
415
418
  /** → `RootTaleLeadForm` 위임 (cms-bound). */
416
419
  declare const LeadFormSectionSchema: z.ZodObject<{
@@ -428,41 +431,352 @@ declare const LeadFormSectionSchema: z.ZodObject<{
428
431
  submitLabel: z.ZodOptional<z.ZodString>;
429
432
  }, "strip", z.ZodTypeAny, {
430
433
  action: string;
431
- description?: string | undefined;
432
- heading?: string | undefined;
433
434
  vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
435
+ heading?: string | undefined;
436
+ description?: string | undefined;
434
437
  submitLabel?: string | undefined;
435
438
  }, {
436
439
  action: string;
437
- description?: string | undefined;
438
- heading?: string | undefined;
439
440
  vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
441
+ heading?: string | undefined;
442
+ description?: string | undefined;
440
443
  submitLabel?: string | undefined;
441
444
  }>;
442
445
  }, "strip", z.ZodTypeAny, {
443
446
  type: "lead-form";
444
447
  props: {
445
448
  action: string;
446
- description?: string | undefined;
447
- heading?: string | undefined;
448
449
  vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
450
+ heading?: string | undefined;
451
+ description?: string | undefined;
449
452
  submitLabel?: string | undefined;
450
453
  };
454
+ theme?: Record<string, string> | undefined;
451
455
  id?: string | undefined;
452
456
  variant?: string | undefined;
453
- theme?: Record<string, string> | undefined;
454
457
  }, {
455
458
  type: "lead-form";
456
459
  props: {
457
460
  action: string;
458
- description?: string | undefined;
459
- heading?: string | undefined;
460
461
  vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
462
+ heading?: string | undefined;
463
+ description?: string | undefined;
461
464
  submitLabel?: string | undefined;
462
465
  };
466
+ theme?: Record<string, string> | undefined;
463
467
  id?: string | undefined;
464
468
  variant?: string | undefined;
469
+ }>;
470
+ declare const TrustSectionSchema: z.ZodEffects<z.ZodObject<{
471
+ id: z.ZodOptional<z.ZodString>;
472
+ theme: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
473
+ } & {
474
+ type: z.ZodLiteral<"trust">;
475
+ variant: z.ZodDefault<z.ZodEnum<["stat-band", "logo-cloud", "feature-grid"]>>;
476
+ props: z.ZodObject<{
477
+ heading: z.ZodOptional<z.ZodString>;
478
+ metrics: z.ZodOptional<z.ZodArray<z.ZodObject<{
479
+ value: z.ZodString;
480
+ unit: z.ZodOptional<z.ZodString>;
481
+ label: z.ZodString;
482
+ source: z.ZodOptional<z.ZodString>;
483
+ }, "strip", z.ZodTypeAny, {
484
+ value: string;
485
+ label: string;
486
+ unit?: string | undefined;
487
+ source?: string | undefined;
488
+ }, {
489
+ value: string;
490
+ label: string;
491
+ unit?: string | undefined;
492
+ source?: string | undefined;
493
+ }>, "many">>;
494
+ credentials: z.ZodOptional<z.ZodArray<z.ZodObject<{
495
+ name: z.ZodString;
496
+ issuer: z.ZodOptional<z.ZodString>;
497
+ kind: z.ZodOptional<z.ZodEnum<["license", "education", "association"]>>;
498
+ image: z.ZodOptional<z.ZodString>;
499
+ }, "strip", z.ZodTypeAny, {
500
+ name: string;
501
+ image?: string | undefined;
502
+ issuer?: string | undefined;
503
+ kind?: "license" | "education" | "association" | undefined;
504
+ }, {
505
+ name: string;
506
+ image?: string | undefined;
507
+ issuer?: string | undefined;
508
+ kind?: "license" | "education" | "association" | undefined;
509
+ }>, "many">>;
510
+ logos: z.ZodOptional<z.ZodArray<z.ZodObject<{
511
+ src: z.ZodString;
512
+ alt: z.ZodString;
513
+ href: z.ZodOptional<z.ZodString>;
514
+ }, "strip", z.ZodTypeAny, {
515
+ src: string;
516
+ alt: string;
517
+ href?: string | undefined;
518
+ }, {
519
+ src: string;
520
+ alt: string;
521
+ href?: string | undefined;
522
+ }>, "many">>;
523
+ disclaimer: z.ZodOptional<z.ZodString>;
524
+ }, "strip", z.ZodTypeAny, {
525
+ heading?: string | undefined;
526
+ metrics?: {
527
+ value: string;
528
+ label: string;
529
+ unit?: string | undefined;
530
+ source?: string | undefined;
531
+ }[] | undefined;
532
+ credentials?: {
533
+ name: string;
534
+ image?: string | undefined;
535
+ issuer?: string | undefined;
536
+ kind?: "license" | "education" | "association" | undefined;
537
+ }[] | undefined;
538
+ logos?: {
539
+ src: string;
540
+ alt: string;
541
+ href?: string | undefined;
542
+ }[] | undefined;
543
+ disclaimer?: string | undefined;
544
+ }, {
545
+ heading?: string | undefined;
546
+ metrics?: {
547
+ value: string;
548
+ label: string;
549
+ unit?: string | undefined;
550
+ source?: string | undefined;
551
+ }[] | undefined;
552
+ credentials?: {
553
+ name: string;
554
+ image?: string | undefined;
555
+ issuer?: string | undefined;
556
+ kind?: "license" | "education" | "association" | undefined;
557
+ }[] | undefined;
558
+ logos?: {
559
+ src: string;
560
+ alt: string;
561
+ href?: string | undefined;
562
+ }[] | undefined;
563
+ disclaimer?: string | undefined;
564
+ }>;
565
+ }, "strip", z.ZodTypeAny, {
566
+ type: "trust";
567
+ variant: "stat-band" | "logo-cloud" | "feature-grid";
568
+ props: {
569
+ heading?: string | undefined;
570
+ metrics?: {
571
+ value: string;
572
+ label: string;
573
+ unit?: string | undefined;
574
+ source?: string | undefined;
575
+ }[] | undefined;
576
+ credentials?: {
577
+ name: string;
578
+ image?: string | undefined;
579
+ issuer?: string | undefined;
580
+ kind?: "license" | "education" | "association" | undefined;
581
+ }[] | undefined;
582
+ logos?: {
583
+ src: string;
584
+ alt: string;
585
+ href?: string | undefined;
586
+ }[] | undefined;
587
+ disclaimer?: string | undefined;
588
+ };
589
+ theme?: Record<string, string> | undefined;
590
+ id?: string | undefined;
591
+ }, {
592
+ type: "trust";
593
+ props: {
594
+ heading?: string | undefined;
595
+ metrics?: {
596
+ value: string;
597
+ label: string;
598
+ unit?: string | undefined;
599
+ source?: string | undefined;
600
+ }[] | undefined;
601
+ credentials?: {
602
+ name: string;
603
+ image?: string | undefined;
604
+ issuer?: string | undefined;
605
+ kind?: "license" | "education" | "association" | undefined;
606
+ }[] | undefined;
607
+ logos?: {
608
+ src: string;
609
+ alt: string;
610
+ href?: string | undefined;
611
+ }[] | undefined;
612
+ disclaimer?: string | undefined;
613
+ };
465
614
  theme?: Record<string, string> | undefined;
615
+ id?: string | undefined;
616
+ variant?: "stat-band" | "logo-cloud" | "feature-grid" | undefined;
617
+ }>, {
618
+ type: "trust";
619
+ variant: "stat-band" | "logo-cloud" | "feature-grid";
620
+ props: {
621
+ heading?: string | undefined;
622
+ metrics?: {
623
+ value: string;
624
+ label: string;
625
+ unit?: string | undefined;
626
+ source?: string | undefined;
627
+ }[] | undefined;
628
+ credentials?: {
629
+ name: string;
630
+ image?: string | undefined;
631
+ issuer?: string | undefined;
632
+ kind?: "license" | "education" | "association" | undefined;
633
+ }[] | undefined;
634
+ logos?: {
635
+ src: string;
636
+ alt: string;
637
+ href?: string | undefined;
638
+ }[] | undefined;
639
+ disclaimer?: string | undefined;
640
+ };
641
+ theme?: Record<string, string> | undefined;
642
+ id?: string | undefined;
643
+ }, {
644
+ type: "trust";
645
+ props: {
646
+ heading?: string | undefined;
647
+ metrics?: {
648
+ value: string;
649
+ label: string;
650
+ unit?: string | undefined;
651
+ source?: string | undefined;
652
+ }[] | undefined;
653
+ credentials?: {
654
+ name: string;
655
+ image?: string | undefined;
656
+ issuer?: string | undefined;
657
+ kind?: "license" | "education" | "association" | undefined;
658
+ }[] | undefined;
659
+ logos?: {
660
+ src: string;
661
+ alt: string;
662
+ href?: string | undefined;
663
+ }[] | undefined;
664
+ disclaimer?: string | undefined;
665
+ };
666
+ theme?: Record<string, string> | undefined;
667
+ id?: string | undefined;
668
+ variant?: "stat-band" | "logo-cloud" | "feature-grid" | undefined;
669
+ }>;
670
+ declare const ContactSectionSchema: z.ZodObject<{
671
+ id: z.ZodOptional<z.ZodString>;
672
+ theme: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
673
+ } & {
674
+ type: z.ZodLiteral<"contact">;
675
+ variant: z.ZodDefault<z.ZodEnum<["form-map-5050", "split"]>>;
676
+ props: z.ZodObject<{
677
+ heading: z.ZodOptional<z.ZodString>;
678
+ form: z.ZodObject<{
679
+ enabled: z.ZodBoolean;
680
+ vertical: z.ZodOptional<z.ZodEnum<["medical", "tax", "legal", "consulting"]>>;
681
+ }, "strip", z.ZodTypeAny, {
682
+ enabled: boolean;
683
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
684
+ }, {
685
+ enabled: boolean;
686
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
687
+ }>;
688
+ phone: z.ZodOptional<z.ZodString>;
689
+ address: z.ZodOptional<z.ZodString>;
690
+ hours: z.ZodOptional<z.ZodArray<z.ZodObject<{
691
+ day: z.ZodString;
692
+ open: z.ZodString;
693
+ close: z.ZodString;
694
+ note: z.ZodOptional<z.ZodString>;
695
+ }, "strip", z.ZodTypeAny, {
696
+ open: string;
697
+ day: string;
698
+ close: string;
699
+ note?: string | undefined;
700
+ }, {
701
+ open: string;
702
+ day: string;
703
+ close: string;
704
+ note?: string | undefined;
705
+ }>, "many">>;
706
+ mapEmbedUrl: z.ZodOptional<z.ZodString>;
707
+ }, "strip", z.ZodTypeAny, {
708
+ form: {
709
+ enabled: boolean;
710
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
711
+ };
712
+ heading?: string | undefined;
713
+ phone?: string | undefined;
714
+ address?: string | undefined;
715
+ hours?: {
716
+ open: string;
717
+ day: string;
718
+ close: string;
719
+ note?: string | undefined;
720
+ }[] | undefined;
721
+ mapEmbedUrl?: string | undefined;
722
+ }, {
723
+ form: {
724
+ enabled: boolean;
725
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
726
+ };
727
+ heading?: string | undefined;
728
+ phone?: string | undefined;
729
+ address?: string | undefined;
730
+ hours?: {
731
+ open: string;
732
+ day: string;
733
+ close: string;
734
+ note?: string | undefined;
735
+ }[] | undefined;
736
+ mapEmbedUrl?: string | undefined;
737
+ }>;
738
+ }, "strip", z.ZodTypeAny, {
739
+ type: "contact";
740
+ variant: "split" | "form-map-5050";
741
+ props: {
742
+ form: {
743
+ enabled: boolean;
744
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
745
+ };
746
+ heading?: string | undefined;
747
+ phone?: string | undefined;
748
+ address?: string | undefined;
749
+ hours?: {
750
+ open: string;
751
+ day: string;
752
+ close: string;
753
+ note?: string | undefined;
754
+ }[] | undefined;
755
+ mapEmbedUrl?: string | undefined;
756
+ };
757
+ theme?: Record<string, string> | undefined;
758
+ id?: string | undefined;
759
+ }, {
760
+ type: "contact";
761
+ props: {
762
+ form: {
763
+ enabled: boolean;
764
+ vertical?: "consulting" | "medical" | "tax" | "legal" | undefined;
765
+ };
766
+ heading?: string | undefined;
767
+ phone?: string | undefined;
768
+ address?: string | undefined;
769
+ hours?: {
770
+ open: string;
771
+ day: string;
772
+ close: string;
773
+ note?: string | undefined;
774
+ }[] | undefined;
775
+ mapEmbedUrl?: string | undefined;
776
+ };
777
+ theme?: Record<string, string> | undefined;
778
+ id?: string | undefined;
779
+ variant?: "split" | "form-map-5050" | undefined;
466
780
  }>;
467
781
  /** customSections 용 fallback — `type` 자유, props 는 직렬화만 강제. */
468
782
  declare const CustomSectionSchema: z.ZodObject<{
@@ -479,16 +793,17 @@ declare const CustomSectionSchema: z.ZodObject<{
479
793
  }, "strip", z.ZodTypeAny, {
480
794
  type: string;
481
795
  props: Record<string, unknown>;
796
+ theme?: Record<string, string> | undefined;
482
797
  id?: string | undefined;
483
798
  variant?: string | undefined;
484
- theme?: Record<string, string> | undefined;
485
799
  }, {
486
800
  type: string;
801
+ theme?: Record<string, string> | undefined;
487
802
  id?: string | undefined;
488
803
  variant?: string | undefined;
489
- theme?: Record<string, string> | undefined;
490
804
  props?: Record<string, unknown> | undefined;
491
805
  }>;
806
+ declare const BUILTIN_SECTION_SCHEMAS: Record<string, z.ZodTypeAny>;
492
807
  /** 빌트인 type 목록 (renderer registry 와 1:1). */
493
808
  declare const BUILTIN_SECTION_TYPES: readonly string[];
494
809
  type HeroSection = z.output<typeof HeroSectionSchema>;
@@ -498,11 +813,13 @@ type FaqSection = z.output<typeof FaqSectionSchema>;
498
813
  type CtaBannerSection = z.output<typeof CtaBannerSectionSchema>;
499
814
  type BlogListSection = z.output<typeof BlogListSectionSchema>;
500
815
  type LeadFormSection = z.output<typeof LeadFormSectionSchema>;
816
+ type TrustSection = z.output<typeof TrustSectionSchema>;
817
+ type ContactSection = z.output<typeof ContactSectionSchema>;
501
818
  type CustomSection = z.output<typeof CustomSectionSchema>;
502
819
  /** 파싱 결과 섹션 (defaults 적용 후). */
503
- type Section = HeroSection | RichTextSection | ServicesSection | FaqSection | CtaBannerSection | BlogListSection | LeadFormSection | CustomSection;
820
+ type Section = HeroSection | RichTextSection | ServicesSection | FaqSection | CtaBannerSection | BlogListSection | LeadFormSection | TrustSection | ContactSection | CustomSection;
504
821
  /** config 작성용 섹션 (defaults 생략 가능). `site.config.ts` 에서 이 타입 사용. */
505
- type SectionInput = z.input<typeof HeroSectionSchema> | z.input<typeof RichTextSectionSchema> | z.input<typeof ServicesSectionSchema> | z.input<typeof FaqSectionSchema> | z.input<typeof CtaBannerSectionSchema> | z.input<typeof BlogListSectionSchema> | z.input<typeof LeadFormSectionSchema> | z.input<typeof CustomSectionSchema>;
822
+ type SectionInput = z.input<typeof HeroSectionSchema> | z.input<typeof RichTextSectionSchema> | z.input<typeof ServicesSectionSchema> | z.input<typeof FaqSectionSchema> | z.input<typeof CtaBannerSectionSchema> | z.input<typeof BlogListSectionSchema> | z.input<typeof LeadFormSectionSchema> | z.input<typeof TrustSectionSchema> | z.input<typeof ContactSectionSchema> | z.input<typeof CustomSectionSchema>;
506
823
  /**
507
824
  * 섹션 스키마 — 빌트인 type 이면 해당 스키마로 *강제* 검증 (union fallthrough 로
508
825
  * 빌트인 오타이핑이 CustomSection 으로 조용히 통과하는 것을 차단), 미지 type 은
@@ -527,17 +844,17 @@ declare const SiteConfigSchema: z.ZodObject<{
527
844
  title: string;
528
845
  locale: string;
529
846
  description?: string | undefined;
847
+ url?: string | undefined;
530
848
  og?: {
531
849
  image?: string | undefined;
532
850
  } | undefined;
533
- url?: string | undefined;
534
851
  }, {
535
852
  title: string;
536
853
  description?: string | undefined;
854
+ url?: string | undefined;
537
855
  og?: {
538
856
  image?: string | undefined;
539
857
  } | undefined;
540
- url?: string | undefined;
541
858
  locale?: string | undefined;
542
859
  }>;
543
860
  /**
@@ -569,11 +886,11 @@ declare const SiteConfigSchema: z.ZodObject<{
569
886
  /** nav/카드 아이콘 키 (선택). */
570
887
  icon: z.ZodOptional<z.ZodString>;
571
888
  }, "strip", z.ZodTypeAny, {
889
+ layout: string;
890
+ categories: string[];
572
891
  label: string;
573
892
  key: string;
574
893
  basePath: string;
575
- layout: string;
576
- categories: string[];
577
894
  feed: boolean;
578
895
  archives: boolean;
579
896
  og: boolean;
@@ -585,13 +902,13 @@ declare const SiteConfigSchema: z.ZodObject<{
585
902
  key: string;
586
903
  basePath: string;
587
904
  layout?: string | undefined;
905
+ icon?: string | undefined;
588
906
  categories?: string[] | undefined;
589
907
  feed?: boolean | undefined;
590
908
  archives?: boolean | undefined;
591
909
  og?: boolean | undefined;
592
910
  requireSubcategory?: boolean | undefined;
593
911
  pinning?: boolean | undefined;
594
- icon?: string | undefined;
595
912
  }>, "many">>;
596
913
  /** 사이트 전역 토큰 override (`--rt-*` CSS 변수 → 값). 비우면 admin /design SSoT. */
597
914
  theme: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -602,46 +919,36 @@ declare const SiteConfigSchema: z.ZodObject<{
602
919
  label: z.ZodString;
603
920
  href: z.ZodString;
604
921
  }, "strip", z.ZodTypeAny, {
605
- label: string;
606
922
  href: string;
607
- }, {
608
923
  label: string;
924
+ }, {
609
925
  href: string;
926
+ label: string;
610
927
  }>, "many">>;
611
928
  }, "strip", z.ZodTypeAny, {
612
- label: string;
613
929
  href: string;
930
+ label: string;
614
931
  children?: {
615
- label: string;
616
932
  href: string;
933
+ label: string;
617
934
  }[] | undefined;
618
935
  }, {
619
- label: string;
620
936
  href: string;
937
+ label: string;
621
938
  children?: {
622
- label: string;
623
939
  href: string;
940
+ label: string;
624
941
  }[] | undefined;
625
942
  }>, "many">>;
626
943
  /** path("/", "/services", …) → 섹션 배열. */
627
944
  pages: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodType<Section, z.ZodTypeDef, SectionInput>, "many">>;
628
945
  }, "strip", z.ZodTypeAny, {
629
- theme: Record<string, string>;
630
- site: {
631
- title: string;
632
- locale: string;
633
- description?: string | undefined;
634
- og?: {
635
- image?: string | undefined;
636
- } | undefined;
637
- url?: string | undefined;
638
- };
639
946
  collections: {
947
+ layout: string;
948
+ categories: string[];
640
949
  label: string;
641
950
  key: string;
642
951
  basePath: string;
643
- layout: string;
644
- categories: string[];
645
952
  feed: boolean;
646
953
  archives: boolean;
647
954
  og: boolean;
@@ -649,46 +956,56 @@ declare const SiteConfigSchema: z.ZodObject<{
649
956
  pinning: boolean;
650
957
  icon?: string | undefined;
651
958
  }[];
959
+ theme: Record<string, string>;
652
960
  nav: {
653
- label: string;
654
961
  href: string;
962
+ label: string;
655
963
  children?: {
656
- label: string;
657
964
  href: string;
965
+ label: string;
658
966
  }[] | undefined;
659
967
  }[];
968
+ site: {
969
+ title: string;
970
+ locale: string;
971
+ description?: string | undefined;
972
+ url?: string | undefined;
973
+ og?: {
974
+ image?: string | undefined;
975
+ } | undefined;
976
+ };
660
977
  pages: Record<string, Section[]>;
661
978
  }, {
662
979
  site: {
663
980
  title: string;
664
981
  description?: string | undefined;
982
+ url?: string | undefined;
665
983
  og?: {
666
984
  image?: string | undefined;
667
985
  } | undefined;
668
- url?: string | undefined;
669
986
  locale?: string | undefined;
670
987
  };
671
988
  pages: Record<string, SectionInput[]>;
672
- theme?: Record<string, string> | undefined;
673
989
  collections?: {
674
990
  label: string;
675
991
  key: string;
676
992
  basePath: string;
677
993
  layout?: string | undefined;
994
+ icon?: string | undefined;
678
995
  categories?: string[] | undefined;
679
996
  feed?: boolean | undefined;
680
997
  archives?: boolean | undefined;
681
998
  og?: boolean | undefined;
682
999
  requireSubcategory?: boolean | undefined;
683
1000
  pinning?: boolean | undefined;
684
- icon?: string | undefined;
685
1001
  }[] | undefined;
1002
+ theme?: Record<string, string> | undefined;
686
1003
  nav?: {
687
- label: string;
688
1004
  href: string;
1005
+ label: string;
689
1006
  children?: {
690
- label: string;
691
1007
  href: string;
1008
+ label: string;
692
1009
  }[] | undefined;
693
1010
  }[] | undefined;
694
1011
  }>;
@@ -719,6 +1036,7 @@ declare function defineSiteConfig(input: SiteConfigInput): SiteConfig;
719
1036
  *
720
1037
  * 토큰은 `--rt-*` CSS 변수 + 정적 fallback — `@roottale/tokens`(private) 미의존
721
1038
  * (RFC §②). admin /design 값은 `RootTaleThemeProvider` 가 주입.
1039
+ * allow: SIZE_OK — W1-2 소유 계약이 Trust·Contact 템플릿을 이 파일에 고정한다.
722
1040
  */
723
1041
 
724
1042
  /** 섹션 `theme`(--rt-* 변수 override)를 inline style 로. */
@@ -733,6 +1051,8 @@ declare function TemplateServices(section: ServicesSection): ReactElement;
733
1051
  declare function TemplateFaq(section: FaqSection): ReactElement;
734
1052
  /** 빌트인 `cta-banner`. */
735
1053
  declare function TemplateCtaBanner(section: CtaBannerSection): ReactElement;
1054
+ declare function TemplateTrust(section: TrustSection): ReactElement;
1055
+ declare function TemplateContact(section: ContactSection): ReactElement;
736
1056
 
737
1057
  /**
738
1058
  * `SiteRenderer` — `SiteConfig.pages[path]` 섹션 배열을 registry 로 렌더.
@@ -791,4 +1111,4 @@ interface SiteRendererProps {
791
1111
  */
792
1112
  declare function SiteRenderer(props: SiteRendererProps): ReactElement;
793
1113
 
794
- export { BUILTIN_SECTION_TYPES, type BlogListSection, BlogListSectionSchema, type CtaBannerSection, CtaBannerSectionSchema, type CustomSection, CustomSectionSchema, type FaqSection, FaqSectionSchema, type HeroSection, HeroSectionSchema, type LeadFormSection, LeadFormSectionSchema, type NavItem, NavItemSchema, type RichTextSection, RichTextSectionSchema, type Section, type SectionComponent, type SectionCta, type SectionInput, SectionSchema, type ServicesSection, ServicesSectionSchema, type SiteConfig, type SiteConfigInput, SiteConfigSchema, SiteRenderer, type SiteRendererProps, TemplateCtaBanner, TemplateFaq, TemplateHero, TemplateRichText, TemplateServices, defineSiteConfig, parseSiteConfig, sectionThemeStyle };
1114
+ export { BUILTIN_SECTION_SCHEMAS, BUILTIN_SECTION_TYPES, type BlogListSection, BlogListSectionSchema, type ContactSection, ContactSectionSchema, type CtaBannerSection, CtaBannerSectionSchema, type CustomSection, CustomSectionSchema, type FaqSection, FaqSectionSchema, type HeroSection, HeroSectionSchema, type LeadFormSection, LeadFormSectionSchema, type NavItem, NavItemSchema, type RichTextSection, RichTextSectionSchema, type Section, type SectionComponent, type SectionCta, type SectionInput, SectionSchema, type ServicesSection, ServicesSectionSchema, type SiteConfig, type SiteConfigInput, SiteConfigSchema, SiteRenderer, type SiteRendererProps, TemplateContact, TemplateCtaBanner, TemplateFaq, TemplateHero, TemplateRichText, TemplateServices, TemplateTrust, type TrustSection, TrustSectionSchema, defineSiteConfig, parseSiteConfig, sectionThemeStyle };