tf-checkout-react 2.0.0-beta.1 → 2.0.0-beta.2
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.esm.js +473 -263
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +473 -263
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/EmbeddedCheckout.tsx +6 -1
- package/src/auth/AuthModal.tsx +3 -3
- package/src/auth/ForgotPasswordForm.tsx +4 -6
- package/src/auth/LoginForm.tsx +2 -2
- package/src/auth/RegisterForm.tsx +2 -2
- package/src/auth/ResetPasswordForm.tsx +7 -7
- package/src/configure.ts +1 -5
- package/src/confirmer.ts +1 -5
- package/src/sections/AddOns.tsx +14 -7
- package/src/sections/BillingInfo.tsx +40 -33
- package/src/sections/Confirmation.tsx +8 -6
- package/src/sections/OrderSummary.tsx +7 -5
- package/src/sections/Payment.tsx +17 -13
- package/src/sections/Tickets.tsx +32 -15
- package/src/sections/billing/BillingAddressFields.tsx +19 -13
- package/src/sections/billing/TicketHoldersCard.tsx +103 -94
- package/src/ui/CheckoutProvider.tsx +5 -1
- package/src/ui/InstallmentPicker.tsx +4 -2
- package/src/ui/PaymentMethods.tsx +82 -76
- package/src/ui/TimerBanner.tsx +7 -3
package/dist/index.esm.js
CHANGED
|
@@ -4103,7 +4103,91 @@ var en = {
|
|
|
4103
4103
|
"referral.inviteFriends": "Invite friends",
|
|
4104
4104
|
"referral.howToInvite": "How do you invite your friends?",
|
|
4105
4105
|
"referral.sendThisLink": "Send them this link:",
|
|
4106
|
-
"referral.howMuchCheaper": "How much cheaper?"
|
|
4106
|
+
"referral.howMuchCheaper": "How much cheaper?",
|
|
4107
|
+
// --- Checkout body (localization pass) ---------------------------------
|
|
4108
|
+
"common.submit": "Submit",
|
|
4109
|
+
"common.each": "each",
|
|
4110
|
+
"billing.heading": "Billing Information",
|
|
4111
|
+
"billing.continueToPayment": "Continue to payment",
|
|
4112
|
+
"billing.ttfOptIn": "Keep me updated about future events from The Ticket Fairy",
|
|
4113
|
+
"billing.fieldRequired": "This field is required.",
|
|
4114
|
+
"billing.firstNamePlaceholder": "First name *",
|
|
4115
|
+
"billing.lastNamePlaceholder": "Last name *",
|
|
4116
|
+
"billing.emailMustMatch": "Email addresses must match.",
|
|
4117
|
+
"billing.emailInvalid": "Enter a valid email address.",
|
|
4118
|
+
"billing.emailRegistered": "This email is already registered.",
|
|
4119
|
+
"billing.loginAutofill": "Log in to autofill your details",
|
|
4120
|
+
"billing.loginAutofillPlain": "Log in to autofill your details.",
|
|
4121
|
+
"billing.firstNameRequired": "First name is required.",
|
|
4122
|
+
"billing.lastNameRequired": "Last name is required.",
|
|
4123
|
+
"billing.streetRequired": "Street address is required.",
|
|
4124
|
+
"billing.cityRequired": "City is required.",
|
|
4125
|
+
"billing.postcodeRequired": "ZIP / postcode is required.",
|
|
4126
|
+
"billing.countryRequired": "Country is required.",
|
|
4127
|
+
"billing.stateRequired": "State / county is required.",
|
|
4128
|
+
"billing.countryEmpty": "\u2014 country * \u2014",
|
|
4129
|
+
"billing.stateEmpty": "\u2014 state / county \u2014",
|
|
4130
|
+
"billing.stateEmptyRequired": "\u2014 state / county * \u2014",
|
|
4131
|
+
"billing.holderTitle": "Ticket {{number}}",
|
|
4132
|
+
"billing.nationality": "Nationality",
|
|
4133
|
+
"billing.gender": "Gender",
|
|
4134
|
+
"billing.instagramHandle": "Instagram handle",
|
|
4135
|
+
"billing.phoneOptional": "Phone",
|
|
4136
|
+
"billing.phoneAria": "Phone",
|
|
4137
|
+
"billing.phoneInvalid": "Enter a valid phone number.",
|
|
4138
|
+
"billing.phonePlaceholder": "Phone number",
|
|
4139
|
+
"billing.dob": "Date of birth *",
|
|
4140
|
+
"billing.dobWithAge": "Date of birth * (must be {{age}}+)",
|
|
4141
|
+
"billing.dobRequired": "Date of birth is required.",
|
|
4142
|
+
"billing.ageMinimum": "You must be {{age}} or older.",
|
|
4143
|
+
"billing.privacyAgree": "I have read and agree to {{brand}}",
|
|
4144
|
+
"billing.privacyLink": "Privacy Policy.",
|
|
4145
|
+
"tickets.getTickets": "Get tickets",
|
|
4146
|
+
"tickets.selectOnMap": "Select on map",
|
|
4147
|
+
"tickets.selectSeats": "Select seats",
|
|
4148
|
+
"tickets.hideInfo": "Hide info",
|
|
4149
|
+
"tickets.viewInfo": "View info",
|
|
4150
|
+
"tickets.salesNotStarted": "Sales not started",
|
|
4151
|
+
"tickets.salesEnded": "Sales Ended",
|
|
4152
|
+
"tickets.accessCode": "Access code",
|
|
4153
|
+
"tickets.promoCode": "Promo code",
|
|
4154
|
+
"tickets.reserving": "Reserving\u2026",
|
|
4155
|
+
"addons.eyebrow": "Get Your Tickets",
|
|
4156
|
+
"addons.heading": "UPGRADES & ADD-ONS",
|
|
4157
|
+
"addons.confirmSelection": "CONFIRM SELECTION",
|
|
4158
|
+
"addons.updating": "Updating\u2026",
|
|
4159
|
+
"payment.title": "Payment",
|
|
4160
|
+
"payment.card": "Card",
|
|
4161
|
+
"payment.paymentPlan": "Payment plan",
|
|
4162
|
+
"payment.oxxo": "OXXO (pay in cash)",
|
|
4163
|
+
"payment.submitPayment": "Submit Payment",
|
|
4164
|
+
"payment.completeRegistration": "Complete Registration",
|
|
4165
|
+
"payment.placing": "Placing\u2026",
|
|
4166
|
+
"payment.testCard": "Test card: 4242 4242 4242 4242 \xB7 any future date \xB7 any CVC",
|
|
4167
|
+
"payment.testCardXendit": "Test card: 4000 0000 0000 0002 \xB7 any future date \xB7 any CVC",
|
|
4168
|
+
"confirmation.pending": "Payment pending",
|
|
4169
|
+
"confirmation.confirmed": "Your Tickets are Confirmed!",
|
|
4170
|
+
"confirmation.pendingBody": "We\u2019ll email your tickets as soon as the payment settles.",
|
|
4171
|
+
"confirmation.alreadyPaid": "This order was already paid \u2014 nothing was charged again.",
|
|
4172
|
+
"confirmation.available": "Your tickets are available in the My Tickets section \u2014 please bring them with you to the event.",
|
|
4173
|
+
"referral.copied": "Copied!",
|
|
4174
|
+
"referral.copyLink": "Copy link",
|
|
4175
|
+
"timer.completePurchase": "Please complete your purchase before the timer reaches zero.",
|
|
4176
|
+
"auth.logIn": "Log in",
|
|
4177
|
+
"auth.signUp": "Sign Up",
|
|
4178
|
+
"auth.passwordReset": "Password reset",
|
|
4179
|
+
"auth.backToLogin": "Back to log in",
|
|
4180
|
+
"auth.sendResetInstructions": "Send reset instructions",
|
|
4181
|
+
"auth.createAccount": "Create Account",
|
|
4182
|
+
"auth.forgotPassword": "Forgot password?",
|
|
4183
|
+
"auth.forgotIntro": "Enter your email and we\u2019ll send you instructions to reset your password.",
|
|
4184
|
+
"auth.missingToken": "This password-reset link is missing its token.",
|
|
4185
|
+
"auth.passwordTooShort": "Password must have at least 8 characters.",
|
|
4186
|
+
"auth.passwordNeedsSpecial": "Password must contain at least one special character.",
|
|
4187
|
+
"auth.passwordsMustMatch": "Passwords must match.",
|
|
4188
|
+
"auth.passwordChanged": "Your password has been changed. You can now log in.",
|
|
4189
|
+
"auth.selectState": "Select state / region",
|
|
4190
|
+
"auth.notRequired": "Not required"
|
|
4107
4191
|
};
|
|
4108
4192
|
|
|
4109
4193
|
// ../tf-checkout-shared/src/i18n/resolve.ts
|
|
@@ -4235,7 +4319,91 @@ var esMX = {
|
|
|
4235
4319
|
"referral.inviteFriends": "Invita a tus amigos",
|
|
4236
4320
|
"referral.howToInvite": "\xBFC\xF3mo invitas a tus amigos?",
|
|
4237
4321
|
"referral.sendThisLink": "Env\xEDales este enlace:",
|
|
4238
|
-
"referral.howMuchCheaper": "\xBFCu\xE1nto m\xE1s barato?"
|
|
4322
|
+
"referral.howMuchCheaper": "\xBFCu\xE1nto m\xE1s barato?",
|
|
4323
|
+
// --- Checkout body (localization pass) ---------------------------------
|
|
4324
|
+
"common.submit": "Enviar",
|
|
4325
|
+
"common.each": "c/u",
|
|
4326
|
+
"billing.heading": "Informaci\xF3n de facturaci\xF3n",
|
|
4327
|
+
"billing.continueToPayment": "Continuar al pago",
|
|
4328
|
+
"billing.ttfOptIn": "Quiero recibir novedades sobre pr\xF3ximos eventos de The Ticket Fairy",
|
|
4329
|
+
"billing.fieldRequired": "Este campo es obligatorio.",
|
|
4330
|
+
"billing.firstNamePlaceholder": "Nombre *",
|
|
4331
|
+
"billing.lastNamePlaceholder": "Apellido *",
|
|
4332
|
+
"billing.emailMustMatch": "Los correos electr\xF3nicos deben coincidir.",
|
|
4333
|
+
"billing.emailInvalid": "Ingresa un correo electr\xF3nico v\xE1lido.",
|
|
4334
|
+
"billing.emailRegistered": "Este correo ya est\xE1 registrado.",
|
|
4335
|
+
"billing.loginAutofill": "Inicia sesi\xF3n para completar tus datos",
|
|
4336
|
+
"billing.loginAutofillPlain": "Inicia sesi\xF3n para completar tus datos.",
|
|
4337
|
+
"billing.firstNameRequired": "El nombre es obligatorio.",
|
|
4338
|
+
"billing.lastNameRequired": "El apellido es obligatorio.",
|
|
4339
|
+
"billing.streetRequired": "La calle y n\xFAmero son obligatorios.",
|
|
4340
|
+
"billing.cityRequired": "La ciudad es obligatoria.",
|
|
4341
|
+
"billing.postcodeRequired": "El c\xF3digo postal es obligatorio.",
|
|
4342
|
+
"billing.countryRequired": "El pa\xEDs es obligatorio.",
|
|
4343
|
+
"billing.stateRequired": "El estado es obligatorio.",
|
|
4344
|
+
"billing.countryEmpty": "\u2014 pa\xEDs * \u2014",
|
|
4345
|
+
"billing.stateEmpty": "\u2014 estado \u2014",
|
|
4346
|
+
"billing.stateEmptyRequired": "\u2014 estado * \u2014",
|
|
4347
|
+
"billing.holderTitle": "Boleto {{number}}",
|
|
4348
|
+
"billing.nationality": "Nacionalidad",
|
|
4349
|
+
"billing.gender": "G\xE9nero",
|
|
4350
|
+
"billing.instagramHandle": "Usuario de Instagram",
|
|
4351
|
+
"billing.phoneOptional": "Tel\xE9fono",
|
|
4352
|
+
"billing.phoneAria": "Tel\xE9fono",
|
|
4353
|
+
"billing.phoneInvalid": "Ingresa un n\xFAmero de tel\xE9fono v\xE1lido.",
|
|
4354
|
+
"billing.phonePlaceholder": "N\xFAmero de tel\xE9fono",
|
|
4355
|
+
"billing.dob": "Fecha de nacimiento *",
|
|
4356
|
+
"billing.dobWithAge": "Fecha de nacimiento * (debes tener {{age}}+)",
|
|
4357
|
+
"billing.dobRequired": "La fecha de nacimiento es obligatoria.",
|
|
4358
|
+
"billing.ageMinimum": "Debes tener {{age}} a\xF1os o m\xE1s.",
|
|
4359
|
+
"billing.privacyAgree": "He le\xEDdo y acepto el",
|
|
4360
|
+
"billing.privacyLink": "Aviso de Privacidad.",
|
|
4361
|
+
"tickets.getTickets": "Comprar boletos",
|
|
4362
|
+
"tickets.selectOnMap": "Seleccionar en el mapa",
|
|
4363
|
+
"tickets.selectSeats": "Seleccionar asientos",
|
|
4364
|
+
"tickets.hideInfo": "Ocultar informaci\xF3n",
|
|
4365
|
+
"tickets.viewInfo": "Ver informaci\xF3n",
|
|
4366
|
+
"tickets.salesNotStarted": "Venta no iniciada",
|
|
4367
|
+
"tickets.salesEnded": "Venta finalizada",
|
|
4368
|
+
"tickets.accessCode": "C\xF3digo de acceso",
|
|
4369
|
+
"tickets.promoCode": "C\xF3digo promocional",
|
|
4370
|
+
"tickets.reserving": "Reservando\u2026",
|
|
4371
|
+
"addons.eyebrow": "Obt\xE9n tus boletos",
|
|
4372
|
+
"addons.heading": "MEJORAS Y COMPLEMENTOS",
|
|
4373
|
+
"addons.confirmSelection": "CONFIRMAR SELECCI\xD3N",
|
|
4374
|
+
"addons.updating": "Actualizando\u2026",
|
|
4375
|
+
"payment.title": "Pago",
|
|
4376
|
+
"payment.card": "Tarjeta",
|
|
4377
|
+
"payment.paymentPlan": "Plan de pagos",
|
|
4378
|
+
"payment.oxxo": "OXXO (pago en efectivo)",
|
|
4379
|
+
"payment.submitPayment": "Pagar",
|
|
4380
|
+
"payment.completeRegistration": "Completar registro",
|
|
4381
|
+
"payment.placing": "Procesando\u2026",
|
|
4382
|
+
"payment.testCard": "Tarjeta de prueba: 4242 4242 4242 4242 \xB7 cualquier fecha futura \xB7 cualquier CVC",
|
|
4383
|
+
"payment.testCardXendit": "Tarjeta de prueba: 4000 0000 0000 0002 \xB7 cualquier fecha futura \xB7 cualquier CVC",
|
|
4384
|
+
"confirmation.pending": "Pago pendiente",
|
|
4385
|
+
"confirmation.confirmed": "\xA1Tus boletos est\xE1n confirmados!",
|
|
4386
|
+
"confirmation.pendingBody": "Te enviaremos tus boletos por correo en cuanto se acredite el pago.",
|
|
4387
|
+
"confirmation.alreadyPaid": "Esta orden ya estaba pagada: no se te cobr\xF3 de nuevo.",
|
|
4388
|
+
"confirmation.available": "Tus boletos est\xE1n disponibles en la secci\xF3n Mis boletos. Recuerda llevarlos contigo al evento.",
|
|
4389
|
+
"referral.copied": "\xA1Copiado!",
|
|
4390
|
+
"referral.copyLink": "Copiar enlace",
|
|
4391
|
+
"timer.completePurchase": "Completa tu compra antes de que el temporizador llegue a cero.",
|
|
4392
|
+
"auth.logIn": "Iniciar sesi\xF3n",
|
|
4393
|
+
"auth.signUp": "Crear cuenta",
|
|
4394
|
+
"auth.passwordReset": "Restablecer contrase\xF1a",
|
|
4395
|
+
"auth.backToLogin": "Volver a iniciar sesi\xF3n",
|
|
4396
|
+
"auth.sendResetInstructions": "Enviar instrucciones",
|
|
4397
|
+
"auth.createAccount": "Crear cuenta",
|
|
4398
|
+
"auth.forgotPassword": "\xBFOlvidaste tu contrase\xF1a?",
|
|
4399
|
+
"auth.forgotIntro": "Ingresa tu correo y te enviaremos instrucciones para restablecer tu contrase\xF1a.",
|
|
4400
|
+
"auth.missingToken": "A este enlace de restablecimiento le falta el token.",
|
|
4401
|
+
"auth.passwordTooShort": "La contrase\xF1a debe tener al menos 8 caracteres.",
|
|
4402
|
+
"auth.passwordNeedsSpecial": "La contrase\xF1a debe incluir al menos un car\xE1cter especial.",
|
|
4403
|
+
"auth.passwordsMustMatch": "Las contrase\xF1as deben coincidir.",
|
|
4404
|
+
"auth.passwordChanged": "Tu contrase\xF1a se cambi\xF3. Ya puedes iniciar sesi\xF3n.",
|
|
4405
|
+
"auth.selectState": "Selecciona estado / regi\xF3n",
|
|
4406
|
+
"auth.notRequired": "No requerido"
|
|
4239
4407
|
};
|
|
4240
4408
|
|
|
4241
4409
|
// ../tf-checkout-shared/src/i18n/locales/index.ts
|
|
@@ -5134,6 +5302,7 @@ Button.displayName = "Button";
|
|
|
5134
5302
|
|
|
5135
5303
|
// src/ui/InstallmentPicker.tsx
|
|
5136
5304
|
var useInstallmentPicker = () => {
|
|
5305
|
+
const t = useT();
|
|
5137
5306
|
const [pending, setPending] = useState4(null);
|
|
5138
5307
|
const onInstallmentOffers = useCallback3(
|
|
5139
5308
|
(offers) => new Promise((resolve) => setPending({ offers, resolve })),
|
|
@@ -5148,9 +5317,9 @@ var useInstallmentPicker = () => {
|
|
|
5148
5317
|
{
|
|
5149
5318
|
className: "tf-checkout-installments",
|
|
5150
5319
|
role: "dialog",
|
|
5151
|
-
"aria-label": "
|
|
5320
|
+
"aria-label": t("payment.chooseInstallments")
|
|
5152
5321
|
},
|
|
5153
|
-
/* @__PURE__ */ React5.createElement("div", { className: "tf-checkout-installments__box" }, /* @__PURE__ */ React5.createElement("strong", null, "
|
|
5322
|
+
/* @__PURE__ */ React5.createElement("div", { className: "tf-checkout-installments__box" }, /* @__PURE__ */ React5.createElement("strong", null, t("payment.payInInstallments")), /* @__PURE__ */ React5.createElement("div", { className: "tf-checkout-installments__list" }, pending.offers.map((o, i) => {
|
|
5154
5323
|
var _a;
|
|
5155
5324
|
return /* @__PURE__ */ React5.createElement(
|
|
5156
5325
|
"button",
|
|
@@ -5496,63 +5665,73 @@ var PaymentMethods = ({
|
|
|
5496
5665
|
children,
|
|
5497
5666
|
inputSlotFor,
|
|
5498
5667
|
className
|
|
5499
|
-
}) =>
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
className: cx(
|
|
5516
|
-
"tf-checkout-payment__method",
|
|
5517
|
-
isSelected && "tf-checkout-payment__method--selected"
|
|
5518
|
-
)
|
|
5519
|
-
},
|
|
5520
|
-
/* @__PURE__ */ React10.createElement("span", { className: "tf-checkout-payment__method-head" }, /* @__PURE__ */ React10.createElement(
|
|
5521
|
-
"input",
|
|
5522
|
-
{
|
|
5523
|
-
type: "radio",
|
|
5524
|
-
name: "tf-pay-method",
|
|
5525
|
-
className: "tf-checkout-payment__method-radio",
|
|
5526
|
-
checked: isSelected,
|
|
5527
|
-
onChange: () => onSelect(o.value)
|
|
5528
|
-
}
|
|
5529
|
-
), o.iconUrl && /* @__PURE__ */ React10.createElement("img", { className: "tf-checkout-payment__method-icon", src: o.iconUrl, alt: "" }), /* @__PURE__ */ React10.createElement("span", { className: "tf-checkout-payment__method-label" }, o.label)),
|
|
5530
|
-
isSelected && (o.value === inputSlotFor || o.extra) && /* @__PURE__ */ React10.createElement("div", { className: "tf-checkout-payment__method-body" }, o.value === inputSlotFor && children, o.extra && /* @__PURE__ */ React10.createElement(
|
|
5531
|
-
Field,
|
|
5668
|
+
}) => {
|
|
5669
|
+
const t = useT();
|
|
5670
|
+
return /* @__PURE__ */ React10.createElement(
|
|
5671
|
+
"div",
|
|
5672
|
+
{
|
|
5673
|
+
className: cx("tf-checkout-payment__methods", className),
|
|
5674
|
+
role: "radiogroup",
|
|
5675
|
+
"aria-label": t("payment.method")
|
|
5676
|
+
},
|
|
5677
|
+
options.map((o) => {
|
|
5678
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5679
|
+
const isSelected = o.value === selected;
|
|
5680
|
+
const extraValue = o.extra === "phoneNumber" ? (_a = extraValues[o.value]) == null ? void 0 : _a.phoneNumber : (_b = extraValues[o.value]) == null ? void 0 : _b.cashtag;
|
|
5681
|
+
const extraInvalid = Boolean(isSelected && o.extra && showValidation) && !(extraValue == null ? void 0 : extraValue.trim());
|
|
5682
|
+
return /* @__PURE__ */ React10.createElement(
|
|
5683
|
+
"label",
|
|
5532
5684
|
{
|
|
5533
|
-
|
|
5534
|
-
|
|
5535
|
-
|
|
5685
|
+
key: o.value,
|
|
5686
|
+
className: cx(
|
|
5687
|
+
"tf-checkout-payment__method",
|
|
5688
|
+
isSelected && "tf-checkout-payment__method--selected"
|
|
5689
|
+
)
|
|
5536
5690
|
},
|
|
5537
|
-
/* @__PURE__ */ React10.createElement(
|
|
5538
|
-
|
|
5691
|
+
/* @__PURE__ */ React10.createElement("span", { className: "tf-checkout-payment__method-head" }, /* @__PURE__ */ React10.createElement(
|
|
5692
|
+
"input",
|
|
5539
5693
|
{
|
|
5540
|
-
|
|
5541
|
-
|
|
5542
|
-
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
value: o.extra === "phoneNumber" ? (_d = (_c = extraValues[o.value]) == null ? void 0 : _c.phoneNumber) != null ? _d : "" : (_f = (_e = extraValues[o.value]) == null ? void 0 : _e.cashtag) != null ? _f : "",
|
|
5546
|
-
onChange: (e) => onExtraChange(
|
|
5547
|
-
o.value,
|
|
5548
|
-
o.extra === "phoneNumber" ? { phoneNumber: e.target.value } : { cashtag: e.target.value }
|
|
5549
|
-
)
|
|
5694
|
+
type: "radio",
|
|
5695
|
+
name: "tf-pay-method",
|
|
5696
|
+
className: "tf-checkout-payment__method-radio",
|
|
5697
|
+
checked: isSelected,
|
|
5698
|
+
onChange: () => onSelect(o.value)
|
|
5550
5699
|
}
|
|
5551
|
-
)
|
|
5552
|
-
|
|
5553
|
-
|
|
5554
|
-
|
|
5555
|
-
|
|
5700
|
+
), o.iconUrl && /* @__PURE__ */ React10.createElement(
|
|
5701
|
+
"img",
|
|
5702
|
+
{
|
|
5703
|
+
className: "tf-checkout-payment__method-icon",
|
|
5704
|
+
src: o.iconUrl,
|
|
5705
|
+
alt: ""
|
|
5706
|
+
}
|
|
5707
|
+
), /* @__PURE__ */ React10.createElement("span", { className: "tf-checkout-payment__method-label" }, o.label)),
|
|
5708
|
+
isSelected && (o.value === inputSlotFor || o.extra) && /* @__PURE__ */ React10.createElement("div", { className: "tf-checkout-payment__method-body" }, o.value === inputSlotFor && children, o.extra && /* @__PURE__ */ React10.createElement(
|
|
5709
|
+
Field,
|
|
5710
|
+
{
|
|
5711
|
+
label: `${EXTRA_LABEL[o.extra]} *`,
|
|
5712
|
+
error: extraInvalid ? t("billing.fieldRequired") : void 0,
|
|
5713
|
+
invalid: extraInvalid
|
|
5714
|
+
},
|
|
5715
|
+
/* @__PURE__ */ React10.createElement(
|
|
5716
|
+
Input,
|
|
5717
|
+
{
|
|
5718
|
+
inputMode: o.extra === "phoneNumber" ? "tel" : "text",
|
|
5719
|
+
required: true,
|
|
5720
|
+
invalid: extraInvalid,
|
|
5721
|
+
"aria-invalid": extraInvalid,
|
|
5722
|
+
placeholder: o.extra === "phoneNumber" ? "e.g. 081234567890" : "$cashtag",
|
|
5723
|
+
value: o.extra === "phoneNumber" ? (_d = (_c = extraValues[o.value]) == null ? void 0 : _c.phoneNumber) != null ? _d : "" : (_f = (_e = extraValues[o.value]) == null ? void 0 : _e.cashtag) != null ? _f : "",
|
|
5724
|
+
onChange: (e) => onExtraChange(
|
|
5725
|
+
o.value,
|
|
5726
|
+
o.extra === "phoneNumber" ? { phoneNumber: e.target.value } : { cashtag: e.target.value }
|
|
5727
|
+
)
|
|
5728
|
+
}
|
|
5729
|
+
)
|
|
5730
|
+
))
|
|
5731
|
+
);
|
|
5732
|
+
})
|
|
5733
|
+
);
|
|
5734
|
+
};
|
|
5556
5735
|
|
|
5557
5736
|
// src/ui/Stepper.tsx
|
|
5558
5737
|
import React11 from "react";
|
|
@@ -5641,9 +5820,10 @@ var clock2 = (s) => {
|
|
|
5641
5820
|
var TimerBanner = ({
|
|
5642
5821
|
seconds,
|
|
5643
5822
|
urgentAt = 60,
|
|
5644
|
-
message
|
|
5823
|
+
message,
|
|
5645
5824
|
className
|
|
5646
5825
|
}) => {
|
|
5826
|
+
const t = useT();
|
|
5647
5827
|
const [dismissed, setDismissed] = useState6(false);
|
|
5648
5828
|
if (seconds === void 0 || seconds <= 0 || dismissed) return null;
|
|
5649
5829
|
const urgent = seconds <= urgentAt;
|
|
@@ -5657,14 +5837,14 @@ var TimerBanner = ({
|
|
|
5657
5837
|
className
|
|
5658
5838
|
)
|
|
5659
5839
|
},
|
|
5660
|
-
/* @__PURE__ */ React15.createElement("span", { className: "tf-checkout-timerbanner__msg" }, message),
|
|
5840
|
+
/* @__PURE__ */ React15.createElement("span", { className: "tf-checkout-timerbanner__msg" }, message != null ? message : t("timer.completePurchase")),
|
|
5661
5841
|
/* @__PURE__ */ React15.createElement("span", { className: "tf-checkout-timerbanner__clock" }, clock2(seconds)),
|
|
5662
5842
|
/* @__PURE__ */ React15.createElement(
|
|
5663
5843
|
"button",
|
|
5664
5844
|
{
|
|
5665
5845
|
type: "button",
|
|
5666
5846
|
className: "tf-checkout-timerbanner__close",
|
|
5667
|
-
"aria-label": "
|
|
5847
|
+
"aria-label": t("common.dismiss"),
|
|
5668
5848
|
onClick: () => setDismissed(true)
|
|
5669
5849
|
},
|
|
5670
5850
|
"\xD7"
|
|
@@ -5697,9 +5877,9 @@ var ForgotPasswordForm = ({
|
|
|
5697
5877
|
void onSubmit(email);
|
|
5698
5878
|
};
|
|
5699
5879
|
if (successMessage) {
|
|
5700
|
-
return /* @__PURE__ */ React16.createElement("div", { className: "tf-checkout-auth__form" }, /* @__PURE__ */ React16.createElement("div", { className: "tf-checkout-auth__success", role: "status" }, successMessage), /* @__PURE__ */ React16.createElement(Button, { type: "button", block: true, onClick: () => onBackToLogin(email) }, "
|
|
5880
|
+
return /* @__PURE__ */ React16.createElement("div", { className: "tf-checkout-auth__form" }, /* @__PURE__ */ React16.createElement("div", { className: "tf-checkout-auth__success", role: "status" }, successMessage), /* @__PURE__ */ React16.createElement(Button, { type: "button", block: true, onClick: () => onBackToLogin(email) }, t("auth.backToLogin")));
|
|
5701
5881
|
}
|
|
5702
|
-
return /* @__PURE__ */ React16.createElement("form", { className: "tf-checkout-auth__form", onSubmit: submit, noValidate: true }, /* @__PURE__ */ React16.createElement("p", { className: "tf-checkout-auth__intro" }, "
|
|
5882
|
+
return /* @__PURE__ */ React16.createElement("form", { className: "tf-checkout-auth__form", onSubmit: submit, noValidate: true }, /* @__PURE__ */ React16.createElement("p", { className: "tf-checkout-auth__intro" }, t("auth.forgotIntro")), error && /* @__PURE__ */ React16.createElement("div", { className: "tf-checkout-auth__alert", role: "alert" }, error), /* @__PURE__ */ React16.createElement(Field, { label: t("auth.email"), error: errors.email }, /* @__PURE__ */ React16.createElement(
|
|
5703
5883
|
Input,
|
|
5704
5884
|
{
|
|
5705
5885
|
type: "email",
|
|
@@ -5714,14 +5894,14 @@ var ForgotPasswordForm = ({
|
|
|
5714
5894
|
onFieldChange == null ? void 0 : onFieldChange();
|
|
5715
5895
|
}
|
|
5716
5896
|
}
|
|
5717
|
-
)), /* @__PURE__ */ React16.createElement(Button, { type: "submit", block: true, loading }, "
|
|
5897
|
+
)), /* @__PURE__ */ React16.createElement(Button, { type: "submit", block: true, loading }, t("auth.sendResetInstructions")), /* @__PURE__ */ React16.createElement(
|
|
5718
5898
|
"button",
|
|
5719
5899
|
{
|
|
5720
5900
|
type: "button",
|
|
5721
5901
|
className: "tf-checkout-auth__text-button tf-checkout-auth__back",
|
|
5722
5902
|
onClick: () => onBackToLogin(email)
|
|
5723
5903
|
},
|
|
5724
|
-
"
|
|
5904
|
+
t("auth.backToLogin")
|
|
5725
5905
|
));
|
|
5726
5906
|
};
|
|
5727
5907
|
|
|
@@ -5823,14 +6003,14 @@ var LoginForm = ({
|
|
|
5823
6003
|
}
|
|
5824
6004
|
}
|
|
5825
6005
|
)
|
|
5826
|
-
), /* @__PURE__ */ React18.createElement(Button, { type: "submit", block: true, loading }, "
|
|
6006
|
+
), /* @__PURE__ */ React18.createElement(Button, { type: "submit", block: true, loading }, t("auth.logIn")), allowPasswordReset && onForgotPassword && /* @__PURE__ */ React18.createElement(
|
|
5827
6007
|
"button",
|
|
5828
6008
|
{
|
|
5829
6009
|
type: "button",
|
|
5830
6010
|
className: "tf-checkout-auth__text-button tf-checkout-auth__forgot",
|
|
5831
6011
|
onClick: () => onForgotPassword(email)
|
|
5832
6012
|
},
|
|
5833
|
-
"
|
|
6013
|
+
t("auth.forgotPassword")
|
|
5834
6014
|
));
|
|
5835
6015
|
};
|
|
5836
6016
|
|
|
@@ -6057,7 +6237,7 @@ var RegisterForm = ({
|
|
|
6057
6237
|
invalid: Boolean(errors.stateId),
|
|
6058
6238
|
onChange: (event) => setField("stateId", event.target.value)
|
|
6059
6239
|
},
|
|
6060
|
-
/* @__PURE__ */ React19.createElement("option", { value: "" }, states.length > 0 ? "
|
|
6240
|
+
/* @__PURE__ */ React19.createElement("option", { value: "" }, states.length > 0 ? t("auth.selectState") : t("auth.notRequired")),
|
|
6061
6241
|
states.map((state) => /* @__PURE__ */ React19.createElement("option", { key: state.id, value: state.id }, state.name))
|
|
6062
6242
|
)
|
|
6063
6243
|
), /* @__PURE__ */ React19.createElement(
|
|
@@ -6151,7 +6331,7 @@ var RegisterForm = ({
|
|
|
6151
6331
|
}
|
|
6152
6332
|
)
|
|
6153
6333
|
)),
|
|
6154
|
-
/* @__PURE__ */ React19.createElement(Button, { type: "submit", block: true, loading }, "
|
|
6334
|
+
/* @__PURE__ */ React19.createElement(Button, { type: "submit", block: true, loading }, t("auth.createAccount"))
|
|
6155
6335
|
);
|
|
6156
6336
|
};
|
|
6157
6337
|
|
|
@@ -6243,7 +6423,7 @@ var AuthModal = ({
|
|
|
6243
6423
|
if (event.target === event.currentTarget && !auth.isSubmitting) onClose();
|
|
6244
6424
|
};
|
|
6245
6425
|
const isPasswordReset = auth.view === "forgot-password";
|
|
6246
|
-
const title = isPasswordReset ? "
|
|
6426
|
+
const title = isPasswordReset ? t("auth.passwordReset") : t("auth.title");
|
|
6247
6427
|
return /* @__PURE__ */ React20.createElement("div", { className: cx("tf-checkout-auth", className), onMouseDown: closeFromBackdrop }, /* @__PURE__ */ React20.createElement(
|
|
6248
6428
|
"div",
|
|
6249
6429
|
{
|
|
@@ -6285,7 +6465,7 @@ var AuthModal = ({
|
|
|
6285
6465
|
),
|
|
6286
6466
|
onClick: () => auth.showLogin(auth.suggestedEmail)
|
|
6287
6467
|
},
|
|
6288
|
-
"
|
|
6468
|
+
t("auth.logIn")
|
|
6289
6469
|
),
|
|
6290
6470
|
/* @__PURE__ */ React20.createElement(
|
|
6291
6471
|
"button",
|
|
@@ -6299,7 +6479,7 @@ var AuthModal = ({
|
|
|
6299
6479
|
),
|
|
6300
6480
|
onClick: () => auth.showRegister(auth.suggestedEmail)
|
|
6301
6481
|
},
|
|
6302
|
-
"
|
|
6482
|
+
t("auth.signUp")
|
|
6303
6483
|
)
|
|
6304
6484
|
),
|
|
6305
6485
|
logoUrl && /* @__PURE__ */ React20.createElement("div", { className: "tf-checkout-auth__logo-wrap" }, /* @__PURE__ */ React20.createElement(
|
|
@@ -6368,9 +6548,9 @@ var ResetPasswordForm = ({
|
|
|
6368
6548
|
const validation = useMemo3(() => {
|
|
6369
6549
|
if (!submitted) return {};
|
|
6370
6550
|
return {
|
|
6371
|
-
token: token ? "" : "
|
|
6372
|
-
password: password.length < 8 ? "
|
|
6373
|
-
confirmation: password !== confirmation ? "
|
|
6551
|
+
token: token ? "" : t("auth.missingToken"),
|
|
6552
|
+
password: password.length < 8 ? t("auth.passwordTooShort") : !/[@$!%*#?&]/.test(password) ? t("auth.passwordNeedsSpecial") : "",
|
|
6553
|
+
confirmation: password !== confirmation ? t("auth.passwordsMustMatch") : ""
|
|
6374
6554
|
};
|
|
6375
6555
|
}, [confirmation, password, submitted, token]);
|
|
6376
6556
|
const reset = hooks_exports.useResetPassword({
|
|
@@ -6387,7 +6567,7 @@ var ResetPasswordForm = ({
|
|
|
6387
6567
|
reset.mutate({ token, password, passwordConfirmation: confirmation });
|
|
6388
6568
|
};
|
|
6389
6569
|
if (success) {
|
|
6390
|
-
return /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__form" }, /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__success", role: "status" }, "
|
|
6570
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__form" }, /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__success", role: "status" }, t("auth.passwordChanged")), onBackToLogin && /* @__PURE__ */ React21.createElement(Button, { type: "button", block: true, onClick: onBackToLogin }, t("auth.logIn")));
|
|
6391
6571
|
}
|
|
6392
6572
|
return /* @__PURE__ */ React21.createElement("form", { className: "tf-checkout-auth__form", onSubmit: submit, noValidate: true }, /* @__PURE__ */ React21.createElement("h2", { className: "tf-checkout-auth__title" }, t("auth.changePassword")), validation.token && /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__alert", role: "alert" }, validation.token), reset.error && /* @__PURE__ */ React21.createElement("div", { className: "tf-checkout-auth__alert", role: "alert" }, errorMessage(reset.error)), /* @__PURE__ */ React21.createElement(Field, { label: t("auth.newPassword"), error: validation.password }, /* @__PURE__ */ React21.createElement(
|
|
6393
6573
|
Input,
|
|
@@ -6411,7 +6591,7 @@ var ResetPasswordForm = ({
|
|
|
6411
6591
|
invalid: Boolean(validation.confirmation),
|
|
6412
6592
|
onChange: (event) => setConfirmation(event.target.value)
|
|
6413
6593
|
}
|
|
6414
|
-
)), /* @__PURE__ */ React21.createElement(Button, { type: "submit", block: true, loading: reset.isPending, disabled: !token }, "
|
|
6594
|
+
)), /* @__PURE__ */ React21.createElement(Button, { type: "submit", block: true, loading: reset.isPending, disabled: !token }, t("common.submit")));
|
|
6415
6595
|
};
|
|
6416
6596
|
|
|
6417
6597
|
// src/sections/Tickets.tsx
|
|
@@ -6471,7 +6651,7 @@ var Tickets = ({
|
|
|
6471
6651
|
eventId,
|
|
6472
6652
|
title = false,
|
|
6473
6653
|
onContinue,
|
|
6474
|
-
buttonLabel
|
|
6654
|
+
buttonLabel,
|
|
6475
6655
|
timeSlotDates,
|
|
6476
6656
|
step,
|
|
6477
6657
|
onSelectSeats,
|
|
@@ -6481,7 +6661,9 @@ var Tickets = ({
|
|
|
6481
6661
|
className
|
|
6482
6662
|
}) => {
|
|
6483
6663
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
6664
|
+
const tr = useT();
|
|
6484
6665
|
const checkout = useCheckoutContext();
|
|
6666
|
+
const buttonText = buttonLabel != null ? buttonLabel : tr("tickets.getTickets");
|
|
6485
6667
|
const ticketsQuery = hooks_exports.useTicketsWithMeta(eventId);
|
|
6486
6668
|
const promoMeta = (_a = ticketsQuery.data) == null ? void 0 : _a.promo;
|
|
6487
6669
|
const showWaitingList = (_c = (_b = ticketsQuery.data) == null ? void 0 : _b.showWaitingList) != null ? _c : false;
|
|
@@ -6567,7 +6749,7 @@ var Tickets = ({
|
|
|
6567
6749
|
const seatMapRow = (t) => isSeated && !t.allowDirectPurchase;
|
|
6568
6750
|
const hasSeatMapTickets = tickets.some(seatMapRow);
|
|
6569
6751
|
const directPurchasable = tickets.filter((t) => !seatMapRow(t));
|
|
6570
|
-
const seatCtaLabel = (eventInfo == null ? void 0 : eventInfo.tableMapEnabled) ? "
|
|
6752
|
+
const seatCtaLabel = (eventInfo == null ? void 0 : eventInfo.tableMapEnabled) ? tr("tickets.selectOnMap") : tr("tickets.selectSeats");
|
|
6571
6753
|
const firstTableIndex = tickets.findIndex((t) => t.isTable);
|
|
6572
6754
|
const firstTableId = firstTableIndex > 0 && tickets.slice(0, firstTableIndex).some((t) => !t.isTable) ? tickets[firstTableIndex].id : void 0;
|
|
6573
6755
|
const prime = () => {
|
|
@@ -6600,7 +6782,7 @@ var Tickets = ({
|
|
|
6600
6782
|
const ticketIndex = tickets.findIndex((candidate) => candidate.id === t.id);
|
|
6601
6783
|
const previousTicket = ticketIndex > 0 ? tickets[ticketIndex - 1] : void 0;
|
|
6602
6784
|
const startsNamedGroup = Boolean(t.groupName) && t.groupName !== (previousTicket == null ? void 0 : previousTicket.groupName);
|
|
6603
|
-
return /* @__PURE__ */ React22.createElement(Fragment, { key: t.id }, startsNamedGroup ? /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__group" }, t.groupName) : t.id === firstTableId && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__group" }, "
|
|
6785
|
+
return /* @__PURE__ */ React22.createElement(Fragment, { key: t.id }, startsNamedGroup ? /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__group" }, t.groupName) : t.id === firstTableId && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__group" }, tr("tickets.reserveTables")), /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__row-wrap" }, /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__row" }, /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__info" }, /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__name" }, /* @__PURE__ */ React22.createElement("span", null, t.name), t.descriptionRich && /* @__PURE__ */ React22.createElement(
|
|
6604
6786
|
"button",
|
|
6605
6787
|
{
|
|
6606
6788
|
type: "button",
|
|
@@ -6609,7 +6791,7 @@ var Tickets = ({
|
|
|
6609
6791
|
"aria-controls": `ticket-description-${t.id}`,
|
|
6610
6792
|
onClick: () => setVisibleDescription((current2) => current2 === t.id ? null : t.id)
|
|
6611
6793
|
},
|
|
6612
|
-
visibleDescription === t.id ? "
|
|
6794
|
+
visibleDescription === t.id ? tr("tickets.hideInfo") : tr("tickets.viewInfo")
|
|
6613
6795
|
)), /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__price" }, discounted && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__old" }, money(sym, original)), /* @__PURE__ */ React22.createElement(
|
|
6614
6796
|
"span",
|
|
6615
6797
|
{
|
|
@@ -6619,7 +6801,7 @@ var Tickets = ({
|
|
|
6619
6801
|
)
|
|
6620
6802
|
},
|
|
6621
6803
|
isFree ? "FREE" : money(sym, t.price)
|
|
6622
|
-
), !isFree && !t.soldOut && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__fees" }, "(", money(sym, t.priceWithFees), " with fees)"), t.depositPercent != null && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__deposit" }, t.depositPercent.toFixed(2), "% DEPOSIT"))), seatMapRow(t) ? null : unavailable ? /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__soldout" }, t.soldOut ? "
|
|
6804
|
+
), !isFree && !t.soldOut && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__fees" }, "(", money(sym, t.priceWithFees), " with fees)"), t.depositPercent != null && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__deposit" }, t.depositPercent.toFixed(2), "% DEPOSIT"))), seatMapRow(t) ? null : unavailable ? /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__soldout" }, t.soldOut ? tr("tickets.soldOut") : notStarted ? tr("tickets.salesNotStarted") : tr("tickets.salesEnded")) : /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__qty" }, t.isTable && /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__guests" }, tr("tickets.guests")), /* @__PURE__ */ React22.createElement(
|
|
6623
6805
|
QuantitySelect,
|
|
6624
6806
|
{
|
|
6625
6807
|
value: (_a2 = qty[t.id]) != null ? _a2 : 0,
|
|
@@ -6666,7 +6848,7 @@ var Tickets = ({
|
|
|
6666
6848
|
title: title || "",
|
|
6667
6849
|
pills: listQuery.isFetching && !listQuery.isLoading ? /* @__PURE__ */ React22.createElement(Loader, null) : void 0
|
|
6668
6850
|
}
|
|
6669
|
-
), listQuery.isLoading && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__loading" }, /* @__PURE__ */ React22.createElement(Loader, { className: "tf-checkout-tickets__loading-spinner" })), listQuery.error && /* @__PURE__ */ React22.createElement("p", { className: "tf-checkout-error-text" }, listQuery.error.message), isTimeSlot && dates.length > 0 && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__currency" }, /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__currency-label" }, "
|
|
6851
|
+
), listQuery.isLoading && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__loading" }, /* @__PURE__ */ React22.createElement(Loader, { className: "tf-checkout-tickets__loading-spinner" })), listQuery.error && /* @__PURE__ */ React22.createElement("p", { className: "tf-checkout-error-text" }, listQuery.error.message), isTimeSlot && dates.length > 0 && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__currency" }, /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__currency-label" }, tr("common.date")), /* @__PURE__ */ React22.createElement(
|
|
6670
6852
|
"select",
|
|
6671
6853
|
{
|
|
6672
6854
|
className: "tf-checkout-select",
|
|
@@ -6677,7 +6859,7 @@ var Tickets = ({
|
|
|
6677
6859
|
}
|
|
6678
6860
|
},
|
|
6679
6861
|
dates.map((d) => /* @__PURE__ */ React22.createElement("option", { key: d, value: d }, d))
|
|
6680
|
-
)), checkout.currency && checkout.currency.available.length > 1 && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__currency" }, /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__currency-label" }, "
|
|
6862
|
+
)), checkout.currency && checkout.currency.available.length > 1 && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__currency" }, /* @__PURE__ */ React22.createElement("span", { className: "tf-checkout-tickets__currency-label" }, tr("common.currency")), /* @__PURE__ */ React22.createElement(
|
|
6681
6863
|
"select",
|
|
6682
6864
|
{
|
|
6683
6865
|
className: "tf-checkout-select",
|
|
@@ -6685,7 +6867,7 @@ var Tickets = ({
|
|
|
6685
6867
|
onChange: (e) => changeCurrency(e.target.value)
|
|
6686
6868
|
},
|
|
6687
6869
|
checkout.currency.available.map((c) => /* @__PURE__ */ React22.createElement("option", { key: c.code, value: c.code }, c.name, " (", c.code, ")"))
|
|
6688
|
-
)), isTimeSlot && !slotQuery.isLoading && tickets.length === 0 && slotDate && /* @__PURE__ */ React22.createElement("p", { className: "tf-checkout-note" }, "
|
|
6870
|
+
)), isTimeSlot && !slotQuery.isLoading && tickets.length === 0 && slotDate && /* @__PURE__ */ React22.createElement("p", { className: "tf-checkout-note" }, tr("tickets.noSessions")), isTimeSlot ? timeGroups.map((g) => /* @__PURE__ */ React22.createElement(Fragment, { key: g.time }, g.time && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__slot-time" }, g.time), g.items.map(renderRow))) : tickets.map(renderRow), showCodeInput && /* @__PURE__ */ React22.createElement("div", { className: "tf-checkout-tickets__promo" }, !isAccess && !promoOpen ? /* @__PURE__ */ React22.createElement(
|
|
6689
6871
|
"button",
|
|
6690
6872
|
{
|
|
6691
6873
|
type: "button",
|
|
@@ -6696,7 +6878,7 @@ var Tickets = ({
|
|
|
6696
6878
|
) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(FieldRow, null, /* @__PURE__ */ React22.createElement(Field, null, /* @__PURE__ */ React22.createElement(
|
|
6697
6879
|
Input,
|
|
6698
6880
|
{
|
|
6699
|
-
placeholder: isAccess ? "
|
|
6881
|
+
placeholder: isAccess ? tr("tickets.accessCode") : tr("tickets.promoCode"),
|
|
6700
6882
|
value: code,
|
|
6701
6883
|
onChange: (e) => setCode(e.target.value),
|
|
6702
6884
|
onKeyDown: (e) => e.key === "Enter" && applyCode()
|
|
@@ -6727,7 +6909,7 @@ var Tickets = ({
|
|
|
6727
6909
|
loading: checkout.isBusy,
|
|
6728
6910
|
disabled: checkout.isBusy || selected.length === 0
|
|
6729
6911
|
},
|
|
6730
|
-
checkout.isBusy ? "
|
|
6912
|
+
checkout.isBusy ? tr("tickets.reserving") : selectionIsTable ? tr("tickets.reserveTables") : buttonText
|
|
6731
6913
|
), hasSeatMapTickets && /* @__PURE__ */ React22.createElement(Button, { block: true, onClick: () => onSelectSeats == null ? void 0 : onSelectSeats() }, seatCtaLabel), (error || checkout.error) && /* @__PURE__ */ React22.createElement("p", { className: "tf-checkout-error-text" }, error || checkout.error));
|
|
6732
6914
|
};
|
|
6733
6915
|
|
|
@@ -7093,13 +7275,17 @@ var AddOns = ({
|
|
|
7093
7275
|
eventId,
|
|
7094
7276
|
onContinue,
|
|
7095
7277
|
onSkip,
|
|
7096
|
-
buttonLabel
|
|
7097
|
-
eyebrow
|
|
7098
|
-
heading
|
|
7278
|
+
buttonLabel,
|
|
7279
|
+
eyebrow,
|
|
7280
|
+
heading,
|
|
7099
7281
|
className
|
|
7100
7282
|
}) => {
|
|
7101
7283
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
7284
|
+
const t = useT();
|
|
7102
7285
|
const checkout = useCheckoutContext();
|
|
7286
|
+
const buttonText = buttonLabel != null ? buttonLabel : t("addons.confirmSelection");
|
|
7287
|
+
const eyebrowText = eyebrow != null ? eyebrow : t("addons.eyebrow");
|
|
7288
|
+
const headingText = heading != null ? heading : t("addons.heading");
|
|
7103
7289
|
const combined = !onContinue;
|
|
7104
7290
|
const addonsQuery = hooks_exports.useEventAddons(eventId);
|
|
7105
7291
|
const all = (_a = addonsQuery.data) != null ? _a : [];
|
|
@@ -7129,14 +7315,14 @@ var AddOns = ({
|
|
|
7129
7315
|
return ((_a3 = selection[id]) != null ? _a3 : 0) > 0;
|
|
7130
7316
|
})
|
|
7131
7317
|
);
|
|
7132
|
-
const
|
|
7318
|
+
const t2 = setTimeout(() => {
|
|
7133
7319
|
checkout.setAddonDataCapture(captureForSelected);
|
|
7134
7320
|
checkout.setAddons(selection).catch((e) => setError(errorMessage(e)));
|
|
7135
7321
|
}, 500);
|
|
7136
|
-
return () => clearTimeout(
|
|
7322
|
+
return () => clearTimeout(t2);
|
|
7137
7323
|
}, [combined, qty, capture]);
|
|
7138
7324
|
const hasRequired = ((_f = checkout.requiredAddOns) != null ? _f : []).some((a) => a.required);
|
|
7139
|
-
const head = /* @__PURE__ */ React24.createElement("div", { className: "tf-checkout-addons__head" },
|
|
7325
|
+
const head = /* @__PURE__ */ React24.createElement("div", { className: "tf-checkout-addons__head" }, eyebrowText && /* @__PURE__ */ React24.createElement("span", { className: "tf-checkout-addons__eyebrow" }, eyebrowText), /* @__PURE__ */ React24.createElement("span", { className: "tf-checkout-addons__heading" }, headingText), onSkip && !hasRequired && /* @__PURE__ */ React24.createElement("button", { type: "button", className: "tf-checkout-addons__skip", onClick: onSkip }, "Skip"));
|
|
7140
7326
|
if (addonsQuery.isLoading) {
|
|
7141
7327
|
return /* @__PURE__ */ React24.createElement(Card, { className }, head, /* @__PURE__ */ React24.createElement("div", { className: "tf-checkout-section-loader" }, /* @__PURE__ */ React24.createElement(Loader, null)));
|
|
7142
7328
|
}
|
|
@@ -7183,7 +7369,7 @@ var AddOns = ({
|
|
|
7183
7369
|
className: "tf-checkout-addons__desc",
|
|
7184
7370
|
dangerouslySetInnerHTML: { __html: a.description }
|
|
7185
7371
|
}
|
|
7186
|
-
)), soldOut(a) ? /* @__PURE__ */ React24.createElement("span", { className: "tf-checkout-tickets__soldout" }, "
|
|
7372
|
+
)), soldOut(a) ? /* @__PURE__ */ React24.createElement("span", { className: "tf-checkout-tickets__soldout" }, t("tickets.soldOut")) : /* @__PURE__ */ React24.createElement(
|
|
7187
7373
|
QuantitySelect,
|
|
7188
7374
|
{
|
|
7189
7375
|
value: n,
|
|
@@ -7214,7 +7400,7 @@ var AddOns = ({
|
|
|
7214
7400
|
loading: checkout.isBusy,
|
|
7215
7401
|
disabled: checkout.isBusy || selectedCount === 0
|
|
7216
7402
|
},
|
|
7217
|
-
checkout.isBusy ? "
|
|
7403
|
+
checkout.isBusy ? t("addons.updating") : buttonText
|
|
7218
7404
|
), missing.length > 0 && /* @__PURE__ */ React24.createElement("p", { className: "tf-checkout-note" }, "Required add-on: ", missing.join(", "), "."), (error || checkout.error) && /* @__PURE__ */ React24.createElement("p", { className: "tf-checkout-error-text" }, error || checkout.error));
|
|
7219
7405
|
};
|
|
7220
7406
|
|
|
@@ -7238,17 +7424,18 @@ var BillingAddressFields = ({
|
|
|
7238
7424
|
setBilling
|
|
7239
7425
|
}) => {
|
|
7240
7426
|
var _a, _b, _c, _d, _e;
|
|
7427
|
+
const t = useT();
|
|
7241
7428
|
const setValue = (key) => (event) => setBilling((current2) => ({ ...current2, [key]: event.target.value }));
|
|
7242
|
-
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("div", { className: "tf-checkout-billing__section-label" }, "
|
|
7429
|
+
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("div", { className: "tf-checkout-billing__section-label" }, t("billing.address")), /* @__PURE__ */ React25.createElement(
|
|
7243
7430
|
Field,
|
|
7244
7431
|
{
|
|
7245
|
-
error: fieldError("Street address", "
|
|
7432
|
+
error: fieldError("Street address", t("billing.streetRequired")),
|
|
7246
7433
|
invalid: Boolean(fieldError("Street address"))
|
|
7247
7434
|
},
|
|
7248
7435
|
/* @__PURE__ */ React25.createElement(
|
|
7249
7436
|
Input,
|
|
7250
7437
|
{
|
|
7251
|
-
placeholder: "
|
|
7438
|
+
placeholder: t("billing.streetPlaceholder"),
|
|
7252
7439
|
autoComplete: "street-address",
|
|
7253
7440
|
value: (_a = billing.streetAddress) != null ? _a : "",
|
|
7254
7441
|
required: true,
|
|
@@ -7260,13 +7447,13 @@ var BillingAddressFields = ({
|
|
|
7260
7447
|
), /* @__PURE__ */ React25.createElement(FieldRow, null, /* @__PURE__ */ React25.createElement(
|
|
7261
7448
|
Field,
|
|
7262
7449
|
{
|
|
7263
|
-
error: fieldError("City", "
|
|
7450
|
+
error: fieldError("City", t("billing.cityRequired")),
|
|
7264
7451
|
invalid: Boolean(fieldError("City"))
|
|
7265
7452
|
},
|
|
7266
7453
|
/* @__PURE__ */ React25.createElement(
|
|
7267
7454
|
Input,
|
|
7268
7455
|
{
|
|
7269
|
-
placeholder: "
|
|
7456
|
+
placeholder: t("billing.cityPlaceholder"),
|
|
7270
7457
|
autoComplete: "address-level2",
|
|
7271
7458
|
value: (_b = billing.city) != null ? _b : "",
|
|
7272
7459
|
required: true,
|
|
@@ -7278,13 +7465,13 @@ var BillingAddressFields = ({
|
|
|
7278
7465
|
), /* @__PURE__ */ React25.createElement(
|
|
7279
7466
|
Field,
|
|
7280
7467
|
{
|
|
7281
|
-
error: fieldError("ZIP / postcode", "
|
|
7468
|
+
error: fieldError("ZIP / postcode", t("billing.postcodeRequired")),
|
|
7282
7469
|
invalid: Boolean(fieldError("ZIP / postcode"))
|
|
7283
7470
|
},
|
|
7284
7471
|
/* @__PURE__ */ React25.createElement(
|
|
7285
7472
|
Input,
|
|
7286
7473
|
{
|
|
7287
|
-
placeholder: "
|
|
7474
|
+
placeholder: t("billing.postcodePlaceholder"),
|
|
7288
7475
|
autoComplete: "postal-code",
|
|
7289
7476
|
value: (_c = billing.zip) != null ? _c : "",
|
|
7290
7477
|
required: true,
|
|
@@ -7296,14 +7483,14 @@ var BillingAddressFields = ({
|
|
|
7296
7483
|
)), /* @__PURE__ */ React25.createElement(FieldRow, null, /* @__PURE__ */ React25.createElement(
|
|
7297
7484
|
Field,
|
|
7298
7485
|
{
|
|
7299
|
-
error: fieldError("Country", "
|
|
7486
|
+
error: fieldError("Country", t("billing.countryRequired")),
|
|
7300
7487
|
invalid: Boolean(fieldError("Country"))
|
|
7301
7488
|
},
|
|
7302
7489
|
/* @__PURE__ */ React25.createElement(
|
|
7303
7490
|
Select,
|
|
7304
7491
|
{
|
|
7305
7492
|
value: (_d = billing.countryId) != null ? _d : "",
|
|
7306
|
-
"aria-label": "
|
|
7493
|
+
"aria-label": t("billing.countryLabel"),
|
|
7307
7494
|
required: true,
|
|
7308
7495
|
invalid: Boolean(fieldError("Country")),
|
|
7309
7496
|
"aria-invalid": Boolean(fieldError("Country")),
|
|
@@ -7323,13 +7510,13 @@ var BillingAddressFields = ({
|
|
|
7323
7510
|
});
|
|
7324
7511
|
}
|
|
7325
7512
|
},
|
|
7326
|
-
/* @__PURE__ */ React25.createElement("option", { value: "" }, "
|
|
7513
|
+
/* @__PURE__ */ React25.createElement("option", { value: "" }, t("billing.countryEmpty")),
|
|
7327
7514
|
countries.map((country) => /* @__PURE__ */ React25.createElement("option", { key: country.id, value: country.id }, country.name))
|
|
7328
7515
|
)
|
|
7329
7516
|
), /* @__PURE__ */ React25.createElement(
|
|
7330
7517
|
Field,
|
|
7331
7518
|
{
|
|
7332
|
-
error: fieldError("State / county", "
|
|
7519
|
+
error: fieldError("State / county", t("billing.stateRequired")),
|
|
7333
7520
|
invalid: Boolean(fieldError("State / county"))
|
|
7334
7521
|
},
|
|
7335
7522
|
/* @__PURE__ */ React25.createElement(
|
|
@@ -7337,7 +7524,7 @@ var BillingAddressFields = ({
|
|
|
7337
7524
|
{
|
|
7338
7525
|
value: (_e = billing.stateId) != null ? _e : "",
|
|
7339
7526
|
disabled: !billing.countryId || states.length === 0,
|
|
7340
|
-
"aria-label": "
|
|
7527
|
+
"aria-label": t("billing.stateLabel"),
|
|
7341
7528
|
required: states.length > 0,
|
|
7342
7529
|
invalid: Boolean(fieldError("State / county")),
|
|
7343
7530
|
"aria-invalid": Boolean(fieldError("State / county")),
|
|
@@ -7352,7 +7539,7 @@ var BillingAddressFields = ({
|
|
|
7352
7539
|
}));
|
|
7353
7540
|
}
|
|
7354
7541
|
},
|
|
7355
|
-
/* @__PURE__ */ React25.createElement("option", { value: "" },
|
|
7542
|
+
/* @__PURE__ */ React25.createElement("option", { value: "" }, states.length > 0 ? t("billing.stateEmptyRequired") : t("billing.stateEmpty")),
|
|
7356
7543
|
states.map((state) => /* @__PURE__ */ React25.createElement("option", { key: state.id, value: state.id }, state.name))
|
|
7357
7544
|
)
|
|
7358
7545
|
)));
|
|
@@ -7432,114 +7619,121 @@ var TicketHoldersCard = ({
|
|
|
7432
7619
|
fieldError,
|
|
7433
7620
|
renderCustomFields,
|
|
7434
7621
|
patchHolder
|
|
7435
|
-
}) =>
|
|
7436
|
-
const
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
{
|
|
7443
|
-
|
|
7444
|
-
error: fieldError(firstNameKey, "First name is required."),
|
|
7445
|
-
invalid: Boolean(fieldError(firstNameKey))
|
|
7446
|
-
},
|
|
7447
|
-
/* @__PURE__ */ React27.createElement(
|
|
7448
|
-
Input,
|
|
7622
|
+
}) => {
|
|
7623
|
+
const t = useT();
|
|
7624
|
+
return /* @__PURE__ */ React27.createElement(Card, { className: "tf-checkout-billing__holders-card" }, /* @__PURE__ */ React27.createElement(SectionHeader, { title: t("billing.ticketHolders") }), holders.map((holder, index) => {
|
|
7625
|
+
const firstNameKey = `Ticket ${index + 1} holder first name`;
|
|
7626
|
+
const lastNameKey = `Ticket ${index + 1} holder last name`;
|
|
7627
|
+
const emailKey = `Ticket ${index + 1} holder email`;
|
|
7628
|
+
const phoneKey = `Ticket ${index + 1} holder phone`;
|
|
7629
|
+
return /* @__PURE__ */ React27.createElement("div", { key: index, className: "tf-checkout-billing__holder" }, /* @__PURE__ */ React27.createElement("div", { className: "tf-checkout-billing__holder-title" }, t("billing.holderTitle", { number: index + 1 })), holderNamesRequired && /* @__PURE__ */ React27.createElement(FieldRow, null, /* @__PURE__ */ React27.createElement(
|
|
7630
|
+
Field,
|
|
7449
7631
|
{
|
|
7450
|
-
|
|
7451
|
-
|
|
7452
|
-
invalid: Boolean(fieldError(firstNameKey))
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
/* @__PURE__ */ React27.createElement(
|
|
7465
|
-
|
|
7632
|
+
label: t("billing.holderFirstName"),
|
|
7633
|
+
error: fieldError(firstNameKey, t("billing.firstNameRequired")),
|
|
7634
|
+
invalid: Boolean(fieldError(firstNameKey))
|
|
7635
|
+
},
|
|
7636
|
+
/* @__PURE__ */ React27.createElement(
|
|
7637
|
+
Input,
|
|
7638
|
+
{
|
|
7639
|
+
value: holder.firstName,
|
|
7640
|
+
required: true,
|
|
7641
|
+
invalid: Boolean(fieldError(firstNameKey)),
|
|
7642
|
+
"aria-invalid": Boolean(fieldError(firstNameKey)),
|
|
7643
|
+
onChange: (event) => patchHolder(index, { firstName: event.target.value })
|
|
7644
|
+
}
|
|
7645
|
+
)
|
|
7646
|
+
), /* @__PURE__ */ React27.createElement(
|
|
7647
|
+
Field,
|
|
7466
7648
|
{
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
invalid: Boolean(fieldError(lastNameKey))
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
|
|
7474
|
-
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
/* @__PURE__ */ React27.createElement(
|
|
7482
|
-
|
|
7649
|
+
label: t("billing.holderLastName"),
|
|
7650
|
+
error: fieldError(lastNameKey, t("billing.lastNameRequired")),
|
|
7651
|
+
invalid: Boolean(fieldError(lastNameKey))
|
|
7652
|
+
},
|
|
7653
|
+
/* @__PURE__ */ React27.createElement(
|
|
7654
|
+
Input,
|
|
7655
|
+
{
|
|
7656
|
+
value: holder.lastName,
|
|
7657
|
+
required: true,
|
|
7658
|
+
invalid: Boolean(fieldError(lastNameKey)),
|
|
7659
|
+
"aria-invalid": Boolean(fieldError(lastNameKey)),
|
|
7660
|
+
onChange: (event) => patchHolder(index, { lastName: event.target.value })
|
|
7661
|
+
}
|
|
7662
|
+
)
|
|
7663
|
+
)), collectHolderContact && /* @__PURE__ */ React27.createElement(FieldRow, null, /* @__PURE__ */ React27.createElement(
|
|
7664
|
+
Field,
|
|
7483
7665
|
{
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
/* @__PURE__ */ React27.createElement(
|
|
7501
|
-
|
|
7666
|
+
label: t("billing.email"),
|
|
7667
|
+
error: fieldError(emailKey, t("billing.emailInvalid")),
|
|
7668
|
+
invalid: Boolean(fieldError(emailKey))
|
|
7669
|
+
},
|
|
7670
|
+
/* @__PURE__ */ React27.createElement(
|
|
7671
|
+
Input,
|
|
7672
|
+
{
|
|
7673
|
+
type: "email",
|
|
7674
|
+
autoComplete: "email",
|
|
7675
|
+
value: holder.email,
|
|
7676
|
+
required: true,
|
|
7677
|
+
invalid: Boolean(fieldError(emailKey)),
|
|
7678
|
+
"aria-invalid": Boolean(fieldError(emailKey)),
|
|
7679
|
+
onChange: (event) => patchHolder(index, { email: event.target.value })
|
|
7680
|
+
}
|
|
7681
|
+
)
|
|
7682
|
+
), /* @__PURE__ */ React27.createElement(
|
|
7683
|
+
Field,
|
|
7502
7684
|
{
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7685
|
+
label: t("billing.phone"),
|
|
7686
|
+
error: fieldError(phoneKey, t("billing.phoneInvalid")),
|
|
7687
|
+
invalid: Boolean(fieldError(phoneKey))
|
|
7688
|
+
},
|
|
7689
|
+
/* @__PURE__ */ React27.createElement(
|
|
7690
|
+
PhoneInput2,
|
|
7691
|
+
{
|
|
7692
|
+
className: "tf-checkout-phone",
|
|
7693
|
+
inputClassName: `tf-checkout-input tf-checkout-phone__input${fieldError(phoneKey) ? " tf-checkout-input--invalid" : ""}`,
|
|
7694
|
+
defaultCountry: phoneCountry,
|
|
7695
|
+
disableDialCodeAndPrefix: true,
|
|
7696
|
+
showDisabledDialCodeAndPrefix: true,
|
|
7697
|
+
disableDialCodePrefill: true,
|
|
7698
|
+
value: holder.phone,
|
|
7699
|
+
required: true,
|
|
7700
|
+
inputProps: {
|
|
7701
|
+
autoComplete: "tel",
|
|
7702
|
+
"aria-label": phoneKey,
|
|
7703
|
+
"aria-invalid": Boolean(fieldError(phoneKey))
|
|
7704
|
+
},
|
|
7705
|
+
onChange: (phone) => patchHolder(index, { phone })
|
|
7706
|
+
}
|
|
7707
|
+
)
|
|
7708
|
+
)), renderCustomFields(holder, index));
|
|
7709
|
+
}));
|
|
7710
|
+
};
|
|
7521
7711
|
|
|
7522
7712
|
// src/sections/BillingInfo.tsx
|
|
7523
7713
|
var BillingInfo = ({
|
|
7524
7714
|
eventId,
|
|
7525
7715
|
onContinue,
|
|
7526
|
-
heading
|
|
7527
|
-
buttonLabel
|
|
7716
|
+
heading,
|
|
7717
|
+
buttonLabel,
|
|
7528
7718
|
onLogin,
|
|
7529
7719
|
skipWhenProfileComplete = false,
|
|
7530
7720
|
requireEmailConfirmation = false,
|
|
7531
7721
|
collectTicketHolders = false,
|
|
7532
7722
|
collectHolderContact = false,
|
|
7533
|
-
ttfOptInLabel
|
|
7723
|
+
ttfOptInLabel,
|
|
7534
7724
|
brandOptInLabel,
|
|
7535
7725
|
privacyPolicy,
|
|
7536
7726
|
showPrivacyError = false,
|
|
7537
7727
|
step,
|
|
7538
7728
|
className
|
|
7539
7729
|
}) => {
|
|
7540
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D;
|
|
7730
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E;
|
|
7731
|
+
const t = useT();
|
|
7541
7732
|
const checkout = useCheckoutContext();
|
|
7542
7733
|
const validation = useCheckoutValidation();
|
|
7734
|
+
const headingText = heading != null ? heading : t("billing.heading");
|
|
7735
|
+
const buttonText = buttonLabel != null ? buttonLabel : t("billing.continueToPayment");
|
|
7736
|
+
const ttfOptInText = ttfOptInLabel != null ? ttfOptInLabel : t("billing.ttfOptIn");
|
|
7543
7737
|
const profile = hooks_exports.useProfile({ retry: false });
|
|
7544
7738
|
const event = hooks_exports.useEvent(eventId);
|
|
7545
7739
|
const combined = !onContinue;
|
|
@@ -7680,11 +7874,11 @@ var BillingInfo = ({
|
|
|
7680
7874
|
useEffect11(() => {
|
|
7681
7875
|
const email = billing.email.trim();
|
|
7682
7876
|
if (checkout.isLoggedIn || !isEmail(email)) return;
|
|
7683
|
-
const
|
|
7877
|
+
const t2 = setTimeout(
|
|
7684
7878
|
() => checkout.checkBuyerEmail(email).catch(() => void 0),
|
|
7685
7879
|
600
|
|
7686
7880
|
);
|
|
7687
|
-
return () => clearTimeout(
|
|
7881
|
+
return () => clearTimeout(t2);
|
|
7688
7882
|
}, [billing.email, checkout.isLoggedIn]);
|
|
7689
7883
|
const emailTaken = !checkout.isLoggedIn && checkout.existingAccountEmail === billing.email.trim();
|
|
7690
7884
|
const needsNationality = checkout.buyerFields.some((f) => f.kind === "nationality");
|
|
@@ -7808,7 +8002,7 @@ var BillingInfo = ({
|
|
|
7808
8002
|
const complete = missingDetails.length === 0;
|
|
7809
8003
|
const showValidation = validation.attempt > 0;
|
|
7810
8004
|
const missingSet = new Set(missingDetails);
|
|
7811
|
-
const fieldError = (key, message = "
|
|
8005
|
+
const fieldError = (key, message = t("billing.fieldRequired")) => showValidation && missingSet.has(key) ? message : void 0;
|
|
7812
8006
|
const dobError = showValidation ? missingDetails.find(
|
|
7813
8007
|
(detail) => detail === "Date of birth" || detail.startsWith("Age ")
|
|
7814
8008
|
) : void 0;
|
|
@@ -7816,7 +8010,7 @@ var BillingInfo = ({
|
|
|
7816
8010
|
const commit = () => {
|
|
7817
8011
|
checkout.setBilling(committedBilling);
|
|
7818
8012
|
checkout.setHolders(committedHolders);
|
|
7819
|
-
if (
|
|
8013
|
+
if (ttfOptInText || brandOptInLabel) checkout.setConsent(consent);
|
|
7820
8014
|
};
|
|
7821
8015
|
useEffect11(() => {
|
|
7822
8016
|
if (combined) commit();
|
|
@@ -7838,7 +8032,7 @@ var BillingInfo = ({
|
|
|
7838
8032
|
const hasEventSpecificDetails = checkout.buyerFields.length > 0 || checkout.customFields.some((group) => group.fields.length > 0) || showHolders || gates.showDob;
|
|
7839
8033
|
const skipBilling = skipWhenProfileComplete && checkout.isLoggedIn && profile.isSuccess && complete && !hasEventSpecificDetails;
|
|
7840
8034
|
if (skipBilling) return null;
|
|
7841
|
-
return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(Card, { className }, /* @__PURE__ */ React28.createElement(SectionHeader, { step, title:
|
|
8035
|
+
return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(Card, { className }, /* @__PURE__ */ React28.createElement(SectionHeader, { step, title: headingText }), onLogin && !checkout.isLoggedIn && /* @__PURE__ */ React28.createElement("div", { className: "tf-checkout-billing__login" }, /* @__PURE__ */ React28.createElement("span", null, "Login & skip ahead:"), /* @__PURE__ */ React28.createElement(
|
|
7842
8036
|
"button",
|
|
7843
8037
|
{
|
|
7844
8038
|
type: "button",
|
|
@@ -7855,7 +8049,7 @@ var BillingInfo = ({
|
|
|
7855
8049
|
/* @__PURE__ */ React28.createElement(
|
|
7856
8050
|
Input,
|
|
7857
8051
|
{
|
|
7858
|
-
placeholder: "
|
|
8052
|
+
placeholder: t("billing.firstNamePlaceholder"),
|
|
7859
8053
|
value: billing.firstName,
|
|
7860
8054
|
required: true,
|
|
7861
8055
|
invalid: Boolean(fieldError("First name")),
|
|
@@ -7872,7 +8066,7 @@ var BillingInfo = ({
|
|
|
7872
8066
|
/* @__PURE__ */ React28.createElement(
|
|
7873
8067
|
Input,
|
|
7874
8068
|
{
|
|
7875
|
-
placeholder: "
|
|
8069
|
+
placeholder: t("billing.lastNamePlaceholder"),
|
|
7876
8070
|
value: billing.lastName,
|
|
7877
8071
|
required: true,
|
|
7878
8072
|
invalid: Boolean(fieldError("Last name")),
|
|
@@ -7891,7 +8085,7 @@ var BillingInfo = ({
|
|
|
7891
8085
|
{
|
|
7892
8086
|
type: "email",
|
|
7893
8087
|
autoComplete: "email",
|
|
7894
|
-
placeholder: "
|
|
8088
|
+
placeholder: t("billing.emailPlaceholder"),
|
|
7895
8089
|
value: billing.email,
|
|
7896
8090
|
required: true,
|
|
7897
8091
|
invalid: Boolean(fieldError("Valid email address")),
|
|
@@ -7904,7 +8098,7 @@ var BillingInfo = ({
|
|
|
7904
8098
|
{
|
|
7905
8099
|
error: fieldError(
|
|
7906
8100
|
"Matching email confirmation",
|
|
7907
|
-
"
|
|
8101
|
+
t("billing.emailMustMatch")
|
|
7908
8102
|
),
|
|
7909
8103
|
invalid: Boolean(fieldError("Matching email confirmation"))
|
|
7910
8104
|
},
|
|
@@ -7913,7 +8107,7 @@ var BillingInfo = ({
|
|
|
7913
8107
|
{
|
|
7914
8108
|
type: "email",
|
|
7915
8109
|
autoComplete: "email",
|
|
7916
|
-
placeholder: "
|
|
8110
|
+
placeholder: t("billing.confirmEmailPlaceholder"),
|
|
7917
8111
|
value: (_C = billing.confirmEmail) != null ? _C : "",
|
|
7918
8112
|
required: true,
|
|
7919
8113
|
invalid: Boolean(fieldError("Matching email confirmation")),
|
|
@@ -7921,15 +8115,15 @@ var BillingInfo = ({
|
|
|
7921
8115
|
onChange: setB("confirmEmail")
|
|
7922
8116
|
}
|
|
7923
8117
|
)
|
|
7924
|
-
)), !showValidation && requireEmailConfirmation && billing.confirmEmail && billing.confirmEmail.trim().toLowerCase() !== billing.email.trim().toLowerCase() && /* @__PURE__ */ React28.createElement("p", { className: "tf-checkout-error-text" }, "
|
|
8118
|
+
)), !showValidation && requireEmailConfirmation && billing.confirmEmail && billing.confirmEmail.trim().toLowerCase() !== billing.email.trim().toLowerCase() && /* @__PURE__ */ React28.createElement("p", { className: "tf-checkout-error-text" }, t("billing.emailMismatch")), emailTaken && /* @__PURE__ */ React28.createElement("p", { className: "tf-checkout-note tf-checkout-billing__email-taken" }, t("billing.emailRegistered"), " ", onLogin ? /* @__PURE__ */ React28.createElement(
|
|
7925
8119
|
"button",
|
|
7926
8120
|
{
|
|
7927
8121
|
type: "button",
|
|
7928
8122
|
className: "tf-checkout-billing__login-link",
|
|
7929
8123
|
onClick: () => onLogin(billing.email)
|
|
7930
8124
|
},
|
|
7931
|
-
"
|
|
7932
|
-
) : "
|
|
8125
|
+
t("billing.loginAutofill")
|
|
8126
|
+
) : t("billing.loginAutofillPlain")), checkout.buyerFields.map((f) => {
|
|
7933
8127
|
var _a2;
|
|
7934
8128
|
return /* @__PURE__ */ React28.createElement(
|
|
7935
8129
|
BuyerField,
|
|
@@ -7940,15 +8134,15 @@ var BillingInfo = ({
|
|
|
7940
8134
|
onChange: (v) => setBilling((b) => ({ ...b, [f.key]: v })),
|
|
7941
8135
|
countries,
|
|
7942
8136
|
error: fieldError(
|
|
7943
|
-
f.kind === "nationality" ? "
|
|
8137
|
+
f.kind === "nationality" ? t("billing.nationality") : f.kind === "gender" ? t("billing.gender") : t("billing.instagramHandle")
|
|
7944
8138
|
)
|
|
7945
8139
|
}
|
|
7946
8140
|
);
|
|
7947
8141
|
}), gates.showPhone && /* @__PURE__ */ React28.createElement(
|
|
7948
8142
|
Field,
|
|
7949
8143
|
{
|
|
7950
|
-
label:
|
|
7951
|
-
error: fieldError("Valid phone number", "
|
|
8144
|
+
label: gates.phoneRequired ? t("billing.phone") : t("billing.phoneOptional"),
|
|
8145
|
+
error: fieldError("Valid phone number", t("billing.phoneInvalid")),
|
|
7952
8146
|
invalid: Boolean(fieldError("Valid phone number"))
|
|
7953
8147
|
},
|
|
7954
8148
|
/* @__PURE__ */ React28.createElement(
|
|
@@ -7962,10 +8156,10 @@ var BillingInfo = ({
|
|
|
7962
8156
|
disableDialCodePrefill: true,
|
|
7963
8157
|
value: (_D = billing.phone) != null ? _D : "",
|
|
7964
8158
|
required: gates.phoneRequired,
|
|
7965
|
-
placeholder: "
|
|
8159
|
+
placeholder: t("billing.phonePlaceholder"),
|
|
7966
8160
|
inputProps: {
|
|
7967
8161
|
autoComplete: "tel",
|
|
7968
|
-
"aria-label": "
|
|
8162
|
+
"aria-label": t("billing.phoneAria"),
|
|
7969
8163
|
"aria-invalid": Boolean(fieldError("Valid phone number"))
|
|
7970
8164
|
},
|
|
7971
8165
|
onChange: (phone) => setBilling((current2) => ({ ...current2, phone }))
|
|
@@ -7974,8 +8168,8 @@ var BillingInfo = ({
|
|
|
7974
8168
|
), gates.showDob && /* @__PURE__ */ React28.createElement(
|
|
7975
8169
|
Field,
|
|
7976
8170
|
{
|
|
7977
|
-
label:
|
|
7978
|
-
error: dobError === "Date of birth" ? "
|
|
8171
|
+
label: gates.minimumAge ? t("billing.dobWithAge", { age: gates.minimumAge }) : t("billing.dob"),
|
|
8172
|
+
error: dobError === "Date of birth" ? t("billing.dobRequired") : dobError ? t("billing.ageMinimum", { age: (_E = gates.minimumAge) != null ? _E : "" }) : void 0,
|
|
7979
8173
|
invalid: Boolean(dobError)
|
|
7980
8174
|
},
|
|
7981
8175
|
/* @__PURE__ */ React28.createElement(
|
|
@@ -8026,17 +8220,17 @@ var BillingInfo = ({
|
|
|
8026
8220
|
"aria-invalid": (showPrivacyError || showValidation) && !consent.ttfOptIn,
|
|
8027
8221
|
onChange: (e) => setConsent((c) => ({ ...c, ttfOptIn: e.target.checked })),
|
|
8028
8222
|
className: "tf-checkout-checkbox--consent",
|
|
8029
|
-
label: /* @__PURE__ */ React28.createElement(React28.Fragment, null, "
|
|
8223
|
+
label: /* @__PURE__ */ React28.createElement(React28.Fragment, null, t("billing.privacyAgree", { brand: privacyPolicy.brandName }), " ", /* @__PURE__ */ React28.createElement("a", { href: privacyPolicy.url, target: "_blank", rel: "noreferrer" }, privacyPolicy.linkLabel || t("billing.privacyLink")), " *")
|
|
8030
8224
|
}
|
|
8031
8225
|
),
|
|
8032
|
-
(showPrivacyError || showValidation) && !consent.ttfOptIn && /* @__PURE__ */ React28.createElement("div", { className: "tf-checkout-consent__error" }, "
|
|
8033
|
-
) :
|
|
8226
|
+
(showPrivacyError || showValidation) && !consent.ttfOptIn && /* @__PURE__ */ React28.createElement("div", { className: "tf-checkout-consent__error" }, t("common.required"))
|
|
8227
|
+
) : ttfOptInText ? /* @__PURE__ */ React28.createElement(
|
|
8034
8228
|
Checkbox,
|
|
8035
8229
|
{
|
|
8036
8230
|
checked: consent.ttfOptIn,
|
|
8037
8231
|
onChange: (e) => setConsent((c) => ({ ...c, ttfOptIn: e.target.checked })),
|
|
8038
8232
|
className: "tf-checkout-checkbox--consent",
|
|
8039
|
-
label:
|
|
8233
|
+
label: ttfOptInText
|
|
8040
8234
|
}
|
|
8041
8235
|
) : null, !combined && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
|
|
8042
8236
|
Button,
|
|
@@ -8051,7 +8245,7 @@ var BillingInfo = ({
|
|
|
8051
8245
|
onContinue == null ? void 0 : onContinue();
|
|
8052
8246
|
}
|
|
8053
8247
|
},
|
|
8054
|
-
|
|
8248
|
+
buttonText
|
|
8055
8249
|
))), showHolders && /* @__PURE__ */ React28.createElement(
|
|
8056
8250
|
TicketHoldersCard,
|
|
8057
8251
|
{
|
|
@@ -8086,12 +8280,13 @@ import React30, { useEffect as useEffect12, useMemo as useMemo6, useRef as useRe
|
|
|
8086
8280
|
import React29 from "react";
|
|
8087
8281
|
var OrderSummary = ({ eventId, className }) => {
|
|
8088
8282
|
var _a, _b, _c;
|
|
8283
|
+
const t = useT();
|
|
8089
8284
|
const checkout = useCheckoutContext();
|
|
8090
8285
|
const event = hooks_exports.useEvent(eventId);
|
|
8091
8286
|
const breakdown = checkout.breakdown;
|
|
8092
8287
|
const detailed = checkout.priceBreakdown;
|
|
8093
8288
|
if (!breakdown || breakdown.tickets.length === 0) return null;
|
|
8094
|
-
return /* @__PURE__ */ React29.createElement(Card, { className: ["tf-checkout-order-summary", className].filter(Boolean).join(" ") }, ((_a = event.data) == null ? void 0 : _a.name) && /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__group" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, "
|
|
8289
|
+
return /* @__PURE__ */ React29.createElement(Card, { className: ["tf-checkout-order-summary", className].filter(Boolean).join(" ") }, ((_a = event.data) == null ? void 0 : _a.name) && /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__group" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, t("common.event")), /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__event" }, event.data.name)), /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__group" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, t("tickets.yourTickets")), breakdown.tickets.map((ticket, index) => {
|
|
8095
8290
|
var _a2;
|
|
8096
8291
|
const detail = detailed == null ? void 0 : detailed.tickets[index];
|
|
8097
8292
|
return /* @__PURE__ */ React29.createElement(
|
|
@@ -8100,7 +8295,7 @@ var OrderSummary = ({ eventId, className }) => {
|
|
|
8100
8295
|
key: `${ticket.ticketTypeId}-${index}`,
|
|
8101
8296
|
className: "tf-checkout-order-summary__item"
|
|
8102
8297
|
},
|
|
8103
|
-
/* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__ticket" }, ticket.quantity, " x ", ticket.name, " - ", (_a2 = detail == null ? void 0 : detail.unit_price) != null ? _a2 : ticket.unit, " ", "each"),
|
|
8298
|
+
/* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__ticket" }, ticket.quantity, " x ", ticket.name, " - ", (_a2 = detail == null ? void 0 : detail.unit_price) != null ? _a2 : ticket.unit, " ", t("common.each")),
|
|
8104
8299
|
(detail == null ? void 0 : detail.line_total) && detail.line_total !== detail.unit_price && /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__fees" }, "(", detail.line_total, " with fees)")
|
|
8105
8300
|
);
|
|
8106
8301
|
})), ((_b = detailed == null ? void 0 : detailed.add_ons.length) != null ? _b : 0) > 0 && /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__group" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, (detailed == null ? void 0 : detailed.add_ons_title) || "Add-ons"), detailed == null ? void 0 : detailed.add_ons.map((addOn, index) => /* @__PURE__ */ React29.createElement(
|
|
@@ -8109,8 +8304,8 @@ var OrderSummary = ({ eventId, className }) => {
|
|
|
8109
8304
|
key: `${addOn.name}-${index}`,
|
|
8110
8305
|
className: "tf-checkout-order-summary__item"
|
|
8111
8306
|
},
|
|
8112
|
-
/* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__ticket" }, addOn.quantity, " x ", addOn.name, addOn.show_price ? ` - ${addOn.unit_price} each` : "")
|
|
8113
|
-
))), /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__total" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, "
|
|
8307
|
+
/* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__ticket" }, addOn.quantity, " x ", addOn.name, addOn.show_price ? ` - ${addOn.unit_price} ${t("common.each")}` : "")
|
|
8308
|
+
))), /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__total" }, /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__label" }, t("common.total")), /* @__PURE__ */ React29.createElement("div", { className: "tf-checkout-order-summary__amount" }, (_c = detailed == null ? void 0 : detailed.total) != null ? _c : `${breakdown.currencySymbol || `${breakdown.currencyCode} `}${Number(
|
|
8114
8309
|
breakdown.total
|
|
8115
8310
|
).toFixed(2)}`)));
|
|
8116
8311
|
};
|
|
@@ -8153,6 +8348,7 @@ var Payment = ({
|
|
|
8153
8348
|
className
|
|
8154
8349
|
}) => {
|
|
8155
8350
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
|
8351
|
+
const t = useT();
|
|
8156
8352
|
const checkout = useCheckoutContext();
|
|
8157
8353
|
const validation = useCheckoutValidation();
|
|
8158
8354
|
const [error, setError] = useState16("");
|
|
@@ -8182,7 +8378,11 @@ var Payment = ({
|
|
|
8182
8378
|
const out = [];
|
|
8183
8379
|
if (isXendit) {
|
|
8184
8380
|
if (methods.xenditCard)
|
|
8185
|
-
out.push({
|
|
8381
|
+
out.push({
|
|
8382
|
+
id: { kind: "xenditCard" },
|
|
8383
|
+
value: "xenditCard",
|
|
8384
|
+
label: t("payment.card")
|
|
8385
|
+
});
|
|
8186
8386
|
for (const w of methods.xenditEWallets)
|
|
8187
8387
|
out.push({
|
|
8188
8388
|
id: { kind: "xenditEWallet", walletKey: w.key },
|
|
@@ -8194,23 +8394,23 @@ var Payment = ({
|
|
|
8194
8394
|
} else if (checkout.gateway === "razorpay") {
|
|
8195
8395
|
out.push({ id: { kind: "razorpay" }, value: "razorpay", label: "Razorpay" });
|
|
8196
8396
|
} else {
|
|
8197
|
-
out.push({ id: { kind: "card" }, value: "card", label: "
|
|
8198
|
-
for (const
|
|
8199
|
-
if (
|
|
8397
|
+
out.push({ id: { kind: "card" }, value: "card", label: t("payment.card") });
|
|
8398
|
+
for (const t2 of (_b2 = checkout.redirectPaymentMethods) != null ? _b2 : []) {
|
|
8399
|
+
if (t2 === "paypal" && methods.paypal) continue;
|
|
8200
8400
|
out.push({
|
|
8201
|
-
id: { kind: "redirect", methodType:
|
|
8202
|
-
value: `rd:${
|
|
8203
|
-
label: redirectLabel(
|
|
8401
|
+
id: { kind: "redirect", methodType: t2 },
|
|
8402
|
+
value: `rd:${t2}`,
|
|
8403
|
+
label: redirectLabel(t2)
|
|
8204
8404
|
});
|
|
8205
8405
|
}
|
|
8206
8406
|
if ((_c2 = checkout.paymentPlan) == null ? void 0 : _c2.available)
|
|
8207
8407
|
out.push({
|
|
8208
8408
|
id: { kind: "paymentPlan" },
|
|
8209
8409
|
value: "paymentPlan",
|
|
8210
|
-
label: "
|
|
8410
|
+
label: t("payment.paymentPlan")
|
|
8211
8411
|
});
|
|
8212
8412
|
if (offersOxxo)
|
|
8213
|
-
out.push({ id: { kind: "oxxo" }, value: "oxxo", label: "
|
|
8413
|
+
out.push({ id: { kind: "oxxo" }, value: "oxxo", label: t("payment.oxxo") });
|
|
8214
8414
|
}
|
|
8215
8415
|
if (methods.paypal)
|
|
8216
8416
|
out.push({ id: { kind: "paypal" }, value: "paypal", label: "PayPal" });
|
|
@@ -8267,7 +8467,7 @@ var Payment = ({
|
|
|
8267
8467
|
const extra = selectedOption == null ? void 0 : selectedOption.extra;
|
|
8268
8468
|
const extrasOk = !extra || (extra === "cashtag" ? Boolean((_i = (_h = extras[selected]) == null ? void 0 : _h.cashtag) == null ? void 0 : _i.trim()) : Boolean((_k = (_j = extras[selected]) == null ? void 0 : _j.phoneNumber) == null ? void 0 : _k.trim()));
|
|
8269
8469
|
const privacyOk = !requirePrivacyPolicy || checkout.consent.ttfOptIn;
|
|
8270
|
-
const payLabel = isFree ? "
|
|
8470
|
+
const payLabel = isFree ? t("payment.completeRegistration") : isPlanSelected ? planConfirmLabel((_l = checkout.paymentPlan) == null ? void 0 : _l.configuration) : t("payment.submitPayment");
|
|
8271
8471
|
const planTerms = paymentPlanTerms((_m = checkout.paymentPlan) == null ? void 0 : _m.configuration);
|
|
8272
8472
|
const finalizing = checkout.status === "placing" || checkout.status === "succeeded";
|
|
8273
8473
|
const pay = () => {
|
|
@@ -8348,15 +8548,15 @@ var Payment = ({
|
|
|
8348
8548
|
}
|
|
8349
8549
|
}
|
|
8350
8550
|
) : /* @__PURE__ */ React30.createElement(CardInput, null)
|
|
8351
|
-
), isXendit && cardAreaError && /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-error-text" }, cardAreaError), showTestCardHint && /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-note" }, isXendit ? "
|
|
8551
|
+
), isXendit && cardAreaError && /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-error-text" }, cardAreaError), showTestCardHint && /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-note" }, isXendit ? t("payment.testCardXendit") : t("payment.testCard"))), isPlanSelected && planTerms.length > 0 && /* @__PURE__ */ React30.createElement("div", { className: "tf-checkout-payment__plan" }, /* @__PURE__ */ React30.createElement("strong", null, planTermsTitle(checkout.paymentPlan.configuration)), planTerms.map((part) => /* @__PURE__ */ React30.createElement("p", { key: part.id, className: "tf-checkout-note" }, part.text))), isPlanSelected && savedLast4 && /* @__PURE__ */ React30.createElement("div", { className: "tf-checkout-payment__plan-savedcard" }, /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-note" }, "Your payment will proceed with the card ending in", " ", /* @__PURE__ */ React30.createElement("strong", null, "**** ", savedLast4)), /* @__PURE__ */ React30.createElement(
|
|
8352
8552
|
Checkbox,
|
|
8353
8553
|
{
|
|
8354
8554
|
checked: useSavedCard,
|
|
8355
8555
|
onChange: (e) => setUseSavedCard(e.target.checked),
|
|
8356
|
-
label: "
|
|
8556
|
+
label: t("payment.useThisCard")
|
|
8357
8557
|
}
|
|
8358
8558
|
)));
|
|
8359
|
-
return /* @__PURE__ */ React30.createElement("div", { className: ["tf-checkout-payment-stack", className].filter(Boolean).join(" ") }, /* @__PURE__ */ React30.createElement(Card, null, /* @__PURE__ */ React30.createElement(SectionHeader, { title: "
|
|
8559
|
+
return /* @__PURE__ */ React30.createElement("div", { className: ["tf-checkout-payment-stack", className].filter(Boolean).join(" ") }, /* @__PURE__ */ React30.createElement(Card, null, /* @__PURE__ */ React30.createElement(SectionHeader, { title: t("payment.title") }), !isFree && /* @__PURE__ */ React30.createElement(React30.Fragment, null, !singleCard && /* @__PURE__ */ React30.createElement("div", { className: "tf-checkout-payment__label" }, t("payment.method")), !methods ? /* @__PURE__ */ React30.createElement("div", { className: "tf-checkout-payment__cardbox" }, /* @__PURE__ */ React30.createElement(Loader, null)) : singleCard ? paymentInput : /* @__PURE__ */ React30.createElement(
|
|
8360
8560
|
PaymentMethods,
|
|
8361
8561
|
{
|
|
8362
8562
|
options,
|
|
@@ -8397,7 +8597,7 @@ var Payment = ({
|
|
|
8397
8597
|
loading: finalizing,
|
|
8398
8598
|
disabled: checkout.isBusy || finalizing || !isFree && !methods
|
|
8399
8599
|
},
|
|
8400
|
-
finalizing ? "
|
|
8600
|
+
finalizing ? t("payment.placing") : payLabel
|
|
8401
8601
|
)), bottomError && /* @__PURE__ */ React30.createElement("p", { className: "tf-checkout-error-text" }, bottomError));
|
|
8402
8602
|
};
|
|
8403
8603
|
|
|
@@ -8444,6 +8644,7 @@ var Confirmation = ({
|
|
|
8444
8644
|
children,
|
|
8445
8645
|
className
|
|
8446
8646
|
}) => {
|
|
8647
|
+
const t = useT();
|
|
8447
8648
|
const checkout = useCheckoutContext();
|
|
8448
8649
|
const order = checkout.order;
|
|
8449
8650
|
const [copied, setCopied] = useState18(false);
|
|
@@ -8477,7 +8678,7 @@ var Confirmation = ({
|
|
|
8477
8678
|
() => void 0
|
|
8478
8679
|
);
|
|
8479
8680
|
};
|
|
8480
|
-
return /* @__PURE__ */ React32.createElement(Card, { className: cx("tf-checkout-confirmation", className) }, /* @__PURE__ */ React32.createElement("span", { className: "tf-checkout-confirmation__check" }, pending ? "\u23F3" : "\u2713"), /* @__PURE__ */ React32.createElement("strong", { className: "tf-checkout-confirmation__title" }, pending ? "
|
|
8681
|
+
return /* @__PURE__ */ React32.createElement(Card, { className: cx("tf-checkout-confirmation", className) }, /* @__PURE__ */ React32.createElement("span", { className: "tf-checkout-confirmation__check" }, pending ? "\u23F3" : "\u2713"), /* @__PURE__ */ React32.createElement("strong", { className: "tf-checkout-confirmation__title" }, pending ? t("confirmation.pending") : t("confirmation.confirmed")), /* @__PURE__ */ React32.createElement("p", { className: "tf-checkout-note" }, pending ? t("confirmation.pendingBody") : order.alreadyPaid ? t("confirmation.alreadyPaid") : t("confirmation.available")), order.orderHash && /* @__PURE__ */ React32.createElement("p", { className: "tf-checkout-confirmation__ref" }, "Reference: ", order.orderHash), pending && order.pendingVoucherUrl && /* @__PURE__ */ React32.createElement(
|
|
8481
8682
|
"a",
|
|
8482
8683
|
{
|
|
8483
8684
|
className: "tf-checkout-button tf-checkout-button--secondary tf-checkout-button--block",
|
|
@@ -8493,7 +8694,7 @@ var Confirmation = ({
|
|
|
8493
8694
|
href: viewOrderUrl
|
|
8494
8695
|
},
|
|
8495
8696
|
"View my tickets"
|
|
8496
|
-
), children, !pending && url && /* @__PURE__ */ React32.createElement("div", { className: "tf-checkout-confirmation__share" }, /* @__PURE__ */ React32.createElement("strong", null, "
|
|
8697
|
+
), children, !pending && url && /* @__PURE__ */ React32.createElement("div", { className: "tf-checkout-confirmation__share" }, /* @__PURE__ */ React32.createElement("strong", null, t("referral.cheaperOrFree")), /* @__PURE__ */ React32.createElement("p", { className: "tf-checkout-note" }, "Invite friends with your link. When they buy, you get rewarded."), /* @__PURE__ */ React32.createElement("div", { className: "tf-checkout-confirmation__share-link" }, /* @__PURE__ */ React32.createElement("input", { className: "tf-checkout-input", readOnly: true, value: url }), /* @__PURE__ */ React32.createElement(Button, { variant: "secondary", onClick: copy }, copied ? t("referral.copied") : t("referral.copyLink"))), /* @__PURE__ */ React32.createElement("div", { className: "tf-checkout-confirmation__socials" }, shares.map((s) => /* @__PURE__ */ React32.createElement(
|
|
8497
8698
|
"a",
|
|
8498
8699
|
{
|
|
8499
8700
|
key: s.label,
|
|
@@ -8909,32 +9110,41 @@ var EmbeddedCheckout = ({
|
|
|
8909
9110
|
locale,
|
|
8910
9111
|
messages,
|
|
8911
9112
|
className
|
|
8912
|
-
}) => /* @__PURE__ */ React35.createElement(
|
|
8913
|
-
|
|
9113
|
+
}) => /* @__PURE__ */ React35.createElement(
|
|
9114
|
+
CheckoutProvider,
|
|
8914
9115
|
{
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8925
|
-
|
|
8926
|
-
|
|
8927
|
-
|
|
8928
|
-
|
|
8929
|
-
|
|
8930
|
-
|
|
8931
|
-
|
|
8932
|
-
|
|
8933
|
-
|
|
8934
|
-
|
|
8935
|
-
|
|
8936
|
-
|
|
8937
|
-
|
|
9116
|
+
theme,
|
|
9117
|
+
locale,
|
|
9118
|
+
messages,
|
|
9119
|
+
className
|
|
9120
|
+
},
|
|
9121
|
+
/* @__PURE__ */ React35.createElement(
|
|
9122
|
+
Flow,
|
|
9123
|
+
{
|
|
9124
|
+
key: eventId,
|
|
9125
|
+
eventId,
|
|
9126
|
+
onComplete,
|
|
9127
|
+
confirmationMode,
|
|
9128
|
+
initialView,
|
|
9129
|
+
onViewChange,
|
|
9130
|
+
autoScroll,
|
|
9131
|
+
requireEmailConfirmation,
|
|
9132
|
+
collectTicketHolders,
|
|
9133
|
+
collectHolderContact,
|
|
9134
|
+
onLogin,
|
|
9135
|
+
auth,
|
|
9136
|
+
skipBillingWhenProfileComplete,
|
|
9137
|
+
ttfOptInLabel,
|
|
9138
|
+
brandOptInLabel,
|
|
9139
|
+
privacyPolicy,
|
|
9140
|
+
additionalConditions,
|
|
9141
|
+
initialPromoCode,
|
|
9142
|
+
referrer,
|
|
9143
|
+
readAttributionFromUrl,
|
|
9144
|
+
showTestCardHint
|
|
9145
|
+
}
|
|
9146
|
+
)
|
|
9147
|
+
);
|
|
8938
9148
|
|
|
8939
9149
|
// src/ResumedCheckout.tsx
|
|
8940
9150
|
import React36, { useEffect as useEffect16, useRef as useRef11, useState as useState22 } from "react";
|