@planetaexo/design-system 0.23.4 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3869,6 +3869,610 @@ ${content}
3869
3869
  </html>`;
3870
3870
  }
3871
3871
  var DEFAULT_LABELS = {
3872
+ travellersHeading: "TRAVELLERS",
3873
+ detailsHeading: "DETAILS",
3874
+ pricesHeading: "PRICES",
3875
+ subtotalLabel: "Subtotal",
3876
+ travellersCountLabel: (n) => `${n} traveller(s)`,
3877
+ lineItemSeparator: "\xD7",
3878
+ lineItemEquals: "=",
3879
+ includedHeading: "O que est\xE1 incluso",
3880
+ notIncludedHeading: "O que n\xE3o est\xE1 incluso",
3881
+ childBadge: "child",
3882
+ adultsUnit: "adult(s)",
3883
+ childrenUnit: "child(ren)"
3884
+ };
3885
+ function BookingAdventureCard({
3886
+ tag,
3887
+ name,
3888
+ startDate,
3889
+ endDate,
3890
+ travellerCount,
3891
+ slots,
3892
+ travellers,
3893
+ itinerary,
3894
+ description,
3895
+ image,
3896
+ imageAlt,
3897
+ location,
3898
+ destination,
3899
+ included,
3900
+ notIncluded,
3901
+ lineItems,
3902
+ subtotal,
3903
+ labels,
3904
+ className
3905
+ }) {
3906
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
3907
+ const l = {
3908
+ travellersHeading: (_a = labels == null ? void 0 : labels.travellersHeading) != null ? _a : DEFAULT_LABELS.travellersHeading,
3909
+ detailsHeading: (_b = labels == null ? void 0 : labels.detailsHeading) != null ? _b : DEFAULT_LABELS.detailsHeading,
3910
+ pricesHeading: (_c = labels == null ? void 0 : labels.pricesHeading) != null ? _c : DEFAULT_LABELS.pricesHeading,
3911
+ subtotalLabel: (_d = labels == null ? void 0 : labels.subtotalLabel) != null ? _d : DEFAULT_LABELS.subtotalLabel,
3912
+ travellersCountLabel: (_e = labels == null ? void 0 : labels.travellersCountLabel) != null ? _e : DEFAULT_LABELS.travellersCountLabel,
3913
+ lineItemSeparator: (_f = labels == null ? void 0 : labels.lineItemSeparator) != null ? _f : DEFAULT_LABELS.lineItemSeparator,
3914
+ lineItemEquals: (_g = labels == null ? void 0 : labels.lineItemEquals) != null ? _g : DEFAULT_LABELS.lineItemEquals,
3915
+ includedHeading: (_h = labels == null ? void 0 : labels.includedHeading) != null ? _h : DEFAULT_LABELS.includedHeading,
3916
+ notIncludedHeading: (_i = labels == null ? void 0 : labels.notIncludedHeading) != null ? _i : DEFAULT_LABELS.notIncludedHeading,
3917
+ childBadge: (_j = labels == null ? void 0 : labels.childBadge) != null ? _j : DEFAULT_LABELS.childBadge,
3918
+ adultsUnit: (_k = labels == null ? void 0 : labels.adultsUnit) != null ? _k : DEFAULT_LABELS.adultsUnit,
3919
+ childrenUnit: (_l = labels == null ? void 0 : labels.childrenUnit) != null ? _l : DEFAULT_LABELS.childrenUnit
3920
+ };
3921
+ const hasTravellers = !!travellers && travellers.length > 0;
3922
+ const hasItinerary = !!itinerary && itinerary.length > 0;
3923
+ const hasDescription = !!description && description.trim().length > 0;
3924
+ const hasIncluded = !!included && included.length > 0;
3925
+ const hasNotIncluded = !!notIncluded && notIncluded.length > 0;
3926
+ const hasLineItems = lineItems.length > 0;
3927
+ const dateRange = endDate ? `${startDate} \u2192 ${endDate}` : startDate;
3928
+ const showSlots = !!slots;
3929
+ const slotsText = showSlots ? [
3930
+ slots.adults ? `${slots.adults} ${l.adultsUnit}` : null,
3931
+ slots.children ? `${slots.children} ${l.childrenUnit}` : null
3932
+ ].filter(Boolean).join(" \xB7 ") : "";
3933
+ const showTravellersCount = !showSlots && typeof travellerCount === "number" && travellerCount > 0;
3934
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3935
+ "div",
3936
+ {
3937
+ style: {
3938
+ borderRadius: "16px",
3939
+ border: `1px solid ${emailTokens.border}`,
3940
+ backgroundColor: emailTokens.white,
3941
+ overflow: "hidden"
3942
+ },
3943
+ className,
3944
+ children: [
3945
+ image && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { overflow: "hidden", backgroundColor: emailTokens.muted }, children: /* @__PURE__ */ jsxRuntime.jsx(
3946
+ "img",
3947
+ {
3948
+ src: image,
3949
+ alt: imageAlt != null ? imageAlt : name,
3950
+ style: { width: "100%", height: "auto", display: "block" }
3951
+ }
3952
+ ) }),
3953
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { padding: "20px" }, children: [
3954
+ tag && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
3955
+ "span",
3956
+ {
3957
+ style: {
3958
+ display: "inline-block",
3959
+ backgroundColor: emailTokens.primaryLight,
3960
+ color: emailTokens.primary,
3961
+ padding: "2px 8px",
3962
+ borderRadius: "6px",
3963
+ fontSize: "12px",
3964
+ fontWeight: 600,
3965
+ letterSpacing: "0.05em"
3966
+ },
3967
+ children: tag
3968
+ }
3969
+ ) }),
3970
+ /* @__PURE__ */ jsxRuntime.jsx(
3971
+ "h3",
3972
+ {
3973
+ style: {
3974
+ fontSize: "20px",
3975
+ fontWeight: 700,
3976
+ color: emailTokens.foreground,
3977
+ lineHeight: "1.3",
3978
+ margin: "0 0 10px 0"
3979
+ },
3980
+ children: name
3981
+ }
3982
+ ),
3983
+ /* @__PURE__ */ jsxRuntime.jsx(
3984
+ "table",
3985
+ {
3986
+ cellPadding: 0,
3987
+ cellSpacing: 0,
3988
+ style: { borderCollapse: "collapse", marginBottom: "10px" },
3989
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3990
+ /* @__PURE__ */ jsxRuntime.jsx(
3991
+ "td",
3992
+ {
3993
+ style: {
3994
+ verticalAlign: "middle",
3995
+ paddingRight: "6px",
3996
+ width: "16px"
3997
+ },
3998
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F4C5}" })
3999
+ }
4000
+ ),
4001
+ /* @__PURE__ */ jsxRuntime.jsx(
4002
+ "td",
4003
+ {
4004
+ style: {
4005
+ verticalAlign: "middle",
4006
+ fontSize: "14px",
4007
+ color: emailTokens.mutedForeground,
4008
+ lineHeight: "1"
4009
+ },
4010
+ children: dateRange
4011
+ }
4012
+ )
4013
+ ] }) })
4014
+ }
4015
+ ),
4016
+ location && /* @__PURE__ */ jsxRuntime.jsx(
4017
+ "table",
4018
+ {
4019
+ cellPadding: 0,
4020
+ cellSpacing: 0,
4021
+ style: { borderCollapse: "collapse", marginBottom: "10px" },
4022
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4023
+ /* @__PURE__ */ jsxRuntime.jsx(
4024
+ "td",
4025
+ {
4026
+ style: {
4027
+ verticalAlign: "middle",
4028
+ paddingRight: "6px",
4029
+ width: "16px"
4030
+ },
4031
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F4CD}" })
4032
+ }
4033
+ ),
4034
+ /* @__PURE__ */ jsxRuntime.jsx(
4035
+ "td",
4036
+ {
4037
+ style: {
4038
+ verticalAlign: "middle",
4039
+ fontSize: "14px",
4040
+ color: emailTokens.mutedForeground,
4041
+ lineHeight: "1"
4042
+ },
4043
+ children: location
4044
+ }
4045
+ )
4046
+ ] }) })
4047
+ }
4048
+ ),
4049
+ showSlots && slotsText && /* @__PURE__ */ jsxRuntime.jsx(
4050
+ "table",
4051
+ {
4052
+ cellPadding: 0,
4053
+ cellSpacing: 0,
4054
+ style: { borderCollapse: "collapse", marginBottom: "10px" },
4055
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4056
+ /* @__PURE__ */ jsxRuntime.jsx(
4057
+ "td",
4058
+ {
4059
+ style: {
4060
+ verticalAlign: "middle",
4061
+ paddingRight: "6px",
4062
+ width: "16px"
4063
+ },
4064
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F465}" })
4065
+ }
4066
+ ),
4067
+ /* @__PURE__ */ jsxRuntime.jsx(
4068
+ "td",
4069
+ {
4070
+ style: {
4071
+ verticalAlign: "middle",
4072
+ fontSize: "14px",
4073
+ color: emailTokens.mutedForeground,
4074
+ lineHeight: "1"
4075
+ },
4076
+ children: slotsText
4077
+ }
4078
+ )
4079
+ ] }) })
4080
+ }
4081
+ ),
4082
+ showTravellersCount && /* @__PURE__ */ jsxRuntime.jsx(
4083
+ "table",
4084
+ {
4085
+ cellPadding: 0,
4086
+ cellSpacing: 0,
4087
+ style: { borderCollapse: "collapse", marginBottom: "10px" },
4088
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4089
+ /* @__PURE__ */ jsxRuntime.jsx(
4090
+ "td",
4091
+ {
4092
+ style: {
4093
+ verticalAlign: "middle",
4094
+ paddingRight: "6px",
4095
+ width: "16px"
4096
+ },
4097
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F465}" })
4098
+ }
4099
+ ),
4100
+ /* @__PURE__ */ jsxRuntime.jsx(
4101
+ "td",
4102
+ {
4103
+ style: {
4104
+ verticalAlign: "middle",
4105
+ fontSize: "14px",
4106
+ color: emailTokens.mutedForeground,
4107
+ lineHeight: "1"
4108
+ },
4109
+ children: l.travellersCountLabel(travellerCount)
4110
+ }
4111
+ )
4112
+ ] }) })
4113
+ }
4114
+ ),
4115
+ destination && /* @__PURE__ */ jsxRuntime.jsx(
4116
+ "table",
4117
+ {
4118
+ cellPadding: 0,
4119
+ cellSpacing: 0,
4120
+ style: { borderCollapse: "collapse", marginBottom: "10px" },
4121
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4122
+ /* @__PURE__ */ jsxRuntime.jsx(
4123
+ "td",
4124
+ {
4125
+ style: {
4126
+ verticalAlign: "middle",
4127
+ paddingRight: "6px",
4128
+ width: "16px"
4129
+ },
4130
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F9ED}" })
4131
+ }
4132
+ ),
4133
+ /* @__PURE__ */ jsxRuntime.jsx(
4134
+ "td",
4135
+ {
4136
+ style: {
4137
+ verticalAlign: "middle",
4138
+ fontSize: "14px",
4139
+ color: emailTokens.mutedForeground,
4140
+ lineHeight: "1"
4141
+ },
4142
+ children: destination
4143
+ }
4144
+ )
4145
+ ] }) })
4146
+ }
4147
+ ),
4148
+ hasTravellers && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4149
+ /* @__PURE__ */ jsxRuntime.jsx(
4150
+ "hr",
4151
+ {
4152
+ style: {
4153
+ border: "none",
4154
+ borderTop: `1px solid ${emailTokens.border}`,
4155
+ marginBottom: "10px"
4156
+ }
4157
+ }
4158
+ ),
4159
+ /* @__PURE__ */ jsxRuntime.jsx(
4160
+ "p",
4161
+ {
4162
+ style: {
4163
+ fontSize: "10px",
4164
+ fontWeight: 700,
4165
+ color: emailTokens.mutedForeground,
4166
+ textTransform: "uppercase",
4167
+ letterSpacing: "0.1em",
4168
+ margin: "0 0 8px 0"
4169
+ },
4170
+ children: l.travellersHeading
4171
+ }
4172
+ ),
4173
+ travellers.map((tr, i) => {
4174
+ var _a2;
4175
+ const isObj = typeof tr === "object";
4176
+ const fullName = isObj ? tr.fullName : tr;
4177
+ const isChild = isObj && tr.isChild === true;
4178
+ const childLabel = isObj ? (_a2 = tr.childBadgeLabel) != null ? _a2 : l.childBadge : l.childBadge;
4179
+ return /* @__PURE__ */ jsxRuntime.jsx(
4180
+ "table",
4181
+ {
4182
+ cellPadding: 0,
4183
+ cellSpacing: 0,
4184
+ style: {
4185
+ borderCollapse: "collapse",
4186
+ width: "100%",
4187
+ marginBottom: "6px"
4188
+ },
4189
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4190
+ /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle" }, children: /* @__PURE__ */ jsxRuntime.jsx(
4191
+ "span",
4192
+ {
4193
+ style: {
4194
+ fontSize: "14px",
4195
+ fontWeight: 500,
4196
+ color: emailTokens.foreground
4197
+ },
4198
+ children: fullName
4199
+ }
4200
+ ) }),
4201
+ isChild && /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", textAlign: "right" }, children: /* @__PURE__ */ jsxRuntime.jsx(
4202
+ "span",
4203
+ {
4204
+ style: {
4205
+ fontSize: "10px",
4206
+ fontWeight: 600,
4207
+ color: emailTokens.mutedForeground,
4208
+ backgroundColor: emailTokens.muted,
4209
+ borderRadius: "9999px",
4210
+ padding: "2px 8px",
4211
+ textTransform: "uppercase",
4212
+ letterSpacing: "0.05em"
4213
+ },
4214
+ children: childLabel
4215
+ }
4216
+ ) })
4217
+ ] }) })
4218
+ },
4219
+ i
4220
+ );
4221
+ })
4222
+ ] }),
4223
+ (hasDescription || hasItinerary) && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4224
+ /* @__PURE__ */ jsxRuntime.jsx(
4225
+ "hr",
4226
+ {
4227
+ style: {
4228
+ border: "none",
4229
+ borderTop: `1px solid ${emailTokens.border}`,
4230
+ marginBottom: "10px"
4231
+ }
4232
+ }
4233
+ ),
4234
+ /* @__PURE__ */ jsxRuntime.jsx(
4235
+ "p",
4236
+ {
4237
+ style: {
4238
+ fontSize: "10px",
4239
+ fontWeight: 700,
4240
+ color: emailTokens.mutedForeground,
4241
+ textTransform: "uppercase",
4242
+ letterSpacing: "0.1em",
4243
+ margin: "0 0 8px 0"
4244
+ },
4245
+ children: l.detailsHeading
4246
+ }
4247
+ ),
4248
+ hasDescription ? /* @__PURE__ */ jsxRuntime.jsx(
4249
+ "div",
4250
+ {
4251
+ style: {
4252
+ fontSize: "14px",
4253
+ color: emailTokens.bodyText,
4254
+ lineHeight: "1.4",
4255
+ margin: 0
4256
+ },
4257
+ dangerouslySetInnerHTML: { __html: description }
4258
+ }
4259
+ ) : itinerary.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx(
4260
+ "p",
4261
+ {
4262
+ style: {
4263
+ fontSize: "14px",
4264
+ color: emailTokens.bodyText,
4265
+ lineHeight: "1.4",
4266
+ margin: "0 0 6px 0"
4267
+ },
4268
+ children: line
4269
+ },
4270
+ i
4271
+ ))
4272
+ ] }),
4273
+ hasIncluded && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "10px" }, children: [
4274
+ /* @__PURE__ */ jsxRuntime.jsx(
4275
+ "h4",
4276
+ {
4277
+ style: {
4278
+ fontSize: "14px",
4279
+ fontWeight: 700,
4280
+ color: emailTokens.foreground,
4281
+ margin: "0 0 8px 0"
4282
+ },
4283
+ children: l.includedHeading
4284
+ }
4285
+ ),
4286
+ included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
4287
+ "table",
4288
+ {
4289
+ cellPadding: 0,
4290
+ cellSpacing: 0,
4291
+ style: {
4292
+ borderCollapse: "collapse",
4293
+ width: "100%",
4294
+ marginBottom: "6px"
4295
+ },
4296
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4297
+ /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", paddingRight: "8px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
4298
+ "span",
4299
+ {
4300
+ style: {
4301
+ display: "inline-block",
4302
+ fontSize: "14px",
4303
+ color: emailTokens.primary,
4304
+ lineHeight: "1.2",
4305
+ fontWeight: 700
4306
+ },
4307
+ children: "\u2713"
4308
+ }
4309
+ ) }),
4310
+ /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", fontSize: "14px", color: emailTokens.bodyText }, children: item })
4311
+ ] }) })
4312
+ },
4313
+ i
4314
+ ))
4315
+ ] }),
4316
+ hasNotIncluded && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "10px" }, children: [
4317
+ /* @__PURE__ */ jsxRuntime.jsx(
4318
+ "h4",
4319
+ {
4320
+ style: {
4321
+ fontSize: "14px",
4322
+ fontWeight: 700,
4323
+ color: emailTokens.foreground,
4324
+ margin: "0 0 8px 0"
4325
+ },
4326
+ children: l.notIncludedHeading
4327
+ }
4328
+ ),
4329
+ notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(
4330
+ "table",
4331
+ {
4332
+ cellPadding: 0,
4333
+ cellSpacing: 0,
4334
+ style: {
4335
+ borderCollapse: "collapse",
4336
+ width: "100%",
4337
+ marginBottom: "6px"
4338
+ },
4339
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4340
+ /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", paddingRight: "8px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
4341
+ "span",
4342
+ {
4343
+ style: {
4344
+ display: "inline-block",
4345
+ fontSize: "14px",
4346
+ color: emailTokens.destructive,
4347
+ lineHeight: "1.2",
4348
+ fontWeight: 700
4349
+ },
4350
+ children: "\u2717"
4351
+ }
4352
+ ) }),
4353
+ /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", fontSize: "14px", color: emailTokens.bodyText }, children: item })
4354
+ ] }) })
4355
+ },
4356
+ i
4357
+ ))
4358
+ ] }),
4359
+ hasLineItems && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4360
+ /* @__PURE__ */ jsxRuntime.jsx(
4361
+ "hr",
4362
+ {
4363
+ style: {
4364
+ border: "none",
4365
+ borderTop: `1px solid ${emailTokens.border}`,
4366
+ marginBottom: "10px"
4367
+ }
4368
+ }
4369
+ ),
4370
+ /* @__PURE__ */ jsxRuntime.jsx(
4371
+ "p",
4372
+ {
4373
+ style: {
4374
+ fontSize: "10px",
4375
+ fontWeight: 700,
4376
+ color: emailTokens.mutedForeground,
4377
+ textTransform: "uppercase",
4378
+ letterSpacing: "0.1em",
4379
+ margin: "0 0 8px 0"
4380
+ },
4381
+ children: l.pricesHeading
4382
+ }
4383
+ ),
4384
+ lineItems.map((li, j) => {
4385
+ var _a2, _b2, _c2;
4386
+ const useLabel = typeof li.label === "string" && li.label.length > 0;
4387
+ const valueText = li.subtotal;
4388
+ const rightStyle = {
4389
+ verticalAlign: "middle",
4390
+ textAlign: "right",
4391
+ fontSize: "14px",
4392
+ fontWeight: 500,
4393
+ whiteSpace: "nowrap",
4394
+ color: li.isDiscount ? emailTokens.green : emailTokens.foreground
4395
+ };
4396
+ return /* @__PURE__ */ jsxRuntime.jsx(
4397
+ "table",
4398
+ {
4399
+ cellPadding: 0,
4400
+ cellSpacing: 0,
4401
+ style: {
4402
+ borderCollapse: "collapse",
4403
+ width: "100%",
4404
+ marginBottom: "4px"
4405
+ },
4406
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4407
+ /* @__PURE__ */ jsxRuntime.jsx(
4408
+ "td",
4409
+ {
4410
+ style: {
4411
+ verticalAlign: "middle",
4412
+ fontSize: "14px",
4413
+ color: emailTokens.mutedForeground
4414
+ },
4415
+ children: useLabel ? li.label : `${(_a2 = li.unitPrice) != null ? _a2 : ""} ${l.lineItemSeparator} ${(_b2 = li.quantity) != null ? _b2 : ""} ${(_c2 = li.categoryLabel) != null ? _c2 : ""} ${l.lineItemEquals}`
4416
+ }
4417
+ ),
4418
+ /* @__PURE__ */ jsxRuntime.jsxs("td", { style: rightStyle, children: [
4419
+ li.isDiscount ? "\u2212" : "",
4420
+ valueText
4421
+ ] })
4422
+ ] }) })
4423
+ },
4424
+ j
4425
+ );
4426
+ }),
4427
+ subtotal && /* @__PURE__ */ jsxRuntime.jsx(
4428
+ "table",
4429
+ {
4430
+ cellPadding: 0,
4431
+ cellSpacing: 0,
4432
+ style: {
4433
+ borderCollapse: "collapse",
4434
+ width: "100%",
4435
+ paddingTop: "8px",
4436
+ marginTop: "4px",
4437
+ borderTop: `1px solid ${emailTokens.border}`
4438
+ },
4439
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4440
+ /* @__PURE__ */ jsxRuntime.jsx(
4441
+ "td",
4442
+ {
4443
+ style: {
4444
+ verticalAlign: "middle",
4445
+ fontSize: "14px",
4446
+ fontWeight: 700,
4447
+ color: emailTokens.foreground
4448
+ },
4449
+ children: l.subtotalLabel
4450
+ }
4451
+ ),
4452
+ /* @__PURE__ */ jsxRuntime.jsx(
4453
+ "td",
4454
+ {
4455
+ style: {
4456
+ verticalAlign: "middle",
4457
+ textAlign: "right",
4458
+ fontSize: "14px",
4459
+ fontWeight: 700,
4460
+ color: emailTokens.foreground,
4461
+ whiteSpace: "nowrap"
4462
+ },
4463
+ children: subtotal
4464
+ }
4465
+ )
4466
+ ] }) })
4467
+ }
4468
+ )
4469
+ ] })
4470
+ ] })
4471
+ ]
4472
+ }
4473
+ );
4474
+ }
4475
+ var DEFAULT_LABELS2 = {
3872
4476
  ctaButton: "View booking details",
3873
4477
  logoAlt: "PlanetaEXO",
3874
4478
  greeting: (recipientName) => `Hi ${recipientName},`,
@@ -3920,7 +4524,7 @@ function BookingConfirmation({
3920
4524
  className,
3921
4525
  flow = "auto"
3922
4526
  }) {
3923
- const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS), labels);
4527
+ const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS2), labels);
3924
4528
  const allTravellers = adventures.flatMap((a) => {
3925
4529
  var _a;
3926
4530
  return (_a = a.travellers) != null ? _a : [];
@@ -4008,115 +4612,57 @@ function BookingConfirmation({
4008
4612
  ] }),
4009
4613
  /* @__PURE__ */ jsxRuntime.jsx("hr", { style: { border: "none", borderTop: `1px solid ${emailTokens.border}`, margin: "0 32px" } }),
4010
4614
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: { paddingLeft: "32px", paddingRight: "32px", paddingTop: "32px", paddingBottom: "32px" }, children: adventures.map((adventure, adIdx) => {
4011
- var _a, _b, _c, _d, _e;
4012
- return /* @__PURE__ */ jsxRuntime.jsxs(
4615
+ var _a, _b, _c, _d;
4616
+ const locationToPass = adventure.location && !adventure.destinationName ? adventure.location : void 0;
4617
+ const destinationToPass = (_a = adventure.destinationName) != null ? _a : adventure.partner;
4618
+ const tagToPass = (_b = adventure.code) != null ? _b : adventure.reference;
4619
+ const travellersToPass = (_c = adventure.travellers) == null ? void 0 : _c.map((tr) => ({
4620
+ fullName: `${tr.firstName} ${tr.lastName}`,
4621
+ isChild: tr.isChild,
4622
+ childBadgeLabel: l.childBadge
4623
+ }));
4624
+ const lineItemsToPass = ((_d = adventure.lineItems) != null ? _d : []).map((it) => ({
4625
+ label: it.label,
4626
+ subtotal: it.price,
4627
+ isDiscount: it.isDiscount
4628
+ }));
4629
+ return /* @__PURE__ */ jsxRuntime.jsx(
4013
4630
  "div",
4014
4631
  {
4015
4632
  style: {
4016
- borderRadius: "16px",
4017
- border: `1px solid ${emailTokens.border}`,
4018
- backgroundColor: emailTokens.white,
4019
- overflow: "hidden",
4020
4633
  marginBottom: adIdx < adventures.length - 1 ? "24px" : "0"
4021
4634
  },
4022
- children: [
4023
- adventure.image && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { overflow: "hidden", backgroundColor: emailTokens.muted }, children: /* @__PURE__ */ jsxRuntime.jsx(
4024
- "img",
4025
- {
4026
- src: adventure.image,
4027
- alt: (_a = adventure.imageAlt) != null ? _a : adventure.title,
4028
- style: { width: "100%", height: "auto", display: "block" }
4635
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4636
+ BookingAdventureCard,
4637
+ {
4638
+ tag: tagToPass,
4639
+ name: adventure.title,
4640
+ startDate: adventure.dateFrom,
4641
+ endDate: adventure.dateTo,
4642
+ slots: adventure.slots,
4643
+ travellers: travellersToPass,
4644
+ description: adventure.description,
4645
+ image: adventure.image,
4646
+ imageAlt: adventure.imageAlt,
4647
+ location: locationToPass,
4648
+ destination: destinationToPass,
4649
+ included: adventure.included,
4650
+ notIncluded: adventure.notIncluded,
4651
+ lineItems: lineItemsToPass,
4652
+ subtotal: adventure.subtotal,
4653
+ labels: {
4654
+ travellersHeading: l.travellersLabel,
4655
+ detailsHeading: l.itineraryLabel,
4656
+ pricesHeading: l.pricingLabel,
4657
+ subtotalLabel: l.subtotalLabel,
4658
+ includedHeading: l.includedLabel,
4659
+ notIncludedHeading: l.notIncludedLabel,
4660
+ childBadge: l.childBadge,
4661
+ adultsUnit: l.adultsUnit,
4662
+ childrenUnit: l.childrenUnit
4029
4663
  }
4030
- ) }),
4031
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { padding: "20px" }, children: [
4032
- ((_b = adventure.code) != null ? _b : adventure.reference) && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: {
4033
- display: "inline-block",
4034
- backgroundColor: emailTokens.primaryLight,
4035
- color: emailTokens.primary,
4036
- padding: "2px 8px",
4037
- borderRadius: "6px",
4038
- fontSize: "12px",
4039
- fontWeight: "600",
4040
- letterSpacing: "0.05em"
4041
- }, children: (_c = adventure.code) != null ? _c : adventure.reference }) }),
4042
- /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { fontSize: "20px", fontWeight: "700", color: emailTokens.foreground, lineHeight: "1.3", margin: "0 0 10px 0" }, children: adventure.title }),
4043
- /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4044
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", paddingRight: "6px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F4C5}" }) }),
4045
- /* @__PURE__ */ jsxRuntime.jsxs("td", { style: { verticalAlign: "middle", fontSize: "14px", color: emailTokens.mutedForeground, lineHeight: "1" }, children: [
4046
- adventure.dateFrom,
4047
- " \u2192 ",
4048
- adventure.dateTo
4049
- ] })
4050
- ] }) }) }),
4051
- adventure.location && !adventure.destinationName && /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4052
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", paddingRight: "6px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F4CD}" }) }),
4053
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", fontSize: "14px", color: emailTokens.mutedForeground, lineHeight: "1" }, children: adventure.location })
4054
- ] }) }) }),
4055
- adventure.slots && /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4056
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", paddingRight: "6px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F465}" }) }),
4057
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", fontSize: "14px", color: emailTokens.mutedForeground, lineHeight: "1" }, children: [
4058
- adventure.slots.adults ? `${adventure.slots.adults} ${l.adultsUnit}` : null,
4059
- adventure.slots.children ? `${adventure.slots.children} ${l.childrenUnit}` : null
4060
- ].filter(Boolean).join(" \xB7 ") })
4061
- ] }) }) }),
4062
- ((_d = adventure.destinationName) != null ? _d : adventure.partner) && /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", marginBottom: "10px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4063
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", paddingRight: "6px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", lineHeight: "1" }, children: "\u{1F9ED}" }) }),
4064
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", fontSize: "14px", color: emailTokens.mutedForeground, lineHeight: "1" }, children: (_e = adventure.destinationName) != null ? _e : adventure.partner })
4065
- ] }) }) }),
4066
- adventure.travellers && adventure.travellers.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4067
- /* @__PURE__ */ jsxRuntime.jsx("hr", { style: { border: "none", borderTop: `1px solid ${emailTokens.border}`, marginBottom: "10px" } }),
4068
- /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "10px", fontWeight: "700", color: emailTokens.mutedForeground, textTransform: "uppercase", letterSpacing: "0.1em", margin: "0 0 8px 0" }, children: l.travellersLabel }),
4069
- adventure.travellers.map((traveller) => /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", width: "100%", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4070
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle" }, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "14px", fontWeight: "500", color: emailTokens.foreground }, children: [
4071
- traveller.firstName,
4072
- " ",
4073
- traveller.lastName
4074
- ] }) }),
4075
- traveller.isChild && /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", textAlign: "right" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "10px", fontWeight: "600", color: emailTokens.mutedForeground, backgroundColor: emailTokens.muted, borderRadius: "9999px", padding: "2px 8px", textTransform: "uppercase", letterSpacing: "0.05em" }, children: l.childBadge }) })
4076
- ] }) }) }, traveller.id))
4077
- ] }),
4078
- adventure.description && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4079
- /* @__PURE__ */ jsxRuntime.jsx("hr", { style: { border: "none", borderTop: `1px solid ${emailTokens.border}`, marginBottom: "10px" } }),
4080
- /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "10px", fontWeight: "700", color: emailTokens.mutedForeground, textTransform: "uppercase", letterSpacing: "0.1em", margin: "0 0 8px 0" }, children: l.itineraryLabel }),
4081
- /* @__PURE__ */ jsxRuntime.jsx(
4082
- "div",
4083
- {
4084
- style: { fontSize: "14px", color: emailTokens.bodyText, lineHeight: "1.4", margin: 0 },
4085
- dangerouslySetInnerHTML: { __html: adventure.description }
4086
- }
4087
- )
4088
- ] }),
4089
- adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "10px" }, children: [
4090
- /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { fontSize: "14px", fontWeight: "700", color: emailTokens.foreground, margin: "0 0 8px 0" }, children: l.includedLabel }),
4091
- adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", width: "100%", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4092
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", paddingRight: "8px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", color: emailTokens.primary, lineHeight: "1.2", fontWeight: 700 }, children: "\u2713" }) }),
4093
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", fontSize: "14px", color: emailTokens.bodyText }, children: item })
4094
- ] }) }) }, i))
4095
- ] }),
4096
- adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "10px" }, children: [
4097
- /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { fontSize: "14px", fontWeight: "700", color: emailTokens.foreground, margin: "0 0 8px 0" }, children: l.notIncludedLabel }),
4098
- adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", width: "100%", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4099
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", paddingRight: "8px", width: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", fontSize: "14px", color: emailTokens.destructive, lineHeight: "1.2", fontWeight: 700 }, children: "\u2717" }) }),
4100
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "top", fontSize: "14px", color: emailTokens.bodyText }, children: item })
4101
- ] }) }) }, i))
4102
- ] }),
4103
- adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4104
- /* @__PURE__ */ jsxRuntime.jsx("hr", { style: { border: "none", borderTop: `1px solid ${emailTokens.border}`, marginBottom: "10px" } }),
4105
- /* @__PURE__ */ jsxRuntime.jsx("p", { style: { fontSize: "10px", fontWeight: "700", color: emailTokens.mutedForeground, textTransform: "uppercase", letterSpacing: "0.1em", margin: "0 0 8px 0" }, children: l.pricingLabel }),
4106
- adventure.lineItems.map((item, j) => /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", width: "100%", marginBottom: "4px" }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4107
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", fontSize: "14px", color: emailTokens.mutedForeground }, children: item.label }),
4108
- /* @__PURE__ */ jsxRuntime.jsxs("td", { style: { verticalAlign: "middle", textAlign: "right", fontSize: "14px", fontWeight: "500", whiteSpace: "nowrap", color: item.isDiscount ? emailTokens.green : emailTokens.foreground }, children: [
4109
- item.isDiscount ? "\u2212" : "",
4110
- item.price
4111
- ] })
4112
- ] }) }) }, j)),
4113
- adventure.subtotal && /* @__PURE__ */ jsxRuntime.jsx("table", { cellPadding: "0", cellSpacing: "0", style: { borderCollapse: "collapse", width: "100%", paddingTop: "8px", marginTop: "4px", borderTop: `1px solid ${emailTokens.border}` }, children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4114
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", fontSize: "14px", fontWeight: "700", color: emailTokens.foreground }, children: l.subtotalLabel }),
4115
- /* @__PURE__ */ jsxRuntime.jsx("td", { style: { verticalAlign: "middle", textAlign: "right", fontSize: "14px", fontWeight: "700", color: emailTokens.foreground, whiteSpace: "nowrap" }, children: adventure.subtotal })
4116
- ] }) }) })
4117
- ] })
4118
- ] })
4119
- ]
4664
+ }
4665
+ )
4120
4666
  },
4121
4667
  adventure.id
4122
4668
  );
@@ -4175,7 +4721,7 @@ function BookingConfirmation({
4175
4721
  }
4176
4722
  );
4177
4723
  }
4178
- var DEFAULT_LABELS2 = {
4724
+ var DEFAULT_LABELS3 = {
4179
4725
  ctaButton: "Add travellers to your booking",
4180
4726
  logoAlt: "PlanetaEXO",
4181
4727
  greeting: (recipientName) => `Hi ${recipientName},`,
@@ -4208,7 +4754,7 @@ function BookingConfirmationEmail({
4208
4754
  nextStepsImportant,
4209
4755
  directBookingLinkLabel
4210
4756
  }) {
4211
- const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS2), labels);
4757
+ const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS3), labels);
4212
4758
  const ctaStyle = {
4213
4759
  display: "inline-block",
4214
4760
  backgroundColor: emailTokens.primary,
@@ -4295,7 +4841,7 @@ function BookingConfirmationEmail({
4295
4841
  }
4296
4842
  );
4297
4843
  }
4298
- var DEFAULT_LABELS3 = {
4844
+ var DEFAULT_LABELS4 = {
4299
4845
  logoAlt: "PlanetaEXO",
4300
4846
  greeting: (name) => `Hi ${name},`,
4301
4847
  receiptHeading: "Payment receipt",
@@ -4334,7 +4880,7 @@ function PaymentReceiptEmail({
4334
4880
  labels,
4335
4881
  className
4336
4882
  }) {
4337
- const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS3), labels);
4883
+ const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS4), labels);
4338
4884
  const travellersLine = travellers.filter((s) => s.trim().length > 0).join(", ");
4339
4885
  const interestRow = chargedAmount && chargedAmount !== amount;
4340
4886
  const receiptRows = [
@@ -4430,6 +4976,252 @@ function PaymentReceiptEmail({
4430
4976
  }
4431
4977
  );
4432
4978
  }
4979
+ var EMPTY_AGENT_FN = (_agentName) => "";
4980
+ var DEFAULT_LABELS5 = {
4981
+ logoAlt: "PlanetaEXO",
4982
+ greeting: (name) => `Hi ${name},`,
4983
+ intermediateHello: "Hope you're doing well.",
4984
+ bookingSummaryHeader: "Booking summary",
4985
+ amountAlreadyPaidLabel: "Amount already paid",
4986
+ remainingBalanceDueLabel: "Remaining balance due",
4987
+ totalBookingAmountLabel: "Total booking amount",
4988
+ ctaLabel: "Complete Payment",
4989
+ teamSignature: "The PlanetaEXO Team",
4990
+ closingAgent: (agentName) => `If you need any assistance or would like to discuss your payment, feel free to contact your agent ${agentName} via WhatsApp or email.`,
4991
+ closingNoAgent: "If you need any assistance or would like to discuss your payment, feel free to contact us via WhatsApp or email.",
4992
+ adventureCard: {
4993
+ travellersHeading: "TRAVELLERS",
4994
+ detailsHeading: "DETAILS",
4995
+ pricesHeading: "PRICES",
4996
+ subtotalLabel: "Subtotal",
4997
+ travellersCountLabel: (n) => `${n} traveller(s)`,
4998
+ lineItemSeparator: "\xD7",
4999
+ lineItemEquals: "="
5000
+ },
5001
+ variants: {
5002
+ dMinus1: {
5003
+ intro: (b, d) => `This is a friendly reminder that the remaining balance for your booking #${b} with PlanetaEXO is due tomorrow (${d}).`,
5004
+ secureLine: "To secure your booking, please complete the payment through your booking page using the button below:",
5005
+ closingThanks: "Many thanks, and we look forward to helping you experience your next adventure with us.",
5006
+ disregardIfPaid: "",
5007
+ closingAlternative: EMPTY_AGENT_FN
5008
+ },
5009
+ dZero: {
5010
+ intro: (b, d) => `This is a friendly reminder that the remaining balance for your booking #${b} with PlanetaEXO is due today (${d}).`,
5011
+ secureLine: "To keep your booking confirmed, please complete the payment through your booking page using the button below:",
5012
+ closingThanks: "Many thanks, and we look forward to welcoming you soon.",
5013
+ disregardIfPaid: "",
5014
+ closingAlternative: EMPTY_AGENT_FN
5015
+ },
5016
+ dPlus1: {
5017
+ intro: (b, d) => `We noticed that the remaining balance for your booking #${b} with PlanetaEXO was due yesterday (${d}) and is still pending.`,
5018
+ secureLine: "To avoid any impact on your booking confirmation, we kindly ask you to complete the payment as soon as possible through your booking page:",
5019
+ closingThanks: "Thank you, and we hope to welcome you on your upcoming adventure soon.",
5020
+ disregardIfPaid: "If you have already completed the payment, please disregard this message.",
5021
+ closingAlternative: EMPTY_AGENT_FN
5022
+ },
5023
+ dPlus2: {
5024
+ intro: (b, d) => `This is a final reminder regarding the remaining balance for your booking #${b} with PlanetaEXO, which was due on ${d} and is still pending.`,
5025
+ secureLine: "To avoid any impact on your booking status or availability, we kindly ask you to complete the payment as soon as possible through your booking page:",
5026
+ closingThanks: "Thank you for your attention, and we hope to welcome you on this adventure soon.",
5027
+ disregardIfPaid: "If you have already completed the payment, please disregard this message.",
5028
+ closingAlternative: (agentName) => `If you are experiencing any issues with payment or need additional time, please contact your agent ${agentName} via WhatsApp or email. We'll be happy to assist.`
5029
+ }
5030
+ }
5031
+ };
5032
+ function PaymentReminderEmail({
5033
+ variant,
5034
+ recipientName,
5035
+ bookingNumber,
5036
+ balanceDueDate,
5037
+ adventures,
5038
+ amountAlreadyPaid,
5039
+ remainingBalanceDue,
5040
+ totalBookingAmount,
5041
+ viewBookingUrl,
5042
+ agentName,
5043
+ logoUrl,
5044
+ labels,
5045
+ className
5046
+ }) {
5047
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
5048
+ const lOverride = labels != null ? labels : {};
5049
+ const variantDefaults = DEFAULT_LABELS5.variants[variant];
5050
+ const variantOverride = (_b = (_a = lOverride.variants) == null ? void 0 : _a[variant]) != null ? _b : {};
5051
+ const variantLabels = {
5052
+ intro: (_c = variantOverride.intro) != null ? _c : variantDefaults.intro,
5053
+ secureLine: (_d = variantOverride.secureLine) != null ? _d : variantDefaults.secureLine,
5054
+ closingThanks: (_e = variantOverride.closingThanks) != null ? _e : variantDefaults.closingThanks,
5055
+ disregardIfPaid: variantOverride.disregardIfPaid !== void 0 ? variantOverride.disregardIfPaid : variantDefaults.disregardIfPaid,
5056
+ closingAlternative: (_f = variantOverride.closingAlternative) != null ? _f : variantDefaults.closingAlternative
5057
+ };
5058
+ const l = {
5059
+ logoAlt: (_g = lOverride.logoAlt) != null ? _g : DEFAULT_LABELS5.logoAlt,
5060
+ greeting: (_h = lOverride.greeting) != null ? _h : DEFAULT_LABELS5.greeting,
5061
+ intermediateHello: (_i = lOverride.intermediateHello) != null ? _i : DEFAULT_LABELS5.intermediateHello,
5062
+ bookingSummaryHeader: (_j = lOverride.bookingSummaryHeader) != null ? _j : DEFAULT_LABELS5.bookingSummaryHeader,
5063
+ amountAlreadyPaidLabel: (_k = lOverride.amountAlreadyPaidLabel) != null ? _k : DEFAULT_LABELS5.amountAlreadyPaidLabel,
5064
+ remainingBalanceDueLabel: (_l = lOverride.remainingBalanceDueLabel) != null ? _l : DEFAULT_LABELS5.remainingBalanceDueLabel,
5065
+ totalBookingAmountLabel: (_m = lOverride.totalBookingAmountLabel) != null ? _m : DEFAULT_LABELS5.totalBookingAmountLabel,
5066
+ ctaLabel: (_n = lOverride.ctaLabel) != null ? _n : DEFAULT_LABELS5.ctaLabel,
5067
+ teamSignature: (_o = lOverride.teamSignature) != null ? _o : DEFAULT_LABELS5.teamSignature,
5068
+ closingAgent: (_p = lOverride.closingAgent) != null ? _p : DEFAULT_LABELS5.closingAgent,
5069
+ closingNoAgent: (_q = lOverride.closingNoAgent) != null ? _q : DEFAULT_LABELS5.closingNoAgent,
5070
+ adventureCard: __spreadValues(__spreadValues({}, DEFAULT_LABELS5.adventureCard), (_r = lOverride.adventureCard) != null ? _r : {})
5071
+ };
5072
+ const ctaStyle = {
5073
+ display: "inline-block",
5074
+ backgroundColor: emailTokens.primary,
5075
+ color: emailTokens.primaryForeground,
5076
+ padding: "12px 24px",
5077
+ borderRadius: "8px",
5078
+ fontSize: "14px",
5079
+ fontWeight: 700,
5080
+ textDecoration: "none",
5081
+ fontFamily: emailTokens.fontFamily
5082
+ };
5083
+ const summaryRowStyle = {
5084
+ margin: "0 0 8px",
5085
+ fontSize: "14px",
5086
+ color: emailTokens.foreground
5087
+ };
5088
+ const agentNameTrimmed = agentName == null ? void 0 : agentName.trim();
5089
+ const closingMain = agentNameTrimmed ? l.closingAgent(agentNameTrimmed) : l.closingNoAgent;
5090
+ const showDisregard = typeof variantLabels.disregardIfPaid === "string" && variantLabels.disregardIfPaid.trim().length > 0;
5091
+ const closingAlternativeText = agentNameTrimmed && variantLabels.closingAlternative ? variantLabels.closingAlternative(agentNameTrimmed) : "";
5092
+ const showClosingAlternative = closingAlternativeText.trim().length > 0;
5093
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5094
+ "div",
5095
+ {
5096
+ style: {
5097
+ maxWidth: "576px",
5098
+ margin: "0 auto",
5099
+ backgroundColor: emailTokens.white,
5100
+ color: emailTokens.foreground,
5101
+ fontFamily: emailTokens.fontFamily,
5102
+ fontSize: "16px",
5103
+ lineHeight: "1.6",
5104
+ border: `1px solid ${emailTokens.border}`,
5105
+ borderRadius: "12px",
5106
+ overflow: "hidden",
5107
+ padding: "32px"
5108
+ },
5109
+ className,
5110
+ children: [
5111
+ /* @__PURE__ */ jsxRuntime.jsx(EmailLogo, { src: logoUrl, alt: l.logoAlt }),
5112
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px" }, children: l.greeting(recipientName) }),
5113
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px" }, children: l.intermediateHello }),
5114
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "12px" }, children: variantLabels.intro(bookingNumber, balanceDueDate) }),
5115
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "24px" }, children: variantLabels.secureLine }),
5116
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginBottom: "32px", textAlign: "center" }, children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: viewBookingUrl, style: ctaStyle, children: l.ctaLabel }) }),
5117
+ /* @__PURE__ */ jsxRuntime.jsx(
5118
+ "hr",
5119
+ {
5120
+ style: {
5121
+ border: "none",
5122
+ borderTop: `1px solid ${emailTokens.border}`,
5123
+ marginBottom: "24px"
5124
+ }
5125
+ }
5126
+ ),
5127
+ /* @__PURE__ */ jsxRuntime.jsx(
5128
+ "p",
5129
+ {
5130
+ style: {
5131
+ marginBottom: "16px",
5132
+ fontWeight: 700,
5133
+ color: emailTokens.foreground,
5134
+ fontSize: "16px"
5135
+ },
5136
+ children: l.bookingSummaryHeader
5137
+ }
5138
+ ),
5139
+ adventures.map((adv, advIdx) => {
5140
+ var _a2;
5141
+ return /* @__PURE__ */ jsxRuntime.jsx(
5142
+ "div",
5143
+ {
5144
+ style: {
5145
+ marginBottom: advIdx < adventures.length - 1 ? "16px" : "20px"
5146
+ },
5147
+ children: /* @__PURE__ */ jsxRuntime.jsx(
5148
+ BookingAdventureCard,
5149
+ {
5150
+ tag: adv.tag,
5151
+ name: adv.name,
5152
+ startDate: (_a2 = adv.startDate) != null ? _a2 : "",
5153
+ endDate: adv.endDate,
5154
+ travellerCount: adv.travellerCount,
5155
+ travellers: adv.travellers,
5156
+ itinerary: adv.itinerary,
5157
+ lineItems: adv.lineItems.map((li) => ({
5158
+ unitPrice: li.unitPrice,
5159
+ quantity: li.quantity,
5160
+ categoryLabel: li.categoryLabel,
5161
+ subtotal: li.subtotal
5162
+ })),
5163
+ subtotal: adv.subtotal,
5164
+ labels: l.adventureCard
5165
+ }
5166
+ )
5167
+ },
5168
+ advIdx
5169
+ );
5170
+ }),
5171
+ /* @__PURE__ */ jsxRuntime.jsx(
5172
+ "hr",
5173
+ {
5174
+ style: {
5175
+ border: "none",
5176
+ borderTop: `1px solid ${emailTokens.border}`,
5177
+ marginBottom: "16px"
5178
+ }
5179
+ }
5180
+ ),
5181
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { style: summaryRowStyle, children: [
5182
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
5183
+ l.amountAlreadyPaidLabel,
5184
+ ":"
5185
+ ] }),
5186
+ " ",
5187
+ amountAlreadyPaid
5188
+ ] }),
5189
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { style: summaryRowStyle, children: [
5190
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
5191
+ l.remainingBalanceDueLabel,
5192
+ ":"
5193
+ ] }),
5194
+ " ",
5195
+ remainingBalanceDue
5196
+ ] }),
5197
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { style: __spreadProps(__spreadValues({}, summaryRowStyle), { marginBottom: "24px" }), children: [
5198
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
5199
+ l.totalBookingAmountLabel,
5200
+ ":"
5201
+ ] }),
5202
+ " ",
5203
+ totalBookingAmount
5204
+ ] }),
5205
+ showDisregard && /* @__PURE__ */ jsxRuntime.jsx(
5206
+ "p",
5207
+ {
5208
+ style: {
5209
+ marginBottom: "16px",
5210
+ fontSize: "14px",
5211
+ color: emailTokens.mutedForeground,
5212
+ fontStyle: "italic"
5213
+ },
5214
+ children: variantLabels.disregardIfPaid
5215
+ }
5216
+ ),
5217
+ showClosingAlternative && /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px", fontSize: "14px", color: emailTokens.bodyText }, children: closingAlternativeText }),
5218
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px", fontSize: "14px", color: emailTokens.bodyText }, children: closingMain }),
5219
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px", fontSize: "14px", color: emailTokens.bodyText }, children: variantLabels.closingThanks }),
5220
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginTop: 0, marginBottom: 0, fontSize: "14px", color: emailTokens.bodyText }, children: l.teamSignature })
5221
+ ]
5222
+ }
5223
+ );
5224
+ }
4433
5225
  function BookingOtpEmail({
4434
5226
  greeting,
4435
5227
  intro,
@@ -5110,7 +5902,7 @@ function BookingForm({
5110
5902
  }
5111
5903
  );
5112
5904
  }
5113
- var DEFAULT_LABELS4 = {
5905
+ var DEFAULT_LABELS6 = {
5114
5906
  formSubtitle: "To confirm your participation, please complete this short form. It's required for all travellers and helps us coordinate logistics with our local partners and tailor the experience to you.",
5115
5907
  detailsSectionTitle: "Your details",
5116
5908
  tripInfoSectionTitle: "Trip info",
@@ -5775,7 +6567,7 @@ function RegistrationForm({
5775
6567
  }) {
5776
6568
  var _a;
5777
6569
  const L = React25__namespace.useMemo(
5778
- () => __spreadValues(__spreadValues({}, DEFAULT_LABELS4), labels != null ? labels : {}),
6570
+ () => __spreadValues(__spreadValues({}, DEFAULT_LABELS6), labels != null ? labels : {}),
5779
6571
  [labels]
5780
6572
  );
5781
6573
  const sortedFields = React25__namespace.useMemo(
@@ -10377,6 +11169,7 @@ exports.ActivityCard = ActivityCard;
10377
11169
  exports.AgentContactCard = AgentContactCard;
10378
11170
  exports.Alert = Alert;
10379
11171
  exports.BirthDateField = BirthDateField;
11172
+ exports.BookingAdventureCard = BookingAdventureCard;
10380
11173
  exports.BookingConfirmation = BookingConfirmation;
10381
11174
  exports.BookingConfirmationEmail = BookingConfirmationEmail;
10382
11175
  exports.BookingConfirmedCard = BookingConfirmedCard;
@@ -10413,6 +11206,7 @@ exports.PaymentAmountSelector = PaymentAmountSelector;
10413
11206
  exports.PaymentMethodSelector = PaymentMethodSelector;
10414
11207
  exports.PaymentModalShell = PaymentModalShell;
10415
11208
  exports.PaymentReceiptEmail = PaymentReceiptEmail;
11209
+ exports.PaymentReminderEmail = PaymentReminderEmail;
10416
11210
  exports.PhoneCountrySelect = PhoneCountrySelect;
10417
11211
  exports.PhotoGallery = PhotoGallery;
10418
11212
  exports.PricingTrip = PricingTrip;