@evatril/video-templates 2.0.6 → 2.0.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evatril/video-templates",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "remotion": {
Binary file
@@ -58,18 +58,6 @@ export const F20012026_01 = ({
58
58
  const groomAnim = reveal(groomStart);
59
59
  return (
60
60
  <AbsoluteFill style={{ overflow: "hidden" }}>
61
-
62
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
63
- {/* ================= BACKGROUND ================= */}
64
- <Img
65
- src={staticFile("video-images/20012026-bg.png")}
66
- style={{
67
- position: "absolute",
68
- width: "100%",
69
- height: "100%",
70
- objectFit: "cover",
71
- }}
72
- />
73
61
 
74
62
  {/* ================= VISUAL LAYERS ================= */}
75
63
  <Butterflies20012026 frame={frame} fps={fps} width={width} height={height} />
@@ -13,24 +13,19 @@ import { SideTrees20012026 } from "../Elements/SideTrees20012026.jsx";
13
13
  import { PeacockDance20012026 } from "../Elements/PeacockDance20012026.jsx";
14
14
  import { SmoothRevealFromTop } from "../Elements/SmoothRevealFromTop.jsx";
15
15
 
16
- export const F20012026_02 = ({ firstName, secondName, firstSideNote, secondSideNote, invitationMessage, occasionDate, fadeInDuration = 30,
16
+ export const F20012026_02 = ({
17
+ firstName,
18
+ secondName,
19
+ firstSideNote,
20
+ secondSideNote,
21
+ invitationMessage,
22
+ occasionDate,
23
+ fadeInDuration = 30,
17
24
  }) => {
18
25
  const frame = useCurrentFrame();
19
26
  const { fps } = useVideoConfig();
20
27
 
21
- /* ================= SCENE FADE + ZOOM ================= */
22
- // 🎥 VERY SMOOTH CINEMATIC ZOOM
23
- const sceneScale = interpolate(
24
- frame,
25
- [0, fadeInDuration * 2],
26
- [1.20, 1],
27
- {
28
- extrapolateRight: "clamp",
29
- easing: Easing.out(Easing.cubic),
30
- }
31
- );
32
-
33
- /* ================= SAFE DATE FORMAT ================= */
28
+ /* ================= DATE FORMAT ================= */
34
29
  const formatDate = (date) => {
35
30
  if (!date) return "";
36
31
  const d = new Date(date);
@@ -43,261 +38,167 @@ export const F20012026_02 = ({ firstName, secondName, firstSideNote, secondSideN
43
38
  });
44
39
  };
45
40
 
46
-
47
41
  const DETAILS_START = fps * 3;
48
42
 
49
- /* ================= IMAGE ANIMATION ================= */
50
- const showImageAfter = fadeInDuration * 1;
43
+ /* ================= CURTAIN ANIMATION ================= */
44
+
45
+ const showImageAfter = fadeInDuration;
51
46
 
52
47
  const imageOpacity = interpolate(
53
48
  frame,
54
49
  [showImageAfter, showImageAfter + fps],
55
50
  [0, 1],
56
- {
57
- extrapolateRight: "clamp",
58
- easing: Easing.out(Easing.ease),
59
- }
51
+ { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
60
52
  );
61
53
 
62
54
  const imageScale = interpolate(
63
55
  frame,
64
56
  [showImageAfter, showImageAfter + fps],
65
57
  [0.92, 1],
66
- {
67
- extrapolateRight: "clamp",
68
- easing: Easing.out(Easing.ease),
69
- }
58
+ { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
70
59
  );
71
60
 
72
61
  return (
73
- <AbsoluteFill>
74
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
75
- <AbsoluteFill
62
+ <AbsoluteFill
63
+ style={{
64
+ overflow: "hidden",
65
+ willChange: "transform",
66
+ }}
67
+ >
68
+ {/* Curtain */}
69
+ <Img
70
+ src={staticFile("video-images/20012026-curtain-floral.png")}
76
71
  style={{
77
- transform: `scale(${sceneScale})`,
78
- transformOrigin: "center center",
79
- overflow: "hidden",
72
+ position: "absolute",
73
+ left: "50%",
74
+ width: "100%",
75
+ opacity: imageOpacity,
76
+ transform: `translateX(-50%) scale(${imageScale})`,
77
+ willChange: "transform, opacity",
78
+ }}
79
+ />
80
+
81
+ {/* Decorations */}
82
+ <SideTrees20012026 startAfter={2} />
83
+ <PeacockDance20012026 startAfter={3} />
80
84
 
85
+ {/* Content */}
86
+ <div
87
+ style={{
88
+ position: "relative",
89
+ top: "26%",
90
+ width: "100%",
91
+ display: "flex",
92
+ flexDirection: "column",
93
+ alignItems: "center",
94
+ textAlign: "center",
95
+ gap: 15,
81
96
  }}
82
97
  >
83
- {/* ================= BACKGROUND ================= */}
84
- <Img
85
- src={staticFile("video-images/20012026-bg.png")}
98
+ {/* Invitation */}
99
+ <div
86
100
  style={{
87
- position: "absolute",
88
- width: "100%",
89
- height: "100%",
90
- objectFit: "cover",
101
+ maxWidth: "50%",
102
+ fontFamily: "Dancing Script",
103
+ color: "#4A3A2A",
104
+ fontSize: 40,
105
+ letterSpacing: 2,
106
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 0 }),
91
107
  }}
92
- />
108
+ >
109
+ {invitationMessage}
110
+ </div>
93
111
 
94
- <Img
95
- src={staticFile("video-images/20012026-curtain-floral.png")}
112
+ <h1
96
113
  style={{
97
- position: "absolute",
98
- left: "50%",
99
- width: "100%",
100
- opacity: imageOpacity,
101
- transform: `translateX(-50%) scale(${imageScale})`,
114
+ maxWidth: "70%",
115
+ fontFamily: "Playfair Display",
116
+ color: "#7A1E2E",
117
+ fontSize: 60,
118
+ letterSpacing: 3,
119
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 25 }),
102
120
  }}
103
- />
104
-
105
- {/* ================= DECORATIONS ================= */}
106
- <SideTrees20012026 startAfter={2} />
107
- <PeacockDance20012026 startAfter={3} />
121
+ >
122
+ {firstName}
123
+ </h1>
108
124
 
109
125
  <div
110
126
  style={{
111
- position: "relative",
112
- top: "26%",
113
- width: "100%",
114
- display: "flex",
115
- flexDirection: "column",
116
- alignItems: "center",
117
- textAlign: "center",
118
- gap: "15px"
127
+ fontFamily: "Dancing Script",
128
+ color: "#B87A6A",
129
+ fontSize: 35,
130
+ maxWidth:"70%",
131
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 50 }),
119
132
  }}
120
133
  >
121
- {/* Invitation Message */}
122
- <div
123
- style={{
124
- maxWidth: "50%",
125
- fontFamily: "Dancing Script",
126
- color: "#4A3A2A",
127
- fontSize: 40,
128
- fontWeight: "500",
129
- lineHeight: 1.2,
130
- letterSpacing: "2px",
131
- ...SmoothRevealFromTop({
132
- frame,
133
- startFrame: DETAILS_START,
134
- delay: 0,
135
- })
136
- }}
137
- >
138
- {invitationMessage}
139
- </div>
140
-
141
- {/* Bride Name */}
142
- <h1
143
- style={{
144
- maxWidth: "70%",
145
- fontFamily: "Playfair Display",
146
- color: "#7A1E2E",
147
- fontSize: 60,
148
- fontWeight: "600",
149
- lineHeight: 1.2,
150
- letterSpacing: "3px",
151
- whiteSpace: "normal",
152
- wordBreak: "break-word",
153
- overflowWrap: "break-word",
154
- ...SmoothRevealFromTop({
155
- frame,
156
- startFrame: DETAILS_START,
157
- delay: 25,
158
- })
159
- }}
160
- >
161
- {firstName}
162
- </h1>
163
-
164
- {/* Bride Side Note */}
165
- <div
166
- style={{
167
- maxWidth: "60%",
168
- fontFamily: "Dancing Script",
169
- color: "#B87A6A",
170
- fontSize: 40,
171
- fontWeight: "600",
172
- lineHeight: 1.2,
173
- letterSpacing: "2px",
174
- whiteSpace: "normal",
175
- wordBreak: "break-word",
176
- overflowWrap: "break-word",
177
- ...SmoothRevealFromTop({
178
- frame,
179
- startFrame: DETAILS_START,
180
- delay: 50,
181
- })
182
- }}
183
- >
184
- {firstSideNote}
185
- </div>
134
+ {firstSideNote}
135
+ </div>
186
136
 
187
- {/* & Symbol */}
188
- <div
189
- style={{
190
- fontSize: 40,
191
- color: "#C9A24D",
192
- letterSpacing: "6px",
193
- ...SmoothRevealFromTop({
194
- frame,
195
- startFrame: DETAILS_START,
196
- delay: 70,
197
- })
198
- }}
199
- >
200
- ❁ ❁ ❁
201
- </div>
137
+ <div
138
+ style={{
139
+ fontSize: 40,
140
+ color: "#C9A24D",
141
+ letterSpacing: 6,
142
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 70 }),
143
+ }}
144
+ >
145
+ ❁ ❁
146
+ </div>
202
147
 
148
+ <h1
149
+ style={{
150
+ maxWidth: "70%",
151
+ fontFamily: "Playfair Display",
152
+ color: "#7A1E2E",
153
+ fontSize: 60,
154
+ letterSpacing: 3,
155
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 95 }),
156
+ }}
157
+ >
158
+ {secondName}
159
+ </h1>
203
160
 
