@vectoriox/iox-ui 5.77.0 → 5.79.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.
Files changed (33) hide show
  1. package/design-core/index.d.ts +34 -4
  2. package/fesm2022/vectoriox-iox-ui-design-core.mjs +34 -4
  3. package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
  4. package/fesm2022/vectoriox-iox-ui-generation-core.mjs +950 -15
  5. package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
  6. package/fesm2022/vectoriox-iox-ui-harness-core.mjs +38 -3
  7. package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -1
  8. package/fesm2022/vectoriox-iox-ui-media-core.mjs +23 -1
  9. package/fesm2022/vectoriox-iox-ui-media-core.mjs.map +1 -1
  10. package/fesm2022/vectoriox-iox-ui-scene-core.mjs +3 -6
  11. package/fesm2022/vectoriox-iox-ui-scene-core.mjs.map +1 -1
  12. package/generation-core/index.d.ts +585 -8
  13. package/harness-core/index.d.ts +40 -2
  14. package/media-core/index.d.ts +19 -1
  15. package/package.json +1 -1
  16. package/scene-core/index.d.ts +1 -4
  17. package/src/design-core/flavor-spec.generated.ts +34 -4
  18. package/src/generation-core/compose-site.ts +25 -2
  19. package/src/generation-core/film.ts +91 -0
  20. package/src/generation-core/patterns.ts +41 -4
  21. package/src/generation-core/plan-wire.ts +4 -2
  22. package/src/generation-core/public-api.ts +1 -0
  23. package/src/generation-core/serialized-node.ts +3 -0
  24. package/src/generation-core/showcase.ts +32 -7
  25. package/src/generation-core/site-plan.model.ts +8 -0
  26. package/src/generation-core/site-spec.generated.ts +738 -1
  27. package/src/generation-core/validate-site-plan.ts +57 -2
  28. package/src/harness-core/business-types.ts +3 -0
  29. package/src/harness-core/generation-view.ts +3 -1
  30. package/src/harness-core/harness-spec.generated.ts +32 -2
  31. package/src/harness-core/motion.ts +8 -1
  32. package/src/media-core/frames.ts +23 -0
  33. package/src/scene-core/scene-edit.ts +3 -5
@@ -1,3 +1,4 @@
1
+ import { FrameSequence } from '@vectoriox/iox-ui/media-core';
1
2
  import { AnimateId, DesignChoices, DesignTokenLike } from '@vectoriox/iox-ui/design-core';
2
3
  import { SeoRawDoc } from '@vectoriox/iox-ui/seo-core';
3
4
  import { ContentFieldLike } from '@vectoriox/iox-ui/composite-core';
@@ -13,6 +14,10 @@ declare const SPEC_SITE_PLAN_SHAPE: {
13
14
  readonly dataSources: "(cmsDataSource | relativeDataSource)[] — merged by alias into the org library";
14
15
  readonly pages: "page[]";
15
16
  readonly globals: "globals";
17
+ readonly "film?": "film — the owner's film as pictures (SC6b), set by the build and placed by placeFilm; never a model's";
18
+ };
19
+ readonly film: {
20
+ readonly sequence: "object — a media-core FrameSequence: where the numbered pictures live, how many, their size";
16
21
  };
17
22
  readonly sourceTemplate: {
18
23
  readonly kind: "'template'";
@@ -297,6 +302,456 @@ declare const SPEC_SITE_ARCHETYPES: {
297
302
  };
298
303
  };
