@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evatril/video-templates",
3
- "version": "2.0.11",
3
+ "version": "2.0.14",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "remotion": {
@@ -1,12 +1,12 @@
1
1
  import React, { useMemo } from "react";
2
- import { useCurrentFrame, useVideoConfig, interpolate, Img, staticFile } from "remotion";
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 = staticFile("video-images/28012026-PinkLeaf.webp");
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, staticFile } from "remotion";
2
+ import { Img, interpolate } from "remotion";
3
3
 
4
4
  export const Butterflies20012026 = ({ frame, fps, width, height }) => {
5
- const GLOBAL_DELAY = fps * 2;
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={staticFile("video-images/20012026-butterfly.webp")}
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 = 5;
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={staticFile("video-images/20012026-couple-walk.webp")}
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={staticFile("video-images/05022026-Duck.webp")}
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%",
@@ -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={staticFile("video-images/05022026-Flower.webp")}
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 FloatingFlowersBottom = () => {
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={staticFile("video-images/28012026-TopRightFlower.webp")}
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={staticFile("video-images/28012026-BottomLeftFlower.webp")}
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; // ⏱ 2 seconds
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={staticFile("video-images/20012026-floral-left.webp")}
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={staticFile("video-images/20012026-floral-right.webp")}
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={staticFile("video-images/28012026-FlowerBorder.webp")}
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={staticFile("video-images/28012026-Ganesh.webp")}
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 = 3.5 }) => {
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 - 390; // 👰 fixed right
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={staticFile("video-images/20012026-groom.webp")}
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={staticFile("video-images/20012026-bride.webp")}
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: 0,
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={staticFile("video-images/28012026-Heart.webp")}
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={staticFile("video-images/05022026-HangingJumar.webp")}
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={staticFile("video-images/05022026-HangingLamps.webp")}
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={staticFile("video-images/28012026-Heart.webp")}
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,