204
- {/* Groom Name */}
205
- <h1
206
- style={{
207
- maxWidth: "70%",
208
- fontFamily: "Playfair Display",
209
- color: "#7A1E2E",
210
- fontSize: 60,
211
- fontWeight: "600",
212
- lineHeight: 1.2,
213
- letterSpacing: "3px",
214
- whiteSpace: "normal",
215
- wordBreak: "break-word",
216
- overflowWrap: "break-word",
217
- ...SmoothRevealFromTop({
218
- frame,
219
- startFrame: DETAILS_START,
220
- delay: 95,
221
- })
222
- }}
223
- >
224
- {secondName}
225
- </h1>
161
+ <div
162
+ style={{
163
+ fontFamily: "Dancing Script",
164
+ color: "#B87A6A",
165
+ fontSize: 35,
166
+ maxWidth:"70%",
167
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 120 }),
168
+ }}
169
+ >
170
+ {secondSideNote}
171
+ </div>
226
172
 
227
- {/* Groom Side Note */}
173
+ <div
174
+ style={{
175
+ textAlign: "center",
176
+ ...SmoothRevealFromTop({ frame, startFrame: DETAILS_START, delay: 145 }),
177
+ }}
178
+ >
228
179
  <div
229
180
  style={{
230
- maxWidth: "70%",
231
- fontFamily: "Dancing Script",
232
- color: "#B87A6A",
233
181
  fontSize: 40,
234
- fontWeight: "600",
235
- lineHeight: 1.2,
236
- letterSpacing: "2px",
237
- whiteSpace: "normal",
238
- wordBreak: "break-word",
239
- overflowWrap: "break-word",
240
- ...SmoothRevealFromTop({
241
- frame,
242
- startFrame: DETAILS_START,
243
- delay: 120,
244
- })
182
+ fontWeight:"400",
183
+ fontFamily: "Great Vibes",
184
+ color: "#2F6B4F",
245
185
  }}
