paperlab 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/stage.d.cts CHANGED
@@ -1,163 +1,7 @@
1
1
  import * as react from 'react';
2
- import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-DUMR64HB.cjs';
2
+ import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-CIo7FnlY.cjs';
3
3
  import { z } from 'zod';
4
4
 
5
- /**
6
- * The room the walk is in.
7
- *
8
- * Stage mode was a void with a horizon: a graded dome, a flat plane, and a
9
- * bright rectangle at the end, none of it a knowable size. That is why the
10
- * walking figure was carrying the whole scale burden by itself — and why
11
- * simply removing the figure would have left an abstraction rather than a
12
- * hall. Architecture is the better answer: objects whose size the viewer
13
- * already knows, made of flat surfaces under good light, which is the one
14
- * thing a renderer never gets wrong.
15
- */
16
- /**
17
- * What holds the paper up.
18
- *
19
- * Every paper installation shows its hardware — monofilament from a ceiling
20
- * grid, steel wire, bulldog clips, a rod — and in the scattered-sheet pieces
21
- * the threads are half the composition. Stage mode's banners hung from
22
- * nothing at all, which is a bigger realism gap than any shader in the
23
- * backlog and closes for a few thin lines of geometry.
24
- */
25
- declare const stageSuspensionSchema: z.ZodObject<{
26
- /**
27
- * What carries the load.
28
- *
29
- * `thread` is monofilament to the ceiling — one straight line per sheet.
30
- * `rod` is a dowel across each sheet's top edge, hung from the ceiling at
31
- * both ends, which is a different image entirely: a rank on threads reads
32
- * as sheets floating in a row, and a rank on rods reads as sheets that
33
- * were HUNG, by someone, on something. `none` is for a stage where the
34
- * paper is meant to be impossible.
35
- */
36
- type: z.ZodDefault<z.ZodEnum<["none", "thread", "rod"]>>;
37
- color: z.ZodDefault<z.ZodString>;
38
- /**
39
- * What grips the sheet.
40
- *
41
- * A clip is wide and shallow — the bulldog clip of a gallery. A peg is
42
- * narrow and deep, and grips DOWN the face of the sheet rather than
43
- * across its edge: the domestic one, a line of paper on a washing line.
44
- * They are told apart by silhouette at any distance, which is the only
45
- * thing that survives being one instanced box at the top of an
46
- * eight-metre banner.
47
- *
48
- * This replaced a `clips: boolean`. Two of the four pieces of hardware the
49
- * plan named — pegs, and a rod — had no way to be asked for, and a boolean
50
- * cannot grow a third answer.
51
- */
52
- hardware: z.ZodDefault<z.ZodEnum<["none", "clip", "peg"]>>;
53
- }, "strip", z.ZodTypeAny, {
54
- type: "none" | "thread" | "rod";
55
- color: string;
56
- hardware: "none" | "clip" | "peg";
57
- }, {
58
- type?: "none" | "thread" | "rod" | undefined;
59
- color?: string | undefined;
60
- hardware?: "none" | "clip" | "peg" | undefined;
61
- }>;
62
- declare const stageRoomSchema: z.ZodObject<{
63
- enabled: z.ZodDefault<z.ZodBoolean>;
64
- /**
65
- * Ceiling height, as a multiple of the paper's own height.
66
- *
67
- * Relative rather than absolute because the banners ARE the architecture
68
- * here: a hall whose ceiling sits just above its hangings reads as built
69
- * for them, and one at a fixed world height reads as whatever the paper
70
- * happened to be scaled to that day.
71
- */
72
- height: z.ZodDefault<z.ZodNumber>;
73
- color: z.ZodDefault<z.ZodString>;
74
- /** Columns flanking the walk — see `stageColumnsSchema`. */
75
- columns: z.ZodDefault<z.ZodObject<{
76
- enabled: z.ZodDefault<z.ZodBoolean>;
77
- /** Centres this far apart along the walk. Roughly a bay. */
78
- spacing: z.ZodDefault<z.ZodNumber>;
79
- /** Shaft width. The number doing the work — a column is a known size. */
80
- width: z.ZodDefault<z.ZodNumber>;
81
- /**
82
- * How far off the walk's centreline each rank stands.
83
- *
84
- * Outside the banners, always. Columns are the room; the paper is the
85
- * subject, and a column standing between the viewer and a banner has
86
- * swapped the two over. Default clears a `colonnade`'s widest sensible
87
- * aisle with room to spare.
88
- */
89
- offset: z.ZodDefault<z.ZodNumber>;
90
- /**
91
- * Stone, and darker than paper on purpose.
92
- *
93
- * The brightest thing in any of these frames has to be the light, and the
94
- * second brightest has to be the paper. A column the same value as a
95
- * banner does not read as architecture behind the subject; it reads as
96
- * more banners, and the eye stops being able to tell what the room is made
97
- * of from what is hanging in it.
98
- */
99
- color: z.ZodDefault<z.ZodString>;
100
- }, "strip", z.ZodTypeAny, {
101
- width: number;
102
- offset: number;
103
- color: string;
104
- spacing: number;
105
- enabled: boolean;
106
- }, {
107
- width?: number | undefined;
108
- offset?: number | undefined;
109
- color?: string | undefined;
110
- spacing?: number | undefined;
111
- enabled?: boolean | undefined;
112
- }>>;
113
- /** A wall at the end of the walk with the source in it. */
114
- doorway: z.ZodDefault<z.ZodObject<{
115
- enabled: z.ZodDefault<z.ZodBoolean>;
116
- /** Opening size, as a multiple of the source's own. 1 frames it exactly. */
117
- opening: z.ZodDefault<z.ZodNumber>;
118
- color: z.ZodDefault<z.ZodString>;
119
- }, "strip", z.ZodTypeAny, {
120
- color: string;
121
- enabled: boolean;
122
- opening: number;
123
- }, {
124
- color?: string | undefined;
125
- enabled?: boolean | undefined;
126
- opening?: number | undefined;
127
- }>>;
128
- }, "strip", z.ZodTypeAny, {
129
- height: number;
130
- color: string;
131
- enabled: boolean;
132
- columns: {
133
- width: number;
134
- offset: number;
135
- color: string;
136
- spacing: number;
137
- enabled: boolean;
138
- };
139
- doorway: {
140
- color: string;
141
- enabled: boolean;
142
- opening: number;
143
- };
144
- }, {
145
- height?: number | undefined;
146
- color?: string | undefined;
147
- enabled?: boolean | undefined;
148
- columns?: {
149
- width?: number | undefined;
150
- offset?: number | undefined;
151
- color?: string | undefined;
152
- spacing?: number | undefined;
153
- enabled?: boolean | undefined;
154
- } | undefined;
155
- doorway?: {
156
- color?: string | undefined;
157
- enabled?: boolean | undefined;
158
- opening?: number | undefined;
159
- } | undefined;
160
- }>;
161
5
  /**
162
6
  * The print: what happens to the frame after the scene is drawn.
163
7
  *
@@ -374,15 +218,15 @@ declare const stageSchema: z.ZodObject<{
374
218
  spread: z.ZodDefault<z.ZodNumber>;
375
219
  }, "strip", z.ZodTypeAny, {
376
220
  color: string;
377
- enabled: boolean;
378
221
  spread: number;
222
+ enabled: boolean;
379
223
  zenith: string;
380
224
  beyond: number;
381
225
  surround: boolean;
382
226
  }, {
383
227
  color?: string | undefined;
384
- enabled?: boolean | undefined;
385
228
  spread?: number | undefined;
229
+ enabled?: boolean | undefined;
386
230
  zenith?: string | undefined;
387
231
  beyond?: number | undefined;
388
232
  surround?: boolean | undefined;
@@ -634,6 +478,17 @@ declare const stageSchema: z.ZodObject<{
634
478
  closed: boolean;
635
479
  };
636
480
  lighting: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox";
481
+ light: {
482
+ key?: number | undefined;
483
+ height?: number | undefined;
484
+ color?: string | undefined;
485
+ studio?: number | undefined;
486
+ exposure?: number | undefined;
487
+ film?: "agx" | "neutral" | "filmic" | undefined;
488
+ direction?: number | undefined;
489
+ ambient?: number | undefined;
490
+ haze?: number | undefined;
491
+ };
637
492
  figure: {
638
493
  height: number;
639
494
  speed: number;
@@ -646,23 +501,12 @@ declare const stageSchema: z.ZodObject<{
646
501
  };
647
502
  source: {
648
503
  color: string;
649
- enabled: boolean;
650
504
  spread: number;
505
+ enabled: boolean;
651
506
  zenith: string;
652
507
  beyond: number;
653
508
  surround: boolean;
654
509
  };
655
- light: {
656
- key?: number | undefined;
657
- height?: number | undefined;
658
- color?: string | undefined;
659
- studio?: number | undefined;
660
- exposure?: number | undefined;
661
- film?: "agx" | "neutral" | "filmic" | undefined;
662
- direction?: number | undefined;
663
- ambient?: number | undefined;
664
- haze?: number | undefined;
665
- };
666
510
  shot: {
667
511
  height: number;
668
512
  offset: number;
@@ -711,6 +555,17 @@ declare const stageSchema: z.ZodObject<{
711
555
  closed?: boolean | undefined;
712
556
  } | undefined;
713
557
  lighting?: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox" | undefined;
558
+ light?: {
559
+ key?: number | undefined;
560
+ height?: number | undefined;
561
+ color?: string | undefined;
562
+ studio?: number | undefined;
563
+ exposure?: number | undefined;
564
+ film?: "agx" | "neutral" | "filmic" | undefined;
565
+ direction?: number | undefined;
566
+ ambient?: number | undefined;
567
+ haze?: number | undefined;
568
+ } | undefined;
714
569
  figure?: {
715
570
  height?: number | undefined;
716
571
  speed?: number | undefined;
@@ -723,23 +578,12 @@ declare const stageSchema: z.ZodObject<{
723
578
  } | undefined;
724
579
  source?: {
725
580
  color?: string | undefined;
726
- enabled?: boolean | undefined;
727
581
  spread?: number | undefined;
582
+ enabled?: boolean | undefined;
728
583
  zenith?: string | undefined;
729
584
  beyond?: number | undefined;
730
585
  surround?: boolean | undefined;
731
586
  } | undefined;
732
- light?: {
733
- key?: number | undefined;
734
- height?: number | undefined;
735
- color?: string | undefined;
736
- studio?: number | undefined;
737
- exposure?: number | undefined;
738
- film?: "agx" | "neutral" | "filmic" | undefined;
739
- direction?: number | undefined;
740
- ambient?: number | undefined;
741
- haze?: number | undefined;
742
- } | undefined;
743
587
  shot?: {
744
588
  height?: number | undefined;
745
589
  offset?: number | undefined;
@@ -895,6 +739,28 @@ declare const qualityNames: readonly ["auto", "low", "medium", "high"];
895
739
  type QualityName = (typeof qualityNames)[number];
896
740
  type QualityTier = Exclude<QualityName, 'auto'>;
897
741
 
742
+ /**
743
+ * Stage mode: paper as architecture, with a figure walking through it.
744
+ *
745
+ * The one guarantee worth stating — every part of the scene reads the SAME
746
+ * walk. The layout arranges along it, the figure follows it, the camera is
747
+ * stationed on it, and the source stands at the end of it. Handing those
748
+ * four their own copies of a path is the failure this component exists to
749
+ * prevent: a colonnade whose aisle the figure does not walk down is not a
750
+ * near-miss, it is a completely different picture.
751
+ */
752
+ /** A banner: tall, translucent, with folds running the length of its drop. */
753
+ /**
754
+ * The sheet a stage hangs when the caller does not name one.
755
+ *
756
+ * Exported because it is the base anyone RESHAPING a banner has to start
757
+ * from. A caller who wants a wider drop wants this stock, this grain and
758
+ * this drape with different dimensions — and rebuilding it from the schema
759
+ * defaults instead gives a sheet of printer paper with no fold in it, which
760
+ * is a different object. A second copy of these numbers in a caller is a
761
+ * copy free to drift from the one the scene actually falls back to.
762
+ */
763
+ declare const stageBanner: PaperConfigInput;
898
764
  interface PaperStageSceneProps {
899
765
  /** Walk, shot, figure, lighting — see `stageSchema`. */
900
766
  stage?: StageConfigInput;
@@ -962,16 +828,6 @@ declare function PaperStageScene({ stage: stageInput, quality, onQualityChange,
962
828
  /** `<PaperStage />` owns its Canvas; `<PaperStageScene />` drops into an existing one. */
963
829
  declare function PaperStage({ children, className, style, ...sceneProps }: PaperStageProps): react.JSX.Element;
964
830
 
965
- /**
966
- * The source's default burn, in linear light.
967
- *
968
- * Chosen by matching: at 3.4 the tone-mapped source lands on the same read
969
- * as the un-mapped plane it replaces, so a stage that never mounts a
970
- * composer looks the way it always did, and one that does gets a source
971
- * that blooms instead of a rectangle that clips.
972
- */
973
- declare const SOURCE_INTENSITY = 3.4;
974
-
975
831
  /**
976
832
  * Named stages. A mode with no presets asks its visitor to invent a space
977
833
  * out of eleven sliders before it will show them anything — and stage mode
@@ -1128,24 +984,16 @@ interface StageExportInput {
1128
984
  paper?: PaperConfigInput;
1129
985
  /** The words the space is built from. Omitted renders blank banners. */
1130
986
  text?: string;
987
+ /** Pictures on the banners, one per drop, instead of words. */
988
+ images?: string[];
1131
989
  count?: number;
1132
990
  /** Bind the walk to page scroll, pinned, rather than to the clock. */
1133
991
  scroll?: boolean;
1134
992
  /** Exported component name. */
1135
993
  componentName?: string;
1136
994
  }
1137
- /** Which named walk these points are, if any — the export reads better for it. */
1138
- declare function walkNameFor(path: StageConfig['path']): WalkName | undefined;
1139
995
  /** The stage config with defaults removed — what actually needs writing down. */
1140
996
  declare function diffStage(stage: StageConfigInput): Record<string, unknown>;
1141
- /**
1142
- * JSON.stringify, except an array of plain numbers stays on one line. A walk
1143
- * is a list of coordinate pairs, and the default pretty-printer spreads each
1144
- * `[6, 17]` over four lines — twenty lines of punctuation for one gentle
1145
- * curve. Exported code is a product surface; it should read like something a
1146
- * person wrote.
1147
- */
1148
- declare function stringifyStage(value: unknown, indent?: number): string;
1149
997
  /** The one-line visual an agent verifies after `npm run dev`. */
1150
998
  declare function describeStage(input: StageExportInput): string;
1151
999
  /** Component source shared by the JSX snippet and the agent payload. */
@@ -1153,4 +1001,4 @@ declare function buildStageComponentSource(input: StageExportInput): string;
1153
1001
  /** The self-contained stage integration brief — one paste into a coding agent. */
1154
1002
  declare function buildStageAgentPayload(input: StageExportInput): string;
1155
1003
 
1156
- export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, SOURCE_INTENSITY, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageGradeSchema, stageMotionSchema, stagePresets, stageRoomSchema, stageSchema, stageSuspensionSchema, stringifyStage, walkNameFor, walkNames, walks };
1004
+ export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageBanner, stagePresets, stageSchema, walkNames, walks };
package/dist/stage.d.ts CHANGED
@@ -1,163 +1,7 @@
1
1
  import * as react from 'react';
