@evatril/video-templates 2.0.6 → 2.0.8

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 (59) hide show
  1. package/package.json +1 -1
  2. package/public/video-images/03022026-bg-2.webp +0 -0
  3. package/public/video-images/03022026-bg-3.webp +0 -0
  4. package/public/video-images/03022026-bg-4.webp +0 -0
  5. package/public/video-images/03022026-bg-5.webp +0 -0
  6. package/public/video-images/03022026-bg.webp +0 -0
  7. package/public/video-images/03022026-krishnaradha-2.webp +0 -0
  8. package/public/video-images/03022026-krishnaradha-4.webp +0 -0
  9. package/public/video-images/03022026-krishnaradha-5.webp +0 -0
  10. package/public/video-images/03022026-krishnaradha.webp +0 -0
  11. package/public/video-images/20012026-bg.png +0 -0
  12. package/public/video-images/20012026-bride.png +0 -0
  13. package/public/video-images/20012026-butterfly.png +0 -0
  14. package/public/video-images/20012026-couple-walk.png +0 -0
  15. package/public/video-images/20012026-floral-left.png +0 -0
  16. package/public/video-images/20012026-groom.png +0 -0
  17. package/public/video-images/20012026-peacock.png +0 -0
  18. package/public/video-images/20012026-wedding-gate.png +0 -0
  19. package/public/video-images/28012026-BottomLeftFlower.webp +0 -0
  20. package/public/video-images/28012026-BottomRightFlower.webp +0 -0
  21. package/public/video-images/28012026-FlowerBorder.webp +0 -0
  22. package/public/video-images/28012026-Ganesh.webp +0 -0
  23. package/public/video-images/28012026-TopBorder.webp +0 -0
  24. package/public/video-images/28012026-TopLeftFlower.webp +0 -0
  25. package/public/video-images/28012026-TopRightFlower.webp +0 -0
  26. package/public/video-images/28012026-bg.webp +0 -0
  27. package/public/video-images/28012026-border.webp +0 -0
  28. package/public/video-images/28012026-frame.webp +0 -0
  29. package/public/video-images/wedding2.mp3 +0 -0
  30. package/src/Invitations/Elements/BlowingLeaves28012026.jsx +68 -0
  31. package/src/Invitations/Elements/FlowerReveal_TL_BR_28012026.jsx +114 -0
  32. package/src/Invitations/Elements/FlowerReveal_TR_BL_28012026.jsx +116 -0
  33. package/src/Invitations/Elements/GaneshBorder28012026.jsx +95 -0
  34. package/src/Invitations/Elements/GaneshGoldenHalo.jsx +90 -0
  35. package/src/Invitations/Elements/HeartDraw28012026.jsx +51 -0
  36. package/src/Invitations/Elements/HeartFlight28012026.jsx +72 -0
  37. package/src/Invitations/Elements/HoldSlide.jsx +103 -0
  38. package/src/Invitations/Elements/LetterReveal28012026.jsx +47 -0
  39. package/src/Invitations/Elements/PageFlipTransition.jsx +180 -0
  40. package/src/Invitations/Elements/{SmoothRevealFromTop.jsx → SmoothRevealFromTop20012026.jsx} +1 -1
  41. package/src/Invitations/Elements/WordReveal28012026.jsx +92 -0
  42. package/src/Invitations/Frames/F03022026_01.jsx +214 -0
  43. package/src/Invitations/Frames/F03022026_02.jsx +312 -0
  44. package/src/Invitations/Frames/F03022026_03.jsx +332 -0
  45. package/src/Invitations/Frames/F03022026_04.jsx +300 -0
  46. package/src/Invitations/Frames/F03022026_05.jsx +235 -0
  47. package/src/Invitations/Frames/F20012026_01.jsx +0 -14
  48. package/src/Invitations/Frames/F20012026_02.jsx +125 -224
  49. package/src/Invitations/Frames/F20012026_03.jsx +29 -57
  50. package/src/Invitations/Frames/F28012026_01.jsx +51 -0
  51. package/src/Invitations/Frames/F28012026_02.jsx +246 -0
  52. package/src/Invitations/Frames/F28012026_03.jsx +268 -0
  53. package/src/Invitations/Frames/F28012026_04.jsx +275 -0
  54. package/src/Invitations/Frames/F28012026_05.jsx +179 -0
  55. package/src/Invitations/Themes/T03022026_01.jsx +269 -0
  56. package/src/Invitations/Themes/T20012026_01.jsx +75 -33
  57. package/src/Invitations/Themes/T28012026_01.jsx +241 -0
  58. package/src/compositions.jsx +21 -4
  59. package/src/index.js +3 -1
