@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
@@ -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,91 +18,127 @@ 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;
56
+ const dateParts = formatDate(occasionDate);
57
+
58
+ const DETAILS_START = fps * 1;
59
+
60
+ /* ================= PEACOCK WALK ANIMATION ================= */
42
61
 
43
- /* ================= CURTAIN ANIMATION ================= */
62
+ const walkStart = 0;
63
+ /* ================= PEACOCK HEAD + FEATHER SWING ================= */
44
64
 
45
- const showImageAfter = fadeInDuration;
65
+ // Head swing (faster small movement)
66
+ const headSwing = Math.sin(frame * 0.12) * 1;
67
+ // -4° to +4° rotation
46
68
 
47
- const imageOpacity = interpolate(
69
+ // Feather sway (slow royal movement)
70
+ const featherSwing = Math.sin(frame * 0.06) * 6;
71
+ // -6px to +6px movement
72
+
73
+
74
+ // Small bounce for walking feel
75
+ const peacockBounce = interpolate(
48
76
  frame,
49
- [showImageAfter, showImageAfter + fps],
50
- [0, 1],
51
- { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
77
+ [walkStart, walkStart + fps * 0.3, walkStart + fps * 0.6, walkStart + fps * 0.9],
78
+ [0, -6, 0, -6],
79
+ { extrapolateRight: "clamp" }
52
80
  );
53
81
 
54
- const imageScale = interpolate(
82
+ // Fade in same time as curtain
83
+ const peacockOpacity = interpolate(
55
84
  frame,
56
- [showImageAfter, showImageAfter + fps],
57
- [0.92, 1],
58
- { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
85
+ [0, fps], // 👈 fade from frame 0 to 1 second
86
+ [0, 1],
87
+ { extrapolateRight: "clamp" }
59
88
  );
60
89
 
61
90
  return (
62
91
  <AbsoluteFill
63
92
  style={{
64
93
  overflow: "hidden",
65
- willChange: "transform",
66
94
  }}
67
95
  >
68
- {/* Curtain */}
96
+ <HangingLamp05022026 side="left" offset={-200} />
97
+ <HangingLamp05022026 side="right" offset={-200} />
98
+ {/* Peacock */}
69
99
  <Img
70
- src={staticFile("video-images/20012026-curtain-floral3.webp")}
100
+ src="https://evatril-images.s3.ap-south-1.amazonaws.com/video-themes/hindu-wedding-1/v1/20012026-peacock.webp"
71
101
  style={{
72
102
  position: "absolute",
73
- top:"-12%",
74
- left: "50%",
103
+ top: "25%",
75
104
  width: "100%",
76
- opacity: imageOpacity,
77
- transform: `translateX(-50%) scale(${imageScale})`,
105
+ opacity: peacockOpacity,
106
+ transform: `
107
+ translateY(${peacockBounce}px)
108
+ translateX(${featherSwing}px)
109
+ rotate(${headSwing}deg)
110
+ `,
111
+ transformOrigin: "bottom center",
78
112
  willChange: "transform, opacity",
79
113
  }}
80
114
  />
81
115
 
82
- {/* Decorations */}
83
- <SideTrees20012026 startAfter={2} />
84
- <PeacockDance20012026 startAfter={3} />
85
-
86
116
  {/* Content */}
87
117
  <div
88
118
  style={{
89
119
  position: "relative",
90
- top: "26%",
120
+ top: "20%",
91
121
  width: "100%",
92
122
  display: "flex",
93
123
  flexDirection: "column",
94
124
  alignItems: "center",
95
125
  textAlign: "center",
96
- gap: 15,
126
+ gap: 10,
97
127
  }}
98
128
  >
99
129
  {/* Invitation */}
100
130
  <div
101
131
  style={{
102
- maxWidth: "50%",
132
+ maxWidth: "70%",
103
133
  fontFamily: "Dancing Script",
104
- color: "#4A3A2A",
105
- fontSize: 40,
134
+ color: "#8C6A2A",
135
+ fontSize: 55,
136
+ lineHeight: 1.2,
106
137
  letterSpacing: 2,
107
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 0 }),
138
+ ...SmoothReveal20012026({
139
+ frame, startFrame: DETAILS_START, delay: 0, direction: "top", durationInFrames,
140
+ fps, exitDurationSec: 2,
141
+ }),
108
142
  }}
109
143
  >
110
144
  {invitationMessage}
@@ -114,10 +148,13 @@ export const F20012026_02 = ({
114
148
  style={{
115
149
  maxWidth: "70%",
116
150
  fontFamily: "Playfair Display",
117
- color: "#7A1E2E",
118
- fontSize: 60,
151
+ color: "#3A3A3A",
152
+ fontSize: 70,
119
153
  letterSpacing: 3,
120
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 25 }),
154
+ ...SmoothReveal20012026({
155
+ frame, startFrame: DETAILS_START, delay: 20, direction: "left", durationInFrames,
156
+ fps, exitDurationSec: 2,
157
+ }),
121
158
  }}
122
159
  >
123
160
  {firstName}
@@ -126,13 +163,16 @@ export const F20012026_02 = ({
126
163
  <div
127
164
  style={{
128
165
  fontFamily: "Dancing Script",
129
- color: "#B87A6A",
130
- fontSize: 35,
131
- maxWidth:"70%",
132
- ...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
+ }),
133
173
  }}
134
174
  >
135
- {firstSideNote}
175
+ {firstSideNote}
136
176
  </div>
137
177
 
138
178
  <div
@@ -140,66 +180,99 @@ export const F20012026_02 = ({
140
180
  fontSize: 40,
141
181
  color: "#C9A24D",
142
182
  letterSpacing: 6,
143
- ...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
+ }),
144
188
  }}
145
189
  >
146
-
190
+
147
191
  </div>
148
192
 
149
193
  <h1
150
194
  style={{
151
195
  maxWidth: "70%",
152
196
  fontFamily: "Playfair Display",
153
- color: "#7A1E2E",
154
- fontSize: 60,
197
+ color: "#3A3A3A",
198
+ fontSize: 70,
155
199
  letterSpacing: 3,
156
- ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 95 }),
200
+ ...SmoothReveal20012026({
201
+ frame, startFrame: DETAILS_START, delay: 50, direction: "right", durationInFrames,
202
+ fps, exitDurationSec: 2,
203
+ }),
157
204
  }}