2
- import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-DUMR64HB.js';
2
+ import { F as FieldPaperSlot, a as PaperConfigInput } from './slots-CIo7FnlY.js';
3
3
  import { z } from 'zod';
4
4
 
5
- /**
6
- * The room the walk is in.
7
- *
8
- * Stage mode was a void with a horizon: a graded dome, a flat plane, and a
9
- * bright rectangle at the end, none of it a knowable size. That is why the
10
- * walking figure was carrying the whole scale burden by itself — and why
11
- * simply removing the figure would have left an abstraction rather than a
12
- * hall. Architecture is the better answer: objects whose size the viewer
13
- * already knows, made of flat surfaces under good light, which is the one
14
- * thing a renderer never gets wrong.
15
- */
16
- /**
17
- * What holds the paper up.
18
- *
19
- * Every paper installation shows its hardware — monofilament from a ceiling
20
- * grid, steel wire, bulldog clips, a rod — and in the scattered-sheet pieces
21
- * the threads are half the composition. Stage mode's banners hung from
22
- * nothing at all, which is a bigger realism gap than any shader in the
23
- * backlog and closes for a few thin lines of geometry.
24
- */
25
- declare const stageSuspensionSchema: z.ZodObject<{
26
- /**
27
- * What carries the load.
28
- *
29
- * `thread` is monofilament to the ceiling — one straight line per sheet.
30
- * `rod` is a dowel across each sheet's top edge, hung from the ceiling at
31
- * both ends, which is a different image entirely: a rank on threads reads
32
- * as sheets floating in a row, and a rank on rods reads as sheets that
33
- * were HUNG, by someone, on something. `none` is for a stage where the
34
- * paper is meant to be impossible.
35
- */
36
- type: z.ZodDefault<z.ZodEnum<["none", "thread", "rod"]>>;
37
- color: z.ZodDefault<z.ZodString>;
38
- /**
39
- * What grips the sheet.
40
- *
41
- * A clip is wide and shallow — the bulldog clip of a gallery. A peg is
42
- * narrow and deep, and grips DOWN the face of the sheet rather than
43
- * across its edge: the domestic one, a line of paper on a washing line.
44
- * They are told apart by silhouette at any distance, which is the only
45
- * thing that survives being one instanced box at the top of an
46
- * eight-metre banner.
47
- *
48
- * This replaced a `clips: boolean`. Two of the four pieces of hardware the
49
- * plan named — pegs, and a rod — had no way to be asked for, and a boolean
50
- * cannot grow a third answer.
51
- */
52
- hardware: z.ZodDefault<z.ZodEnum<["none", "clip", "peg"]>>;
53
- }, "strip", z.ZodTypeAny, {
54
- type: "none" | "thread" | "rod";
55
- color: string;
56
- hardware: "none" | "clip" | "peg";
57
- }, {
58
- type?: "none" | "thread" | "rod" | undefined;
59
- color?: string | undefined;
60
- hardware?: "none" | "clip" | "peg" | undefined;
61
- }>;
62
- declare const stageRoomSchema: z.ZodObject<{
63
- enabled: z.ZodDefault<z.ZodBoolean>;
64
- /**
65
- * Ceiling height, as a multiple of the paper's own height.
66
- *
67
- * Relative rather than absolute because the banners ARE the architecture
68
- * here: a hall whose ceiling sits just above its hangings reads as built
69
- * for them, and one at a fixed world height reads as whatever the paper
70
- * happened to be scaled to that day.
71
- */
72
- height: z.ZodDefault<z.ZodNumber>;
73
- color: z.ZodDefault<z.ZodString>;
74
- /** Columns flanking the walk — see `stageColumnsSchema`. */
75
- columns: z.ZodDefault<z.ZodObject<{
76
- enabled: z.ZodDefault<z.ZodBoolean>;
77
- /** Centres this far apart along the walk. Roughly a bay. */
78
- spacing: z.ZodDefault<z.ZodNumber>;
79
- /** Shaft width. The number doing the work — a column is a known size. */
80
- width: z.ZodDefault<z.ZodNumber>;
81
- /**
82
- * How far off the walk's centreline each rank stands.
83
- *
84
- * Outside the banners, always. Columns are the room; the paper is the
85
- * subject, and a column standing between the viewer and a banner has
86
- * swapped the two over. Default clears a `colonnade`'s widest sensible
87
- * aisle with room to spare.
88
- */
89
- offset: z.ZodDefault<z.ZodNumber>;
90
- /**
91
- * Stone, and darker than paper on purpose.
92
- *
93
- * The brightest thing in any of these frames has to be the light, and the
94
- * second brightest has to be the paper. A column the same value as a
95
- * banner does not read as architecture behind the subject; it reads as
96
- * more banners, and the eye stops being able to tell what the room is made
97
- * of from what is hanging in it.
98
- */
99
- color: z.ZodDefault<z.ZodString>;
100
- }, "strip", z.ZodTypeAny, {
101
- width: number;
102
- offset: number;
103
- color: string;
104
- spacing: number;
105
- enabled: boolean;
106
- }, {
107
- width?: number | undefined;
108
- offset?: number | undefined;
109
- color?: string | undefined;
110
- spacing?: number | undefined;
111
- enabled?: boolean | undefined;
112
- }>>;
113
- /** A wall at the end of the walk with the source in it. */
114
- doorway: z.ZodDefault<z.ZodObject<{
115
- enabled: z.ZodDefault<z.ZodBoolean>;
116
- /** Opening size, as a multiple of the source's own. 1 frames it exactly. */
117
- opening: z.ZodDefault<z.ZodNumber>;
118
- color: z.ZodDefault<z.ZodString>;
119
- }, "strip", z.ZodTypeAny, {
120
- color: string;
121
- enabled: boolean;
122
- opening: number;
123
- }, {
124
- color?: string | undefined;
125
- enabled?: boolean | undefined;
126
- opening?: number | undefined;
127
- }>>;
128
- }, "strip", z.ZodTypeAny, {
129
- height: number;
130
- color: string;
131
- enabled: boolean;
132
- columns: {
133
- width: number;
134
- offset: number;
135
- color: string;
136
- spacing: number;
137
- enabled: boolean;
138
- };
139
- doorway: {
140
- color: string;
141
- enabled: boolean;
142
- opening: number;
143
- };
144
- }, {
145
- height?: number | undefined;
146
- color?: string | undefined;
147
- enabled?: boolean | undefined;
148
- columns?: {
149
- width?: number | undefined;
150
- offset?: number | undefined;
151
- color?: string | undefined;
152
- spacing?: number | undefined;
153
- enabled?: boolean | undefined;
154
- } | undefined;
155
- doorway?: {
156
- color?: string | undefined;
157
- enabled?: boolean | undefined;
158
- opening?: number | undefined;
159
- } | undefined;
160
- }>;
161
5
  /**
162
6
  * The print: what happens to the frame after the scene is drawn.
163
7
  *
@@ -374,15 +218,15 @@ declare const stageSchema: z.ZodObject<{
374
218
  spread: z.ZodDefault<z.ZodNumber>;
375
219
  }, "strip", z.ZodTypeAny, {
376
220
  color: string;
377
- enabled: boolean;
378
221
  spread: number;
222
+ enabled: boolean;
379
223
  zenith: string;
380
224
  beyond: number;
381
225
  surround: boolean;
382
226
  }, {
383
227
  color?: string | undefined;
384
- enabled?: boolean | undefined;
385
228
  spread?: number | undefined;
229
+ enabled?: boolean | undefined;
386
230
  zenith?: string | undefined;
387
231
  beyond?: number | undefined;
388
232
  surround?: boolean | undefined;
@@ -634,6 +478,17 @@ declare const stageSchema: z.ZodObject<{
634
478
  closed: boolean;
635
479
  };
636
480
  lighting: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox";
481
+ light: {
482
+ key?: number | undefined;
483
+ height?: number | undefined;
484
+ color?: string | undefined;
485
+ studio?: number | undefined;
486
+ exposure?: number | undefined;
487
+ film?: "agx" | "neutral" | "filmic" | undefined;
488
+ direction?: number | undefined;
489
+ ambient?: number | undefined;
490
+ haze?: number | undefined;
491
+ };
637
492
  figure: {
638
493
  height: number;
639
494
  speed: number;
@@ -646,23 +501,12 @@ declare const stageSchema: z.ZodObject<{
646
501
  };
647
502
  source: {
648
503
  color: string;
649
- enabled: boolean;
650
504
  spread: number;
505
+ enabled: boolean;
651
506
  zenith: string;
652
507
  beyond: number;
653
508
  surround: boolean;
654
509
  };
655
- light: {
656
- key?: number | undefined;
657
- height?: number | undefined;
658
- color?: string | undefined;
659
- studio?: number | undefined;
660
- exposure?: number | undefined;
661
- film?: "agx" | "neutral" | "filmic" | undefined;
662
- direction?: number | undefined;
663
- ambient?: number | undefined;
664
- haze?: number | undefined;
665
- };
666
510
  shot: {
667
511
  height: number;
668
512
  offset: number;
@@ -711,6 +555,17 @@ declare const stageSchema: z.ZodObject<{
711
555
  closed?: boolean | undefined;
712
556
  } | undefined;
713
557
  lighting?: "studio" | "window" | "leaves" | "goldenhour" | "noir" | "nave" | "raking" | "lightbox" | undefined;
558
+ light?: {
559
+ key?: number | undefined;
560
+ height?: number | undefined;
561
+ color?: string | undefined;
562
+ studio?: number | undefined;
563
+ exposure?: number | undefined;
564
+ film?: "agx" | "neutral" | "filmic" | undefined;
565
+ direction?: number | undefined;
566
+ ambient?: number | undefined;
567
+ haze?: number | undefined;
568
+ } | undefined;
714
569
  figure?: {
715
570
  height?: number | undefined;
716
571
  speed?: number | undefined;
@@ -723,23 +578,12 @@ declare const stageSchema: z.ZodObject<{
723
578
  } | undefined;
724
579
  source?: {
725
580
  color?: string | undefined;
726
- enabled?: boolean | undefined;
727
581
  spread?: number | undefined;
582
+ enabled?: boolean | undefined;
728
583
  zenith?: string | undefined;
729
584
  beyond?: number | undefined;
730
585
  surround?: boolean | undefined;
731
586
  } | undefined;
732
- light?: {
733
- key?: number | undefined;
734
- height?: number | undefined;
735
- color?: string | undefined;
736
- studio?: number | undefined;
737
- exposure?: number | undefined;
738
- film?: "agx" | "neutral" | "filmic" | undefined;
739
- direction?: number | undefined;
740
- ambient?: number | undefined;
741
- haze?: number | undefined;
742
- } | undefined;
743
587
  shot?: {
744
588
  height?: number | undefined;
745
589
  offset?: number | undefined;
@@ -895,6 +739,28 @@ declare const qualityNames: readonly ["auto", "low", "medium", "high"];
895
739
  type QualityName = (typeof qualityNames)[number];
896
740
  type QualityTier = Exclude<QualityName, 'auto'>;
897
741
 
742
+ /**
743
+ * Stage mode: paper as architecture, with a figure walking through it.
744
+ *
745
+ * The one guarantee worth stating — every part of the scene reads the SAME
746
+ * walk. The layout arranges along it, the figure follows it, the camera is
747
+ * stationed on it, and the source stands at the end of it. Handing those
748
+ * four their own copies of a path is the failure this component exists to
749
+ * prevent: a colonnade whose aisle the figure does not walk down is not a
750
+ * near-miss, it is a completely different picture.
751
+ */
752
+ /** A banner: tall, translucent, with folds running the length of its drop. */
753
+ /**
754
+ * The sheet a stage hangs when the caller does not name one.
755
+ *
756
+ * Exported because it is the base anyone RESHAPING a banner has to start
757
+ * from. A caller who wants a wider drop wants this stock, this grain and
758
+ * this drape with different dimensions — and rebuilding it from the schema
759
+ * defaults instead gives a sheet of printer paper with no fold in it, which
760
+ * is a different object. A second copy of these numbers in a caller is a
761
+ * copy free to drift from the one the scene actually falls back to.
762
+ */
763
+ declare const stageBanner: PaperConfigInput;
898
764
  interface PaperStageSceneProps {
899
765
  /** Walk, shot, figure, lighting — see `stageSchema`. */
900
766
  stage?: StageConfigInput;
@@ -962,16 +828,6 @@ declare function PaperStageScene({ stage: stageInput, quality, onQualityChange,
962
828
  /** `<PaperStage />` owns its Canvas; `<PaperStageScene />` drops into an existing one. */
963
829
  declare function PaperStage({ children, className, style, ...sceneProps }: PaperStageProps): react.JSX.Element;
964
830
 
965
- /**
966
- * The source's default burn, in linear light.
967
- *
968
- * Chosen by matching: at 3.4 the tone-mapped source lands on the same read
969
- * as the un-mapped plane it replaces, so a stage that never mounts a
970
- * composer looks the way it always did, and one that does gets a source
971
- * that blooms instead of a rectangle that clips.
972
- */
973
- declare const SOURCE_INTENSITY = 3.4;
974
-
975
831
  /**
976
832
  * Named stages. A mode with no presets asks its visitor to invent a space
977
833
  * out of eleven sliders before it will show them anything — and stage mode
@@ -1128,24 +984,16 @@ interface StageExportInput {
1128
984
  paper?: PaperConfigInput;
1129
985
  /** The words the space is built from. Omitted renders blank banners. */
1130
986
  text?: string;
987
+ /** Pictures on the banners, one per drop, instead of words. */
988
+ images?: string[];
1131
989
  count?: number;
1132
990
  /** Bind the walk to page scroll, pinned, rather than to the clock. */
1133
991
  scroll?: boolean;
1134
992
  /** Exported component name. */
1135
993
  componentName?: string;
1136
994
  }
1137
- /** Which named walk these points are, if any — the export reads better for it. */
1138
- declare function walkNameFor(path: StageConfig['path']): WalkName | undefined;
1139
995
  /** The stage config with defaults removed — what actually needs writing down. */
1140
996
  declare function diffStage(stage: StageConfigInput): Record<string, unknown>;
1141
- /**
1142
- * JSON.stringify, except an array of plain numbers stays on one line. A walk
1143
- * is a list of coordinate pairs, and the default pretty-printer spreads each
1144
- * `[6, 17]` over four lines — twenty lines of punctuation for one gentle
1145
- * curve. Exported code is a product surface; it should read like something a
1146
- * person wrote.
1147
- */
1148
- declare function stringifyStage(value: unknown, indent?: number): string;
1149
997
  /** The one-line visual an agent verifies after `npm run dev`. */
1150
998
  declare function describeStage(input: StageExportInput): string;
1151
999
  /** Component source shared by the JSX snippet and the agent payload. */
@@ -1153,4 +1001,4 @@ declare function buildStageComponentSource(input: StageExportInput): string;
1153
1001
  /** The self-contained stage integration brief — one paste into a coding agent. */
1154
1002
  declare function buildStageAgentPayload(input: StageExportInput): string;
1155
1003
 
1156
- export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, SOURCE_INTENSITY, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageGradeSchema, stageMotionSchema, stagePresets, stageRoomSchema, stageSchema, stageSuspensionSchema, stringifyStage, walkNameFor, walkNames, walks };
1004
+ export { type Ground, PaperStage, type PaperStageProps, PaperStageScene, type PaperStageSceneProps, type QualityName, type QualityTier, type ShotName, type ShotOptions, type StageConfig, type StageConfigInput, type StageExportInput, type StageGradeConfig, type StageMotion, type StageMotionInput, type StagePreset, type StageScale, type StageShot, type WalkName, type WalkPath, type WalkPathOptions, buildStageAgentPayload, buildStageComponentSource, createWalkPath, describeStage, diffStage, getStagePreset, getWalk, listStagePresets, qualityNames, shotNames, stageBanner, stagePresets, stageSchema, walkNames, walks };