@evatril/video-templates 2.0.12 → 2.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/package.json +1 -1
  2. package/src/Invitations/Elements/BlowingLeaves28012026.jsx +2 -2
  3. package/src/Invitations/Elements/BottomSideFrames20012026.jsx +122 -0
  4. package/src/Invitations/Elements/Butterflies20012026.jsx +4 -4
  5. package/src/Invitations/Elements/CoupleWalk20012026.jsx +2 -3
  6. package/src/Invitations/Elements/CurtainTransition20012026.jsx +79 -0
  7. package/src/Invitations/Elements/DucksFrame05022026.jsx +1 -2
  8. package/src/Invitations/Elements/{FloatingFlowersBottom.jsx → FloatingFlowersBottom05022026.jsx} +2 -3
  9. package/src/Invitations/Elements/FlowerReveal_TR_BL_28012026.jsx +2 -3
  10. package/src/Invitations/Elements/FlowersSide20012026.jsx +3 -72
  11. package/src/Invitations/Elements/GaneshBorder28012026.jsx +2 -4
  12. package/src/Invitations/Elements/GroomBrideLoveScene20012026.jsx +6 -7
  13. package/src/Invitations/Elements/HangingJumar05022026.jsx +1 -2
  14. package/src/Invitations/Elements/HangingLamp05022026.jsx +1 -2
  15. package/src/Invitations/Elements/HeartFlight28012026.jsx +1 -78
  16. package/src/Invitations/Elements/{HoldSlide.jsx → HoldSlide03022026.jsx} +1 -1
  17. package/src/Invitations/Elements/LetterReveal28012026.jsx +102 -14
  18. package/src/Invitations/Elements/OpeningGate20012026.jsx +3 -3
  19. package/src/Invitations/Elements/PageFlipTransition28012026.jsx +84 -0
  20. package/src/Invitations/Elements/SmoothReveal20012026.jsx +62 -0
  21. package/src/Invitations/Elements/WordReveal28012026.jsx +45 -7
  22. package/src/Invitations/Frames/F03022026_01.jsx +1 -1
  23. package/src/Invitations/Frames/F03022026_02.jsx +9 -10
  24. package/src/Invitations/Frames/F03022026_03.jsx +1 -1
  25. package/src/Invitations/Frames/F03022026_04.jsx +1 -1
  26. package/src/Invitations/Frames/F03022026_05.jsx +11 -8
  27. package/src/Invitations/Frames/F05022026_01.jsx +1 -2
  28. package/src/Invitations/Frames/F05022026_02.jsx +7 -14
  29. package/src/Invitations/Frames/F05022026_03.jsx +4 -5
  30. package/src/Invitations/Frames/F05022026_04.jsx +10 -14
  31. package/src/Invitations/Frames/F20012026_01.jsx +29 -136
  32. package/src/Invitations/Frames/F20012026_02.jsx +120 -110
  33. package/src/Invitations/Frames/F20012026_03.jsx +74 -194
  34. package/src/Invitations/Frames/F20012026_04.jsx +54 -123
  35. package/src/Invitations/Frames/F28012026_01.jsx +7 -8
  36. package/src/Invitations/Frames/F28012026_02.jsx +51 -53
  37. package/src/Invitations/Frames/F28012026_03.jsx +60 -61
  38. package/src/Invitations/Frames/F28012026_04.jsx +65 -70
  39. package/src/Invitations/Frames/F28012026_05.jsx +40 -11
  40. package/src/Invitations/Themes/T03022026_01.jsx +12 -17
  41. package/src/Invitations/Themes/T05022026_01.jsx +23 -19
  42. package/src/Invitations/Themes/T20012026_01.jsx +80 -67
  43. package/src/Invitations/Themes/T28012026_01.jsx +32 -25
  44. package/src/compositions.jsx +1 -1
  45. package/public/Fonts/DancingScript-VariableFont_wght.ttf +0 -0
  46. package/public/Fonts/GreatVibes-Regular.ttf +0 -0
  47. package/public/Fonts/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
  48. package/public/video-images/03022026-bg-2.webp +0 -0
  49. package/public/video-images/03022026-bg-3.webp +0 -0
  50. package/public/video-images/03022026-bg-4.webp +0 -0
  51. package/public/video-images/03022026-bg-5.webp +0 -0
  52. package/public/video-images/03022026-bg.webp +0 -0
  53. package/public/video-images/03022026-krishnaradha-2.webp +0 -0
  54. package/public/video-images/03022026-krishnaradha-4.webp +0 -0
  55. package/public/video-images/03022026-krishnaradha-5.webp +0 -0
  56. package/public/video-images/03022026-krishnaradha.webp +0 -0
  57. package/public/video-images/05022026-Duck.webp +0 -0
  58. package/public/video-images/05022026-Flower.webp +0 -0
  59. package/public/video-images/05022026-Ganesh.webp +0 -0
  60. package/public/video-images/05022026-HangingJumar.webp +0 -0
  61. package/public/video-images/05022026-HangingLamps.webp +0 -0
  62. package/public/video-images/05022026-LeftPeacock.webp +0 -0
  63. package/public/video-images/05022026-Nameplate.webp +0 -0
  64. package/public/video-images/05022026-bg-2.webp +0 -0
  65. package/public/video-images/05022026-bg-3.webp +0 -0
  66. package/public/video-images/05022026-bg-4.webp +0 -0
  67. package/public/video-images/05022026-bg.webp +0 -0
  68. package/public/video-images/20012026-bg.png +0 -0
  69. package/public/video-images/20012026-bg.webp +0 -0
  70. package/public/video-images/20012026-bride.png +0 -0
  71. package/public/video-images/20012026-bride.webp +0 -0
  72. package/public/video-images/20012026-butterfly.png +0 -0
  73. package/public/video-images/20012026-butterfly.webp +0 -0
  74. package/public/video-images/20012026-couple-walk.png +0 -0
  75. package/public/video-images/20012026-couple-walk.webp +0 -0
  76. package/public/video-images/20012026-curtain-floral.png +0 -0
  77. package/public/video-images/20012026-curtain-floral.webp +0 -0
  78. package/public/video-images/20012026-floral-left.png +0 -0
  79. package/public/video-images/20012026-floral-left.webp +0 -0
  80. package/public/video-images/20012026-floral-right.png +0 -0
  81. package/public/video-images/20012026-floral-right.webp +0 -0
  82. package/public/video-images/20012026-groom.png +0 -0
  83. package/public/video-images/20012026-groom.webp +0 -0
  84. package/public/video-images/20012026-opening-gate.png +0 -0
  85. package/public/video-images/20012026-opening-gate.webp +0 -0
  86. package/public/video-images/20012026-peacock.png +0 -0
  87. package/public/video-images/20012026-peacock.webp +0 -0
  88. package/public/video-images/20012026-tree-left.png +0 -0
  89. package/public/video-images/20012026-tree-left.webp +0 -0
  90. package/public/video-images/20012026-tree-right.png +0 -0
  91. package/public/video-images/20012026-tree-right.webp +0 -0
  92. package/public/video-images/20012026-wedding-gate.png +0 -0
  93. package/public/video-images/20012026-wedding-gate.webp +0 -0
  94. package/public/video-images/28012026-BottomLeftFlower.webp +0 -0
  95. package/public/video-images/28012026-BottomRightFlower.webp +0 -0
  96. package/public/video-images/28012026-FlowerBorder.webp +0 -0
  97. package/public/video-images/28012026-Ganesh.webp +0 -0
  98. package/public/video-images/28012026-Heart.webp +0 -0
  99. package/public/video-images/28012026-PinkLeaf.webp +0 -0
  100. package/public/video-images/28012026-TopBorder.webp +0 -0
  101. package/public/video-images/28012026-TopLeftFlower.webp +0 -0
  102. package/public/video-images/28012026-TopRightFlower.webp +0 -0
  103. package/public/video-images/28012026-bg.webp +0 -0
  104. package/public/video-images/28012026-border.webp +0 -0
  105. package/public/video-images/28012026-frame.webp +0 -0
  106. package/public/video-images/wedding.mp3 +0 -0
  107. package/public/video-images/wedding2.mp3 +0 -0
  108. package/src/Invitations/Elements/GaneshGoldenHalo.jsx +0 -90
  109. package/src/Invitations/Elements/PageFlipTransition.jsx +0 -180
  110. package/src/Invitations/Elements/PeacockDance20012026.jsx +0 -68
  111. package/src/Invitations/Elements/SideTrees20012026.jsx +0 -92
  112. package/src/Invitations/Elements/SmoothRevealFromTop20012026.jsx +0 -32