299
304
  declare const SPEC_SITE_PATTERNS: {
305
+ readonly "hero.scene-depth": {
306
+ readonly family: "hero";
307
+ readonly scene: true;
308
+ readonly label: "Hero — a picture that opens as you scroll";
309
+ readonly intent: "One strong picture of the work that opens and settles while the page holds still — a first screen that moves, for a studio with a picture worth it.";
310
+ readonly node: {
311
+ readonly t: "Section";
312
+ readonly es: "section";
313
+ readonly scheme: "inverse";
314
+ readonly role: "scene";
315
+ readonly lay: {
316
+ readonly position: "relative";
317
+ readonly display: "block";
318
+ readonly width: "100%";
319
+ readonly height: "300vh";
320
+ readonly padding: "0px";
321
+ };
322
+ readonly c: readonly [{
323
+ readonly t: "Container";
324
+ readonly role: "scene.stage";
325
+ readonly lay: {
326
+ readonly position: "sticky";
327
+ readonly top: "0px";
328
+ readonly display: "block";
329
+ readonly width: "100%";
330
+ readonly height: "100svh";
331
+ readonly overflow: "hidden";
332
+ readonly padding: "0px";
333
+ };
334
+ readonly c: readonly [{
335
+ readonly t: "Image";
336
+ readonly es: "media";
337
+ readonly ph: "image";
338
+ readonly lay: {
339
+ readonly position: "absolute";
340
+ readonly top: "0px";
341
+ readonly left: "0px";
342
+ readonly width: "100%";
343
+ readonly height: "100%";
344
+ readonly aspectRatio: "auto";
345
+ readonly borderRadius: "0px";
346
+ readonly objectFit: "cover";
347
+ };
348
+ readonly tracks: readonly [{
349
+ readonly prop: "scale";
350
+ readonly keys: readonly [readonly [0, 1.3], readonly [1, 1]];
351
+ }, {
352
+ readonly prop: "clip";
353
+ readonly from: "bottom";
354
+ readonly keys: readonly [readonly [0, 38], readonly [0.42, 100]];
355
+ }];
356
+ }, {
357
+ readonly t: "Container";
358
+ readonly es: "media-scrim";
359
+ readonly lay: {
360
+ readonly display: "flex";
361
+ readonly flexDirection: "column";
362
+ readonly gap: "14px";
363
+ readonly position: "absolute";
364
+ readonly left: "0px";
365
+ readonly bottom: "0px";
366
+ readonly width: "100%";
367
+ readonly padding: "48px 32px 56px 32px";
368
+ };
369
+ readonly c: readonly [{
370
+ readonly t: "Heading";
371
+ readonly es: "display";
372
+ readonly level: "h1";
373
+ readonly slot: "headline";
374
+ readonly max: 56;
375
+ readonly fromBusiness: "name";
376
+ readonly tracks: readonly [{
377
+ readonly prop: "y";
378
+ readonly keys: readonly [readonly [0, 0], readonly [1, -6]];
379
+ }];
380
+ }, {
381
+ readonly t: "Text";
382
+ readonly es: "lead";
383
+ readonly slot: "lead";
384
+ readonly max: 180;
385
+ readonly fromBusiness: "tagline";
386
+ readonly ph: "copy";
387
+ readonly tracks: readonly [{
388
+ readonly prop: "opacity";
389
+ readonly keys: readonly [readonly [0.45, 0], readonly [0.6, 1]];
390
+ }];
391
+ }, {
392
+ readonly t: "ButtonBlock";
393
+ readonly es: "button-primary";
394
+ readonly href: "/contact";
395
+ readonly slot: "cta";
396
+ readonly max: 24;
397
+ readonly text: "Get in touch";
398
+ readonly tracks: readonly [{
399
+ readonly prop: "opacity";
400
+ readonly keys: readonly [readonly [0.5, 0], readonly [0.65, 1]];
401
+ }];
402
+ }];
403
+ }];
404
+ }];
405
+ };
406
+ };
407
+ readonly "hero.scene-object": {
408
+ readonly family: "hero";
409
+ readonly scene: true;
410
+ readonly film: true;
411
+ readonly label: "Hero — your film plays as you scroll";
412
+ readonly intent: "The studio's own film plays forward and back with the scroll behind the headline while the page holds still.";
413
+ readonly node: {
414
+ readonly t: "Section";
415
+ readonly es: "section";
416
+ readonly scheme: "inverse";
417
+ readonly role: "scene";
418
+ readonly lay: {
419
+ readonly position: "relative";
420
+ readonly display: "block";
421
+ readonly width: "100%";
422
+ readonly height: "300vh";
423
+ readonly padding: "0px";
424
+ };
425
+ readonly c: readonly [{
426
+ readonly t: "Container";
427
+ readonly role: "scene.stage";
428
+ readonly lay: {
429
+ readonly position: "sticky";
430
+ readonly top: "0px";
431
+ readonly display: "block";
432
+ readonly width: "100%";
433
+ readonly height: "100svh";
434
+ readonly overflow: "hidden";
435
+ readonly padding: "0px";
436
+ };
437
+ readonly c: readonly [{
438
+ readonly t: "Video";
439
+ readonly es: "media";
440
+ readonly film: true;
441
+ readonly lay: {
442
+ readonly position: "absolute";
443
+ readonly top: "0px";
444
+ readonly left: "0px";
445
+ readonly width: "100%";
446
+ readonly height: "100%";
447
+ readonly aspectRatio: "auto";
448
+ readonly borderRadius: "0px";
449
+ };
450
+ readonly tracks: readonly [{
451
+ readonly prop: "play";
452
+ readonly keys: readonly [readonly [0, 0], readonly [1, 100]];
453
+ }];
454
+ }, {
455
+ readonly t: "Container";
456
+ readonly es: "media-scrim";
457
+ readonly lay: {
458
+ readonly display: "flex";
459
+ readonly flexDirection: "column";
460
+ readonly gap: "14px";
461
+ readonly position: "absolute";
462
+ readonly left: "0px";
463
+ readonly bottom: "0px";
464
+ readonly width: "100%";
465
+ readonly padding: "48px 32px 56px 32px";
466
+ };
467
+ readonly c: readonly [{
468
+ readonly t: "Heading";
469
+ readonly es: "display";
470
+ readonly level: "h1";
471
+ readonly slot: "headline";
472
+ readonly max: 56;
473
+ readonly fromBusiness: "name";
474
+ readonly tracks: readonly [{
475
+ readonly prop: "y";
476
+ readonly keys: readonly [readonly [0, 0], readonly [1, -6]];
477
+ }];
478
+ }, {
479
+ readonly t: "Text";
480
+ readonly es: "lead";
481
+ readonly slot: "lead";
482
+ readonly max: 180;
483
+ readonly fromBusiness: "tagline";
484
+ readonly ph: "copy";
485
+ readonly tracks: readonly [{
486
+ readonly prop: "opacity";
487
+ readonly keys: readonly [readonly [0.3, 0], readonly [0.45, 1]];
488
+ }];
489
+ }, {
490
+ readonly t: "ButtonBlock";
491
+ readonly es: "button-primary";
492
+ readonly href: "/contact";
493
+ readonly slot: "cta";
494
+ readonly max: 24;
495
+ readonly text: "Get in touch";
496
+ readonly tracks: readonly [{
497
+ readonly prop: "opacity";
498
+ readonly keys: readonly [readonly [0.35, 0], readonly [0.5, 1]];
499
+ }];
500
+ }];
501
+ }];
502
+ }];
503
+ };
504
+ };
505
+ readonly "story.scene-chapters": {
506
+ readonly family: "story";
507
+ readonly scene: true;
508
+ readonly label: "Story — three chapters on one held stage";
509
+ readonly intent: "How you work in three short chapters that take turns over one picture while the page holds still — a process worth slowing down for.";
510
+ readonly node: {
511
+ readonly t: "Section";
512
+ readonly es: "section";
513
+ readonly scheme: "inverse";
514
+ readonly role: "scene";
515
+ readonly lay: {
516
+ readonly position: "relative";
517
+ readonly display: "block";
518
+ readonly width: "100%";
519
+ readonly height: "400vh";
520
+ readonly padding: "0px";
521
+ };
522
+ readonly c: readonly [{
523
+ readonly t: "Container";
524
+ readonly role: "scene.stage";
525
+ readonly lay: {
526
+ readonly position: "sticky";
527
+ readonly top: "0px";
528
+ readonly display: "block";
529
+ readonly width: "100%";
530
+ readonly height: "100svh";
531
+ readonly overflow: "hidden";
532
+ readonly padding: "0px";
533
+ };
534
+ readonly c: readonly [{
535
+ readonly t: "Image";
536
+ readonly es: "media";
537
+ readonly ph: "image";
538
+ readonly lay: {
539
+ readonly position: "absolute";
540
+ readonly top: "0px";
541
+ readonly left: "0px";
542
+ readonly width: "100%";
543
+ readonly height: "100%";
544
+ readonly aspectRatio: "auto";
545
+ readonly borderRadius: "0px";
546
+ readonly objectFit: "cover";
547
+ };
548
+ readonly tracks: readonly [{
549
+ readonly prop: "scale";
550
+ readonly keys: readonly [readonly [0, 1.12], readonly [1, 1]];
551
+ }];
552
+ }, {
553
+ readonly t: "Container";
554
+ readonly es: "media-scrim";
555
+ readonly lay: {
556
+ readonly position: "absolute";
557
+ readonly left: "0px";
558
+ readonly bottom: "0px";
559
+ readonly width: "100%";
560
+ readonly height: "62%";
561
+ readonly padding: "0px";
562
+ };
563
+ readonly c: readonly [{
564
+ readonly t: "Container";
565
+ readonly es: "box";
566
+ readonly lay: {
567
+ readonly display: "flex";
568
+ readonly flexDirection: "column";
569
+ readonly gap: "12px";
570
+ readonly position: "absolute";
571
+ readonly left: "32px";
572
+ readonly right: "32px";
573
+ readonly bottom: "56px";
574
+ readonly maxWidth: "640px";
575
+ };
576
+ readonly tracks: readonly [{
577
+ readonly prop: "opacity";
578
+ readonly keys: readonly [readonly [0, 1], readonly [0.26, 1], readonly [0.33, 0]];
579
+ }, {
580
+ readonly prop: "y";
581
+ readonly keys: readonly [readonly [0.26, 0], readonly [0.33, -6]];
582
+ }];
583
+ readonly c: readonly [{
584
+ readonly t: "Text";
585
+ readonly es: "eyebrow";
586
+ readonly slot: "eyebrow";
587
+ readonly max: 32;
588
+ readonly ph: "copy";
589
+ readonly text: "How we work";
590
+ }, {
591
+ readonly t: "Heading";
592
+ readonly es: "h2";
593
+ readonly level: "h2";
594
+ readonly slot: "title";
595
+ readonly max: 52;
596
+ readonly ph: "copy";
597
+ readonly text: "It starts with a conversation";
598
+ }, {
599
+ readonly t: "Text";
600
+ readonly es: "lead";
601
+ readonly slot: "text";
602
+ readonly max: 180;
603
+ readonly ph: "copy";
604
+ readonly text: "What the first step is, in a sentence or two.";
605
+ }];
606
+ }, {
607
+ readonly t: "Container";
608
+ readonly es: "box";
609
+ readonly lay: {
610
+ readonly display: "flex";
611
+ readonly flexDirection: "column";
612
+ readonly gap: "12px";
613
+ readonly position: "absolute";
614
+ readonly left: "32px";
615
+ readonly right: "32px";
616
+ readonly bottom: "56px";
617
+ readonly maxWidth: "640px";
618
+ };
619
+ readonly tracks: readonly [{
620
+ readonly prop: "opacity";
621
+ readonly keys: readonly [readonly [0.33, 0], readonly [0.4, 1], readonly [0.6, 1], readonly [0.67, 0]];
622
+ }, {
623
+ readonly prop: "y";
624
+ readonly keys: readonly [readonly [0.33, 6], readonly [0.4, 0], readonly [0.6, 0], readonly [0.67, -6]];
625
+ }];
626
+ readonly c: readonly [{
627
+ readonly t: "Heading";
628
+ readonly es: "h2";
629
+ readonly level: "h2";
630
+ readonly slot: "title2";
631
+ readonly max: 52;
632
+ readonly ph: "copy";
633
+ readonly text: "Then we make it";
634
+ }, {
635
+ readonly t: "Text";
636
+ readonly es: "lead";
637
+ readonly slot: "text2";
638
+ readonly max: 180;
639
+ readonly ph: "copy";
640
+ readonly text: "What the middle of the work is, in a sentence or two.";
641
+ }];
642
+ }, {
643
+ readonly t: "Container";
644
+ readonly es: "box";
645
+ readonly lay: {
646
+ readonly display: "flex";
647
+ readonly flexDirection: "column";
648
+ readonly gap: "12px";
649
+ readonly position: "absolute";
650
+ readonly left: "32px";
651
+ readonly right: "32px";
652
+ readonly bottom: "56px";
653
+ readonly maxWidth: "640px";
654
+ };
655
+ readonly tracks: readonly [{
656
+ readonly prop: "opacity";
657
+ readonly keys: readonly [readonly [0.67, 0], readonly [0.74, 1], readonly [1, 1]];
658
+ }, {
659
+ readonly prop: "y";
660
+ readonly keys: readonly [readonly [0.67, 6], readonly [0.74, 0]];
661
+ }];
662
+ readonly c: readonly [{
663
+ readonly t: "Heading";
664
+ readonly es: "h2";
665
+ readonly level: "h2";
666
+ readonly slot: "title3";
667
+ readonly max: 52;
668
+ readonly ph: "copy";
669
+ readonly text: "And it is yours";
670
+ }, {
671
+ readonly t: "Text";
672
+ readonly es: "lead";
673
+ readonly slot: "text3";
674
+ readonly max: 180;
675
+ readonly ph: "copy";
676
+ readonly text: "What the client leaves with, in a sentence or two.";
677
+ }];
678
+ }];
679
+ }];
680
+ }];
681
+ };
682
+ };
683
+ readonly "proof.scene-words": {
684
+ readonly family: "proof";
685
+ readonly scene: true;
686
+ readonly label: "A testimonial that lights word by word";
687
+ readonly intent: "One client's words, lit one word at a time while the page holds still — only once the studio has a real quote worth slowing down for.";
688
+ readonly node: {
689
+ readonly t: "Section";
690
+ readonly es: "section";
691
+ readonly role: "scene";
692
+ readonly lay: {
693
+ readonly position: "relative";
694
+ readonly display: "block";
695
+ readonly width: "100%";
696
+ readonly height: "250vh";
697
+ readonly padding: "0px";
698
+ };
699
+ readonly c: readonly [{
700
+ readonly t: "Container";
701
+ readonly role: "scene.stage";
702
+ readonly lay: {
703
+ readonly position: "sticky";
704
+ readonly top: "0px";
705
+ readonly display: "flex";
706
+ readonly width: "100%";
707
+ readonly height: "100svh";
708
+ readonly overflow: "hidden";
709
+ readonly padding: "32px 32px 32px 32px";
710
+ readonly alignItems: "center";
711
+ readonly justifyContent: "center";
712
+ };
713
+ readonly c: readonly [{
714
+ readonly t: "Container";
715
+ readonly es: "box";
716
+ readonly lay: {
717
+ readonly display: "flex";
718
+ readonly flexDirection: "column";
719
+ readonly gap: "20px";
720
+ readonly maxWidth: "900px";
721
+ readonly width: "100%";
722
+ readonly margin: "0px auto 0px auto";
723
+ };
724
+ readonly c: readonly [{
725
+ readonly t: "Text";
726
+ readonly es: "eyebrow";
727
+ readonly slot: "eyebrow";
728
+ readonly max: 32;
729
+ readonly ph: "copy";
730
+ readonly text: "What clients say";
731
+ }, {
732
+ readonly t: "Heading";
733
+ readonly es: "h2";
734
+ readonly level: "h2";
735
+ readonly ph: "copy";
736
+ readonly text: "A sentence a client actually said, in their own words.";
737
+ readonly tracks: readonly [{
738
+ readonly prop: "words";
739
+ readonly keys: readonly [readonly [0.08, 0], readonly [0.7, 100]];
740
+ }];
741
+ }, {
742
+ readonly t: "Text";
743
+ readonly es: "small";
744
+ readonly ph: "copy";
745
+ readonly text: "[Client name] · [Project, city]";
746
+ readonly tracks: readonly [{
747
+ readonly prop: "opacity";
748
+ readonly keys: readonly [readonly [0.7, 0], readonly [0.82, 1]];
749
+ }];
750
+ }];
751
+ }];
752
+ }];
753
+ };
754
+ };
300
755
  readonly "nav.inline-cta": {
301
756
  readonly family: "nav";
302
757
  readonly label: "Navigation bar";
@@ -4167,6 +4622,14 @@ declare const SPEC_SITE_LIBRARY: readonly [{
4167
4622
  readonly id: "hero.stacked-editorial";
4168
4623
  readonly family: "hero";
4169
4624
  readonly composed: true;
4625
+ }, {
4626
+ readonly id: "hero.scene-depth";
4627
+ readonly family: "hero";
4628
+ readonly composed: true;
4629
+ }, {
4630
+ readonly id: "hero.scene-object";
4631
+ readonly family: "hero";
4632
+ readonly composed: true;
4170
4633
  }, {
4171
4634
  readonly id: "proof.logo-strip";
4172
4635
  readonly family: "proof";
@@ -4183,6 +4646,10 @@ declare const SPEC_SITE_LIBRARY: readonly [{
4183
4646
  readonly id: "proof.testimonial-carousel";
4184
4647
  readonly family: "proof";
4185
4648
  readonly composed: true;
4649
+ }, {
4650
+ readonly id: "proof.scene-words";
4651
+ readonly family: "proof";
4652
+ readonly composed: true;
4186
4653
  }, {
4187
4654
  readonly id: "feature.triad";
4188
4655
  readonly family: "feature";
@@ -4227,6 +4694,10 @@ declare const SPEC_SITE_LIBRARY: readonly [{
4227
4694
  readonly id: "story.quote-break";
4228
4695
  readonly family: "story";
4229
4696
  readonly composed: true;
4697
+ }, {
4698
+ readonly id: "story.scene-chapters";
4699
+ readonly family: "story";
4700
+ readonly composed: true;
4230
4701
  }, {
4231
4702
  readonly id: "cta.banner";
4232
4703
  readonly family: "cta";
@@ -4523,6 +4994,12 @@ interface SitePlan {
4523
4994
  readonly dataSources: ReadonlyArray<DataSourcePlan>;
4524
4995
  readonly pages: ReadonlyArray<PagePlan>;
4525
4996
  readonly globals: Readonly<Record<`${GlobalSlot}`, string>>;
4997
+ /** SC6b: the owner's film as pictures, set by the build and placed by `placeFilm` — never a model's. */
4998
+ readonly film?: PlanFilm;
4999
+ }
5000
+ /** SC6b: the owner's film — the numbered pictures the wizard's browser made of their video (media-core). */
5001
+ interface PlanFilm {
5002
+ readonly sequence: FrameSequence;
4526
5003
  }
4527
5004
 
4528
5005
  /**
@@ -4731,6 +5208,20 @@ interface PatternNode {
4731
5208
  readonly side?: `${EntranceSide}`;
4732
5209
  /** L0-3: a link to the page that shows this scope's item (the plan's template page of its type). */
4733
5210
  readonly detail?: `${BindScope.Item}` | `${BindScope.Next}`;
5211
+ /** SC6: a Scene layer's scene-core tracks, written to the node's `sceneTracks` (and `scenePhoneTracks`). */
5212
+ readonly tracks?: ReadonlyArray<PatternTrack>;
5213
+ readonly phoneTracks?: ReadonlyArray<PatternTrack>;
5214
+ /** SC6b: the Video a film pattern plays the owner's film in (its `frames`). */
5215
+ readonly film?: boolean;
5216
+ }
5217
+ /**
5218
+ * SC6: one scene-core track as the contract writes it — `{ prop, keys: [[progress, value]], from? }`. Typed here, not
5219
+ * imported: generation-core stamps it verbatim and scene-core reads (and normalizes) it where it plays.
5220
+ */
5221
+ interface PatternTrack {
5222
+ readonly prop: string;
5223
+ readonly keys: ReadonlyArray<readonly [number, number | string]>;
5224
+ readonly from?: string;
4734
5225
  }
4735
5226
  /** The composite-core recipes a pattern may stamp (`recipe`). */
4736
5227
  declare enum PatternRecipe {
@@ -4770,6 +5261,11 @@ interface SitePattern {
4770
5261
  readonly global?: `${PatternGlobalPosition}`;
4771
5262
  /** A navigation pattern's phone shape (CC1): `planNavShape` adds it after the pattern is stamped. */
4772
5263
  readonly phoneMenu?: 'drawer' | 'bar' | 'both';
5264
+ /** SC6: a Scene section — held while the page scrolls, moved by the scroll. Only at How animated Expressive, at
5265
+ * most one per page and on at most two pages (`validateSitePlan`); it never takes the look's entrances. */
5266
+ readonly scene?: boolean;
5267
+ /** SC6b: a Scene that plays the owner's film. Placed by `placeFilm`, never chosen: no manifest or wire lists it. */
5268
+ readonly film?: boolean;
4773
5269
  readonly node: PatternNode;
4774
5270
  }
4775
5271
  declare const SITE_PATTERNS: Readonly<Record<string, SitePattern>>;
@@ -4849,7 +5345,11 @@ declare function slotBudget(pattern: SitePattern, slot: string, density?: string
4849
5345
  declare function patternLinkSlots(pattern: SitePattern): string[];
4850
5346
  /** True when the pattern holds a Form a section's `form` may give another preset. */
4851
5347
  declare function patternHasForm(pattern: SitePattern): boolean;
4852
- /** The library's 31 sections (contract `site.library`), each with whether it is composed. */
5348
+ /** SC6: the level a Scene needs — the site's How animated, never a section's own `enter` (a Scene takes no entrance). */
5349
+ declare const SCENE_LEVEL = "expressive";
5350
+ /** SC6: Scenes on the home page and at most this many other pages, one per page (`validateSitePlan`). */
5351
+ declare const SCENE_OTHER_PAGES = 1;
5352
+ /** The library's sections (contract `site.library`), each with whether it is composed. */
4853
5353
  declare const SITE_LIBRARY: ReadonlyArray<{
4854
5354
  readonly id: string;
4855
5355
  readonly family: string;
@@ -4873,9 +5373,18 @@ interface PatternManifestEntry {
4873
5373
  roles: string[];
4874
5374
  optionalParts: string[];
4875
5375
  form: boolean;
5376
+ /** SC6: it holds the page as it scrolls — one per page, the home page and at most one other. */
5377
+ scene?: boolean;
5378
+ }
5379
+ interface PatternManifestOptions {
5380
+ /** The site's How animated: below `SCENE_LEVEL` the Scenes are left out — a model cannot choose what it never sees. */
5381
+ animate?: string | null;
4876
5382
  }
4877
- /** The composed library as the model reads it — every pattern, its budgets under `density` (M1-3's manifest). */
4878
- declare function patternManifest(density?: string | null): PatternManifestEntry[];
5383
+ /**
5384
+ * The composed library as the model reads it — every pattern, its budgets under `density` (M1-3's manifest). Given the
5385
+ * site's How animated (SC6), the Scenes are listed only at `SCENE_LEVEL`, marked `scene`; without it, all of them.
5386
+ */
5387
+ declare function patternManifest(density?: string | null, options?: PatternManifestOptions): PatternManifestEntry[];
4879
5388
  /** The bind scopes a pattern reads (`route`, `next`, …) — what its page must provide. */
4880
5389
  declare function patternScopes(pattern: SitePattern): Set<string>;
4881
5390
 
@@ -4941,6 +5450,9 @@ interface SerializedNode {
4941
5450
  itemKey?: string;
4942
5451
  /** A targeted state's driving node (CC2: an icon's `trigger-on` → its item). */
4943
5452
  stateTriggers?: Partial<Record<string, string>>;
5453
+ /** SC6: a Scene layer's tracks (scene-core `SceneTrack`), and its phone's own. Additive. */
5454
+ sceneTracks?: unknown[];
5455
+ scenePhoneTracks?: unknown[];
4944
5456
  bindings: SerializedBinding[];
4945
5457
  interactions: unknown[];
4946
5458
  isGlobal?: boolean;
@@ -5115,7 +5627,13 @@ declare enum SitePlanIssueCode {
5115
5627
  /** A page names a need the harness does not have. */
5116
5628
  UnknownNeed = "unknown-need",
5117
5629
  /** A page key that is a global slot's name (`header`, `footer`): its sections' ids would be the global's. */
5118
- ReservedPageKey = "reserved-page-key"
5630
+ ReservedPageKey = "reserved-page-key",
5631
+ /** SC6: a Scene below How animated Expressive, a second Scene on a page, or Scenes on more than the home page and
5632
+ * one other — the pages answer by choosing another pattern. */
5633
+ SceneBudget = "scene-budget",
5634
+ /** SC6b: the owner's film — pictures that cannot play, too few to play smoothly, or a film's pattern on a plan with
5635
+ * no film (or twice). Set by the build, never by a model. */
5636
+ Film = "film"
5119
5637
  }
5120
5638
  type SitePlanIssue = PathIssue<SitePlanIssueCode>;
5121
5639
  interface SitePlanValidation {
@@ -5522,7 +6040,11 @@ interface ShowcaseInput {
5522
6040
  business: SiteBusiness;
5523
6041
  design: DesignChoices;
5524
6042
  locale?: `${SiteLocale}`;
6043
+ /** SC6b: the film the film's Scene plays — a render-parity run serves its own; absent, `SHOWCASE_FILM`. */
6044
+ film?: FrameSequence;
5525
6045
  }
6046
+ /** SC6b: a film's description for the showcase — as many pictures as the build prepares; nothing is fetched to compose it. */
6047
+ declare const SHOWCASE_FILM: FrameSequence;
5526
6048
  /** The showcase's pages: Home (the heroes), one page per other family in library order, and the item page. */
5527
6049
  declare function showcasePages(): PagePlan[];
5528
6050
  /** Every header and footer pattern, in contract order. */
@@ -5530,7 +6052,13 @@ declare function showcaseGlobals(): {
5530
6052
  headers: string[];
5531
6053
  footers: string[];
5532
6054
  };
5533
- /** The showcase as Site Plans — as many as it takes for every header and every footer to be composed once. */
6055
+ /** SC6: the Scene patterns — each shown alone on the home page of its own plan, as a site may hold one (validateScenes). */
6056
+ declare function showcaseScenes(): string[];
6057
+ /**
6058
+ * The showcase as Site Plans — as many as it takes for every header and every footer to be composed once, then one per
6059
+ * Scene pattern (SC6): its home page holds that Scene and nothing else, at How animated Expressive, the only level a
6060
+ * Scene is composed at; the film's Scene with a film (SC6b).
6061
+ */
5534
6062
  declare function showcasePlans(input: ShowcaseInput): SitePlan[];
5535
6063
 
5536
6064
  /**
@@ -5822,7 +6350,7 @@ declare function planPartOfPath(path: string): PlanPart;
5822
6350
  declare function planWireGaps(): string[];
5823
6351
  declare class PlanWireShapeError extends Error {
5824
6352
  }
5825
- /** The patterns a page section may use (every non-global one), in library order. */
6353
+ /** The patterns a page section may use (every non-global one but a film's, which `placeFilm` places), in library order. */
5826
6354
  declare function sectionPatternIds(): string[];
5827
6355
  declare function wireFieldJsonSchema(): JsonSchema;
5828
6356
  /** What an object of the wire travels without when its children are written as their own entries (a plan edit's). */
@@ -6773,5 +7301,54 @@ declare function stockCreditNode(index: number, credit: StockLink): SerializedNo
6773
7301
  /** Append the credit lines to the footer root (once each). Returns how many it added. */
6774
7302
  declare function addStockCredits(footer: SerializedNode, credits: ReadonlyArray<StockLink>): number;
6775
7303
 
6776
- export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_PART_TOKENS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiFeature, AiGenerationStage, AiKeyMode, AiLimit, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CONTENT_ROLE_MEANINGS, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentFieldControl, ContentFieldType, ContentRole, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, DEFAULT_SITE_LOCALE, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, EntranceSide, FACT_KEYS, FIELD_TYPE_OF_CONTROL, FINAL_GENERATION_STAGES, FINDING_SEVERITY, GRAMMAR_TOO_LARGE_MESSAGE, GlobalSlot, HEBREW_PREFIXES, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PAGE_ARCHETYPES, PLAN_EDITS_ANSWER_SHAPES, PLAN_EDITS_PART_SCHEMA_NAMES, PLAN_EDIT_OP_PART, PLAN_EDIT_SHAPE, PLAN_EDIT_WIRE_KEYS, PLAN_PARTS, PLAN_PART_KEYS, PLAN_WIRE_DERIVED, PLAN_WIRE_PART_SCHEMA_NAMES, PLAN_WIRE_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanPart, PlanWireEntry, PlanWireShapeError, PlanWordIssueCode, PreflightRefusalCode, PublishRefusalCode, REQUIRED_CONTENT_ROLES, RelativeOp, SAMPLE_IMAGE_REF, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_LIBRARY, SITE_LOCALES, SITE_NEED_IDS, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_ARCHETYPES, SPEC_SITE_COPY_LENGTHS, SPEC_SITE_DENSITY_COPY, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_LOCALES, SPEC_SITE_NEED_IDS, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_REQUIRED_ROLES, SPEC_SITE_ROLES, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STOCK_FAMILY_INTENTS, STOCK_INTENT_ORDER, STOCK_INTENT_SUBJECTS, STOCK_ITEM_ASPECT, STOCK_MIN_KEPT, STOCK_PROVIDER_TERMS, STOCK_SUBJECT_WORDS, STRICT_SCHEMA_BUDGET, STRICT_SCHEMA_LIMITS, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SiteLocale, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, StockIntent, StockOrientation, StockProviderId, StockReviewFlag, StockReviewVerdict, StockSlotKind, StockSubject, addBarItem, addStockCredits, aiStepParts, applyOwnPhotoGalleries, applyPlanEdits, applyStockItemPhotos, applyStockPhotos, archetypeIssues, aspectRatioOf, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypePreviewFields, contentTypeToWire, copyLengthOf, costUsd, createSerializedNode, creditsOfUsd, dataSourceToWire, derivedDataSources, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, expandPlanWire, expandWireContentType, expandWireDataSource, expandWireEdit, expandWireField, expandWirePage, expandWireSection, failedBuildStep, fieldToWire, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, isRtlLocale, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, orientationOfRatio, pageToWire, parsePatternPath, parseSampleImageRef, pathAt, patternById, patternHasForm, patternLinkSlots, patternListGap, patternManifest, patternNeedsBinding, patternNodes, patternOptionalParts, patternRoleNeeds, patternScopes, patternSlotBudgets, patternSlots, patternTakesBinding, phoneMenuPages, planEditOps, planEditToWire, planEditWireGaps, planEditWireKeys, planEditWireOps, planEditWireShape, planEditsFromWire, planEditsJsonSchema, planEditsToWire, planEntrances, planFromTemplate, planNavShape, planOwnPhotos, planPartOfPath, planPartToWire, planStockPhotos, planToWire, planWireGaps, planWirePartJsonSchema, planWirePartShape, planWordIssues, publishRefusal, publishVerdict, recipeListBinds, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, roleField, routeMatches, routeParams, sampleImageRef, scoreStockPhoto, sectionEntrances, sectionPatternIds, sectionToWire, setStyleProps, shapeKeys, showcaseGlobals, showcasePages, showcasePlans, siteNavPages, slotBudget, stockCopyKey, stockCreditLine, stockCreditLines, stockCreditNode, stockCreditNodeId, stockFits, stockGroupOf, stockItemSlots, stockKept, stockPhotoRatio, stockPhotoSubject, stockPhotoUsable, stockPhotoWords, stockSlots, stockWord, stockWords, strictSchemaComplexity, strictSchemaRefusal, typicalStepTokens, validatePlanEdits, validateSitePlan, walkSerialized, wireContentTypeJsonSchema, wireDataSourceJsonSchema, wireFieldJsonSchema, wirePageJsonSchema, wireSectionJsonSchema, withDerivedSources, wordPattern, writtenTexts };
6777
- export type { AddBarItemResult, AiEntitlementsView, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, AuditPage, AuditPlaceholder, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentRoles, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceActionOptions, EntranceInteraction, EntranceMark, EntranceSpec, EntranceStamp, FactKey, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, OwnPhotoPlacement, PageArchetype, PageArchetypeId, PageArchetypeSlot, PageData, PageDataLine, PagePlan, PageSectionPlan, PageSeoPlan, PathIssue, PatternManifestEntry, PatternNode, PatternPath, PatternRoleNeed, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanEntrancesInput, PlanWireContext, PlanWireParts, PlanWordContext, PlanWordIssue, PreflightRefusal, PublishRefusal, RecipeListBinds, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, ShowcaseInput, SiteAudit, SiteAuditOptions, SiteAuditSnapshot, SiteBuildRun, SiteBusiness, SiteCheck, SiteFinding, SiteNeedId, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, StockCredit, StockItemSlot, StockLink, StockNeed, StockPhoto, StockPhotoTraits, StockPlacement, StockPlanOptions, StockProviderTerms, StockReview, StockSlot, StockTarget, StrictSchemaComplexity, StrictSchemaRefusal, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WireOptions, WrittenText };
7304
+ /**
7305
+ * The owner's film on a built site (premium sites SC6b). The owner gives a video in Analysis; the wizard's browser makes
7306
+ * it pictures (cms-client `FramesPrepareService`); the build places it. A model never picks the film's pattern — the
7307
+ * manifest and the plan wire leave it out — so ONE pure placement decides where it goes, run by the wizard to draw the
7308
+ * Plan and by the server to build: they cannot disagree.
7309
+ */
7310
+ /** The pattern a film plays in: the one whose Video is marked `film` in the contract. */
7311
+ declare const FILM_PATTERN: string;
7312
+ /** Why a film stays off the site. Each is said to the owner on the Plan step. */
7313
+ declare enum FilmUnplaced {
7314
+ /** How animated is below Expressive: no section holds the page there. */
7315
+ NotExpressive = "notExpressive",
7316
+ /** The home page does not open with a hero to play it in. */
7317
+ NoHero = "noHero",
7318
+ /** The home page already holds the page elsewhere (one Scene per page). */
7319
+ AnotherScene = "anotherScene",
7320
+ /** Too few pictures to play smoothly over the shortest hold (media-core `FILM_MIN_PICTURES`). */
7321
+ TooShort = "tooShort"
7322
+ }
7323
+ /** Where the film plays: the home page's first section when it is a hero. */
7324
+ interface FilmTarget {
7325
+ readonly page: number;
7326
+ readonly section: number;
7327
+ }
7328
+ type FilmPlacement = {
7329
+ readonly target: FilmTarget;
7330
+ readonly unplaced?: undefined;
7331
+ } | {
7332
+ readonly target?: undefined;
7333
+ readonly unplaced: FilmUnplaced;
7334
+ };
7335
+ /** Where a film WOULD play on this plan (the Plan step asks before the pictures exist). */
7336
+ declare function filmPlacement(plan: Pick<SitePlan, 'design' | 'pages'>): FilmPlacement;
7337
+ interface PlacedFilm {
7338
+ readonly plan: SitePlan;
7339
+ readonly unplaced?: FilmUnplaced;
7340
+ }
7341
+ /**
7342
+ * The plan with the owner's film in it: `film` set, and the home page's hero becomes the film's pattern, keeping the
7343
+ * hero's words and links that the film's pattern has. A film that cannot play (unreadable, too few pictures) or a plan
7344
+ * with no place for it leaves the plan as it was — the hero keeps its picture, and the builder can add the film later.
7345
+ */
7346
+ declare function placeFilm(plan: SitePlan, sequence: unknown): PlacedFilm;
7347
+ /** The film's pictures as the composer stamps them, and the height its Scene holds the page for. */
7348
+ declare function filmOfPlan(plan: Pick<SitePlan, 'film'>): {
7349
+ sequence: FrameSequence;
7350
+ heightVh: number;
7351
+ } | null;
7352
+
7353
+ export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_PART_TOKENS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiFeature, AiGenerationStage, AiKeyMode, AiLimit, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CONTENT_ROLE_MEANINGS, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentFieldControl, ContentFieldType, ContentRole, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, DEFAULT_SITE_LOCALE, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, EntranceSide, FACT_KEYS, FIELD_TYPE_OF_CONTROL, FILM_PATTERN, FINAL_GENERATION_STAGES, FINDING_SEVERITY, FilmUnplaced, GRAMMAR_TOO_LARGE_MESSAGE, GlobalSlot, HEBREW_PREFIXES, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PAGE_ARCHETYPES, PLAN_EDITS_ANSWER_SHAPES, PLAN_EDITS_PART_SCHEMA_NAMES, PLAN_EDIT_OP_PART, PLAN_EDIT_SHAPE, PLAN_EDIT_WIRE_KEYS, PLAN_PARTS, PLAN_PART_KEYS, PLAN_WIRE_DERIVED, PLAN_WIRE_PART_SCHEMA_NAMES, PLAN_WIRE_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanPart, PlanWireEntry, PlanWireShapeError, PlanWordIssueCode, PreflightRefusalCode, PublishRefusalCode, REQUIRED_CONTENT_ROLES, RelativeOp, SAMPLE_IMAGE_REF, SCENE_LEVEL, SCENE_OTHER_PAGES, SHOWCASE_FILM, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_LIBRARY, SITE_LOCALES, SITE_NEED_IDS, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_ARCHETYPES, SPEC_SITE_COPY_LENGTHS, SPEC_SITE_DENSITY_COPY, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_LOCALES, SPEC_SITE_NEED_IDS, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_REQUIRED_ROLES, SPEC_SITE_ROLES, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STOCK_FAMILY_INTENTS, STOCK_INTENT_ORDER, STOCK_INTENT_SUBJECTS, STOCK_ITEM_ASPECT, STOCK_MIN_KEPT, STOCK_PROVIDER_TERMS, STOCK_SUBJECT_WORDS, STRICT_SCHEMA_BUDGET, STRICT_SCHEMA_LIMITS, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SiteLocale, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, StockIntent, StockOrientation, StockProviderId, StockReviewFlag, StockReviewVerdict, StockSlotKind, StockSubject, addBarItem, addStockCredits, aiStepParts, applyOwnPhotoGalleries, applyPlanEdits, applyStockItemPhotos, applyStockPhotos, archetypeIssues, aspectRatioOf, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypePreviewFields, contentTypeToWire, copyLengthOf, costUsd, createSerializedNode, creditsOfUsd, dataSourceToWire, derivedDataSources, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, expandPlanWire, expandWireContentType, expandWireDataSource, expandWireEdit, expandWireField, expandWirePage, expandWireSection, failedBuildStep, fieldToWire, filmOfPlan, filmPlacement, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, isRtlLocale, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, orientationOfRatio, pageToWire, parsePatternPath, parseSampleImageRef, pathAt, patternById, patternHasForm, patternLinkSlots, patternListGap, patternManifest, patternNeedsBinding, patternNodes, patternOptionalParts, patternRoleNeeds, patternScopes, patternSlotBudgets, patternSlots, patternTakesBinding, phoneMenuPages, placeFilm, planEditOps, planEditToWire, planEditWireGaps, planEditWireKeys, planEditWireOps, planEditWireShape, planEditsFromWire, planEditsJsonSchema, planEditsToWire, planEntrances, planFromTemplate, planNavShape, planOwnPhotos, planPartOfPath, planPartToWire, planStockPhotos, planToWire, planWireGaps, planWirePartJsonSchema, planWirePartShape, planWordIssues, publishRefusal, publishVerdict, recipeListBinds, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, roleField, routeMatches, routeParams, sampleImageRef, scoreStockPhoto, sectionEntrances, sectionPatternIds, sectionToWire, setStyleProps, shapeKeys, showcaseGlobals, showcasePages, showcasePlans, showcaseScenes, siteNavPages, slotBudget, stockCopyKey, stockCreditLine, stockCreditLines, stockCreditNode, stockCreditNodeId, stockFits, stockGroupOf, stockItemSlots, stockKept, stockPhotoRatio, stockPhotoSubject, stockPhotoUsable, stockPhotoWords, stockSlots, stockWord, stockWords, strictSchemaComplexity, strictSchemaRefusal, typicalStepTokens, validatePlanEdits, validateSitePlan, walkSerialized, wireContentTypeJsonSchema, wireDataSourceJsonSchema, wireFieldJsonSchema, wirePageJsonSchema, wireSectionJsonSchema, withDerivedSources, wordPattern, writtenTexts };
7354
+ export type { AddBarItemResult, AiEntitlementsView, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, AuditPage, AuditPlaceholder, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentRoles, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceActionOptions, EntranceInteraction, EntranceMark, EntranceSpec, EntranceStamp, FactKey, FilmPlacement, FilmTarget, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, OwnPhotoPlacement, PageArchetype, PageArchetypeId, PageArchetypeSlot, PageData, PageDataLine, PagePlan, PageSectionPlan, PageSeoPlan, PathIssue, PatternManifestEntry, PatternManifestOptions, PatternNode, PatternPath, PatternRoleNeed, PatternTrack, PlacedFilm, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanEntrancesInput, PlanFilm, PlanWireContext, PlanWireParts, PlanWordContext, PlanWordIssue, PreflightRefusal, PublishRefusal, RecipeListBinds, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, ShowcaseInput, SiteAudit, SiteAuditOptions, SiteAuditSnapshot, SiteBuildRun, SiteBusiness, SiteCheck, SiteFinding, SiteNeedId, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, StockCredit, StockItemSlot, StockLink, StockNeed, StockPhoto, StockPhotoTraits, StockPlacement, StockPlanOptions, StockProviderTerms, StockReview, StockSlot, StockTarget, StrictSchemaComplexity, StrictSchemaRefusal, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WireOptions, WrittenText };