@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.
- package/package.json +1 -1
- package/src/Invitations/Elements/BlowingLeaves28012026.jsx +2 -2
- package/src/Invitations/Elements/BottomSideFrames20012026.jsx +122 -0
- package/src/Invitations/Elements/Butterflies20012026.jsx +4 -4
- package/src/Invitations/Elements/CoupleWalk20012026.jsx +2 -3
- package/src/Invitations/Elements/CurtainTransition20012026.jsx +79 -0
- package/src/Invitations/Elements/DucksFrame05022026.jsx +1 -2
- package/src/Invitations/Elements/{FloatingFlowersBottom.jsx → FloatingFlowersBottom05022026.jsx} +2 -3
- package/src/Invitations/Elements/FlowerReveal_TR_BL_28012026.jsx +2 -3
- package/src/Invitations/Elements/FlowersSide20012026.jsx +3 -72
- package/src/Invitations/Elements/GaneshBorder28012026.jsx +2 -4
- package/src/Invitations/Elements/GroomBrideLoveScene20012026.jsx +6 -7
- package/src/Invitations/Elements/HangingJumar05022026.jsx +1 -2
- package/src/Invitations/Elements/HangingLamp05022026.jsx +1 -2
- package/src/Invitations/Elements/HeartFlight28012026.jsx +1 -78
- package/src/Invitations/Elements/{HoldSlide.jsx → HoldSlide03022026.jsx} +1 -1
- package/src/Invitations/Elements/LetterReveal28012026.jsx +102 -14
- package/src/Invitations/Elements/OpeningGate20012026.jsx +3 -3
- package/src/Invitations/Elements/PageFlipTransition28012026.jsx +84 -0
- package/src/Invitations/Elements/SmoothReveal20012026.jsx +62 -0
- package/src/Invitations/Elements/WordReveal28012026.jsx +45 -7
- package/src/Invitations/Frames/F03022026_01.jsx +1 -1
- package/src/Invitations/Frames/F03022026_02.jsx +9 -10
- package/src/Invitations/Frames/F03022026_03.jsx +1 -1
- package/src/Invitations/Frames/F03022026_04.jsx +1 -1
- package/src/Invitations/Frames/F03022026_05.jsx +11 -8
- package/src/Invitations/Frames/F05022026_01.jsx +1 -2
- package/src/Invitations/Frames/F05022026_02.jsx +7 -14
- package/src/Invitations/Frames/F05022026_03.jsx +4 -5
- package/src/Invitations/Frames/F05022026_04.jsx +10 -14
- package/src/Invitations/Frames/F20012026_01.jsx +29 -136
- package/src/Invitations/Frames/F20012026_02.jsx +120 -110
- package/src/Invitations/Frames/F20012026_03.jsx +74 -194
- package/src/Invitations/Frames/F20012026_04.jsx +54 -123
- package/src/Invitations/Frames/F28012026_01.jsx +7 -8
- package/src/Invitations/Frames/F28012026_02.jsx +51 -53
- package/src/Invitations/Frames/F28012026_03.jsx +60 -61
- package/src/Invitations/Frames/F28012026_04.jsx +65 -70
- package/src/Invitations/Frames/F28012026_05.jsx +40 -11
- package/src/Invitations/Themes/T03022026_01.jsx +12 -17
- package/src/Invitations/Themes/T05022026_01.jsx +23 -19
- package/src/Invitations/Themes/T20012026_01.jsx +80 -67
- package/src/Invitations/Themes/T28012026_01.jsx +32 -25
- package/src/compositions.jsx +1 -1
- package/public/Fonts/DancingScript-VariableFont_wght.ttf +0 -0
- package/public/Fonts/GreatVibes-Regular.ttf +0 -0
- package/public/Fonts/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
- package/public/video-images/03022026-bg-2.webp +0 -0
- package/public/video-images/03022026-bg-3.webp +0 -0
- package/public/video-images/03022026-bg-4.webp +0 -0
- package/public/video-images/03022026-bg-5.webp +0 -0
- package/public/video-images/03022026-bg.webp +0 -0
- package/public/video-images/03022026-krishnaradha-2.webp +0 -0
- package/public/video-images/03022026-krishnaradha-4.webp +0 -0
- package/public/video-images/03022026-krishnaradha-5.webp +0 -0
- package/public/video-images/03022026-krishnaradha.webp +0 -0
- package/public/video-images/05022026-Duck.webp +0 -0
- package/public/video-images/05022026-Flower.webp +0 -0
- package/public/video-images/05022026-Ganesh.webp +0 -0
- package/public/video-images/05022026-HangingJumar.webp +0 -0
- package/public/video-images/05022026-HangingLamps.webp +0 -0
- package/public/video-images/05022026-LeftPeacock.webp +0 -0
- package/public/video-images/05022026-Nameplate.webp +0 -0
- package/public/video-images/05022026-bg-2.webp +0 -0
- package/public/video-images/05022026-bg-3.webp +0 -0
- package/public/video-images/05022026-bg-4.webp +0 -0
- package/public/video-images/05022026-bg.webp +0 -0
- package/public/video-images/20012026-bg.png +0 -0
- package/public/video-images/20012026-bg.webp +0 -0
- package/public/video-images/20012026-bride.png +0 -0
- package/public/video-images/20012026-bride.webp +0 -0
- package/public/video-images/20012026-butterfly.png +0 -0
- package/public/video-images/20012026-butterfly.webp +0 -0
- package/public/video-images/20012026-couple-walk.png +0 -0
- package/public/video-images/20012026-couple-walk.webp +0 -0
- package/public/video-images/20012026-curtain-floral.png +0 -0
- package/public/video-images/20012026-curtain-floral.webp +0 -0
- package/public/video-images/20012026-floral-left.png +0 -0
- package/public/video-images/20012026-floral-left.webp +0 -0
- package/public/video-images/20012026-floral-right.png +0 -0
- package/public/video-images/20012026-floral-right.webp +0 -0
- package/public/video-images/20012026-groom.png +0 -0
- package/public/video-images/20012026-groom.webp +0 -0
- package/public/video-images/20012026-opening-gate.png +0 -0
- package/public/video-images/20012026-opening-gate.webp +0 -0
- package/public/video-images/20012026-peacock.png +0 -0
- package/public/video-images/20012026-peacock.webp +0 -0
- package/public/video-images/20012026-tree-left.png +0 -0
- package/public/video-images/20012026-tree-left.webp +0 -0
- package/public/video-images/20012026-tree-right.png +0 -0
- package/public/video-images/20012026-tree-right.webp +0 -0
- package/public/video-images/20012026-wedding-gate.png +0 -0
- package/public/video-images/20012026-wedding-gate.webp +0 -0
- package/public/video-images/28012026-BottomLeftFlower.webp +0 -0
- package/public/video-images/28012026-BottomRightFlower.webp +0 -0
- package/public/video-images/28012026-FlowerBorder.webp +0 -0
- package/public/video-images/28012026-Ganesh.webp +0 -0
- package/public/video-images/28012026-Heart.webp +0 -0
- package/public/video-images/28012026-PinkLeaf.webp +0 -0
- package/public/video-images/28012026-TopBorder.webp +0 -0
- package/public/video-images/28012026-TopLeftFlower.webp +0 -0
- package/public/video-images/28012026-TopRightFlower.webp +0 -0
- package/public/video-images/28012026-bg.webp +0 -0
- package/public/video-images/28012026-border.webp +0 -0
- package/public/video-images/28012026-frame.webp +0 -0
- package/public/video-images/wedding.mp3 +0 -0
- package/public/video-images/wedding2.mp3 +0 -0
- package/src/Invitations/Elements/GaneshGoldenHalo.jsx +0 -90
- package/src/Invitations/Elements/PageFlipTransition.jsx +0 -180
- package/src/Invitations/Elements/PeacockDance20012026.jsx +0 -68
- package/src/Invitations/Elements/SideTrees20012026.jsx +0 -92
- package/src/Invitations/Elements/SmoothRevealFromTop20012026.jsx +0 -32
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
|
-
import { useCurrentFrame, useVideoConfig, interpolate, Img
|
|
2
|
+
import { useCurrentFrame, useVideoConfig, interpolate, Img } from "remotion";
|
|
3
3
|
|
|
4
4
|
export const BlowingLeaves28012026 = ({ startAfter = 2, count = 5 }) => {
|
|
5
5
|
const frame = useCurrentFrame();
|
|
6
6
|
const { fps = 30 } = useVideoConfig();
|
|
7
7
|
|
|
8
8
|
const delayFrames = fps * startAfter;
|
|
9
|
-
const leafSrc =
|
|
9
|
+
const leafSrc = "https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-PinkLeaf.webp"
|
|
10
10
|
|
|
11
11
|
// 🍃 Generate leaves once (ULTRA SLOW SETTINGS)
|
|
12
12
|
const leaves = useMemo(() => {
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
AbsoluteFill,
|
|
4
|
+
useCurrentFrame,
|
|
5
|
+
useVideoConfig,
|
|
6
|
+
interpolate,
|
|
7
|
+
Easing,
|
|
8
|
+
Img,
|
|
9
|
+
} from "remotion";
|
|
10
|
+
|
|
11
|
+
export const BottomSideFrames = ({ firstPhoto, secondPhoto }) => {
|
|
12
|
+
const frame = useCurrentFrame();
|
|
13
|
+
const { fps } = useVideoConfig();
|
|
14
|
+
|
|
15
|
+
const frameStart = fps * 1;
|
|
16
|
+
|
|
17
|
+
const leftAnim = interpolate(
|
|
18
|
+
frame,
|
|
19
|
+
[frameStart, frameStart + 20],
|
|
20
|
+
[-120, 0],
|
|
21
|
+
{ extrapolateRight: "clamp" }
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const rightAnim = interpolate(
|
|
25
|
+
frame,
|
|
26
|
+
[frameStart, frameStart + 20],
|
|
27
|
+
[120, 0],
|
|
28
|
+
{ extrapolateRight: "clamp" }
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const opacity = interpolate(
|
|
32
|
+
frame,
|
|
33
|
+
[frameStart, frameStart + 10],
|
|
34
|
+
[0, 1],
|
|
35
|
+
{ extrapolateRight: "clamp" }
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<AbsoluteFill pointerEvents="none">
|
|
40
|
+
|
|
41
|
+
{/* Left frame with photo */}
|
|
42
|
+
<div
|
|
43
|
+
style={{
|
|
44
|
+
position: "absolute",
|
|
45
|
+
bottom: 0,
|
|
46
|
+
left: -150,
|
|
47
|
+
width: 780,
|
|
48
|
+
transform: `translateX(${leftAnim}px)`,
|
|
49
|
+
opacity,
|
|
50
|
+
zIndex: 50,
|
|
51
|
+
}}
|
|
52
|
+
>
|
|
53
|
+
{/* FRAME */}
|
|
54
|
+
<Img
|
|
55
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-LeftFrame.webp"
|
|
56
|
+
style={{
|
|
57
|
+
width: "100%",
|
|
58
|
+
height: "auto",
|
|
59
|
+
objectFit: "contain",
|
|
60
|
+
}}
|
|
61
|
+
/>
|
|
62
|
+
|
|
63
|
+
{/* PHOTO */}
|
|
64
|
+
{firstPhoto && (
|
|
65
|
+
<Img
|
|
66
|
+
src={firstPhoto}
|
|
67
|
+
style={{
|
|
68
|
+
position: "absolute",
|
|
69
|
+
top: "17%",
|
|
70
|
+
left: "28%",
|
|
71
|
+
width: "43%",
|
|
72
|
+
height: "38%",
|
|
73
|
+
objectFit: "cover",
|
|
74
|
+
borderRadius: "50%",
|
|
75
|
+
}}
|
|
76
|
+
/>
|
|
77
|
+
)}
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
{/* Right frame with photo */}
|
|
81
|
+
<div
|
|
82
|
+
style={{
|
|
83
|
+
position: "absolute",
|
|
84
|
+
bottom: 0,
|
|
85
|
+
right: -150,
|
|
86
|
+
width: 780,
|
|
87
|
+
transform: `translateX(${rightAnim}px)`,
|
|
88
|
+
opacity,
|
|
89
|
+
zIndex: 50,
|
|
90
|
+
}}
|
|
91
|
+
>
|
|
92
|
+
{/* FRAME */}
|
|
93
|
+
<Img
|
|
94
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-RightFrame.webp"
|
|
95
|
+
style={{
|
|
96
|
+
width: "100%",
|
|
97
|
+
height: "auto",
|
|
98
|
+
objectFit: "contain",
|
|
99
|
+
}}
|
|
100
|
+
/>
|
|
101
|
+
|
|
102
|
+
{/* PHOTO */}
|
|
103
|
+
{secondPhoto && (
|
|
104
|
+
<Img
|
|
105
|
+
src={secondPhoto}
|
|
106
|
+
style={{
|
|
107
|
+
position: "absolute",
|
|
108
|
+
top: "17%",
|
|
109
|
+
left: "29%",
|
|
110
|
+
width: "43%",
|
|
111
|
+
height: "38%",
|
|
112
|
+
objectFit: "cover",
|
|
113
|
+
borderRadius: "50%",
|
|
114
|
+
}}
|
|
115
|
+
/>
|
|
116
|
+
)}
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
</AbsoluteFill>
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Img, interpolate
|
|
2
|
+
import { Img, interpolate } from "remotion";
|
|
3
3
|
|
|
4
4
|
export const Butterflies20012026 = ({ frame, fps, width, height }) => {
|
|
5
|
-
const GLOBAL_DELAY = fps *
|
|
5
|
+
const GLOBAL_DELAY = fps * 0.5;
|
|
6
6
|
const butterflies = [
|
|
7
7
|
{ sx: 0.1, sy: 0.9, ex: 0.8, ey: 0.2, delay: 0 },
|
|
8
8
|
{ sx: 0.9, sy: 0.85, ex: 0.2, ey: 0.1, delay: 20 },
|
|
@@ -46,10 +46,10 @@ export const Butterflies20012026 = ({ frame, fps, width, height }) => {
|
|
|
46
46
|
return (
|
|
47
47
|
<Img
|
|
48
48
|
key={i}
|
|
49
|
-
src=
|
|
49
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-butterfly.webp"
|
|
50
50
|
style={{
|
|
51
51
|
position: "absolute",
|
|
52
|
-
left: x,
|
|
52
|
+
left: x,
|
|
53
53
|
top: y,
|
|
54
54
|
width: 120,
|
|
55
55
|
height: 120,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
@@ -14,7 +13,7 @@ export const CoupleWalk20012026 = () => {
|
|
|
14
13
|
|
|
15
14
|
/* -----------------------------⏳ WALK SETTINGS ------------------------------*/
|
|
16
15
|
const delaySeconds = 0;
|
|
17
|
-
const walkDurationSeconds =
|
|
16
|
+
const walkDurationSeconds = 4;
|
|
18
17
|
const delayFrames = fps * delaySeconds;
|
|
19
18
|
const walkFrames = fps * walkDurationSeconds;
|
|
20
19
|
const localFrame = frame - delayFrames;
|
|
@@ -56,7 +55,7 @@ export const CoupleWalk20012026 = () => {
|
|
|
56
55
|
|
|
57
56
|
{/* 👰🤵 COUPLE (BOTTOM-CENTER) */}
|
|
58
57
|
<Img
|
|
59
|
-
src=
|
|
58
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-couple-walk.webp"
|
|
60
59
|
style={{
|
|
61
60
|
position: "absolute",
|
|
62
61
|
left: "50%",
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
AbsoluteFill,
|
|
4
|
+
useCurrentFrame,
|
|
5
|
+
useVideoConfig,
|
|
6
|
+
interpolate,
|
|
7
|
+
Easing,
|
|
8
|
+
Img,
|
|
9
|
+
} from "remotion";
|
|
10
|
+
|
|
11
|
+
export const CurtainTransition20012026 = ({ mode }) => {
|
|
12
|
+
const frame = useCurrentFrame();
|
|
13
|
+
const { durationInFrames } = useVideoConfig();
|
|
14
|
+
const { width } = useVideoConfig();
|
|
15
|
+
|
|
16
|
+
const progress = interpolate(
|
|
17
|
+
frame,
|
|
18
|
+
[0, durationInFrames],
|
|
19
|
+
[0, 1],
|
|
20
|
+
{
|
|
21
|
+
easing: Easing.inOut(Easing.ease),
|
|
22
|
+
extrapolateRight: "clamp",
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const leftX =
|
|
27
|
+
mode === "close"
|
|
28
|
+
? interpolate(frame, [0, durationInFrames], [-width / 2, 0], {
|
|
29
|
+
easing: Easing.inOut(Easing.ease),
|
|
30
|
+
extrapolateRight: "clamp",
|
|
31
|
+
})
|
|
32
|
+
: interpolate(frame, [0, durationInFrames], [0, -width / 2], {
|
|
33
|
+
easing: Easing.inOut(Easing.ease),
|
|
34
|
+
extrapolateRight: "clamp",
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const rightX =
|
|
38
|
+
mode === "close"
|
|
39
|
+
? interpolate(frame, [0, durationInFrames], [width / 2, 0], {
|
|
40
|
+
easing: Easing.inOut(Easing.ease),
|
|
41
|
+
extrapolateRight: "clamp",
|
|
42
|
+
})
|
|
43
|
+
: interpolate(frame, [0, durationInFrames], [0, width / 2], {
|
|
44
|
+
easing: Easing.inOut(Easing.ease),
|
|
45
|
+
extrapolateRight: "clamp",
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<AbsoluteFill style={{ zIndex: 999 }}>
|
|
50
|
+
<Img
|
|
51
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-Curtain.webp"
|
|
52
|
+
style={{
|
|
53
|
+
position: "absolute",
|
|
54
|
+
left: 0,
|
|
55
|
+
top: 0,
|
|
56
|
+
width: "50%",
|
|
57
|
+
height: "120%",
|
|
58
|
+
objectFit: "cover",
|
|
59
|
+
transformOrigin: "top",
|
|
60
|
+
transform: `translateX(${leftX}px)`,
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
<Img
|
|
64
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-Curtain.webp"
|
|
65
|
+
style={{
|
|
66
|
+
position: "absolute",
|
|
67
|
+
right: 0,
|
|
68
|
+
top: 0,
|
|
69
|
+
width: "50%",
|
|
70
|
+
height: "120%",
|
|
71
|
+
objectFit: "cover",
|
|
72
|
+
transformOrigin: "top",
|
|
73
|
+
transform: `translateX(${rightX}px) scaleX(-1)`,
|
|
74
|
+
}}
|
|
75
|
+
/>
|
|
76
|
+
</AbsoluteFill>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
@@ -24,7 +23,7 @@ export const DucksFrame05022026 = () => {
|
|
|
24
23
|
|
|
25
24
|
return (
|
|
26
25
|
<Img
|
|
27
|
-
src=
|
|
26
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-Duck.webp"
|
|
28
27
|
style={{
|
|
29
28
|
position: "absolute",
|
|
30
29
|
bottom: "-5%",
|
package/src/Invitations/Elements/{FloatingFlowersBottom.jsx → FloatingFlowersBottom05022026.jsx}
RENAMED
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
useCurrentFrame,
|
|
6
6
|
useVideoConfig,
|
|
7
7
|
interpolate,
|
|
8
|
-
staticFile,
|
|
9
8
|
} from "remotion";
|
|
10
9
|
|
|
11
10
|
const Flower = ({ side = "left", delay = 0, xOffset = 0, yOffset = 0 }) => {
|
|
@@ -25,7 +24,7 @@ const Flower = ({ side = "left", delay = 0, xOffset = 0, yOffset = 0 }) => {
|
|
|
25
24
|
|
|
26
25
|
return (
|
|
27
26
|
<Img
|
|
28
|
-
src=
|
|
27
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-Flower.webp"
|
|
29
28
|
style={{
|
|
30
29
|
position: "absolute",
|
|
31
30
|
top,
|
|
@@ -38,7 +37,7 @@ const Flower = ({ side = "left", delay = 0, xOffset = 0, yOffset = 0 }) => {
|
|
|
38
37
|
);
|
|
39
38
|
};
|
|
40
39
|
|
|
41
|
-
export const
|
|
40
|
+
export const FloatingFlowersBottom05022026 = () => {
|
|
42
41
|
return (
|
|
43
42
|
<AbsoluteFill>
|
|
44
43
|
{/* LEFT */}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
@@ -76,7 +75,7 @@ const scale = interpolate(
|
|
|
76
75
|
<>
|
|
77
76
|
{/* 🌸 TOP RIGHT */}
|
|
78
77
|
<Img
|
|
79
|
-
src=
|
|
78
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-TopRightFlower.webp"
|
|
80
79
|
style={{
|
|
81
80
|
position: "absolute",
|
|
82
81
|
top: "-130px",
|
|
@@ -95,7 +94,7 @@ const scale = interpolate(
|
|
|
95
94
|
|
|
96
95
|
{/* 🌸 BOTTOM LEFT */}
|
|
97
96
|
<Img
|
|
98
|
-
src=
|
|
97
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-BottomLeftFlower.webp"
|
|
99
98
|
style={{
|
|
100
99
|
position: "absolute",
|
|
101
100
|
bottom: "-250px",
|
|
@@ -1,76 +1,18 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
8
7
|
Easing,
|
|
9
8
|
} from "remotion";
|
|
10
9
|
|
|
11
|
-
/* 🌸 FALLING EMOJI FLOWER – MULTI LINE */
|
|
12
|
-
const FallingEmojiFlower = ({ index, row = 0, startAfter = 0 }) => {
|
|
13
|
-
const frame = useCurrentFrame();
|
|
14
|
-
const { height, width, fps } = useVideoConfig();
|
|
15
|
-
|
|
16
|
-
const delayFrames = fps * startAfter;
|
|
17
|
-
|
|
18
|
-
/* 🌸 CENTER STRIP */
|
|
19
|
-
const stripWidth = width * 0.28;
|
|
20
|
-
const baseX =
|
|
21
|
-
width / 2 - stripWidth / 2 + ((index * 50) % stripWidth);
|
|
22
|
-
|
|
23
|
-
/* 🌸 ROW OFFSET */
|
|
24
|
-
const rowOffsetY = row * 60;
|
|
25
|
-
|
|
26
|
-
const individualDelay = index * 10 + row * 15;
|
|
27
|
-
const duration = fps * 4;
|
|
28
|
-
|
|
29
|
-
const localFrame = frame - delayFrames - individualDelay;
|
|
30
|
-
|
|
31
|
-
const progress = interpolate(localFrame, [0, duration], [0, 1], {
|
|
32
|
-
extrapolateLeft: "clamp",
|
|
33
|
-
extrapolateRight: "clamp",
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const translateY = interpolate(
|
|
37
|
-
progress,
|
|
38
|
-
[0, 1],
|
|
39
|
-
[-80 + rowOffsetY, height + 80]
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
const sway =
|
|
43
|
-
progress < 1
|
|
44
|
-
? Math.sin(localFrame / 15) * 14
|
|
45
|
-
: 0;
|
|
46
|
-
|
|
47
|
-
const rotate = progress * 360;
|
|
48
|
-
|
|
49
|
-
if (localFrame < 0 || localFrame > duration) return null;
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<Img
|
|
53
|
-
src={staticFile("video-images/05022026-Flower.webp")}
|
|
54
|
-
style={{
|
|
55
|
-
position: "absolute",
|
|
56
|
-
left: baseX,
|
|
57
|
-
top: translateY,
|
|
58
|
-
width: "10%",
|
|
59
|
-
opacity: 0.9,
|
|
60
|
-
transform: `translateX(${sway}px) rotate(${rotate}deg)`,
|
|
61
|
-
pointerEvents: "none",
|
|
62
|
-
userSelect: "none",
|
|
63
|
-
}}
|
|
64
|
-
/>
|
|
65
|
-
);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
10
|
export const FlowersSide20012026 = ({ startAfter = 1 }) => {
|
|
69
11
|
const frame = useCurrentFrame();
|
|
70
12
|
const { fps } = useVideoConfig();
|
|
71
13
|
|
|
72
14
|
const delayFrames = fps * startAfter;
|
|
73
|
-
const revealDuration = fps * 2.5;
|
|
15
|
+
const revealDuration = fps * 2.5;
|
|
74
16
|
|
|
75
17
|
const revealProgress = interpolate(
|
|
76
18
|
frame - delayFrames,
|
|
@@ -85,20 +27,9 @@ export const FlowersSide20012026 = ({ startAfter = 1 }) => {
|
|
|
85
27
|
|
|
86
28
|
return (
|
|
87
29
|
<>
|
|
88
|
-
{/* 🌸 ONE-TIME FLOWER FALL (AFTER 2s) */}
|
|
89
|
-
{[0, 1, 2].map((row) =>
|
|
90
|
-
Array.from({ length: 5 }).map((_, i) => (
|
|
91
|
-
<FallingEmojiFlower
|
|
92
|
-
key={`row-${row}-${i}`}
|
|
93
|
-
index={i}
|
|
94
|
-
row={row}
|
|
95
|
-
startAfter={6}
|
|
96
|
-
/>
|
|
97
|
-
))
|
|
98
|
-
)}
|
|
99
30
|
{/* 🌸 LEFT FLOWER DECOR */}
|
|
100
31
|
<Img
|
|
101
|
-
src=
|
|
32
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-floral-left.webp"
|
|
102
33
|
style={{
|
|
103
34
|
position: "absolute",
|
|
104
35
|
left: 0,
|
|
@@ -114,7 +45,7 @@ export const FlowersSide20012026 = ({ startAfter = 1 }) => {
|
|
|
114
45
|
/>
|
|
115
46
|
{/* 🌸 RIGHT FLOWER DECOR */}
|
|
116
47
|
<Img
|
|
117
|
-
src=
|
|
48
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-floral-right.webp"
|
|
118
49
|
style={{
|
|
119
50
|
position: "absolute",
|
|
120
51
|
right: 0,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
@@ -44,7 +43,6 @@ const borderProgress = interpolate(
|
|
|
44
43
|
const ganeshOpacity = ganeshProgress;
|
|
45
44
|
|
|
46
45
|
/* 🌿 Gentle border rotation */
|
|
47
|
-
// const rotate = Math.max(0, frame - delayFrames) * 0.20;
|
|
48
46
|
const rotate = frame * 0.15;
|
|
49
47
|
return (
|
|
50
48
|
<div
|
|
@@ -61,7 +59,7 @@ const borderProgress = interpolate(
|
|
|
61
59
|
<div style={{ width: "100%", position: "relative" }}>
|
|
62
60
|
{/* 🌸 BORDER */}
|
|
63
61
|
<Img
|
|
64
|
-
src=
|
|
62
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-FlowerBorder.webp"
|
|
65
63
|
style={{
|
|
66
64
|
width: "100%",
|
|
67
65
|
transformOrigin: "50% 50%",
|
|
@@ -75,7 +73,7 @@ const borderProgress = interpolate(
|
|
|
75
73
|
|
|
76
74
|
{/* 🕉 GANESH SMOOTH ENTRY */}
|
|
77
75
|
<Img
|
|
78
|
-
src=
|
|
76
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-Ganesh.webp"
|
|
79
77
|
style={{
|
|
80
78
|
position: "absolute",
|
|
81
79
|
left: "53%",
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
useVideoConfig,
|
|
7
6
|
interpolate,
|
|
8
7
|
Easing,
|
|
9
8
|
} from "remotion";
|
|
10
9
|
|
|
11
|
-
export const GroomBrideLoveScene20012026 = ({ startAfter =
|
|
10
|
+
export const GroomBrideLoveScene20012026 = ({ startAfter = 2 }) => {
|
|
12
11
|
const frame = useCurrentFrame();
|
|
13
12
|
const { fps, width } = useVideoConfig();
|
|
14
13
|
|
|
@@ -41,7 +40,7 @@ export const GroomBrideLoveScene20012026 = ({ startAfter = 3.5 }) => {
|
|
|
41
40
|
);
|
|
42
41
|
|
|
43
42
|
/* ---------------- POSITIONS ---------------- */
|
|
44
|
-
const brideX = width -
|
|
43
|
+
const brideX = width - 380; // 👰 fixed right
|
|
45
44
|
const groomStartX = -140; // 🤵 visible at left initially
|
|
46
45
|
const groomEndX = brideX - 260;
|
|
47
46
|
|
|
@@ -80,7 +79,7 @@ export const GroomBrideLoveScene20012026 = ({ startAfter = 3.5 }) => {
|
|
|
80
79
|
<>
|
|
81
80
|
{/* 🤵 GROOM (SHOW → PAUSE → WALK) */}
|
|
82
81
|
<Img
|
|
83
|
-
src=
|
|
82
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-groom.webp"
|
|
84
83
|
style={{
|
|
85
84
|
position: "absolute",
|
|
86
85
|
bottom: 0,
|
|
@@ -98,10 +97,10 @@ export const GroomBrideLoveScene20012026 = ({ startAfter = 3.5 }) => {
|
|
|
98
97
|
|
|
99
98
|
{/* 👰 BRIDE (FIXED, SHOWS SAME TIME) */}
|
|
100
99
|
<Img
|
|
101
|
-
src=
|
|
100
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-bride.webp"
|
|
102
101
|
style={{
|
|
103
102
|
position: "absolute",
|
|
104
|
-
bottom:
|
|
103
|
+
bottom:0,
|
|
105
104
|
width: "40%",
|
|
106
105
|
opacity,
|
|
107
106
|
transform: `
|
|
@@ -141,7 +140,7 @@ export const GroomBrideLoveScene20012026 = ({ startAfter = 3.5 }) => {
|
|
|
141
140
|
return (
|
|
142
141
|
<Img
|
|
143
142
|
key={i}
|
|
144
|
-
src=
|
|
143
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-Heart.webp"
|
|
145
144
|
style={{
|
|
146
145
|
position: "absolute",
|
|
147
146
|
bottom: "30%",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
} from "remotion";
|
|
7
6
|
|
|
@@ -19,7 +18,7 @@ export const HangingJumar05022026 = ({
|
|
|
19
18
|
|
|
20
19
|
return (
|
|
21
20
|
<Img
|
|
22
|
-
src=
|
|
21
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-HangingJumar.webp"
|
|
23
22
|
style={{
|
|
24
23
|
position: "absolute",
|
|
25
24
|
top: 0,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {
|
|
3
3
|
Img,
|
|
4
|
-
staticFile,
|
|
5
4
|
useCurrentFrame,
|
|
6
5
|
} from "remotion";
|
|
7
6
|
|
|
@@ -19,7 +18,7 @@ export const HangingLamp05022026 = ({
|
|
|
19
18
|
|
|
20
19
|
return (
|
|
21
20
|
<Img
|
|
22
|
-
src=
|
|
21
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-HangingLamps.webp"
|
|
23
22
|
style={{
|
|
24
23
|
position: "absolute",
|
|
25
24
|
top: 0,
|
|
@@ -1,78 +1,3 @@
|
|
|
1
|
-
// import React from "react";
|
|
2
|
-
// import { useCurrentFrame, useVideoConfig, interpolate, Easing } from "remotion";
|
|
3
|
-
|
|
4
|
-
// export const HeartFlight28012026 = ({
|
|
5
|
-
// emoji = "💖",
|
|
6
|
-
// startAfter = 3,
|
|
7
|
-
// }) => {
|
|
8
|
-
// const frame = useCurrentFrame();
|
|
9
|
-
// const { fps, width, height } = useVideoConfig();
|
|
10
|
-
|
|
11
|
-
// const GLOBAL_DELAY = fps * startAfter;
|
|
12
|
-
|
|
13
|
-
// const hearts = [
|
|
14
|
-
// { sx: 0.1, sy: 0.9, ex: 0.8, ey: 0.2, delay: 0 },
|
|
15
|
-
// { sx: 0.9, sy: 0.85, ex: 0.2, ey: 0.1, delay: 20 },
|
|
16
|
-
// { sx: 0.3, sy: 1.0, ex: 0.7, ey: 0.3, delay: 40 },
|
|
17
|
-
// { sx: 0.4, sy: 0.9, ex: 0.8, ey: 0.2, delay: 10 },
|
|
18
|
-
// { sx: 0.5, sy: 0.85, ex: 0.2, ey: 0.1, delay: 30 },
|
|
19
|
-
// { sx: 0.8, sy: 1.0, ex: 0.7, ey: 0.3, delay: 50 },
|
|
20
|
-
// ];
|
|
21
|
-
|
|
22
|
-
// return (
|
|
23
|
-
// <>
|
|
24
|
-
// {hearts.map((h, i) => {
|
|
25
|
-
// const localFrame = frame - GLOBAL_DELAY - h.delay;
|
|
26
|
-
|
|
27
|
-
// const progress = interpolate(localFrame, [0, fps * 6], [0, 1], {
|
|
28
|
-
// extrapolateLeft: "clamp",
|
|
29
|
-
// extrapolateRight: "clamp",
|
|
30
|
-
// easing: Easing.inOut(Easing.ease),
|
|
31
|
-
// });
|
|
32
|
-
|
|
33
|
-
// const x = interpolate(progress, [0, 1], [
|
|
34
|
-
// h.sx * width,
|
|
35
|
-
// h.ex * width,
|
|
36
|
-
// ]);
|
|
37
|
-
|
|
38
|
-
// const y =
|
|
39
|
-
// interpolate(progress, [0, 1], [
|
|
40
|
-
// h.sy * height,
|
|
41
|
-
// h.ey * height,
|
|
42
|
-
// ]) +
|
|
43
|
-
// Math.sin(frame / 10 + i * 20) * 25;
|
|
44
|
-
|
|
45
|
-
// const scale = interpolate(progress, [0, 0.1, 0.9, 1], [0, 1, 1, 0.6]);
|
|
46
|
-
|
|
47
|
-
// const opacity = progress > 0.05 && progress < 0.95 ? 1 : 0;
|
|
48
|
-
|
|
49
|
-
// return (
|
|
50
|
-
// <div
|
|
51
|
-
// key={i}
|
|
52
|
-
// style={{
|
|
53
|
-
// position: "absolute",
|
|
54
|
-
// left: x,
|
|
55
|
-
// top: y,
|
|
56
|
-
// fontSize: 70,
|
|
57
|
-
// opacity,
|
|
58
|
-
// transform: `
|
|
59
|
-
// translate(-50%, -50%)
|
|
60
|
-
// scale(${scale})
|
|
61
|
-
// rotate(${Math.sin(localFrame / 15 + i) * 15}deg)
|
|
62
|
-
// `,
|
|
63
|
-
// pointerEvents: "none",
|
|
64
|
-
// }}
|
|
65
|
-
// >
|
|
66
|
-
// {emoji}
|
|
67
|
-
// </div>
|
|
68
|
-
// );
|
|
69
|
-
// })}
|
|
70
|
-
// </>
|
|
71
|
-
// );
|
|
72
|
-
// };
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
1
|
import React from "react";
|
|
77
2
|
import {
|
|
78
3
|
useCurrentFrame,
|
|
@@ -80,12 +5,10 @@ import {
|
|
|
80
5
|
interpolate,
|
|
81
6
|
Easing,
|
|
82
7
|
Img,
|
|
83
|
-
staticFile,
|
|
84
8
|
} from "remotion";
|
|
85
9
|
|
|
86
10
|
export const HeartFlight28012026 = ({
|
|
87
11
|
startAfter = 3,
|
|
88
|
-
heartImage = "heart.png", // image file name from public folder
|
|
89
12
|
}) => {
|
|
90
13
|
const frame = useCurrentFrame();
|
|
91
14
|
const { fps, width, height } = useVideoConfig();
|
|
@@ -145,7 +68,7 @@ export const HeartFlight28012026 = ({
|
|
|
145
68
|
}}
|
|
146
69
|
>
|
|
147
70
|
<Img
|
|
148
|
-
src=
|
|
71
|
+
src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/28012026-Heart.webp"
|
|
149
72
|
style={{
|
|
150
73
|
width: 70,
|
|
151
74
|
height: 70,
|