@@ -6,10 +6,9 @@ import {
6
6
  useVideoConfig,
7
7
  interpolate,
8
8
  Easing,
9
- staticFile,
10
9
  } from "remotion";
11
10
  import { WordReveal28012026 } from "../Elements/WordReveal28012026";
12
- import { HangingLamp05022026 } from "../Elements/HangingLamp05022026";
11
+ import { HangingJumar05022026 } from "../Elements/HangingJumar05022026";
13
12
 
14
13
  export const F05022026_04 = ({
15
14
  familyMember,
@@ -71,13 +70,10 @@ export const F05022026_04 = ({
71
70
 
72
71
  return (
73
72
  <AbsoluteFill style={{ overflow: "hidden" }}>
74
- <HangingLamp05022026 side="left" offset={-50} />
75
- <HangingLamp05022026 side="right" offset={-50} />
76
- <HangingLamp05022026 side="left" offset={0} />
77
- <HangingLamp05022026 side="right" offset={0} />
78
-
73
+ <HangingJumar05022026 side="left" offset={-40} />
74
+ <HangingJumar05022026 side="right" offset={-40} />
79
75
  <Img
80
- src={staticFile("video-images/05022026-Nameplate.webp")}
76
+ src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-Nameplate.webp"
81
77
  style={{
82
78
  position: "absolute",
83
79
  right: 60,
@@ -90,11 +86,11 @@ export const F05022026_04 = ({
90
86
  />
91
87
 
92
88
  <Img
93
- src={staticFile("video-images/05022026-LeftPeacock.webp")}
89
+ src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/05022026-LeftPeacock.webp"
94
90
  style={{
95
91
  position: "absolute",
96
- left: -100,
97
- bottom: -120,
92
+ left: -250,
93
+ bottom: -30,
98
94
  width: 600,
99
95
  maxWidth: "90%",
100
96
  transform: `
@@ -109,7 +105,7 @@ export const F05022026_04 = ({
109
105
  <div
110
106
  style={{
111
107
  position: "absolute",
112
- top: "30%",
108
+ top: "26%",
113
109
  left: "50%",
114
110
  transform: `translateX(-50%) translateY(${familyY}px)`,
115
111
  width: "100%",
@@ -119,7 +115,7 @@ export const F05022026_04 = ({
119
115
  >
120
116
  <div
121
117
  style={{
122
- maxWidth: "60%",
118
+ maxWidth: "70%",
123
119
  margin: "0 auto",
124
120
  }}
125
121
  >
@@ -127,7 +123,7 @@ export const F05022026_04 = ({
127
123
  text={familyMember}
128
124
  start={20}
129
125
  fontSize={70}
130
- color="#CDB89A"
126
+ color="#B8860B"
131
127
  fontFamily="Dancing Script"
132
128
  letterSpacing="3px"
133
129
  lineHeight="1.2"
@@ -13,14 +13,14 @@ import { CoupleWalk20012026 } from "../Elements/CoupleWalk20012026.jsx";
13
13
  import { FlowersSide20012026 } from "../Elements/FlowersSide20012026.jsx";
14
14
 
15
15
  export const F20012026_01 = ({
16
- firstName, secondName, welcomeMessage,
17
- }) => {
16
+ welcomeMessage
17
+ }) => {
18
18
  /* -------------------- HOOKS (ONLY HERE) -------------------- */
19
19
  const frame = useCurrentFrame();
20
- const { fps, width, height } = useVideoConfig();
20
+ const { fps, width, height, durationInFrames } = useVideoConfig();
21
21
 
22
22
  /* -------------------- MESSAGE REVEAL -------------------- */
23
- const messageStart = fps * 2;
23
+ const messageStart = fps * 1;
24
24
  const messageOpacity = interpolate(
25
25
  frame,
26
26
  [messageStart, messageStart + 15],
@@ -36,66 +36,33 @@ export const F20012026_01 = ({
36
36
  easing: Easing.out(Easing.cubic),
37
37
  }
38
38
  );
39
- /* -------------------- NAME ANIMATIONS -------------------- */
40
- const brideStart = messageStart + fps * 1;
41
- const wedsStart = brideStart + fps * 0.6;
42
- const groomStart = wedsStart + fps * 0.6;
43
-
44
- const reveal = (start) => ({
45
- opacity: interpolate(frame, [start, start + 20], [0, 1], {
46
- extrapolateRight: "clamp",
47
- }),
48
- translateY: interpolate(frame, [start, start + 25], [40, 0], {
49
- extrapolateRight: "clamp",
50
- easing: Easing.out(Easing.cubic),
51
- }),
52
- });
53
-
54
- const brideAnim = reveal(brideStart);
55
- const wedsAnim = reveal(wedsStart);
56
- const groomAnim = reveal(groomStart);
57
-
58
- const sceneDuration = fps * 8;
59
- const exitDuration = fps * 1.3; // last 1 sec
60
- const exitStart = sceneDuration - exitDuration;
61
-
62
- const parts = 5;
63
- const partDuration = exitDuration / parts;
64
39
 
40
+ /* -------------------- MESSAGE EXIT (LAST 1 SECOND) -------------------- */
65
41
 
66
- const getExitAnim = (index) => {
67
- const start = exitStart + partDuration * index;
68
- const end = start + partDuration;
42
+ const exitDuration = fps * 2; // exactly 1 second
43
+ const exitStart = durationInFrames - exitDuration;
69
44
 
70
- return {
71
- opacity: interpolate(
72
- frame,
73
- [start, end],
74
- [1, 0],
75
- {
76
- extrapolateLeft: "clamp",
77
- extrapolateRight: "clamp",
78
- easing: Easing.out(Easing.cubic),
79
- }
80
- ),
81
-
82
- translateY: interpolate(
83
- frame,
84
- [start, end],
85
- [0, -80],
86
- {
87
- extrapolateLeft: "clamp",
88
- extrapolateRight: "clamp",
89
- }
90
- ),
91
- };
92
- };
45
+ const messageExitOpacity = interpolate(
46
+ frame,
47
+ [exitStart, durationInFrames],
48
+ [1, 0],
49
+ {
50
+ extrapolateLeft: "clamp",
51
+ extrapolateRight: "clamp",
52
+ easing: Easing.in(Easing.cubic),
53
+ }
54
+ );
93
55
 
94
- const messageExit = getExitAnim(0);
95
- const brideExit = getExitAnim(1);
96
- const wedsExit = getExitAnim(2);
97
- const groomExit = getExitAnim(3);
98
- const coupleExit = getExitAnim(4);
56
+ const messageExitTranslateY = interpolate(
57
+ frame,
58
+ [exitStart, durationInFrames],
59
+ [0, -60],
60
+ {
61
+ extrapolateLeft: "clamp",
62
+ extrapolateRight: "clamp",
63
+ easing: Easing.in(Easing.cubic),
64
+ }
65
+ );
99
66
 
100
67
  return (
101
68
  <AbsoluteFill style={{ overflow: "hidden" }}>
@@ -132,86 +99,12 @@ export const F20012026_01 = ({
132
99
  color: "#6D4C6A",
133
100
  fontWeight: "700",
134
101
  lineHeight: 1.2,
135
- opacity: messageOpacity,
136
- transform: `translateY(${messageTranslateY}px)`,
137
- opacity: messageOpacity * messageExit.opacity,
138
- transform: `translateY(${messageTranslateY + messageExit.translateY}px)`,
102
+ opacity: messageOpacity * messageExitOpacity,
103
+ transform: `translateY(${messageTranslateY + messageExitTranslateY}px)`
139
104
  }}
140
105
  >
141
106
  {welcomeMessage}
142
107
  </div>
143
-
144
- {/* ----------- NAMES ----------- */}
145
- <div
146
- style={{
147
- width: "100%",
148
- display: "flex",
149
- flexDirection: "column",
150
- alignItems: "center",
151
- }}
152
- >
153
- <h1
154
- style={{
155
- width: "100%",
156
- maxWidth: "80%",
157
- marginTop: "10px",
158
- fontFamily: "Playfair Display",
159
- color: "#6B1E2E",
160
- fontSize: 60,
161
- fontWeight: "600",
162
- lineHeight: 1.3,
163
- letterSpacing: "2px",
164
- textAlign: "center",
165
- whiteSpace: "normal",
166
- wordBreak: "break-word",
167
- overflowWrap: "break-word",
168
- // opacity: brideAnim.opacity,
169
- // transform: `translateY(${brideAnim.translateY}px)`,
170
- opacity: brideAnim.opacity * brideExit.opacity,
171
- transform: `translateY(${brideAnim.translateY + brideExit.translateY}px)`,
172
- }}
173
- >
174
- {firstName}
175
- </h1>
176
-
177
- <h2
178
- style={{
179
- fontSize: 70,
180
- fontFamily: "Great Vibes",
181
- color: "#D4AF37",
182
- margin: "10px 0",
183
- // opacity: wedsAnim.opacity,
184
- // transform: `translateY(${wedsAnim.translateY}px)`,
185
- opacity: wedsAnim.opacity * wedsExit.opacity,
186
- transform: `translateY(${wedsAnim.translateY + wedsExit.translateY}px)`,
187
- }}
188
- >
189
- weds
190
- </h2>
191
-
192
- <h1
193
- style={{
194
- width: "100%",
195
- maxWidth: "80%",
196
- fontFamily: "Playfair Display",
197
- color: "#6B1E2E",
198
- fontSize: 60,
199
- fontWeight: "600",
200
- lineHeight: 1.3,
201
- letterSpacing: "2px",
202
- textAlign: "center",
203
- whiteSpace: "normal",
204
- wordBreak: "break-word",
205
- overflowWrap: "break-word",
206
- // opacity: groomAnim.opacity,
207
- // transform: `translateY(${groomAnim.translateY}px)`,
208
- opacity: groomAnim.opacity * groomExit.opacity,
209
- transform: `translateY(${groomAnim.translateY + groomExit.translateY}px)`,
210
- }}
211
- >
212
- {secondName}
213
- </h1>
214
- </div>
215
108
  </div>
216
109
  </AbsoluteFill>
217
110
  );
@@ -6,12 +6,10 @@ import {
6
6
  interpolate,
7
7
  Easing,
8
8
  Img,
9
- staticFile,
10
9
  } from "remotion";
11
10
 
12
- import { SideTrees20012026 } from "../Elements/SideTrees20012026.jsx";
13
- import { PeacockDance20012026 } from "../Elements/PeacockDance20012026.jsx";
14
- import { SmoothRevealFromTop20012026 } from "../Elements/SmoothRevealFromTop20012026.jsx";
11
+ import { SmoothReveal20012026 } from "../Elements/SmoothReveal20012026.jsx";
12
+ import { HangingLamp05022026 } from "../Elements/HangingLamp05022026.jsx";
15
13
 
16
14
  export const F20012026_02 = ({
17
15
  firstName,
@@ -20,59 +18,48 @@ export const F20012026_02 = ({
20
18
  secondSideNote,
21
19
  invitationMessage,
22
20
  occasionDate,
23
- fadeInDuration = 30,
21
+ // fadeInDuration = 30,
24
22
  }) => {
25
23
  const frame = useCurrentFrame();
26
- const { fps } = useVideoConfig();
24
+ const { fps, durationInFrames } = useVideoConfig();
27
25
 
28
26
  /* ================= DATE FORMAT ================= */
29
27
  const formatDate = (date) => {
30
- if (!date) return "";
31
- const d = new Date(date);
32
- if (isNaN(d.getTime())) return "";
28
+ if (!date) return { datemonth: "", year: "" };
33
29
 
34
- return d.toLocaleDateString("en-IN", {
30
+ let d;
31
+
32
+ // Handle DD-MM-YYYY
33
+ if (typeof date === "string" && date.includes("-")) {
34
+ const parts = date.split("-");
35
+ if (parts[0].length === 2) {
36
+ d = new Date(`${parts[2]}-${parts[1]}-${parts[0]}`);
37
+ } else {
38
+ d = new Date(date);
39
+ }
40
+ } else {
41
+ d = new Date(date);
42
+ }
43
+
44
+ if (isNaN(d.getTime())) return { datemonth: "", year: "" };
45
+ const dayMonth = d.toLocaleDateString("en-IN", {
35
46
  day: "numeric",
36
47
  month: "long",
37
- year: "numeric",
38
48
  });
49
+ const year = d.getFullYear();
50
+ return {
51
+ datemonth: dayMonth,
52
+ year: year.toString(),
53
+ };
39
54
  };
40
55
 
41
- const DETAILS_START = fps * 3;
42
-
43
- /* ================= CURTAIN ANIMATION ================= */
44
-
45
- const showImageAfter = fadeInDuration;
46
-
47
- const imageOpacity = interpolate(
48
- frame,
49
- [showImageAfter, showImageAfter + fps],
50
- [0, 1],
51
- { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
52
- );
53
-
54
- const imageScale = interpolate(
55
- frame,
56
- [showImageAfter, showImageAfter + fps],
57
- [0.92, 1],
58
- { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
59
- );
56
+ const dateParts = formatDate(occasionDate);
60
57
 
61
- /* ================= PEACOCK ANIMATION ================= */
62
-
63
- const peacockTranslateY = interpolate(
64
- frame,
65
- [showImageAfter, showImageAfter + fps],
66
- [40, 0], // moves slightly upward while appearing
67
- {
68
- extrapolateRight: "clamp",
69
- easing: Easing.out(Easing.ease),
70
- }
71
- );
58
+ const DETAILS_START = fps * 1;
72
59
 
73
60
  /* ================= PEACOCK WALK ANIMATION ================= */
74
61
 
75
- const walkStart = showImageAfter;
62
+ const walkStart = 0;
76
63
  /* ================= PEACOCK HEAD + FEATHER SWING ================= */
77
64
 
78
65
  // Head swing (faster small movement)
@@ -95,79 +82,63 @@ export const F20012026_02 = ({
95
82
  // Fade in same time as curtain
96
83
  const peacockOpacity = interpolate(
97
84
  frame,
98
- [showImageAfter, showImageAfter + fps],
85
+ [0, fps], // 👈 fade from frame 0 to 1 second
99
86
  [0, 1],
100
87
  { extrapolateRight: "clamp" }
101
88
  );
102
89
 
103
-
104
90
  return (
105
91
  <AbsoluteFill
106
92
  style={{
107
93
  overflow: "hidden",
108
- willChange: "transform",
109
94
  }}
110
95
  >
111
- {/* Curtain */}
112
- <Img
113
- src={staticFile("video-images/20012026-curtain-floral3.webp")}
114
- style={{
115
- position: "absolute",
116
- top: "-14%",
117
- left: "50%",
118
- width: "100%",
119
- height: "100%",
120
- opacity: imageOpacity,
121
- transform: `translateX(-50%) scale(${imageScale})`,
122
- willChange: "transform, opacity",
123
- }}
124
- />
125
-
96
+ <HangingLamp05022026 side="left" offset={-200} />
97
+ <HangingLamp05022026 side="right" offset={-200} />
126
98
  {/* Peacock */}
127
99
  <Img
128
- src={staticFile("video-images/20012026-peacock2.png")}
100
+ src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-peacock.webp"
129
101
  style={{
130
102
  position: "absolute",
131
- bottom: "8%",
103
+ top: "25%",
132
104
  width: "100%",
133
105
  opacity: peacockOpacity,
134
106
  transform: `
135
- translateY(${peacockBounce}px)
136
- translateX(${featherSwing}px)
137
- rotate(${headSwing}deg)
138
- `,
107
+ translateY(${peacockBounce}px)
108
+ translateX(${featherSwing}px)
109
+ rotate(${headSwing}deg)
110
+ `,
139
111
  transformOrigin: "bottom center",
140
112
  willChange: "transform, opacity",
141
113
  }}
142
114
  />
143
115
 
144
-
145
- {/* Decorations */}
146
- {/* <SideTrees20012026 startAfter={2} />
147
- <PeacockDance20012026 startAfter={3} /> */}
148
-
149
116
  {/* Content */}
150
117
  <div
151
118
  style={{
152
119
  position: "relative",
153
- top: "26%",
120
+ top: "20%",
154
121
  width: "100%",
155
122
  display: "flex",
156
123
  flexDirection: "column",
157
124
  alignItems: "center",
158
125
  textAlign: "center",
159
- gap: 15,
126
+ gap: 10,
160
127
  }}
161
128
  >
162
129
  {/* Invitation */}
163
130
  <div
164
131
  style={{
165
- maxWidth: "50%",
132
+ maxWidth: "70%",
166
133
  fontFamily: "Dancing Script",
167
- color: "#4A3A2A",
168
- fontSize: 40,
134
+ color: "#8C6A2A",
135
+ fontSize: 55,
136
+ lineHeight: 1.2,
169
137
  letterSpacing: 2,
170
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 0 }),
138
+ ...SmoothReveal20012026({
139
+ frame, startFrame: DETAILS_START, delay: 0, direction: "top", durationInFrames,
140
+ fps, exitDurationSec: 2,
141
+ }),
171
142
  }}
172
143
  >
173
144
  {invitationMessage}
@@ -177,10 +148,13 @@ export const F20012026_02 = ({
177
148
  style={{
178
149
  maxWidth: "70%",
179
150
  fontFamily: "Playfair Display",
180
- color: "#7A1E2E",
181
- fontSize: 60,
151
+ color: "#3A3A3A",
152
+ fontSize: 70,
182
153
  letterSpacing: 3,
183
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 25 }),
154
+ ...SmoothReveal20012026({
155
+ frame, startFrame: DETAILS_START, delay: 20, direction: "left", durationInFrames,
156
+ fps, exitDurationSec: 2,
157
+ }),
184
158
  }}
185
159
  >
186
160
  {firstName}
@@ -189,10 +163,13 @@ export const F20012026_02 = ({
189
163
  <div
190
164
  style={{
191
165
  fontFamily: "Dancing Script",
192
- color: "#B87A6A",
193
- fontSize: 35,
194
- maxWidth: "70%",
195
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 50 }),
166
+ color: "#A67C2E",
167
+ fontSize: 40,
168
+ maxWidth: "60%",
169
+ ...SmoothReveal20012026({
170
+ frame, startFrame: DETAILS_START, delay: 30, direction: "left", durationInFrames,
171
+ fps, exitDurationSec: 2,
172
+ }),
196
173
  }}
197
174
  >
198
175
  {firstSideNote}
@@ -203,20 +180,27 @@ export const F20012026_02 = ({
203
180
  fontSize: 40,
204
181
  color: "#C9A24D",
205
182
  letterSpacing: 6,
206
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 70 }),
183
+ marginTop: "15px",
184
+ ...SmoothReveal20012026({
185
+ frame, startFrame: DETAILS_START, delay: 35, direction: "top", durationInFrames,
186
+ fps, exitDurationSec: 2,
187
+ }),
207
188
  }}
208
189
  >
209
-
190
+
210
191
  </div>
211
192
 
212
193
  <h1
213
194
  style={{
214
195
  maxWidth: "70%",
215
196
  fontFamily: "Playfair Display",
216
- color: "#7A1E2E",
217
- fontSize: 60,
197
+ color: "#3A3A3A",
198
+ fontSize: 70,
218
199
  letterSpacing: 3,
219
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 95 }),
200
+ ...SmoothReveal20012026({
201
+ frame, startFrame: DETAILS_START, delay: 50, direction: "right", durationInFrames,
202
+ fps, exitDurationSec: 2,
203
+ }),
220
204
  }}
221
205
  >
222
206
  {secondName}
@@ -225,44 +209,70 @@ export const F20012026_02 = ({
225
209
  <div
226
210
  style={{
227
211
  fontFamily: "Dancing Script",
228
- color: "#B87A6A",
229
- fontSize: 35,
230
- maxWidth: "70%",
231
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 120 }),
212
+ color: "#A67C2E",
213
+ fontSize: 40,
214
+ maxWidth: "60%",
215
+ ...SmoothReveal20012026({
216
+ frame, startFrame: DETAILS_START, delay: 60, direction: "right", durationInFrames,
217
+ fps, exitDurationSec: 2,
218
+ }),
232
219
  }}
233
220
  >
234
221
  {secondSideNote}
235
222
  </div>
223
+ {/* Bottom Occasion Date - Screen Fixed */}
224
+ <div
225
+ style={{
226
+ fontSize: 50,
227
+ fontWeight: "400",
228
+ fontFamily: "Dancing Script",
229
+ color: "#8C6A2A",
230
+ ...SmoothReveal20012026({
231
+ frame, startFrame: DETAILS_START, delay: 80, direction: "bottom", durationInFrames,
232
+ fps, exitDurationSec: 2,
233
+ }),
234
+ }}
235
+ >
236
+ – Join us on this auspicious day –
237
+ </div>
236
238
 
237
239
  <div
238
240
  style={{
239
- textAlign: "center",
240
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 145 }),
241
+ fontSize: 60,
242
+ fontFamily: "Playfair Display",
243
+ color: "#5F8F7B",
244
+ letterSpacing: 2,
245
+ lineHeight: 1.2,
246
+ display: "flex",
247
+ flexDirection: "column",
248
+ alignItems: "center",
241
249
  }}
242
250
  >
243
- <div
251
+ <span
244
252
  style={{
245
- fontSize: 40,
246
- fontWeight: "400",
247
- fontFamily: "Great Vibes",
248
- color: "#2F6B4F",
253
+ ...SmoothReveal20012026({
254
+ frame, startFrame: DETAILS_START, delay: 95, direction: "bottom", durationInFrames,
255
+ fps, exitDurationSec: 2,
256
+ }),
249
257
  }}
250
258
  >
251
- – Join us on this auspicious day –
252
- </div>
259
+ {dateParts.datemonth}
260
+ </span>
253
261
 
254
- <div
262
+ {/* Year */}
263
+ <span
255
264
  style={{
256
- fontSize: 50,
257
- fontFamily: "Playfair Display",
258
- color: "#5A4632",
259
- letterSpacing: 4,
265
+ ...SmoothReveal20012026({
266
+ frame, startFrame: DETAILS_START, delay: 110, direction: "bottom", durationInFrames,
267
+ fps, exitDurationSec: 2,
268
+ }),
260
269
  }}
261
270
  >
262
- {formatDate(occasionDate)}
263
- </div>
271
+ {dateParts.year}
272
+ </span>
264
273
  </div>
274
+
265
275
  </div>
266
- </AbsoluteFill>
276
+ </AbsoluteFill >
267
277
  );
268
278
  };