@evatril/video-templates 2.0.11 → 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 +148 -75
  33. package/src/Invitations/Frames/F20012026_03.jsx +74 -193
  34. package/src/Invitations/Frames/F20012026_04.jsx +54 -122
  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 +79 -66
  43. package/src/Invitations/Themes/T28012026_01.jsx +32 -25
  44. package/src/compositions.jsx +8 -8
  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
@@ -3,7 +3,6 @@ import {
3
3
  Sequence,
4
4
  useVideoConfig,
5
5
  Audio,
6
- staticFile,
7
6
  AbsoluteFill,
8
7
  useCurrentFrame,
9
8
  interpolate,
@@ -17,7 +16,7 @@ import { F28012026_04 } from "../Frames/F28012026_04.jsx";
17
16
  import { F28012026_05 } from "../Frames/F28012026_05.jsx";
18
17
 
19
18
  import { usePreloadImages } from "../hooks/usePreloadImages.js";
20
- import { PageFlipTransition } from "../Elements/PageFlipTransition.jsx";
19
+ import { PageFlipTransition28012026 } from "../Elements/PageFlipTransition28012026.jsx";
21
20
 
22
21
  export const T28012026_01 = ({
23
22
  event,
@@ -45,8 +44,13 @@ export const T28012026_01 = ({
45
44
  }
46
45
  );
47
46
 
48
- const firstSceneDuration = fps * 5;
49
- const otherSceneDuration = fps * 8;
47
+ const sceneDurations = [
48
+ fps * 6, // Scene 1
49
+ fps * 7, // Scene 2
50
+ fps * 8, // Scene 3
51
+ fps * 8, // Scene 4
52
+ fps * 8, // Scene 5
53
+ ];
50
54
 
51
55
  const flipDuration = fps * 1;
52
56
 
@@ -107,18 +111,26 @@ export const T28012026_01 = ({
107
111
 
108
112
  /* ---------------- PRELOAD IMAGES ---------------- */
109
113
 
114
+ const S3_BASE = "https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/";
110
115
  const imagesToPreload = useMemo(
111
116
  () => [
112
- staticFile("video-images/28012026-bg.webp"),
113
- staticFile("video-images/28012026-TopRightFlower.webp"),
114
- staticFile("video-images/28012026-BottomLeftFlower.webp"),
115
- staticFile("video-images/28012026-Ganesh.webp"),
116
- staticFile("video-images/28012026-FlowerBorder.webp"),
117
- staticFile("video-images/28012026-TopBorder.webp"),
118
- staticFile("video-images/28012026-TopLeftFlower.webp"),
119
- staticFile("video-images/28012026-BottomRightFlower.webp"),
120
- staticFile("video-images/28012026-frame.webp"),
121
- staticFile("video-images/28012026-border.webp"),
117
+ `${S3_BASE}28012026-bg.webp`,
118
+
119
+ `${S3_BASE}28012026-TopRightFlower.webp`,
120
+ `${S3_BASE}28012026-BottomLeftFlower.webp`,
121
+ `${S3_BASE}28012026-Ganesh.webp`,
122
+ `${S3_BASE}28012026-FlowerBorder.webp`,
123
+ `${S3_BASE}28012026-PinkLeaf.webp`,
124
+
125
+ `${S3_BASE}28012026-TopLeftFlower.webp`,
126
+ `${S3_BASE}28012026-BottomRightFlower.webp`,
127
+
128
+ `${S3_BASE}28012026-TopBorder.webp`,
129
+ `${S3_BASE}28012026-border.webp`,
130
+ `${S3_BASE}28012026-Heart.webp`,
131
+
132
+ `${S3_BASE}28012026-frame.webp`,
133
+ `${S3_BASE}05022026-HangingJumar.webp`,
122
134
  ],
123
135
  []
124
136
  );
@@ -134,7 +146,7 @@ export const T28012026_01 = ({
134
146
  >
135
147
  {/* Background */}
136
148
  <img
137
- src={staticFile("video-images/28012026-bg.webp")}
149
+ src={`${S3_BASE}28012026-bg.webp`}
138
150
  style={{
139
151
  position: "absolute",
140
152
  inset: 0,
@@ -182,11 +194,6 @@ export const T28012026_01 = ({
182
194
  />,
183
195
  ];
184
196
 
185
- /* 🧮 Dynamic Timing */
186
- const sceneDurations = scenes.map((_, i) =>
187
- i === 0 ? firstSceneDuration : otherSceneDuration
188
- );
189
-
190
197
  const sceneStartTimes = sceneDurations.reduce((acc, dur, i) => {
191
198
  acc.push(i === 0 ? 0 : acc[i - 1] + sceneDurations[i - 1]);
192
199
  return acc;
@@ -195,7 +202,7 @@ export const T28012026_01 = ({
195
202
  const PageBackground = () => (
196
203
  <AbsoluteFill>
197
204
  <img
198
- src={staticFile("video-images/28012026-bg.webp")}
205
+ src={`${S3_BASE}28012026-bg.webp`}
199
206
  style={{
200
207
  position: "absolute",
201
208
  inset: 0,
@@ -210,7 +217,7 @@ export const T28012026_01 = ({
210
217
  return (
211
218
  <AbsoluteFill>
212
219
  <Audio
213
- src={staticFile("video-images/wedding2.mp3")}
220
+ src={`${S3_BASE}wedding2.mp3`}
214
221
  volume={musicVolume}
215
222
  />
216
223
 
@@ -223,14 +230,14 @@ export const T28012026_01 = ({
223
230
  {i === scenes.length - 1 ? (
224
231
  <Page>{Scene}</Page>
225
232
  ) : (
226
- <PageFlipTransition
233
+ <PageFlipTransition28012026
227
234
  sceneDuration={duration}
228
235
  flipDuration={flipDuration}
229
236
  background={<PageBackground />}
230
237
  direction={i % 2 === 0 ? "left" : "right"}
231
238
  >
232
239
  <Page>{Scene}</Page>
233
- </PageFlipTransition>
240
+ </PageFlipTransition28012026>
234
241
  )}
235
242
  </Sequence>
236
243
  );
@@ -239,4 +246,4 @@ export const T28012026_01 = ({
239
246
  );
240
247
  }
241
248
 
242
- T28012026_01.duration = 24 * 37;
249
+ T28012026_01.duration = 30 * (6 + 7 + 8 + 8 + 8);
@@ -11,32 +11,32 @@ export const VideoCompositions = () => {
11
11
  <Composition
12
12
  id="T20012026-01"
13
13
  component={T20012026_01}
14
- fps={24}
15
- durationInFrames={24 * 30}
14
+ fps={30}
15
+ durationInFrames={30 * 32.5}
16
16
  width={1080}
17
17
  height={1920}
18
18
  />
19
19
  <Composition
20
20
  id="T28012026-01"
21
21
  component={T28012026_01}
22
- fps={24}
23
- durationInFrames={24 * 37}
22
+ fps={30}
23
+ durationInFrames={30 * 37}
24
24
  width={1080}
25
25
  height={1920}
26
26
  />
27
27
  <Composition
28
28
  id="T03022026-01"
29
29
  component={T03022026_01}
30
- fps={24}
31
- durationInFrames={24 * 38}
30
+ fps={30}
31
+ durationInFrames={30 * 38}
32
32
  width={1080}
33
33
  height={1920}
34
34
  />
35
35
  <Composition
36
36
  id="T05022026-01"
37
37
  component={T05022026_01}
38
- fps={24}
39
- durationInFrames={24 * 30}
38
+ fps={30}
39
+ durationInFrames={30 * 30}
40
40
  width={1080}
41
41
  height={1920}
42
42
  />
Binary file
Binary file
Binary file
Binary file
@@ -1,90 +0,0 @@
1
- import React from "react";
2
- import {
3
- Img,
4
- staticFile,
5
- useCurrentFrame,
6
- useVideoConfig,
7
- interpolate,
8
- Easing,
9
- } from "remotion";
10
-
11
- export const GaneshGoldenHalo = () => {
12
- const frame = useCurrentFrame();
13
- const { fps } = useVideoConfig();
14
-
15
- /* 🌸 HALO BLOOM FIRST */
16
- const haloProgress = interpolate(frame, [0, fps * 2], [0, 1], {
17
- extrapolateLeft: "clamp",
18
- extrapolateRight: "clamp",
19
- easing: Easing.inOut(Easing.cubic),
20
- });
21
-
22
- const haloScale = interpolate(haloProgress, [0, 1], [0, 1]);
23
-
24
- /* 🕉 GANESH APPEARS AFTER HALO */
25
- const ganeshDelay = fps * 1;
26
-
27
- const ganeshProgress = interpolate(frame - ganeshDelay, [0, fps * 2], [0, 1], {
28
- extrapolateLeft: "clamp",
29
- extrapolateRight: "clamp",
30
- easing: Easing.inOut(Easing.cubic),
31
- });
32
-
33
- const ganeshScale = interpolate(ganeshProgress, [0, 1], [0.45, 1]);
34
- const ganeshOpacity = ganeshProgress;
35
-
36
- /* 🌿 HALO ROTATION (LOCKED CENTER) */
37
- const rotate = frame * 0.15;
38
-
39
- return (
40
- <div
41
- style={{
42
- position: "absolute",
43
- inset: 0,
44
- display: "flex",
45
- justifyContent: "center",
46
- alignItems: "center",
47
- pointerEvents: "none",
48
- zIndex: 2,
49
- }}
50
- >
51
- <div style={{ position: "relative", width: "100%", height: "100%" }}>
52
- {/* 🌸 HALO (isolated rotation container) */}
53
- <div
54
- style={{
55
- position: "absolute",
56
- left: "50%",
57
- top: "45%",
58
- transform: "translate(-50%, -50%)",
59
- }}
60
- >
61
- <Img
62
- src={staticFile("video-images/30012026-Ganesh_golden_halo2.png")}
63
- style={{
64
- width: "100%",
65
- transformOrigin: "50% 50%",
66
- transform: `scale(${haloScale}) rotate(${rotate}deg)`,
67
- }}
68
- />
69
- </div>
70
-
71
- {/* 🕉 GANESH */}
72
- <Img
73
- src={staticFile("video-images/28012026-Ganesh.png")}
74
- style={{
75
- position: "absolute",
76
- left: "50%",
77
- top: "55%",
78
- width: "55%",
79
- opacity: ganeshOpacity,
80
- transformOrigin: "50% 50%",
81
- transform: `
82
- translate(-47%, -50%)
83
- scale(${ganeshScale})
84
- `,
85
- }}
86
- />
87
- </div>
88
- </div>
89
- );
90
- };
@@ -1,180 +0,0 @@
1
- // import React from "react";
2
- // import {
3
- // AbsoluteFill,
4
- // useCurrentFrame,
5
- // interpolate,
6
- // Easing,
7
- // staticFile,
8
- // } from "remotion";
9
-
10
- // export const PageFlipTransition = ({
11
- // children,
12
- // background,
13
- // sceneDuration = 192,
14
- // flipDuration = 24,
15
- // }) => {
16
- // const frame = useCurrentFrame();
17
-
18
- // const flipStart = sceneDuration - flipDuration;
19
-
20
- // const rotateY = interpolate(
21
- // frame,
22
- // [flipStart + flipDuration * 0.35, sceneDuration],
23
- // [0, 90],
24
- // {
25
- // extrapolateLeft: "clamp",
26
- // extrapolateRight: "clamp",
27
- // easing: Easing.inOut(Easing.ease),
28
- // }
29
- // );
30
-
31
- // // reveal next page only at end
32
- // const bgOpacity = interpolate(
33
- // frame,
34
- // [flipStart + flipDuration * 0.5, sceneDuration],
35
- // [0, 1],
36
- // {
37
- // extrapolateLeft: "clamp",
38
- // extrapolateRight: "clamp",
39
- // }
40
- // );
41
-
42
-
43
- // return (
44
- // <AbsoluteFill style={{ perspective: 2500 }}>
45
-
46
- // {/* FAKE BACK OF PAGE (prevents black void) */}
47
- // <AbsoluteFill>
48
- // <img
49
- // src={staticFile("video-images/28012026-bg.png")}
50
- // style={{
51
- // position: "absolute",
52
- // inset: 0,
53
- // width: "100%",
54
- // height: "100%",
55
- // objectFit: "cover",
56
- // }}
57
- // />
58
- // </AbsoluteFill>
59
-
60
- // {/* REAL NEXT PAGE (appears only after flip) */}
61
- // <AbsoluteFill style={{ opacity: bgOpacity }}>
62
- // {background}
63
- // </AbsoluteFill>
64
-
65
- // {/* CURRENT PAGE */}
66
- // <AbsoluteFill
67
- // style={{
68
- // transformOrigin: "left center",
69
- // transformStyle: "preserve-3d",
70
- // backfaceVisibility: "hidden",
71
- // transform: `rotateY(-${rotateY}deg)`,
72
- // boxShadow: "20px 0 40px rgba(0,0,0,0.25)",
73
- // }}
74
- // >
75
- // {children}
76
- // </AbsoluteFill>
77
-
78
- // </AbsoluteFill>
79
- // );
80
- // };
81
-
82
-
83
-
84
-
85
-
86
- import React from "react";
87
- import {
88
- AbsoluteFill,
89
- useCurrentFrame,
90
- interpolate,
91
- Easing,
92
- staticFile,
93
- } from "remotion";
94
-
95
- export const PageFlipTransition = ({
96
- children,
97
- background,
98
- sceneDuration = 192,
99
- flipDuration = 30,
100
- direction = "left", // "left" | "right"
101
- }) => {
102
- const frame = useCurrentFrame();
103
-
104
- const flipStart = sceneDuration - flipDuration;
105
-
106
- // const rotate = interpolate(
107
- // frame,
108
- // [flipStart + flipDuration * 0.35, sceneDuration],
109
- // [0, 100],
110
- // {
111
- // extrapolateLeft: "clamp",
112
- // extrapolateRight: "clamp",
113
- // easing: Easing.inOut(Easing.ease),
114
- // }
115
- // );
116
- const rotate = interpolate(
117
- frame,
118
- [flipStart, sceneDuration],
119
- [0, 80],
120
- {
121
- extrapolateLeft: "clamp",
122
- extrapolateRight: "clamp",
123
- easing: Easing.inOut(Easing.cubic),
124
- }
125
- );
126
-
127
- const signedRotate = direction === "left" ? -rotate : rotate;
128
-
129
- const bgOpacity = interpolate(
130
- frame,
131
- [flipStart + flipDuration * 0.5, sceneDuration],
132
- [0, 1],
133
- {
134
- extrapolateLeft: "clamp",
135
- extrapolateRight: "clamp",
136
- }
137
- );
138
-
139
- return (
140
- <AbsoluteFill style={{ perspective: 2500 }}>
141
-
142
- {/* Fake back of page */}
143
- <AbsoluteFill>
144
- <img
145
- src={staticFile("video-images/28012026-bg.png")}
146
- style={{
147
- position: "absolute",
148
- inset: 0,
149
- width: "100%",
150
- height: "100%",
151
- objectFit: "cover",
152
- }}
153
- />
154
- </AbsoluteFill>
155
-
156
- {/* Next page */}
157
- <AbsoluteFill style={{ opacity: bgOpacity }}>
158
- {background}
159
- </AbsoluteFill>
160
-
161
- {/* Current page */}
162
- <AbsoluteFill
163
- style={{
164
- transformOrigin:
165
- direction === "left" ? "left center" : "right center",
166
- transformStyle: "preserve-3d",
167
- backfaceVisibility: "hidden",
168
- transform: `rotateY(${signedRotate}deg)`,
169
- boxShadow:
170
- direction === "left"
171
- ? "20px 0 40px rgba(0,0,0,0.25)"
172
- : "-20px 0 40px rgba(0,0,0,0.25)",
173
- }}
174
- >
175
- {children}
176
- </AbsoluteFill>
177
-
178
- </AbsoluteFill>
179
- );
180
- };