@@ -11,26 +11,21 @@ import {
11
11
 
12
12
  import { SideTrees20012026 } from "../Elements/SideTrees20012026.jsx";
13
13
  import { PeacockDance20012026 } from "../Elements/PeacockDance20012026.jsx";
14
- import { SmoothRevealFromTop } from "../Elements/SmoothRevealFromTop.jsx";
15
-
16
- export const F20012026_02 = ({ firstName, secondName, firstSideNote, secondSideNote, invitationMessage, occasionDate, fadeInDuration = 30,
14
+ import { SmoothRevealFromTop20012026 } from "../Elements/SmoothRevealFromTop20012026.jsx";
15
+
16
+ export const F20012026_02 = ({
17
+ firstName,
18
+ secondName,
19
+ firstSideNote,
20
+ secondSideNote,
21
+ invitationMessage,
22
+ occasionDate,
23
+ fadeInDuration = 30,
17
24
  }) => {
18
25
  const frame = useCurrentFrame();
19
26
  const { fps } = useVideoConfig();
20
27
 
21
- /* ================= SCENE FADE + ZOOM ================= */
22
- // 🎥 VERY SMOOTH CINEMATIC ZOOM
23
- const sceneScale = interpolate(
24
- frame,
25
- [0, fadeInDuration * 2],
26
- [1.20, 1],
27
- {
28
- extrapolateRight: "clamp",
29
- easing: Easing.out(Easing.cubic),
30
- }
31
- );
32
-
33
- /* ================= SAFE DATE FORMAT ================= */
28
+ /* ================= DATE FORMAT ================= */
34
29
  const formatDate = (date) => {
35
30
  if (!date) return "";
36
31
  const d = new Date(date);
@@ -43,261 +38,167 @@ export const F20012026_02 = ({ firstName, secondName, firstSideNote, secondSideN
43
38
  });
44
39
  };
45
40
 
46
-
47
41
  const DETAILS_START = fps * 3;
48
42
 
49
- /* ================= IMAGE ANIMATION ================= */
50
- const showImageAfter = fadeInDuration * 1;
43
+ /* ================= CURTAIN ANIMATION ================= */
44
+
45
+ const showImageAfter = fadeInDuration;
51
46
 
52
47
  const imageOpacity = interpolate(
53
48
  frame,
54
49
  [showImageAfter, showImageAfter + fps],
55
50
  [0, 1],
56
- {
57
- extrapolateRight: "clamp",
58
- easing: Easing.out(Easing.ease),
59
- }
51
+ { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
60
52
  );
61
53
 
62
54
  const imageScale = interpolate(
63
55
  frame,
64
56
  [showImageAfter, showImageAfter + fps],
65
57
  [0.92, 1],
66
- {
67
- extrapolateRight: "clamp",
68
- easing: Easing.out(Easing.ease),
69
- }
58
+ { extrapolateRight: "clamp", easing: Easing.out(Easing.ease) }
70
59
  );
71
60
 
72
61
  return (
73
- <AbsoluteFill>
74
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
75
- <AbsoluteFill
62
+ <AbsoluteFill
63
+ style={{
64
+ overflow: "hidden",
65
+ willChange: "transform",
66
+ }}
67
+ >
68
+ {/* Curtain */}
69
+ <Img
70
+ src={staticFile("video-images/20012026-curtain-floral.png")}
76
71
  style={{
77
- transform: `scale(${sceneScale})`,
78
- transformOrigin: "center center",
79
- overflow: "hidden",
72
+ position: "absolute",
73
+ left: "50%",
74
+ width: "100%",
75
+ opacity: imageOpacity,
76
+ transform: `translateX(-50%) scale(${imageScale})`,
77
+ willChange: "transform, opacity",
78
+ }}
79
+ />
80
80
 
81
+ {/* Decorations */}
82
+ <SideTrees20012026 startAfter={2} />
83
+ <PeacockDance20012026 startAfter={3} />
84
+
85
+ {/* Content */}
86
+ <div
87
+ style={{
88
+ position: "relative",
89
+ top: "26%",
90
+ width: "100%",
91
+ display: "flex",
92
+ flexDirection: "column",
93
+ alignItems: "center",
94
+ textAlign: "center",
95
+ gap: 15,
81
96
  }}
82
97
  >
83
- {/* ================= BACKGROUND ================= */}
84
- <Img
85
- src={staticFile("video-images/20012026-bg.png")}
98
+ {/* Invitation */}
99
+ <div
86
100
  style={{
87
- position: "absolute",
88
- width: "100%",
89
- height: "100%",
90
- objectFit: "cover",
101
+ maxWidth: "50%",
102
+ fontFamily: "Dancing Script",
103
+ color: "#4A3A2A",
104
+ fontSize: 40,
105
+ letterSpacing: 2,
106
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 0 }),
91
107
  }}
92
- />
108
+ >
109
+ {invitationMessage}
110
+ </div>
93
111
 
94
- <Img
95
- src={staticFile("video-images/20012026-curtain-floral.png")}
112
+ <h1
96
113
  style={{
97
- position: "absolute",
98
- left: "50%",
99
- width: "100%",
100
- opacity: imageOpacity,
101
- transform: `translateX(-50%) scale(${imageScale})`,
114
+ maxWidth: "70%",
115
+ fontFamily: "Playfair Display",
116
+ color: "#7A1E2E",
117
+ fontSize: 60,
118
+ letterSpacing: 3,
119
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 25 }),
102
120
  }}
103
- />
104
-
105
- {/* ================= DECORATIONS ================= */}
106
- <SideTrees20012026 startAfter={2} />
107
- <PeacockDance20012026 startAfter={3} />
121
+ >
122
+ {firstName}
123
+ </h1>
108
124
 
109
125
  <div
110
126
  style={{
111
- position: "relative",
112
- top: "26%",
113
- width: "100%",
114
- display: "flex",
115
- flexDirection: "column",
116
- alignItems: "center",
117
- textAlign: "center",
118
- gap: "15px"
127
+ fontFamily: "Dancing Script",
128
+ color: "#B87A6A",
129
+ fontSize: 35,
130
+ maxWidth:"70%",
131
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 50 }),
119
132
  }}