246
186
  >
247
- {secondSideNote}
187
+ – Join us on this auspicious day –
248
188
  </div>
249
189
 
250
- {/* Date */}
251
190
  <div
252
191
  style={{
253
- maxWidth: "70%",
254
- marginTop: 20,
255
- textAlign: "center",
256
- ...SmoothRevealFromTop({
257
- frame,
258
- startFrame: DETAILS_START,
259
- delay: 145,
260
- })
192
+ fontSize: 50,
193
+ fontFamily: "Playfair Display",
194
+ color: "#5A4632",
195
+ letterSpacing: 4,
261
196
  }}
262
197
  >
263
- {/* -------- Message Line -------- */}
264
- <div
265
- style={{
266
- fontSize: 45,
267
- fontFamily: "Great Vibes",
268
- fontWeight: "500",
269
- letterSpacing: "3px",
270
- color: "#2F6B4F",
271
- lineHeight: 1.2,
272
- marginBottom: 8,
273
- whiteSpace: "nowrap",
274
-
275
- }}
276
- >
277
- – Join us on this auspicious day –
278
- </div>
279
-
280
- {/* -------- Date Line -------- */}
281
- <div
282
- style={{
283
- fontSize: 55,
284
- fontFamily: "Playfair Display",
285
- fontWeight: "400",
286
- color: "#5A4632",
287
- lineHeight: 1.2,
288
- letterSpacing: "4px",
289
- whiteSpace: "nowrap", // 🔥 force single line
290
- }}
291
- >
292
- {formatDate(occasionDate)}
293
- </div>
198
+ {formatDate(occasionDate)}
294
199
  </div>
