@evatril/video-templates 2.0.12 → 2.0.14

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 (112) hide show
  1. package/package.json +1 -1
  2. package/src/Invitations/Elements/BlowingLeaves28012026.jsx +2 -2
  3. package/src/Invitations/Elements/BottomSideFrames20012026.jsx +122 -0
  4. package/src/Invitations/Elements/Butterflies20012026.jsx +4 -4
  5. package/src/Invitations/Elements/CoupleWalk20012026.jsx +2 -3
  6. package/src/Invitations/Elements/CurtainTransition20012026.jsx +79 -0
  7. package/src/Invitations/Elements/DucksFrame05022026.jsx +1 -2
  8. package/src/Invitations/Elements/{FloatingFlowersBottom.jsx → FloatingFlowersBottom05022026.jsx} +2 -3
  9. package/src/Invitations/Elements/FlowerReveal_TR_BL_28012026.jsx +2 -3
  10. package/src/Invitations/Elements/FlowersSide20012026.jsx +3 -72
  11. package/src/Invitations/Elements/GaneshBorder28012026.jsx +2 -4
  12. package/src/Invitations/Elements/GroomBrideLoveScene20012026.jsx +6 -7
  13. package/src/Invitations/Elements/HangingJumar05022026.jsx +1 -2
  14. package/src/Invitations/Elements/HangingLamp05022026.jsx +1 -2
  15. package/src/Invitations/Elements/HeartFlight28012026.jsx +1 -78
  16. package/src/Invitations/Elements/{HoldSlide.jsx → HoldSlide03022026.jsx} +1 -1
  17. package/src/Invitations/Elements/LetterReveal28012026.jsx +102 -14
  18. package/src/Invitations/Elements/OpeningGate20012026.jsx +3 -3
  19. package/src/Invitations/Elements/PageFlipTransition28012026.jsx +84 -0
  20. package/src/Invitations/Elements/SmoothReveal20012026.jsx +62 -0
  21. package/src/Invitations/Elements/WordReveal28012026.jsx +45 -7
  22. package/src/Invitations/Frames/F03022026_01.jsx +1 -1
  23. package/src/Invitations/Frames/F03022026_02.jsx +9 -10
  24. package/src/Invitations/Frames/F03022026_03.jsx +1 -1
  25. package/src/Invitations/Frames/F03022026_04.jsx +1 -1
  26. package/src/Invitations/Frames/F03022026_05.jsx +11 -8
  27. package/src/Invitations/Frames/F05022026_01.jsx +1 -2
  28. package/src/Invitations/Frames/F05022026_02.jsx +7 -14
  29. package/src/Invitations/Frames/F05022026_03.jsx +4 -5
  30. package/src/Invitations/Frames/F05022026_04.jsx +10 -14
  31. package/src/Invitations/Frames/F20012026_01.jsx +29 -136
  32. package/src/Invitations/Frames/F20012026_02.jsx +120 -110
  33. package/src/Invitations/Frames/F20012026_03.jsx +74 -194
  34. package/src/Invitations/Frames/F20012026_04.jsx +54 -123
  35. package/src/Invitations/Frames/F28012026_01.jsx +7 -8
  36. package/src/Invitations/Frames/F28012026_02.jsx +51 -53
  37. package/src/Invitations/Frames/F28012026_03.jsx +60 -61
  38. package/src/Invitations/Frames/F28012026_04.jsx +65 -70
  39. package/src/Invitations/Frames/F28012026_05.jsx +40 -11
  40. package/src/Invitations/Themes/T03022026_01.jsx +12 -17
  41. package/src/Invitations/Themes/T05022026_01.jsx +23 -19
  42. package/src/Invitations/Themes/T20012026_01.jsx +80 -67
  43. package/src/Invitations/Themes/T28012026_01.jsx +32 -25
  44. package/src/compositions.jsx +1 -1
  45. package/public/Fonts/DancingScript-VariableFont_wght.ttf +0 -0
  46. package/public/Fonts/GreatVibes-Regular.ttf +0 -0
  47. package/public/Fonts/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
  48. package/public/video-images/03022026-bg-2.webp +0 -0
  49. package/public/video-images/03022026-bg-3.webp +0 -0
  50. package/public/video-images/03022026-bg-4.webp +0 -0
  51. package/public/video-images/03022026-bg-5.webp +0 -0
  52. package/public/video-images/03022026-bg.webp +0 -0
  53. package/public/video-images/03022026-krishnaradha-2.webp +0 -0
  54. package/public/video-images/03022026-krishnaradha-4.webp +0 -0
  55. package/public/video-images/03022026-krishnaradha-5.webp +0 -0
  56. package/public/video-images/03022026-krishnaradha.webp +0 -0
  57. package/public/video-images/05022026-Duck.webp +0 -0
  58. package/public/video-images/05022026-Flower.webp +0 -0
  59. package/public/video-images/05022026-Ganesh.webp +0 -0
  60. package/public/video-images/05022026-HangingJumar.webp +0 -0
  61. package/public/video-images/05022026-HangingLamps.webp +0 -0
  62. package/public/video-images/05022026-LeftPeacock.webp +0 -0
  63. package/public/video-images/05022026-Nameplate.webp +0 -0
  64. package/public/video-images/05022026-bg-2.webp +0 -0
  65. package/public/video-images/05022026-bg-3.webp +0 -0
  66. package/public/video-images/05022026-bg-4.webp +0 -0
  67. package/public/video-images/05022026-bg.webp +0 -0
  68. package/public/video-images/20012026-bg.png +0 -0
  69. package/public/video-images/20012026-bg.webp +0 -0
  70. package/public/video-images/20012026-bride.png +0 -0
  71. package/public/video-images/20012026-bride.webp +0 -0
  72. package/public/video-images/20012026-butterfly.png +0 -0
  73. package/public/video-images/20012026-butterfly.webp +0 -0
  74. package/public/video-images/20012026-couple-walk.png +0 -0
  75. package/public/video-images/20012026-couple-walk.webp +0 -0
  76. package/public/video-images/20012026-curtain-floral.png +0 -0
  77. package/public/video-images/20012026-curtain-floral.webp +0 -0
  78. package/public/video-images/20012026-floral-left.png +0 -0
  79. package/public/video-images/20012026-floral-left.webp +0 -0
  80. package/public/video-images/20012026-floral-right.png +0 -0
  81. package/public/video-images/20012026-floral-right.webp +0 -0
  82. package/public/video-images/20012026-groom.png +0 -0
  83. package/public/video-images/20012026-groom.webp +0 -0
  84. package/public/video-images/20012026-opening-gate.png +0 -0
  85. package/public/video-images/20012026-opening-gate.webp +0 -0
  86. package/public/video-images/20012026-peacock.png +0 -0
  87. package/public/video-images/20012026-peacock.webp +0 -0
  88. package/public/video-images/20012026-tree-left.png +0 -0
  89. package/public/video-images/20012026-tree-left.webp +0 -0
  90. package/public/video-images/20012026-tree-right.png +0 -0
  91. package/public/video-images/20012026-tree-right.webp +0 -0
  92. package/public/video-images/20012026-wedding-gate.png +0 -0
  93. package/public/video-images/20012026-wedding-gate.webp +0 -0
  94. package/public/video-images/28012026-BottomLeftFlower.webp +0 -0
  95. package/public/video-images/28012026-BottomRightFlower.webp +0 -0
  96. package/public/video-images/28012026-FlowerBorder.webp +0 -0
  97. package/public/video-images/28012026-Ganesh.webp +0 -0
  98. package/public/video-images/28012026-Heart.webp +0 -0
  99. package/public/video-images/28012026-PinkLeaf.webp +0 -0
  100. package/public/video-images/28012026-TopBorder.webp +0 -0
  101. package/public/video-images/28012026-TopLeftFlower.webp +0 -0
  102. package/public/video-images/28012026-TopRightFlower.webp +0 -0
  103. package/public/video-images/28012026-bg.webp +0 -0
  104. package/public/video-images/28012026-border.webp +0 -0
  105. package/public/video-images/28012026-frame.webp +0 -0
  106. package/public/video-images/wedding.mp3 +0 -0
  107. package/public/video-images/wedding2.mp3 +0 -0
  108. package/src/Invitations/Elements/GaneshGoldenHalo.jsx +0 -90
  109. package/src/Invitations/Elements/PageFlipTransition.jsx +0 -180
  110. package/src/Invitations/Elements/PeacockDance20012026.jsx +0 -68
  111. package/src/Invitations/Elements/SideTrees20012026.jsx +0 -92
  112. package/src/Invitations/Elements/SmoothRevealFromTop20012026.jsx +0 -32