120
133
  >
121
- {/* Invitation Message */}
122
- <div
123
- style={{
124
- maxWidth: "50%",
125
- fontFamily: "Dancing Script",
126
- color: "#4A3A2A",
127
- fontSize: 40,
128
- fontWeight: "500",
129
- lineHeight: 1.2,
130
- letterSpacing: "2px",
131
- ...SmoothRevealFromTop({
132
- frame,
133
- startFrame: DETAILS_START,
134
- delay: 0,
135
- })
136
- }}
137
- >
138
- {invitationMessage}
139
- </div>
140
-
141
- {/* Bride Name */}
142
- <h1
143
- style={{
144
- maxWidth: "70%",
145
- fontFamily: "Playfair Display",
146
- color: "#7A1E2E",
147
- fontSize: 60,
148
- fontWeight: "600",
149
- lineHeight: 1.2,
150
- letterSpacing: "3px",
151
- whiteSpace: "normal",
152
- wordBreak: "break-word",
153
- overflowWrap: "break-word",
154
- ...SmoothRevealFromTop({
155
- frame,
156
- startFrame: DETAILS_START,
157
- delay: 25,
158
- })
159
- }}
160
- >
161
- {firstName}
162
- </h1>
163
-
164
- {/* Bride Side Note */}
165
- <div
166
- style={{
167
- maxWidth: "60%",
168
- fontFamily: "Dancing Script",
169
- color: "#B87A6A",
170
- fontSize: 40,
171
- fontWeight: "600",
172
- lineHeight: 1.2,
173
- letterSpacing: "2px",
174
- whiteSpace: "normal",
175
- wordBreak: "break-word",
176
- overflowWrap: "break-word",
177
- ...SmoothRevealFromTop({
178
- frame,
179
- startFrame: DETAILS_START,
180
- delay: 50,
181
- })
182
- }}
183
- >
184
- {firstSideNote}
185
- </div>
134
+ {firstSideNote}
135
+ </div>
186
136
 