295
-
296
-
297
200
  </div>
298
-
299
-
300
- </AbsoluteFill>
201
+ </div>
301
202
  </AbsoluteFill>
302
203
  );
303
204
  };
@@ -10,7 +10,7 @@ import {
10
10
  } from "remotion";
11
11
 
12
12
  import { GroomBrideLoveScene20012026 } from "../Elements/GroomBrideLoveScene20012026.jsx";
13
- import{ SmoothRevealFromTop} from "../Elements/SmoothRevealFromTop.jsx"
13
+ import { SmoothRevealFromTop } from "../Elements/SmoothRevealFromTop.jsx"
14
14
 
15
15
  export const F20012026_03 = ({
16
16
  eventDateTime,
@@ -22,18 +22,6 @@ export const F20012026_03 = ({
22
22
  const frame = useCurrentFrame();
23
23
  const { fps } = useVideoConfig();
24
24
 
25
- /* ================= SCENE REVEAL (SMOKE FOLLOW-UP) ================= */
26
- // 🎥 VERY SMOOTH CINEMATIC ZOOM
27
- const sceneScale = interpolate(
28
- frame,
29
- [0, fadeInDuration * 2],
30
- [1.20, 1],
31
- {
32
- extrapolateRight: "clamp",
33
- easing: Easing.out(Easing.cubic),
34
- }
35
- );
36
-
37
25
  /* ---------------- DATE UTILS ---------------- */
38
26
  const getDateParts = (iso) => {
39
27
  if (!iso) return { day: "", month: "", year: "", time: "" };
@@ -58,7 +46,7 @@ export const F20012026_03 = ({
58
46
  const { day, month, year, time } = getDateParts(eventDateTime);
59
47
 
60
48
  const DETAILS_START = fps * 4;
61
-
49
+
62
50
  /* ================= IMAGE ANIMATION ================= */
63
51
  const showImageAfter = fadeInDuration * 2;
64
52
 
@@ -92,26 +80,12 @@ export const F20012026_03 = ({
92
80
  );
93
81
 
94
82
  return (
95
- <AbsoluteFill>
96
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
97
83
  <AbsoluteFill
98
84
  style={{
99
- transform: `scale(${sceneScale})`,
100
85
  transformOrigin: "center center",
101
86
  overflow: "hidden",
102
87
  }}
103
88
  >
104
- {/* ================= BACKGROUND ================= */}
105
- <Img
106
- src={staticFile("video-images/20012026-bg.png")}
107
- style={{
108
- position: "absolute",
109
- width: "100%",
110
- height: "100%",
111
- objectFit: "cover",
112
-
113
- }}
114
- />
115
89
  <Img
116
90
  src={staticFile("video-images/20012026-wedding-gate.png")}
117
91
  style={{
@@ -200,10 +174,10 @@ export const F20012026_03 = ({
200
174
  wordBreak: "break-word",
201
175
  overflowWrap: "break-word",
202
176
  ...SmoothRevealFromTop({
203
- frame,
204
- startFrame: DETAILS_START,
205
- delay: 50,
206
- })
177
+ frame,
178
+ startFrame: DETAILS_START,
179
+ delay: 50,
180
+ })
207
181
 
208
182
  }}
209
183
  >
@@ -223,11 +197,11 @@ export const F20012026_03 = ({
223
197
  whiteSpace: "normal",
224
198
  wordBreak: "break-word",
225
199
  overflowWrap: "break-word",
226
- ...SmoothRevealFromTop({
227
- frame,
228
- startFrame: DETAILS_START,
229
- delay: 70,
230
- })
200
+ ...SmoothRevealFromTop({
201
+ frame,
202
+ startFrame: DETAILS_START,
203
+ delay: 70,
204
+ })
231
205
 
232
206
  }}
233
207
  >
@@ -247,10 +221,10 @@ export const F20012026_03 = ({
247
221
  wordBreak: "break-word",
248
222
  overflowWrap: "break-word",
249
223
  ...SmoothRevealFromTop({
250
- frame,
251
- startFrame: DETAILS_START,
252
- delay: 95,
253
- })
224
+ frame,
225
+ startFrame: DETAILS_START,
226
+ delay: 95,
227
+ })
254
228
 
255
229
  }}
256
230
  >
@@ -268,10 +242,10 @@ export const F20012026_03 = ({
268
242
  wordBreak: "break-word",
269
243
  overflowWrap: "break-word",
270
244
  ...SmoothRevealFromTop({
271
- frame,
272
- startFrame: DETAILS_START,
273
- delay: 115,
274
- })
245
+ frame,
246
+ startFrame: DETAILS_START,
247
+ delay: 115,
248
+ })
275
249
 
276
250
  }}
277
251
  >
@@ -292,10 +266,10 @@ export const F20012026_03 = ({
292
266
  wordBreak: "break-word",
293
267
  overflowWrap: "break-word",
294
268
  ...SmoothRevealFromTop({
295
- frame,
296
- startFrame: DETAILS_START,
297
- delay: 125,
298
- })
269
+ frame,
270
+ startFrame: DETAILS_START,
271
+ delay: 125,
272
+ })
299
273
 
300
274
  }}
301
275
  >
@@ -304,7 +278,5 @@ export const F20012026_03 = ({
304
278
  </div>
305
279
 
306
280
  </AbsoluteFill>
307
-
308
- </AbsoluteFill>
309
281
  );
310
282
  };
@@ -5,6 +5,8 @@ import {
5
5
  Audio,
6
6
  staticFile,
7
7
  AbsoluteFill,
8
+ useCurrentFrame,
9
+ Img,
8
10
  } from "remotion";
9
11
 
10
12
  import { F20012026_01 } from "../Frames/F20012026_01.jsx";
@@ -24,6 +26,7 @@ export const T20012026_01 = ({
24
26
  familyMember,
25
27
  }) => {
26
28
  const { durationInFrames } = useVideoConfig();
29
+ const frame = useCurrentFrame();
27
30
 
28
31
  /* ---------------- SAFE DATA ---------------- */
29
32
 
@@ -96,60 +99,81 @@ export const T20012026_01 = ({
96
99
  return (
97
100
  <AbsoluteFill>
98
101
 
99
- {/* 🔒 GLOBAL BACKGROUND (never unmounts) */}
100
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
101
-
102
102
  {/* 🎵 MUSIC */}
103
103
  <Audio
104
104
  src={staticFile("video-images/wedding.mp3")}
105
- startFrom={30}
106
- endAt={900}
105
+ startFrom={0}
106
+ endAt={durationInFrames}
107
107
  volume={0.4}
108
108
  />
109
109
 
110
- {/* -------- SCENE 1 -------- */}
110
+
111
+ {/* ================= SCENE 1 ================= */}
111
112
  <Sequence from={0} durationInFrames={framesPerPage + 2}>
112
- <F20012026_01
113
- firstName={firstName}
114
- secondName={secondName}
115
- welcomeMessage={welcomeMessage}
116
- eventDateTime={eventDateTime}
117
- />
113
+ <>
114
+ <Img
115
+ src={staticFile("video-images/20012026-bg.png")}
116
+ style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
117
+ />
118
+ <F20012026_01
119
+ firstName={firstName}
120
+ secondName={secondName}
121
+ welcomeMessage={welcomeMessage}
122
+ />
123
+ </>
118
124
  </Sequence>
119
125
 
120
- {/* -------- SCENE 2 -------- */}
126
+ {/* ================= SCENE 2 ================= */}
121
127
  <Sequence from={framesPerPage - 2} durationInFrames={framesPerPage + 2}>
122
- <F20012026_02
123
- firstName={firstName}
124
- secondName={secondName}
125
- firstSideNote={firstSideNote}
126
- secondSideNote={secondSideNote}
127
- invitationMessage={invitationMessage}
128
- occasionDate={occasionDate}
129
- fadeInDuration={transitionDuration}
130
- />
128
+ <>
129
+ <Img
130
+ src={staticFile("video-images/20012026-bg.png")}
131
+ style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
132
+ />
133
+ <F20012026_02
134
+ firstName={firstName}
135
+ secondName={secondName}
136
+ firstSideNote={firstSideNote}
137
+ secondSideNote={secondSideNote}
138
+ invitationMessage={invitationMessage}
139
+ occasionDate={occasionDate}
140
+ fadeInDuration={transitionDuration}
141
+ />
142
+ </>
131
143
  </Sequence>
132
144
 
133
145
  {/* ☁️ TRANSITION 1 → 2 */}
134
- <Sequence from={framesPerPage - 2} durationInFrames={transitionDuration + 2}>
146
+ <Sequence
147
+ from={framesPerPage - 2}
148
+ durationInFrames={transitionDuration + 2}
149
+ >
135
150
  <InkSmokeTransition20012026 />
136
151
  </Sequence>
137
152
 
138
- {/* -------- SCENE 3 -------- */}
153
+ {/* ================= SCENE 3 ================= */}
139
154
  <Sequence from={framesPerPage * 2 - 2} durationInFrames={framesPerPage + 2}>
140
- <F20012026_03
141
- eventDateTime={eventDateTime}
142
- venueName={venueName}
143
- venueAddress={venueAddress}
144
- familyMember={familyMember}
145
- />
155
+ <>
156
+ <Img
157
+ src={staticFile("video-images/20012026-bg.png")}
158
+ style={{ position: "absolute", width: "100%", height: "100%", objectFit: "cover" }}
159
+ />
160
+ <F20012026_03
161
+ eventDateTime={eventDateTime}
162
+ venueName={venueName}
163
+ venueAddress={venueAddress}
164
+ familyMember={familyMember}
165
+ />
166
+ </>
146
167
  </Sequence>
147
168
 
148
169
  {/* ☁️ TRANSITION 2 → 3 */}
149
- <Sequence from={framesPerPage * 2 - 2} durationInFrames={transitionDuration + 2}>
170
+ <Sequence
171
+ from={framesPerPage * 2 - 2}
172
+ durationInFrames={transitionDuration + 2}
173
+ >
150
174
  <InkSmokeTransition20012026 />
151
175
  </Sequence>
152
176
 
153
177
  </AbsoluteFill>
154
178
  );
155
- };
179
+ };
@@ -1,19 +1,18 @@
1
1
  import React from "react";
2
2
  import { Composition } from "remotion";
3
3
  import { T20012026_01 } from "./Invitations/Themes/T20012026_01.jsx";
4
-
4
+
5
5
  export const VideoCompositions = () => {
6
6
  return (
7
7
  <>
8
8
  <Composition
9
9
  id="T20012026-01"
10
- component={T20012026_01}
11
- durationInFrames={30 * 30}
12
- fps={30}
10
+ component={T20012026_01}
11
+ fps={24}
12
+ durationInFrames={24 * 30}
13
13
  width={1080}
14
14
  height={1920}
15
15
  />
16
16
  </>
17
17
  );
18
18
  };
19
-