@@ -6,9 +6,9 @@ import {
6
6
  useVideoConfig,
7
7
  interpolate,
8
8
  Easing,
9
- staticFile,
10
9
  } from "remotion";
11
10
  import { WordReveal28012026 } from "../Elements/WordReveal28012026";
11
+ import { HangingJumar05022026 } from "../Elements/HangingJumar05022026";
12
12
 
13
13
  export const F28012026_05 = ({
14
14
  eventDateTime,
@@ -77,7 +77,7 @@ export const F28012026_05 = ({
77
77
  <AbsoluteFill style={{ overflow: "hidden" }}>
78
78
  {/* Background Frame */}
79
79
  <Img
80
- src={staticFile("video-images/28012026-frame.webp")}
80
+ src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-frame.webp"
81
81
  style={{
82
82
  position: "absolute",
83
83
  inset: 0,
@@ -88,6 +88,8 @@ export const F28012026_05 = ({
88
88
  opacity,
89
89
  }}
90
90
  />
91
+ <HangingJumar05022026 side="left" offset={-40} />
92
+ <HangingJumar05022026 side="right" offset={-40} />
91
93
 
92
94
  {/* Text Content */}
93
95
  <div
@@ -98,79 +100,106 @@ export const F28012026_05 = ({
98
100
  flexDirection: "column",
99
101
  justifyContent: "start",
100
102
  alignItems: "center",
101
- paddingTop: "40%",
102
- gap: 30,
103
+ paddingTop: "45%",
104
+ gap: 20,
103
105
  zIndex: 5,
104
106
  }}
105
107
  >
106
108
  <div style={textWrapper}>
107
109
  <WordReveal28012026
108
110
  text={venueName}
109
- start={frameStart + 40}
111
+ start={frameStart + 20}
110
112
  fontSize={70}
111
113
  color="#7B1E3A"
112
114
  fontFamily="Playfair Display"
115
+ letterSpacing={2}
116
+ lineHeight={1.2}
117
+ fontWeight={600}
118
+ exitDurationSec={1.5}
113
119
  />
114
120
  </div>
115
121
 
116
122
  <div style={textWrapper}>
117
123
  <WordReveal28012026
118
124
  text={venueAddress}
119
- start={frameStart + 50}
125
+ start={frameStart + 40}
120
126
  fontSize={60}
121
127
  color="#4A3A2A"
122
128
  fontFamily="Playfair Display"
129
+ letterSpacing={2}
130
+ lineHeight={1.2}
131
+ fontWeight={600}
132
+ exitDurationSec={1.5}
123
133
  />
124
134
  </div>
125
135
 
126
136
  <div style={textWrapper}>
127
137
  <WordReveal28012026
128
138
  text="On the joyous occasion"
129
- start={frameStart + 60}
139
+ start={frameStart + 50}
130
140
  fontSize={70}
131
141
  color="#6B1E2E"
132
142
  fontFamily="Dancing Script"
143
+ letterSpacing={3}
144
+ lineHeight={1.2}
145
+ fontWeight={600}
146
+ exitDurationSec={1.5}
133
147
  />
134
148
  </div>
135
149
 
136
150
  <div style={textWrapper}>
137
151
  <WordReveal28012026
138
152
  text={`${day} ${month} ${year}`}
139
- start={frameStart + 80}
153
+ start={frameStart + 60}
140
154
  fontSize={60}
141
155
  color="#8A6A3F"
142
156
  fontFamily="Great Vibes"
143
157
  letterSpacing={6}
158
+ lineHeight={1.2}
159
+ fontWeight={600}
160
+ exitDurationSec={1.5}
144
161
  />
145
162
  </div>
146
163
 
147
164
  <div style={textWrapper}>
148
165
  <WordReveal28012026
149
166
  text="Wedding Time"
150
- start={frameStart + 100}
167
+ start={frameStart + 80}
151
168
  fontSize={60}
152
169
  color="#7B1E3A"
153
170
  fontFamily="Dancing Script"
171
+ letterSpacing={2}
172
+ lineHeight={1.2}
173
+ fontWeight={600}
174
+ exitDurationSec={1.5}
154
175
  />
155
176
  </div>
156
177
 
157
178
  <div style={textWrapper}>
158
179
  <WordReveal28012026
159
180
  text={time}
160
- start={frameStart + 110}
181
+ start={frameStart + 90}
161
182
  fontSize={60}
162
183
  color="#4B3A28"
163
184
  fontFamily="Dancing Script"
185
+ letterSpacing={2}
186
+ lineHeight={1.2}
187
+ fontWeight={600}
188
+ exitDurationSec={1.5}
164
189
  />
165
190
  </div>
166
191
 
167
192
  <div style={textWrapper}>
168
193
  <WordReveal28012026
169
194
  text={familyMember}
170
- start={frameStart + 130}
195
+ start={frameStart + 110}
171
196
  fontSize={50}
172
197
  color="#B2455D"
173
198
  fontFamily="Playfair Display"
199
+ letterSpacing={2}
200
+ lineHeight={1.2}
201
+ fontWeight={600}
202
+ exitDurationSec={1.5}
174
203
  />
175
204
  </div>
176
205
  </div>
@@ -16,7 +16,7 @@ import { F03022026_02 } from "../Frames/F03022026_02.jsx";
16
16
  import { F03022026_03 } from "../Frames/F03022026_03.jsx";
17
17
  import { F03022026_04 } from "../Frames/F03022026_04.jsx";
18
18
  import { F03022026_05 } from "../Frames/F03022026_05.jsx";
19
- import { HoldSlide } from "../Elements/HoldSlide.jsx";
19
+ import { HoldSlide03022026 } from "../Elements/HoldSlide03022026.jsx";
20
20
 
21
21
  export const T03022026_01 = ({
22
22
  event,
@@ -51,7 +51,7 @@ export const T03022026_01 = ({
51
51
  const secondSceneContent = 6 * fps;
52
52
  const thirdSceneContent = 7 * fps;
53
53
  const fourSceneContent = 7 * fps;
54
- const fiveSceneContent = 9 * fps;
54
+ const fiveSceneContent = 8 * fps;
55
55
  const firstSceneDuration = firstSceneContent + slideDuration;
56
56
  const secondSceneDuration = secondSceneContent + slideDuration;
57
57
  const thirdSceneDuration = thirdSceneContent + slideDuration;
@@ -119,7 +119,7 @@ export const T03022026_01 = ({
119
119
  () => [
120
120
  `${S3_BASE}03022026-bg.webp`,
121
121
  `${S3_BASE}03022026-bg-2.webp`,
122
- `${S3_BASE}03022026-bg-3.webp`,
122
+ `${S3_BASE}03022026-bg-3.webp`,
123
123
  `${S3_BASE}03022026-bg-4.webp`,
124
124
  `${S3_BASE}03022026-bg-5.webp`,
125
125
  `${S3_BASE}03022026-krishnaradha.webp`,
@@ -169,7 +169,7 @@ export const T03022026_01 = ({
169
169
 
170
170
  {/* 🌸 SCENE 1 (0–10s) */}
171
171
  <Sequence from={0} durationInFrames={firstSceneDuration}>
172
- <HoldSlide
172
+ <HoldSlide03022026
173
173
  contentDuration={firstSceneContent}
174
174
  slideDuration={slideDuration}
175
175
  nextBg={backgrounds[1]}
@@ -177,12 +177,12 @@ export const T03022026_01 = ({
177
177
  <Page bg={backgrounds[0]}>
178
178
  <F03022026_01 />
179
179
  </Page>
180
- </HoldSlide>
180
+ </HoldSlide03022026>
181
181
  </Sequence>
182
182
 
183
183
  {/* 🌸 SCENE 2 (10–20s) */}
184
184
  <Sequence from={firstSceneDuration} durationInFrames={secondSceneDuration}>
185
- <HoldSlide
185
+ <HoldSlide03022026
186
186
  contentDuration={secondSceneContent}
187
187
  slideDuration={slideDuration}
188
188
  nextBg={backgrounds[2]}
@@ -195,7 +195,7 @@ export const T03022026_01 = ({
195
195
  occasionDate={occasionDate}
196
196
  />
197
197
  </Page>
198
- </HoldSlide>
198
+ </HoldSlide03022026>
199
199
  </Sequence>
200
200
 
201
201
  {/* 🌸 SCENE 3 (20–30s) */}
@@ -203,7 +203,7 @@ export const T03022026_01 = ({
203
203
  from={firstSceneDuration + secondSceneDuration}
204
204
  durationInFrames={thirdSceneDuration}
205
205
  >
206
- <HoldSlide
206
+ <HoldSlide03022026
207
207
  contentDuration={thirdSceneContent}
208
208
  slideDuration={slideDuration}
209
209
  nextBg={backgrounds[3]}
@@ -220,7 +220,7 @@ export const T03022026_01 = ({
220
220
  invitationMessage={invitationMessage}
221
221
  />
222
222
  </Page>
223
- </HoldSlide>
223
+ </HoldSlide03022026>
224
224
  </Sequence>
225
225
 
226
226
  {/* SCENE 4 */}
@@ -228,7 +228,7 @@ export const T03022026_01 = ({
228
228
  from={firstSceneDuration + secondSceneDuration + thirdSceneDuration}
229
229
  durationInFrames={fourSceneDuration}
230
230
  >
231
- <HoldSlide
231
+ <HoldSlide03022026
232
232
  contentDuration={fourSceneContent}
233
233
  slideDuration={slideDuration}
234
234
  nextBg={backgrounds[4]}
@@ -240,7 +240,7 @@ export const T03022026_01 = ({
240
240
  venueAddress={venueAddress}
241
241
  />
242
242
  </Page>
243
- </HoldSlide>
243
+ </HoldSlide03022026>
244
244
  </Sequence>
245
245
 
246
246
  {/* SCENE 5 */}
@@ -253,18 +253,13 @@ export const T03022026_01 = ({
253
253
  }
254
254
  durationInFrames={fiveSceneDuration}
255
255
  >
256
- <HoldSlide
257
- contentDuration={fiveSceneContent}
258
- slideDuration={slideDuration}
259
- >
260
256
  <Page bg={backgrounds[4]}>
261
257
  <F03022026_05 familyMember={familyMember} />
262
258
  </Page>
263
- </HoldSlide>
264
259
  </Sequence>
265
260
 
266
261
  </AbsoluteFill>
267
262
  );
268
263
  };
269
264
 
270
- T03022026_01.duration = 30 * 38;
265
+ T03022026_01.duration = (5 + 6 + 7 + 7 + 8) * 30 + 5 * (1 * 30);
@@ -3,7 +3,6 @@ import {
3
3
  Sequence,
4
4
  useVideoConfig,
5
5
  Audio,
6
- staticFile,
7
6
  AbsoluteFill,
8
7
  Img,
9
8
  useCurrentFrame,
@@ -119,20 +118,24 @@ export const T05022026_01 = ({
119
118
 
120
119
  /* ---------------- PRELOAD IMAGES ---------------- */
121
120
 
121
+ const S3_BASE = "https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/";
122
122
  const imagesToPreload = useMemo(
123
123
  () => [
124
- staticFile("video-images/05022026-bg.webp"),
125
- staticFile("video-images/05022026-bg-2.webp"),
126
- staticFile("video-images/05022026-bg-3.webp"),
127
- staticFile("video-images/05022026-bg-4.webp"),
128
- staticFile("video-images/05022026-Duck.webp"),
129
- staticFile("video-images/05022026-HangingLamps.webp"),
130
- staticFile("video-images/05022026-Ganesh.webp"),
131
- staticFile("video-images/05022026-Flower.webp"),
132
- staticFile("video-images/20012026-couple-walk.webp"),
133
- staticFile("video-images/05022026-HangingJumar.webp"),
134
- staticFile("video-images/05022026-Nameplate.webp"),
135
- staticFile("video-images/05022026-LeftPeacock.webp"),
124
+ `${S3_BASE}05022026-bg.webp`,
125
+ `${S3_BASE}05022026-bg-2.webp`,
126
+ `${S3_BASE}05022026-bg-3.webp`,
127
+ `${S3_BASE}05022026-bg-4.webp`,
128
+
129
+ `${S3_BASE}05022026-Duck.webp`,
130
+ `${S3_BASE}05022026-HangingLamps.webp`,
131
+ `${S3_BASE}05022026-Ganesh.webp`,
132
+
133
+ `${S3_BASE}05022026-HangingJumar.webp`,
134
+ `${S3_BASE}05022026-Flower.webp`,
135
+ `${S3_BASE}20012026-couple-walk.webp`,
136
+
137
+ `${S3_BASE}05022026-Nameplate.webp`,
138
+ `${S3_BASE}05022026-LeftPeacock.webp`,
136
139
  ],
137
140
  []
138
141
  );
@@ -157,10 +160,10 @@ export const T05022026_01 = ({
157
160
 
158
161
  const backgrounds = useMemo(
159
162
  () => [
160
- staticFile("video-images/05022026-bg.webp"),
161
- staticFile("video-images/05022026-bg-2.webp"),
162
- staticFile("video-images/05022026-bg-3.webp"),
163
- staticFile("video-images/05022026-bg-4.webp"),
163
+ `${S3_BASE}05022026-bg.webp`,
164
+ `${S3_BASE}05022026-bg-2.webp`,
165
+ `${S3_BASE}05022026-bg-3.webp`,
166
+ `${S3_BASE}05022026-bg-4.webp`,
164
167
  ],
165
168
  []
166
169
  );
@@ -168,7 +171,8 @@ export const T05022026_01 = ({
168
171
  return (
169
172
  <AbsoluteFill>
170
173
  <Audio
171
- src={staticFile("video-images/wedding2.mp3")} volume={musicVolume}
174
+ src={`${S3_BASE}wedding2.mp3`}
175
+ volume={musicVolume}
172
176
  />
173
177
 
174
178
  {/* SCENE 1 */}
@@ -256,4 +260,4 @@ export const T05022026_01 = ({
256
260
  );
257
261
  };
258
262
 
259
- T05022026_01.duration = 30 * 30;
263
+ T05022026_01.duration = (7 + 7 + 7 + 9) * 30;
@@ -3,7 +3,6 @@ import {
3
3
  Sequence,
4
4
  useVideoConfig,
5
5
  Audio,
6
- staticFile,
7
6
  AbsoluteFill,
8
7
  useCurrentFrame,
9
8
  Img,
@@ -15,8 +14,8 @@ import { F20012026_01 } from "../Frames/F20012026_01.jsx";
15
14
  import { F20012026_02 } from "../Frames/F20012026_02.jsx";
16
15
  import { F20012026_03 } from "../Frames/F20012026_03.jsx";
17
16
  import { F20012026_04 } from "../Frames/F20012026_04.jsx";
18
- import { InkSmokeTransition20012026 } from "../Elements/InkSmokeTransition20012026.jsx";
19
17
  import { usePreloadImages } from "../hooks/usePreloadImages.js";
18
+ import { CurtainTransition20012026 } from "../Elements/CurtainTransition20012026.jsx";
20
19
 
21
20
  export const T20012026_01 = ({
22
21
  event,
@@ -46,11 +45,25 @@ export const T20012026_01 = ({
46
45
  );
47
46
 
48
47
  // 🎬 Change timing here
49
- const scene1Duration = 8 * fps;
50
- const scene2Duration = 10 * fps;
51
- const scene3Duration = 12 * fps;
48
+ const scene1Duration = 5 * fps;
49
+ const scene2Duration = 8 * fps;
50
+ const scene3Duration = 5 * fps;
51
+ const scene4Duration = 10 * fps;
52
+ const curtainDuration = 1.5 * fps;
52
53
 
53
- const transitionDuration = 1 * fps;
54
+ /* ---------------- TIMELINE CALCULATION ---------------- */
55
+
56
+ const s1Start = 0;
57
+ const s1End = s1Start + scene1Duration;
58
+
59
+ const s2Start = s1End + curtainDuration;
60
+ const s2End = s2Start + scene2Duration;
61
+
62
+ const s3Start = s2End + curtainDuration;
63
+ const s3End = s3Start + scene3Duration;
64
+
65
+ const s4Start = s3End + curtainDuration;
66
+ const s4End = s4Start + scene4Duration;
54
67
 
55
68
  /* ---------------- SAFE DATA ---------------- */
56
69
 
@@ -106,25 +119,36 @@ export const T20012026_01 = ({
106
119
  const venueAddress =
107
120
  venue?.address || formData?.venue_address || "";
108
121
 
122
+ /* ---------------- PRELOAD IMAGES ---------------- */
123
+ const S3_BASE = "https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/";
124
+
109
125
  /* ---------------- PRELOAD IMAGES ---------------- */
110
126
 
111
127
  const imagesToPreload = useMemo(
112
128
  () => [
113
- staticFile("video-images/20012026-bg.webp"),
114
- staticFile("video-images/20012026-bride.webp"),
115
- staticFile("video-images/20012026-butterfly.webp"),
116
- staticFile("video-images/20012026-couple-walk.webp"),
117
- staticFile("video-images/20012026-curtain-floral.webp"),
118
- staticFile("video-images/20012026-floral-left.webp"),
119
- staticFile("video-images/20012026-floral-right.webp"),
120
- staticFile("video-images/05022026-Flower.webp"),
121
- staticFile("video-images/20012026-groom.webp"),
122
- staticFile("video-images/28012026-Heart.webp"),
123
- staticFile("video-images/20012026-opening-gate.webp"),
124
- staticFile("video-images/20012026-peacock.webp"),
125
- staticFile("video-images/20012026-tree-left.webp"),
126
- staticFile("video-images/20012026-tree-right.webp"),
127
- staticFile("video-images/20012026-wedding-gate.webp"),
129
+ `${S3_BASE}20012026-bg.webp`,
130
+ `${S3_BASE}20012026-bg-2.webp`,
131
+ `${S3_BASE}20012026-bg-3.webp`,
132
+ `${S3_BASE}20012026-bg-4.webp`,
133
+
134
+ `${S3_BASE}20012026-opening-gate.webp`,
135
+ `${S3_BASE}20012026-butterfly.webp`,
136
+ `${S3_BASE}20012026-couple-walk.webp`,
137
+ `${S3_BASE}20012026-floral-left.webp`,
138
+ `${S3_BASE}20012026-floral-right.webp`,
139
+
140
+ `${S3_BASE}20012026-Curtain.webp`,
141
+
142
+ `${S3_BASE}20012026-peacock.webp`,
143
+ `${S3_BASE}05022026-HangingLamps.webp`,
144
+
145
+ `${S3_BASE}20012026-LeftFrame.webp`,
146
+ `${S3_BASE}20012026-RightFrame.webp`,
147
+ `${S3_BASE}05022026-HangingJumar.webp`,
148
+
149
+ `${S3_BASE}20012026-groom.webp`,
150
+ `${S3_BASE}20012026-bride.webp`,
151
+ `${S3_BASE}28012026-Heart.webp`,
128
152
  ],
129
153
  []
130
154
  );
@@ -140,7 +164,7 @@ export const T20012026_01 = ({
140
164
  inset: 0,
141
165
  width: "100%",
142
166
  height: "100%",
143
- objectFit: "cover",
167
+ objectFit: "cover",
144
168
  }}
145
169
  />
146
170
  {children}
@@ -149,10 +173,12 @@ export const T20012026_01 = ({
149
173
 
150
174
  const backgrounds = useMemo(
151
175
  () => [
152
- staticFile("video-images/20012026-bg.webp"),
153
- staticFile("video-images/20012026-bg-3.png"),
176
+ `${S3_BASE}20012026-bg.webp`,
177
+ `${S3_BASE}20012026-bg-2.webp`,
178
+ `${S3_BASE}20012026-bg-3.webp`,
179
+ `${S3_BASE}20012026-bg-4.webp`,
154
180
  ],
155
- []
181
+ [S3_BASE]
156
182
  );
157
183
 
158
184
  return (
@@ -160,12 +186,12 @@ export const T20012026_01 = ({
160
186
 
161
187
  {/* 🎵 MUSIC */}
162
188
  <Audio
163
- src={staticFile("video-images/wedding.mp3")}
189
+ src={`${S3_BASE}wedding2.mp3`}
164
190
  volume={musicVolume}
165
191
  />
166
192
 
167
193
  {/* ================= SCENE 1 ================= */}
168
- <Sequence from={0} durationInFrames={scene1Duration}>
194
+ <Sequence from={s1Start} durationInFrames={scene1Duration + curtainDuration}>
169
195
  <Page bg={backgrounds[0]}>
170
196
  <F20012026_01
171
197
  firstName={firstName}
@@ -175,21 +201,17 @@ export const T20012026_01 = ({
175
201
  </Page>
176
202
  </Sequence>
177
203
 
178
- {/* ☁️ TRANSITION 1 */}
179
- <Sequence
180
- from={scene1Duration}
181
- durationInFrames={transitionDuration}
182
- >
183
- <Page bg={backgrounds[1]}>
184
- <InkSmokeTransition20012026 />
185
- </Page>
204
+ {/* CURTAIN 1 */}
205
+ <Sequence from={s1End} durationInFrames={curtainDuration}>
206
+ <CurtainTransition20012026 mode="close" />
207
+ </Sequence>
208
+
209
+ <Sequence from={s2Start} durationInFrames={curtainDuration}>
210
+ <CurtainTransition20012026 mode="open" />
186
211
  </Sequence>
187
212
 
188
213
  {/* ================= SCENE 2 ================= */}
189
- <Sequence
190
- from={scene1Duration + transitionDuration}
191
- durationInFrames={scene2Duration}
192
- >
214
+ <Sequence from={s2Start} durationInFrames={scene2Duration + curtainDuration}>
193
215
  <Page bg={backgrounds[1]}>
194
216
  <F20012026_02
195
217
  firstName={firstName}
@@ -198,27 +220,22 @@ export const T20012026_01 = ({
198
220
  secondSideNote={secondSideNote}
199
221
  invitationMessage={invitationMessage}
200
222
  occasionDate={occasionDate}
201
- fadeInDuration={transitionDuration}
202
223
  />
203
224
  </Page>
204
225
  </Sequence>
205
226
 
206
- {/* ☁️ TRANSITION 2 */}
207
- <Sequence
208
- from={scene1Duration + transitionDuration + scene2Duration}
209
- durationInFrames={transitionDuration}
210
- >
211
- <Page bg={backgrounds[1]}>
212
- <InkSmokeTransition20012026 />
213
- </Page>
227
+ {/* ☁️ CURTAIN 2 */}
228
+ <Sequence from={s2End} durationInFrames={curtainDuration}>
229
+ <CurtainTransition20012026 mode="close" />
230
+ </Sequence>
231
+
232
+ <Sequence from={s3Start} durationInFrames={curtainDuration}>
233
+ <CurtainTransition20012026 mode="open" />
214
234
  </Sequence>
215
235
 
216
236
  {/* ================= SCENE 3 ================= */}
217
- <Sequence
218
- from={scene1Duration + transitionDuration + scene2Duration + transitionDuration}
219
- durationInFrames={scene3Duration}
220
- >
221
- <Page bg={backgrounds[0]}>
237
+ <Sequence from={s3Start} durationInFrames={scene3Duration + curtainDuration}>
238
+ <Page bg={backgrounds[2]}>
222
239
  <F20012026_03
223
240
  firstName={firstName}
224
241
  firstPhoto={firstPhoto}
@@ -228,22 +245,18 @@ export const T20012026_01 = ({
228
245
  </Page>
229
246
  </Sequence>
230
247
 
231
- {/* ☁️ TRANSITION 3 */}
232
- <Sequence
233
- from={scene1Duration + transitionDuration + scene2Duration}
234
- durationInFrames={transitionDuration}
235
- >
236
- <Page bg={backgrounds[1]}>
237
- <InkSmokeTransition20012026 />
238
- </Page>
248
+ {/* ☁️ CURTAIN 3 */}
249
+ <Sequence from={s3End} durationInFrames={curtainDuration}>
250
+ <CurtainTransition20012026 mode="close" />
251
+ </Sequence>
252
+
253
+ <Sequence from={s4Start} durationInFrames={curtainDuration}>
254
+ <CurtainTransition20012026 mode="open" />
239
255
  </Sequence>
240
256
 
241
257
  {/* ================= SCENE 4================= */}
242
- <Sequence
243
- from={scene1Duration + transitionDuration + scene2Duration + transitionDuration}
244
- durationInFrames={scene3Duration}
245
- >
246
- <Page bg={backgrounds[0]}>
258
+ <Sequence from={s4Start} durationInFrames={scene4Duration}>
259
+ <Page bg={backgrounds[3]}>
247
260
  <F20012026_04
248
261
  eventDateTime={eventDateTime}
249
262
  venueName={venueName}
@@ -257,4 +270,4 @@ export const T20012026_01 = ({
257
270
  );
258
271
  };
259
272
 
260
- T20012026_01.duration = 30 * 40;
273
+ T20012026_01.duration = (5 + 8 + 5 + 10) * 30 + 3 * (1.5 * 30);