187
- {/* & Symbol */}
188
- <div
189
- style={{
190
- fontSize: 40,
191
- color: "#C9A24D",
192
- letterSpacing: "6px",
193
- ...SmoothRevealFromTop({
194
- frame,
195
- startFrame: DETAILS_START,
196
- delay: 70,
197
- })
198
- }}
199
- >
200
- ❁ ❁ ❁
201
- </div>
137
+ <div
138
+ style={{
139
+ fontSize: 40,
140
+ color: "#C9A24D",
141
+ letterSpacing: 6,
142
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 70 }),
143
+ }}
144
+ >
145
+ ❁ ❁
146
+ </div>
202
147
 
148
+ <h1
149
+ style={{
150
+ maxWidth: "70%",
151
+ fontFamily: "Playfair Display",
152
+ color: "#7A1E2E",
153
+ fontSize: 60,
154
+ letterSpacing: 3,
155
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 95 }),
156
+ }}
157
+ >
158
+ {secondName}
159
+ </h1>
203
160
 
204
- {/* Groom Name */}
205
- <h1
206
- style={{
207
- maxWidth: "70%",
208
- fontFamily: "Playfair Display",
209
- color: "#7A1E2E",
210
- fontSize: 60,
211
- fontWeight: "600",
212
- lineHeight: 1.2,
213
- letterSpacing: "3px",
214
- whiteSpace: "normal",
215
- wordBreak: "break-word",
216
- overflowWrap: "break-word",
217
- ...SmoothRevealFromTop({
218
- frame,
219
- startFrame: DETAILS_START,
220
- delay: 95,
221
- })
222
- }}
223
- >
224
- {secondName}
225
- </h1>
161
+ <div
162
+ style={{
163
+ fontFamily: "Dancing Script",
164
+ color: "#B87A6A",
165
+ fontSize: 35,
166
+ maxWidth:"70%",
167
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 120 }),
168
+ }}
169
+ >
170
+ {secondSideNote}
171
+ </div>
226
172
 
227
- {/* Groom Side Note */}
173
+ <div
174
+ style={{
175
+ textAlign: "center",
176
+ ...SmoothRevealFromTop20012026({ frame, startFrame: DETAILS_START, delay: 145 }),
177
+ }}
178
+ >
228
179
  <div
229
180
  style={{
230
- maxWidth: "70%",
231
- fontFamily: "Dancing Script",
232
- color: "#B87A6A",
233
181
  fontSize: 40,
234
- fontWeight: "600",
235
- lineHeight: 1.2,
236
- letterSpacing: "2px",
237
- whiteSpace: "normal",
238
- wordBreak: "break-word",
239
- overflowWrap: "break-word",
240
- ...SmoothRevealFromTop({
241
- frame,
242
- startFrame: DETAILS_START,
243
- delay: 120,
244
- })
182
+ fontWeight:"400",
183
+ fontFamily: "Great Vibes",
184
+ color: "#2F6B4F",
245
185
  }}
246
186
  >
247
- {secondSideNote}
187
+ – Join us on this auspicious day –
248
188
  </div>
249
189
 
250
- {/* Date */}
251
190
  <div
252
191
  style={{
253
- maxWidth: "70%",
254
- marginTop: 20,
255
- textAlign: "center",
256
- ...SmoothRevealFromTop({
257
- frame,
258
- startFrame: DETAILS_START,
259
- delay: 145,
260
- })
192
+ fontSize: 50,
193
+ fontFamily: "Playfair Display",
194
+ color: "#5A4632",
195
+ letterSpacing: 4,
261
196
  }}
262
197
  >
263
- {/* -------- Message Line -------- */}
264
- <div
265
- style={{
266
- fontSize: 45,
267
- fontFamily: "Great Vibes",
268
- fontWeight: "500",
269
- letterSpacing: "3px",
270
- color: "#2F6B4F",
271
- lineHeight: 1.2,
272
- marginBottom: 8,
273
- whiteSpace: "nowrap",
274
-
275
- }}
276
- >
277
- – Join us on this auspicious day –
278
- </div>
279
-
280
- {/* -------- Date Line -------- */}
281
- <div
282
- style={{
283
- fontSize: 55,
284
- fontFamily: "Playfair Display",
285
- fontWeight: "400",
286
- color: "#5A4632",
287
- lineHeight: 1.2,
288
- letterSpacing: "4px",
289
- whiteSpace: "nowrap", // 🔥 force single line
290
- }}
291
- >
292
- {formatDate(occasionDate)}
293
- </div>
198
+ {formatDate(occasionDate)}
294
199
  </div>