158
205
  >
159
- {secondName}
206
+ {secondName}
160
207
  </h1>
161
208
 
162
209
  <div
163
210
  style={{
164
211
  fontFamily: "Dancing Script",
165
- color: "#B87A6A",
166
- fontSize: 35,
167
- maxWidth:"70%",
168
- ...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
+ }),
219
+ }}
220
+ >
221
+ {secondSideNote}
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
+ }),
169
234
  }}
170
235
  >
171
- {secondSideNote}
236
+ Join us on this auspicious day –
172
237
  </div>
173
238
 
174
239
  <div
175
240
  style={{
176
- textAlign: "center",
177
- ...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",
178
249
  }}
179
250
  >
180
- <div
251
+ <span
181
252
  style={{
182
- fontSize: 40,
183
- fontWeight:"400",
184
- fontFamily: "Great Vibes",
185
- color: "#2F6B4F",
253
+ ...SmoothReveal20012026({
254
+ frame, startFrame: DETAILS_START, delay: 95, direction: "bottom", durationInFrames,
255
+ fps, exitDurationSec: 2,
256
+ }),
186
257
  }}
187
258
  >
188
- – Join us on this auspicious day –
189
- </div>
259
+ {dateParts.datemonth}
260
+ </span>
190
261
 
191
- <div
262
+ {/* Year */}
263
+ <span
192
264
  style={{
193
- fontSize: 50,
194
- fontFamily: "Playfair Display",
195
- color: "#5A4632",
196
- letterSpacing: 4,
265
+ ...SmoothReveal20012026({
266
+ frame, startFrame: DETAILS_START, delay: 110, direction: "bottom", durationInFrames,
267
+ fps, exitDurationSec: 2,
268
+ }),
197
269
  }}
198
270
  >
199
- {formatDate(occasionDate)}
200
- </div>
271
+ {dateParts.year}
272
+ </span>
201
273
  </div>
274
+
202
275
  </div>
203
- </AbsoluteFill>
276
+ </AbsoluteFill >
204
277
  );
205
278
  };