295
-
296
-
297
200
  </div>
298
-
299
-
300
- </AbsoluteFill>
201
+ </div>
301
202
  </AbsoluteFill>
302
203
  );
303
204
  };
@@ -10,7 +10,7 @@ import {
10
10
  } from "remotion";
11
11
 
12
12
  import { GroomBrideLoveScene20012026 } from "../Elements/GroomBrideLoveScene20012026.jsx";
13
- import{ SmoothRevealFromTop} from "../Elements/SmoothRevealFromTop.jsx"
13
+ import { SmoothRevealFromTop20012026 } from "../Elements/SmoothRevealFromTop20012026.jsx"
14
14
 
15
15
  export const F20012026_03 = ({
16
16
  eventDateTime,
@@ -22,18 +22,6 @@ export const F20012026_03 = ({
22
22
  const frame = useCurrentFrame();
23
23
  const { fps } = useVideoConfig();
24
24
 
25
- /* ================= SCENE REVEAL (SMOKE FOLLOW-UP) ================= */
26
- // 🎥 VERY SMOOTH CINEMATIC ZOOM
27
- const sceneScale = interpolate(
28
- frame,
29
- [0, fadeInDuration * 2],
30
- [1.20, 1],
31
- {
32
- extrapolateRight: "clamp",
33
- easing: Easing.out(Easing.cubic),
34
- }
35
- );
36
-
37
25
  /* ---------------- DATE UTILS ---------------- */
38
26
  const getDateParts = (iso) => {
39
27
  if (!iso) return { day: "", month: "", year: "", time: "" };
@@ -58,7 +46,7 @@ export const F20012026_03 = ({
58
46
  const { day, month, year, time } = getDateParts(eventDateTime);
59
47
 
60
48
  const DETAILS_START = fps * 4;
61
-
49
+
62
50
  /* ================= IMAGE ANIMATION ================= */
63
51
  const showImageAfter = fadeInDuration * 2;
64
52
 
@@ -92,26 +80,12 @@ export const F20012026_03 = ({
92
80
  );
93
81
 
94
82
  return (
95
- <AbsoluteFill>
96
- <AbsoluteFill style={{ backgroundColor: "#1a1a1a" }} />
97
83
  <AbsoluteFill
98
84
  style={{
99
- transform: `scale(${sceneScale})`,
100
85
  transformOrigin: "center center",
101
86
  overflow: "hidden",
102
87
  }}
103
88
  >
104
- {/* ================= BACKGROUND ================= */}
105
- <Img
106
- src={staticFile("video-images/20012026-bg.png")}
107
- style={{
108
- position: "absolute",
109
- width: "100%",
110
- height: "100%",
111
- objectFit: "cover",
112
-
113
- }}
114
- />
115
89
  <Img
116
90
  src={staticFile("video-images/20012026-wedding-gate.png")}
117
91
  style={{
@@ -156,7 +130,7 @@ export const F20012026_03 = ({
156
130
  whiteSpace: "normal",
157
131
  wordBreak: "break-word",
158
132
  overflowWrap: "break-word",
159
- ...SmoothRevealFromTop({
133
+ ...SmoothRevealFromTop20012026({
160
134
  frame,
161
135
  startFrame: DETAILS_START,
162
136
  delay: 0,
@@ -178,7 +152,7 @@ export const F20012026_03 = ({
178
152
  whiteSpace: "normal",
179
153
  wordBreak: "break-word",
180
154
  overflowWrap: "break-word",
181
- ...SmoothRevealFromTop({
155
+ ...SmoothRevealFromTop20012026({
182
156
  frame,
183
157
  startFrame: DETAILS_START,
184
158
  delay: 25,
@@ -199,11 +173,11 @@ export const F20012026_03 = ({
199
173
  whiteSpace: "normal",
200
174
  wordBreak: "break-word",
201
175
  overflowWrap: "break-word",
202
- ...SmoothRevealFromTop({
203
- frame,
204
- startFrame: DETAILS_START,
205
- delay: 50,
206
- })
176
+ ...SmoothRevealFromTop20012026({
177
+ frame,
178
+ startFrame: DETAILS_START,
179
+ delay: 50,
180
+ })
207
181
 
208
182
  }}
209
183
  >
@@ -223,11 +197,11 @@ export const F20012026_03 = ({
223
197
  whiteSpace: "normal",
224
198
  wordBreak: "break-word",
225
199
  overflowWrap: "break-word",
226
- ...SmoothRevealFromTop({
227
- frame,
228
- startFrame: DETAILS_START,
229
- delay: 70,
230
- })
200
+ ...SmoothRevealFromTop20012026({
201
+ frame,
202
+ startFrame: DETAILS_START,
203
+ delay: 70,
204
+ })
231
205
 
232
206
  }}
233
207
  >
@@ -246,11 +220,11 @@ export const F20012026_03 = ({
246
220
  whiteSpace: "normal",
247
221
  wordBreak: "break-word",
248
222
  overflowWrap: "break-word",
249
- ...SmoothRevealFromTop({
250
- frame,
251
- startFrame: DETAILS_START,
252
- delay: 95,
253
- })
223
+ ...SmoothRevealFromTop20012026({
224
+ frame,
225
+ startFrame: DETAILS_START,
226
+ delay: 95,
227
+ })
254
228
 
255
229
  }}
256
230
  >
@@ -267,11 +241,11 @@ export const F20012026_03 = ({
267
241
  whiteSpace: "normal",
268
242
  wordBreak: "break-word",
269
243
  overflowWrap: "break-word",
270
- ...SmoothRevealFromTop({
271
- frame,
272
- startFrame: DETAILS_START,
273
- delay: 115,
274
- })
244
+ ...SmoothRevealFromTop20012026({
245
+ frame,
246
+ startFrame: DETAILS_START,
247
+ delay: 115,
248
+ })
275
249
 
276
250
  }}
277
251
  >
@@ -291,11 +265,11 @@ export const F20012026_03 = ({
291
265
  whiteSpace: "normal",
292
266
  wordBreak: "break-word",
293
267
  overflowWrap: "break-word",
294
- ...SmoothRevealFromTop({
295
- frame,
296
- startFrame: DETAILS_START,
297
- delay: 125,
298
- })
268
+ ...SmoothRevealFromTop20012026({
269
+ frame,
270
+ startFrame: DETAILS_START,
271
+ delay: 125,
272
+ })
299
273
 
300
274
  }}
301
275
  >
@@ -304,7 +278,5 @@ export const F20012026_03 = ({
304
278
  </div>
305
279
 
306
280
  </AbsoluteFill>
307
-
308
- </AbsoluteFill>
309
281
  );
310
282
  };
@@ -0,0 +1,51 @@
1
+ import React from "react";
2
+ import {
3
+ AbsoluteFill,
4
+ } from "remotion";
5
+ import { FlowerReveal_TR_BL_28012026 } from "../Elements/FlowerReveal_TR_BL_28012026";
6
+ import { GaneshBorder28012026 } from "../Elements/GaneshBorder28012026";
7
+ import { BlowingLeaves28012026 } from "../Elements/BlowingLeaves28012026";
8
+ import { WordReveal28012026 } from "../Elements/WordReveal28012026";
9
+
10
+ export const F28012026_01 = ({
11
+ welcomeMessage,
12
+ }) => {
13
+ return (
14
+ <AbsoluteFill style={{ overflow: "hidden" }}>
15
+ <FlowerReveal_TR_BL_28012026 />
16
+ <GaneshBorder28012026 />
17
+ <BlowingLeaves28012026 startAfter={2} />
18
+
19
+ <div
20
+ style={{
21
+ position: "absolute",
22
+ bottom: "2%",
23
+ right: "6%",
24
+ maxWidth: "50%",
25
+ textAlign: "right",
26
+ }}
27
+ >
28
+ <h1
29
+ style={{
30
+ fontFamily: "Dancing Script",
31
+ letterSpacing: 3,
32
+ lineHeight: 1.3,
33
+ fontWeight: 600,
34
+ margin: 0,
35
+ whiteSpace: "normal",
36
+ wordBreak: "break-word",
37
+ }}
38
+ >
39
+ <WordReveal28012026
40
+ text={welcomeMessage}
41
+ start={50}
42
+ fontSize={70}
43
+ color="#D4A24C"
44
+ />
45
+ </h1>
46
+ </div>
47
+
48
+
49
+ </AbsoluteFill>
50
+ );
51
+ };