@bigz-app/booking-widget 1.1.4 → 1.1.6
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/booking-widget.js +126 -164
- package/dist/booking-widget.js.map +1 -1
- package/dist/components/PromoDialog.d.ts.map +1 -1
- package/dist/components/UniversalBookingWidget.d.ts.map +1 -1
- package/dist/components/booking/BookingForm.d.ts +2 -0
- package/dist/components/booking/BookingForm.d.ts.map +1 -1
- package/dist/components/booking/BookingSuccessModal.d.ts.map +1 -1
- package/dist/components/upsells/UpsellCard.d.ts +3 -2
- package/dist/components/upsells/UpsellCard.d.ts.map +1 -1
- package/dist/components/upsells/UpsellsStep.d.ts +4 -1
- package/dist/components/upsells/UpsellsStep.d.ts.map +1 -1
- package/dist/components/upsells/index.d.ts +1 -1
- package/dist/components/upsells/index.d.ts.map +1 -1
- package/dist/i18n/i18n-context.d.ts.map +1 -1
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/index.cjs +126 -164
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +126 -164
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/booking-widget.js
CHANGED
|
@@ -392,6 +392,7 @@
|
|
|
392
392
|
"success.age": "{{age}} Jahre",
|
|
393
393
|
"success.paymentSummary": "Zahlungsübersicht",
|
|
394
394
|
"success.total": "Gesamtbetrag",
|
|
395
|
+
"success.discount": "Rabatt",
|
|
395
396
|
"success.product": "Produkt",
|
|
396
397
|
"success.contactInfo": "Kontaktdaten",
|
|
397
398
|
"success.name": "Name:",
|
|
@@ -600,6 +601,7 @@
|
|
|
600
601
|
"success.age": "{{age}} years",
|
|
601
602
|
"success.paymentSummary": "Payment Summary",
|
|
602
603
|
"success.total": "Total",
|
|
604
|
+
"success.discount": "Discount",
|
|
603
605
|
"success.product": "Product",
|
|
604
606
|
"success.contactInfo": "Contact Information",
|
|
605
607
|
"success.name": "Name:",
|
|
@@ -808,6 +810,7 @@
|
|
|
808
810
|
"success.age": "{{age}} años",
|
|
809
811
|
"success.paymentSummary": "Resumen del pago",
|
|
810
812
|
"success.total": "Total",
|
|
813
|
+
"success.discount": "Descuento",
|
|
811
814
|
"success.product": "Producto",
|
|
812
815
|
"success.contactInfo": "Datos de contacto",
|
|
813
816
|
"success.name": "Nombre:",
|
|
@@ -1016,6 +1019,7 @@
|
|
|
1016
1019
|
"success.age": "{{age}} anos",
|
|
1017
1020
|
"success.paymentSummary": "Resumo do pagamento",
|
|
1018
1021
|
"success.total": "Total",
|
|
1022
|
+
"success.discount": "Desconto",
|
|
1019
1023
|
"success.product": "Produto",
|
|
1020
1024
|
"success.contactInfo": "Dados de contacto",
|
|
1021
1025
|
"success.name": "Nome:",
|
|
@@ -1224,6 +1228,7 @@
|
|
|
1224
1228
|
"success.age": "{{age}} år",
|
|
1225
1229
|
"success.paymentSummary": "Betalningssammanfattning",
|
|
1226
1230
|
"success.total": "Totalt",
|
|
1231
|
+
"success.discount": "Rabatt",
|
|
1227
1232
|
"success.product": "Produkt",
|
|
1228
1233
|
"success.contactInfo": "Kontaktuppgifter",
|
|
1229
1234
|
"success.name": "Namn:",
|
|
@@ -1350,7 +1355,7 @@
|
|
|
1350
1355
|
const I18nContext = R$2(null);
|
|
1351
1356
|
function I18nProvider({ configLocale, children }) {
|
|
1352
1357
|
// Priority: configLocale (site owner) > persisted user choice > browser language > "de"
|
|
1353
|
-
// If configLocale is set, the site owner has locked the language
|
|
1358
|
+
// If configLocale is set, the site owner has locked the language - don't restore user choice.
|
|
1354
1359
|
const [overrideLocale, setOverrideLocale] = d$1(() => {
|
|
1355
1360
|
if (configLocale)
|
|
1356
1361
|
return null;
|
|
@@ -11127,6 +11132,13 @@
|
|
|
11127
11132
|
return Object.assign({}, ...styles.filter(Boolean));
|
|
11128
11133
|
}
|
|
11129
11134
|
|
|
11135
|
+
function getEffectivePrice(upsell, round) {
|
|
11136
|
+
const dp = upsell.discountPercent ?? 0;
|
|
11137
|
+
if (dp <= 0)
|
|
11138
|
+
return upsell.price;
|
|
11139
|
+
const raw = Math.round(upsell.price * (100 - dp) / 100);
|
|
11140
|
+
return round ? Math.floor(raw / 100) * 100 : raw;
|
|
11141
|
+
}
|
|
11130
11142
|
// Local style aliases from shared styles
|
|
11131
11143
|
const cardStyles = cardStyles$1.base;
|
|
11132
11144
|
const sectionHeaderStyles = sectionStyles.header;
|
|
@@ -11137,6 +11149,7 @@
|
|
|
11137
11149
|
const t$1 = useTranslations();
|
|
11138
11150
|
const { locale } = useLocale();
|
|
11139
11151
|
const timezone = useTimezone();
|
|
11152
|
+
const roundEnabled = systemConfig?.roundPricesEnabled !== false;
|
|
11140
11153
|
const [appliedVouchers, setAppliedVouchers] = d$1([]);
|
|
11141
11154
|
const paymentSectionRef = A$2(null);
|
|
11142
11155
|
// Payment option: "deposit" or "full" - only relevant when deposit is available
|
|
@@ -11207,7 +11220,7 @@
|
|
|
11207
11220
|
participantUpsellIds.forEach(upsellId => {
|
|
11208
11221
|
const upsell = upsells.find(u => u.id === upsellId);
|
|
11209
11222
|
if (upsell) {
|
|
11210
|
-
total += upsell
|
|
11223
|
+
total += getEffectivePrice(upsell, roundEnabled);
|
|
11211
11224
|
}
|
|
11212
11225
|
});
|
|
11213
11226
|
}
|
|
@@ -11483,7 +11496,7 @@
|
|
|
11483
11496
|
padding: 0,
|
|
11484
11497
|
}, children: "\u00D7" })] }))] }), upsells.length > 0 && (u$2("div", { style: participantUpsellStyles.container, children: upsells.map((upsell) => {
|
|
11485
11498
|
const isSelected = (participantUpsells[index] || []).includes(upsell.id);
|
|
11486
|
-
return (u$2("label", { htmlFor: `upsell-${index}-${upsell.id}`, style: isSelected ? participantUpsellStyles.labelSelected : participantUpsellStyles.label, children: [u$2("input", { id: `upsell-${index}-${upsell.id}`, type: "checkbox", style: participantUpsellStyles.checkbox, checked: isSelected, onChange: () => toggleParticipantUpsell(index, upsell.id) }), u$2("span", { style: { fontWeight: 500 }, children: upsell.name }), u$2("span", { style: { fontSize: "12px", opacity: 0.8 }, children: ["(+", formatCurrency(upsell
|
|
11499
|
+
return (u$2("label", { htmlFor: `upsell-${index}-${upsell.id}`, style: isSelected ? participantUpsellStyles.labelSelected : participantUpsellStyles.label, children: [u$2("input", { id: `upsell-${index}-${upsell.id}`, type: "checkbox", style: participantUpsellStyles.checkbox, checked: isSelected, onChange: () => toggleParticipantUpsell(index, upsell.id) }), u$2("span", { style: { fontWeight: 500 }, children: upsell.name }), u$2("span", { style: { fontSize: "12px", opacity: 0.8 }, children: ["(+", formatCurrency(getEffectivePrice(upsell, roundEnabled)), ")"] })] }, upsell.id));
|
|
11487
11500
|
}) }))] }, index))), watchedParticipants.length < eventDetails.availableSpots ? (u$2("div", { style: {
|
|
11488
11501
|
display: "flex",
|
|
11489
11502
|
flexDirection: "column",
|
|
@@ -11515,7 +11528,7 @@
|
|
|
11515
11528
|
const countWithUpsell = watchedParticipants.filter((p, idx) => p.name.trim() && (participantUpsells[idx] || []).includes(upsell.id)).length;
|
|
11516
11529
|
if (countWithUpsell === 0)
|
|
11517
11530
|
return null;
|
|
11518
|
-
const upsellLineTotal = upsell
|
|
11531
|
+
const upsellLineTotal = getEffectivePrice(upsell, roundEnabled) * countWithUpsell;
|
|
11519
11532
|
return (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", fontSize: "13px" }, children: [u$2("span", { style: { color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: ["+ ", upsell.name, " (", countWithUpsell, "\u00D7)"] }), u$2("span", { style: { color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: formatCurrency(upsellLineTotal) })] }, upsell.id));
|
|
11520
11533
|
})] })), appliedVouchers.length > 0 && (u$2(k$3, { children: [u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: t$1("summary.subtotal") }), u$2("span", { style: {
|
|
11521
11534
|
fontFamily: "var(--bw-font-family)",
|
|
@@ -11640,7 +11653,7 @@
|
|
|
11640
11653
|
: t$1("payment.fillRequired");
|
|
11641
11654
|
return (u$2("div", { style: {
|
|
11642
11655
|
...cardStyles,
|
|
11643
|
-
|
|
11656
|
+
border: "1px solid var(--bw-warning-color)",
|
|
11644
11657
|
color: "var(--bw-warning-color)",
|
|
11645
11658
|
fontFamily: "var(--bw-font-family)",
|
|
11646
11659
|
textAlign: "center",
|
|
@@ -11809,6 +11822,7 @@
|
|
|
11809
11822
|
payments: data.payments,
|
|
11810
11823
|
orderItems: data.orderItems,
|
|
11811
11824
|
purchases: data.purchases || [],
|
|
11825
|
+
discount: data.discount || null,
|
|
11812
11826
|
stripePaymentIntent: data.stripePaymentIntent,
|
|
11813
11827
|
});
|
|
11814
11828
|
setEventDetails({
|
|
@@ -12058,7 +12072,7 @@
|
|
|
12058
12072
|
color: "var(--bw-text-color)",
|
|
12059
12073
|
margin: "0",
|
|
12060
12074
|
fontFamily: "var(--bw-font-family)",
|
|
12061
|
-
}, children: t("success.paymentSummary") }) }), u$2("div", { className: "print-only", children: u$2("div", { className: "print-section-title", children: t("success.paymentSummary") }) }), u$2("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [u$2("div", { className: "print-hidden", style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: [u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)", fontSize: "var(--bw-font-size-small)" }, children: [eventDetails.name, " (", booking.participantCount, "x ", formatCurrency(eventDetails.price), ")"] }), u$2("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formatCurrency(eventDetails.price * booking.participantCount) })] }), bookingData.purchases && bookingData.purchases.length > 0 && (u$2(k$3, { children: bookingData.purchases.map((purchase) => (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)", fontSize: "var(--bw-font-size-small)" }, children: [purchase.product?.name || t("success.product"), " (", purchase.quantity, "x ", formatCurrency(purchase.unitPrice), ")"] }), u$2("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formatCurrency(purchase.totalPrice) })] }, purchase.id))) })), u$2("div", { style: {
|
|
12075
|
+
}, children: t("success.paymentSummary") }) }), u$2("div", { className: "print-only", children: u$2("div", { className: "print-section-title", children: t("success.paymentSummary") }) }), u$2("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [u$2("div", { className: "print-hidden", style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: [u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)", fontSize: "var(--bw-font-size-small)" }, children: [eventDetails.name, " (", booking.participantCount, "x ", formatCurrency(eventDetails.price), ")"] }), u$2("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formatCurrency(eventDetails.price * booking.participantCount) })] }), bookingData.discount && bookingData.discount.amount > 0 && (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-success-color, #10B981)", fontFamily: "var(--bw-font-family)", fontSize: "var(--bw-font-size-small)" }, children: [t("success.discount"), " (", bookingData.discount.code, ")"] }), u$2("span", { style: { color: "var(--bw-success-color, #10B981)", fontFamily: "var(--bw-font-family)" }, children: ["-", formatCurrency(bookingData.discount.amount)] })] })), bookingData.purchases && bookingData.purchases.length > 0 && (u$2(k$3, { children: bookingData.purchases.map((purchase) => (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [u$2("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)", fontSize: "var(--bw-font-size-small)" }, children: [purchase.product?.name || t("success.product"), " (", purchase.quantity, "x ", formatCurrency(purchase.unitPrice), ")"] }), u$2("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formatCurrency(purchase.totalPrice) })] }, purchase.id))) })), u$2("div", { style: {
|
|
12062
12076
|
display: "flex",
|
|
12063
12077
|
justifyContent: "space-between",
|
|
12064
12078
|
alignItems: "center",
|
|
@@ -13390,52 +13404,24 @@
|
|
|
13390
13404
|
backgroundImage: "https://images.unsplash.com/photo-1502680390469-be75c86b636f?w=600&q=80",
|
|
13391
13405
|
primaryColor: "#0c4a6e",
|
|
13392
13406
|
secondaryColor: "#0891b2",
|
|
13393
|
-
icon: "🏄♂️",
|
|
13394
|
-
decorations: ["🎄", "⭐"],
|
|
13395
|
-
animation: {
|
|
13396
|
-
floatDuration: 3,
|
|
13397
|
-
sparkleEnabled: true,
|
|
13398
|
-
snowfallEnabled: true,
|
|
13399
|
-
},
|
|
13400
13407
|
};
|
|
13401
13408
|
case "summer":
|
|
13402
13409
|
return {
|
|
13403
13410
|
backgroundImage: "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=600&q=80",
|
|
13404
13411
|
primaryColor: "#059669",
|
|
13405
13412
|
secondaryColor: "#10b981",
|
|
13406
|
-
icon: "☀️",
|
|
13407
|
-
decorations: ["🌴", "🏖️"],
|
|
13408
|
-
animation: {
|
|
13409
|
-
floatDuration: 2.5,
|
|
13410
|
-
sparkleEnabled: true,
|
|
13411
|
-
snowfallEnabled: false,
|
|
13412
|
-
},
|
|
13413
13413
|
};
|
|
13414
13414
|
case "beach":
|
|
13415
13415
|
return {
|
|
13416
13416
|
backgroundImage: "https://images.unsplash.com/photo-1502680390469-be75c86b636f?w=600&q=80",
|
|
13417
13417
|
primaryColor: "#0891b2",
|
|
13418
13418
|
secondaryColor: "#06b6d4",
|
|
13419
|
-
icon: "🏄♀️",
|
|
13420
|
-
decorations: ["🌊", "🏄"],
|
|
13421
|
-
animation: {
|
|
13422
|
-
floatDuration: 3,
|
|
13423
|
-
sparkleEnabled: false,
|
|
13424
|
-
snowfallEnabled: false,
|
|
13425
|
-
},
|
|
13426
13419
|
};
|
|
13427
13420
|
default:
|
|
13428
13421
|
return {
|
|
13429
13422
|
backgroundImage: undefined,
|
|
13430
13423
|
primaryColor: "#0c4a6e",
|
|
13431
13424
|
secondaryColor: "#0891b2",
|
|
13432
|
-
icon: "🎁",
|
|
13433
|
-
decorations: [],
|
|
13434
|
-
animation: {
|
|
13435
|
-
floatDuration: 3,
|
|
13436
|
-
sparkleEnabled: false,
|
|
13437
|
-
snowfallEnabled: false,
|
|
13438
|
-
},
|
|
13439
13425
|
};
|
|
13440
13426
|
}
|
|
13441
13427
|
};
|
|
@@ -13493,192 +13479,152 @@
|
|
|
13493
13479
|
position: "fixed",
|
|
13494
13480
|
inset: 0,
|
|
13495
13481
|
zIndex: 60,
|
|
13496
|
-
backgroundColor: "rgba(0, 20, 40, 0.
|
|
13497
|
-
backdropFilter: "blur(
|
|
13482
|
+
backgroundColor: "rgba(0, 20, 40, 0.8)",
|
|
13483
|
+
backdropFilter: "blur(6px)",
|
|
13498
13484
|
transition: "opacity 0.3s ease-out",
|
|
13499
13485
|
opacity: isVisible ? 1 : 0,
|
|
13500
13486
|
} }), u$2("div", { style: {
|
|
13501
13487
|
position: "fixed",
|
|
13502
13488
|
zIndex: 61,
|
|
13503
|
-
width: "
|
|
13504
|
-
maxWidth: "
|
|
13489
|
+
width: "90%",
|
|
13490
|
+
maxWidth: "400px",
|
|
13505
13491
|
transition: "all 0.3s",
|
|
13506
13492
|
top: "50%",
|
|
13507
13493
|
left: "50%",
|
|
13508
|
-
transform: `translate(-50%, -50%) scale(${isVisible ? 1 : 0.
|
|
13494
|
+
transform: `translate(-50%, -50%) scale(${isVisible ? 1 : 0.95})`,
|
|
13509
13495
|
opacity: isVisible ? 1 : 0,
|
|
13510
|
-
transitionTimingFunction: "cubic-bezier(0.
|
|
13496
|
+
transitionTimingFunction: "cubic-bezier(0.16, 1, 0.3, 1)",
|
|
13511
13497
|
}, children: u$2("div", { style: {
|
|
13512
13498
|
position: "relative",
|
|
13513
13499
|
overflow: "hidden",
|
|
13514
|
-
borderRadius: "
|
|
13515
|
-
boxShadow: "0 25px
|
|
13500
|
+
borderRadius: "20px",
|
|
13501
|
+
boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.08)",
|
|
13516
13502
|
background: `linear-gradient(165deg, ${themeConfig.primaryColor} 0%, ${themeConfig.primaryColor} 40%, ${themeConfig.secondaryColor} 100%)`,
|
|
13517
|
-
}, children: [themeConfig.
|
|
13518
|
-
Array.from({ length: 15 }).map((_, i) => (u$2("div", { style: {
|
|
13519
|
-
position: "absolute",
|
|
13520
|
-
pointerEvents: "none",
|
|
13521
|
-
zIndex: 1,
|
|
13522
|
-
color: "white",
|
|
13523
|
-
opacity: 0,
|
|
13524
|
-
left: `${5 + Math.random() * 90}%`,
|
|
13525
|
-
top: "-10px",
|
|
13526
|
-
fontSize: `${10 + Math.random() * 14}px`,
|
|
13527
|
-
animation: `promo-snow ${4 + Math.random() * 3}s linear infinite`,
|
|
13528
|
-
animationDelay: `${Math.random() * 4}s`,
|
|
13529
|
-
}, children: "\u2744" }, i))), u$2("div", { style: {
|
|
13503
|
+
}, children: [themeConfig.backgroundImage && (u$2("div", { style: {
|
|
13530
13504
|
position: "relative",
|
|
13531
|
-
|
|
13532
|
-
alignItems: "center",
|
|
13533
|
-
justifyContent: "center",
|
|
13505
|
+
height: "120px",
|
|
13534
13506
|
overflow: "hidden",
|
|
13535
|
-
|
|
13536
|
-
background: `linear-gradient(180deg, rgba(0,0,0,0) 0%, ${themeConfig.primaryColor}cc 100%)`,
|
|
13537
|
-
}, children: [themeConfig.backgroundImage && (u$2("img", { src: themeConfig.backgroundImage, alt: "Background", style: {
|
|
13507
|
+
}, children: [u$2("img", { src: themeConfig.backgroundImage, alt: "", style: {
|
|
13538
13508
|
position: "absolute",
|
|
13539
13509
|
inset: 0,
|
|
13540
13510
|
width: "100%",
|
|
13541
13511
|
height: "100%",
|
|
13542
13512
|
objectFit: "cover",
|
|
13543
|
-
opacity: 0.
|
|
13544
|
-
} })
|
|
13513
|
+
opacity: 0.5,
|
|
13514
|
+
} }), u$2("div", { style: {
|
|
13545
13515
|
position: "absolute",
|
|
13546
13516
|
inset: 0,
|
|
13547
|
-
background: `linear-gradient(180deg, ${themeConfig.primaryColor}
|
|
13548
|
-
} }), u$2("
|
|
13549
|
-
position: "relative",
|
|
13550
|
-
zIndex: 2,
|
|
13551
|
-
fontSize: "64px",
|
|
13552
|
-
filter: "drop-shadow(0 8px 16px rgba(0,0,0,0.4))",
|
|
13553
|
-
animation: `promo-float ${themeConfig.animation?.floatDuration || 3}s ease-in-out infinite`,
|
|
13554
|
-
}, children: themeConfig.icon }), themeConfig.decorations &&
|
|
13555
|
-
themeConfig.decorations.map((decoration, i) => (u$2("div", { style: {
|
|
13556
|
-
position: "absolute",
|
|
13557
|
-
top: i === 0 ? "16px" : "20px",
|
|
13558
|
-
left: i === 0 ? "20px" : "auto",
|
|
13559
|
-
right: i === 1 ? "20px" : "auto",
|
|
13560
|
-
fontSize: i === 0 ? "28px" : "24px",
|
|
13561
|
-
animation: themeConfig.animation?.sparkleEnabled
|
|
13562
|
-
? `promo-sparkle 2s ease-in-out infinite ${i * 0.5}s`
|
|
13563
|
-
: undefined,
|
|
13564
|
-
}, children: decoration }, i)))] }), u$2("button", { onClick: handleClose, style: {
|
|
13517
|
+
background: `linear-gradient(180deg, ${themeConfig.primaryColor}33 0%, ${themeConfig.primaryColor}ee 100%)`,
|
|
13518
|
+
} })] })), u$2("button", { onClick: handleClose, style: {
|
|
13565
13519
|
position: "absolute",
|
|
13566
|
-
top: "
|
|
13567
|
-
right: "
|
|
13520
|
+
top: "12px",
|
|
13521
|
+
right: "12px",
|
|
13568
13522
|
display: "flex",
|
|
13569
13523
|
alignItems: "center",
|
|
13570
13524
|
justifyContent: "center",
|
|
13571
13525
|
cursor: "pointer",
|
|
13572
13526
|
zIndex: 10,
|
|
13573
|
-
width: "
|
|
13574
|
-
height: "
|
|
13527
|
+
width: "32px",
|
|
13528
|
+
height: "32px",
|
|
13575
13529
|
borderRadius: "50%",
|
|
13576
13530
|
border: "none",
|
|
13577
|
-
backgroundColor: "rgba(0, 0, 0, 0.
|
|
13531
|
+
backgroundColor: "rgba(0, 0, 0, 0.25)",
|
|
13578
13532
|
backdropFilter: "blur(4px)",
|
|
13579
|
-
color: "
|
|
13580
|
-
fontSize: "
|
|
13533
|
+
color: "rgba(255,255,255,0.8)",
|
|
13534
|
+
fontSize: "18px",
|
|
13581
13535
|
lineHeight: 1,
|
|
13582
|
-
transition: "
|
|
13536
|
+
transition: "background-color 0.15s ease",
|
|
13583
13537
|
}, children: "\u00D7" }), u$2("div", { style: {
|
|
13584
13538
|
position: "relative",
|
|
13585
13539
|
textAlign: "center",
|
|
13586
13540
|
zIndex: 2,
|
|
13587
|
-
padding: "
|
|
13541
|
+
padding: "20px 24px 24px",
|
|
13588
13542
|
}, children: [u$2("h2", { style: {
|
|
13589
|
-
fontWeight:
|
|
13590
|
-
fontSize: "
|
|
13543
|
+
fontWeight: 700,
|
|
13544
|
+
fontSize: "20px",
|
|
13591
13545
|
color: "white",
|
|
13592
|
-
|
|
13593
|
-
|
|
13594
|
-
filter: "drop-shadow(0 2px 8px rgba(0,0,0,0.3))",
|
|
13546
|
+
letterSpacing: "-0.02em",
|
|
13547
|
+
lineHeight: 1.25,
|
|
13595
13548
|
margin: "0 0 6px 0",
|
|
13596
13549
|
}, children: config.title }), u$2("p", { style: {
|
|
13597
|
-
fontSize: "
|
|
13598
|
-
color: "rgba(255, 255, 255, 0.
|
|
13599
|
-
marginBottom: "20px",
|
|
13550
|
+
fontSize: "14px",
|
|
13551
|
+
color: "rgba(255, 255, 255, 0.85)",
|
|
13600
13552
|
lineHeight: 1.5,
|
|
13601
|
-
margin: "0 0
|
|
13602
|
-
}, children: [config.subtitle, config.discountAmount && (u$2(k$3, { children: [
|
|
13603
|
-
marginBottom: "
|
|
13604
|
-
backgroundColor: "
|
|
13605
|
-
borderRadius: "
|
|
13606
|
-
padding: "
|
|
13607
|
-
|
|
13553
|
+
margin: "0 0 16px 0",
|
|
13554
|
+
}, children: [config.subtitle, config.discountAmount && (u$2(k$3, { children: [" - ", u$2("strong", { style: { color: "white" }, children: [config.discountAmount, " ", t("promo.discount")] })] }))] }), config.discountCode && (u$2("div", { style: {
|
|
13555
|
+
marginBottom: "16px",
|
|
13556
|
+
backgroundColor: "rgba(255,255,255,0.12)",
|
|
13557
|
+
borderRadius: "12px",
|
|
13558
|
+
padding: "12px 16px",
|
|
13559
|
+
border: "1px solid rgba(255,255,255,0.1)",
|
|
13608
13560
|
}, children: [u$2("p", { style: {
|
|
13609
13561
|
textTransform: "uppercase",
|
|
13610
|
-
fontWeight:
|
|
13611
|
-
fontSize: "
|
|
13562
|
+
fontWeight: 500,
|
|
13563
|
+
fontSize: "10px",
|
|
13612
13564
|
letterSpacing: "1.5px",
|
|
13613
|
-
color: "
|
|
13614
|
-
|
|
13615
|
-
margin: "0 0 10px 0",
|
|
13565
|
+
color: "rgba(255,255,255,0.6)",
|
|
13566
|
+
margin: "0 0 8px 0",
|
|
13616
13567
|
}, children: t("promo.giftCode") }), u$2("div", { style: {
|
|
13617
13568
|
display: "flex",
|
|
13618
13569
|
alignItems: "center",
|
|
13619
13570
|
justifyContent: "center",
|
|
13620
|
-
gap: "
|
|
13621
|
-
}, children: [u$2("
|
|
13622
|
-
|
|
13623
|
-
|
|
13624
|
-
|
|
13625
|
-
|
|
13626
|
-
|
|
13627
|
-
|
|
13628
|
-
fontSize: "28px",
|
|
13629
|
-
color: "white",
|
|
13630
|
-
letterSpacing: "6px",
|
|
13631
|
-
filter: "drop-shadow(0 2px 4px rgba(0,0,0,0.2))",
|
|
13632
|
-
}, children: discountCode }) }), u$2("button", { onClick: handleCopyCode, style: {
|
|
13571
|
+
gap: "10px",
|
|
13572
|
+
}, children: [u$2("span", { style: {
|
|
13573
|
+
fontWeight: 800,
|
|
13574
|
+
fontSize: "22px",
|
|
13575
|
+
color: "white",
|
|
13576
|
+
letterSpacing: "4px",
|
|
13577
|
+
fontFamily: "monospace, monospace",
|
|
13578
|
+
}, children: discountCode }), u$2("button", { onClick: handleCopyCode, style: {
|
|
13633
13579
|
display: "flex",
|
|
13634
13580
|
alignItems: "center",
|
|
13635
13581
|
cursor: "pointer",
|
|
13636
13582
|
whiteSpace: "nowrap",
|
|
13637
|
-
padding: "12px
|
|
13638
|
-
borderRadius: "
|
|
13639
|
-
border: "
|
|
13640
|
-
|
|
13641
|
-
|
|
13642
|
-
|
|
13643
|
-
|
|
13583
|
+
padding: "6px 12px",
|
|
13584
|
+
borderRadius: "8px",
|
|
13585
|
+
border: "1px solid rgba(255,255,255,0.2)",
|
|
13586
|
+
backgroundColor: copied
|
|
13587
|
+
? "rgba(34, 197, 94, 0.2)"
|
|
13588
|
+
: "rgba(255,255,255,0.1)",
|
|
13589
|
+
color: copied ? "#86efac" : "rgba(255,255,255,0.8)",
|
|
13590
|
+
fontSize: "12px",
|
|
13644
13591
|
fontWeight: 600,
|
|
13645
13592
|
transition: "all 0.15s ease",
|
|
13646
|
-
gap: "
|
|
13647
|
-
}, children: copied ? (u$2(k$3, { children: ["\u2713 ", t("promo.copied")] })) : (u$2(k$3, { children: [u$2("svg", { width: "
|
|
13593
|
+
gap: "4px",
|
|
13594
|
+
}, children: copied ? (u$2(k$3, { children: ["\u2713 ", t("promo.copied")] })) : (u$2(k$3, { children: [u$2("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: [u$2("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }), u$2("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })] }), t("promo.copy")] })) })] })] })), config.activities && config.activities.length > 0 && (u$2("div", { style: {
|
|
13648
13595
|
display: "flex",
|
|
13649
13596
|
justifyContent: "center",
|
|
13650
|
-
gap: "
|
|
13651
|
-
marginBottom: "
|
|
13597
|
+
gap: "6px",
|
|
13598
|
+
marginBottom: "16px",
|
|
13652
13599
|
flexWrap: "wrap",
|
|
13653
13600
|
}, children: config.activities.map((activity) => (u$2("span", { style: {
|
|
13654
13601
|
fontWeight: 500,
|
|
13655
|
-
backgroundColor: "rgba(255, 255, 255, 0.
|
|
13656
|
-
|
|
13657
|
-
|
|
13658
|
-
|
|
13659
|
-
|
|
13660
|
-
|
|
13602
|
+
backgroundColor: "rgba(255, 255, 255, 0.1)",
|
|
13603
|
+
padding: "4px 10px",
|
|
13604
|
+
borderRadius: "16px",
|
|
13605
|
+
fontSize: "12px",
|
|
13606
|
+
color: "rgba(255,255,255,0.85)",
|
|
13607
|
+
border: "1px solid rgba(255,255,255,0.08)",
|
|
13661
13608
|
}, children: activity }, activity))) })), u$2("button", { onClick: handleCtaClick, style: {
|
|
13662
13609
|
width: "100%",
|
|
13663
13610
|
display: "flex",
|
|
13664
13611
|
alignItems: "center",
|
|
13665
13612
|
justifyContent: "center",
|
|
13666
13613
|
cursor: "pointer",
|
|
13667
|
-
fontWeight:
|
|
13668
|
-
padding: "
|
|
13669
|
-
borderRadius: "
|
|
13614
|
+
fontWeight: 600,
|
|
13615
|
+
padding: "14px 20px",
|
|
13616
|
+
borderRadius: "12px",
|
|
13670
13617
|
border: "none",
|
|
13671
|
-
color:
|
|
13672
|
-
fontSize: "
|
|
13618
|
+
color: themeConfig.primaryColor,
|
|
13619
|
+
fontSize: "15px",
|
|
13673
13620
|
transition: "all 0.15s ease",
|
|
13674
|
-
gap: "
|
|
13675
|
-
background:
|
|
13676
|
-
boxShadow:
|
|
13677
|
-
}, children: [config.ctaText, u$2("span", { children: "\u2192" })] }), config.validityText && (u$2("p", { style: {
|
|
13678
|
-
|
|
13679
|
-
|
|
13680
|
-
|
|
13681
|
-
margin: "16px 0 0 0",
|
|
13621
|
+
gap: "8px",
|
|
13622
|
+
background: "white",
|
|
13623
|
+
boxShadow: "0 4px 12px rgba(0,0,0,0.15)",
|
|
13624
|
+
}, children: [config.ctaText, u$2("span", { style: { fontSize: "14px" }, children: "\u2192" })] }), config.validityText && (u$2("p", { style: {
|
|
13625
|
+
fontSize: "11px",
|
|
13626
|
+
color: "rgba(255, 255, 255, 0.5)",
|
|
13627
|
+
margin: "12px 0 0 0",
|
|
13682
13628
|
}, children: config.validityText }))] })] }) })] }));
|
|
13683
13629
|
return $$1(dialogContent, portalContainer);
|
|
13684
13630
|
}
|
|
@@ -13690,7 +13636,9 @@
|
|
|
13690
13636
|
flexDirection: "column",
|
|
13691
13637
|
padding: "16px",
|
|
13692
13638
|
backgroundColor: "var(--bw-surface-color)",
|
|
13693
|
-
|
|
13639
|
+
borderWidth: "2px",
|
|
13640
|
+
borderStyle: "solid",
|
|
13641
|
+
borderColor: "var(--bw-border-color)",
|
|
13694
13642
|
borderRadius: "var(--bw-border-radius)",
|
|
13695
13643
|
cursor: "pointer",
|
|
13696
13644
|
transition: "all 0.2s ease",
|
|
@@ -13715,7 +13663,9 @@
|
|
|
13715
13663
|
const checkboxInnerStyles = {
|
|
13716
13664
|
width: "24px",
|
|
13717
13665
|
height: "24px",
|
|
13718
|
-
|
|
13666
|
+
borderWidth: "2px",
|
|
13667
|
+
borderStyle: "solid",
|
|
13668
|
+
borderColor: "var(--bw-border-color)",
|
|
13719
13669
|
borderRadius: "6px",
|
|
13720
13670
|
display: "flex",
|
|
13721
13671
|
alignItems: "center",
|
|
@@ -13841,10 +13791,11 @@
|
|
|
13841
13791
|
return t("upsells.reason.notEnoughSpots", { eventTypeName: reason.eventTypeName });
|
|
13842
13792
|
}
|
|
13843
13793
|
}
|
|
13844
|
-
function UpsellCard({ upsell, isSelected, participantCount, onSelect, }) {
|
|
13794
|
+
function UpsellCard({ upsell, isSelected, participantCount, onSelect, roundPricesEnabled = true, }) {
|
|
13845
13795
|
const t = useTranslations();
|
|
13846
13796
|
const { locale } = useLocale();
|
|
13847
|
-
const
|
|
13797
|
+
const effectivePrice = getEffectiveUpsellPrice(upsell, roundPricesEnabled);
|
|
13798
|
+
const totalPrice = effectivePrice * participantCount;
|
|
13848
13799
|
const isDisabled = !upsell.available;
|
|
13849
13800
|
const getCardStyles = () => {
|
|
13850
13801
|
if (isDisabled)
|
|
@@ -13862,12 +13813,19 @@
|
|
|
13862
13813
|
weekday: "short",
|
|
13863
13814
|
day: "numeric",
|
|
13864
13815
|
month: "short",
|
|
13865
|
-
})] }), u$2("span", { style: { color: "var(--bw-text-muted)" }, children: t("upsells.spotsFree", { count: upsell.suggestedEventInstance.availableSpots }) })] }))] }), u$2("div", { style: priceContainerStyles, children: [u$2("span", { style: pricePerPersonStyles, children: [formatCurrency(
|
|
13816
|
+
})] }), u$2("span", { style: { color: "var(--bw-text-muted)" }, children: t("upsells.spotsFree", { count: upsell.suggestedEventInstance.availableSpots }) })] }))] }), u$2("div", { style: priceContainerStyles, children: [u$2("span", { style: pricePerPersonStyles, children: [formatCurrency(effectivePrice), "/", t("common.perPerson")] }), participantCount > 1 && (u$2("span", { style: priceTotalStyles, children: ["= ", formatCurrency(totalPrice)] }))] }), isDisabled && (u$2("div", { style: unavailableOverlayStyles, children: u$2("span", { children: upsell.unavailableReason
|
|
13866
13817
|
? formatUnavailableReason(upsell.unavailableReason, t)
|
|
13867
13818
|
: t("upsells.notAvailable") }) }))] }));
|
|
13868
13819
|
}
|
|
13869
13820
|
|
|
13870
|
-
function
|
|
13821
|
+
function getEffectiveUpsellPrice(upsell, round = true) {
|
|
13822
|
+
const dp = upsell.discountPercent ?? 0;
|
|
13823
|
+
if (dp <= 0)
|
|
13824
|
+
return upsell.price;
|
|
13825
|
+
const raw = Math.round(upsell.price * (100 - dp) / 100);
|
|
13826
|
+
return round ? Math.floor(raw / 100) * 100 : raw;
|
|
13827
|
+
}
|
|
13828
|
+
function UpsellsStep({ upsells, selectedUpsells, participantCount, isLoading, isOpen, onClose, onSelect, onContinue, onBack, roundPricesEnabled = true, }) {
|
|
13871
13829
|
const t = useTranslations();
|
|
13872
13830
|
const selectUpsell = (upsellId) => {
|
|
13873
13831
|
const exists = selectedUpsells.find((s) => s.upsellPackageId === upsellId);
|
|
@@ -13886,7 +13844,7 @@
|
|
|
13886
13844
|
return selectedUpsells.reduce((total, selection) => {
|
|
13887
13845
|
const upsell = upsells.find((u) => u.id === selection.upsellPackageId);
|
|
13888
13846
|
if (upsell) {
|
|
13889
|
-
return total + upsell
|
|
13847
|
+
return total + getEffectiveUpsellPrice(upsell, roundPricesEnabled) * selection.quantity;
|
|
13890
13848
|
}
|
|
13891
13849
|
return total;
|
|
13892
13850
|
}, 0);
|
|
@@ -13894,7 +13852,7 @@
|
|
|
13894
13852
|
const selectedTotal = calculateTotal();
|
|
13895
13853
|
const selectedCount = selectedUpsells.length;
|
|
13896
13854
|
const footerContent = (u$2(k$3, { children: [u$2("button", { type: "button", onClick: onBack, style: mergeStyles(buttonStyles.secondary, buttonStyles.fullWidth), children: t("common.back") }), u$2("button", { type: "button", onClick: onContinue, style: mergeStyles(buttonStyles.primary, buttonStyles.fullWidth), children: selectedCount === 0 ? t("button.continueWithout") : t("button.continue") })] }));
|
|
13897
|
-
return (u$2(Sidebar, { isOpen: isOpen, onClose: onClose, title: t("upsells.title"), footer: footerContent, children: u$2("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "16px 16px" }, children: [isLoading && (u$2("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "12px", padding: "40px 20px", ...textStyles.muted }, children: [spinner(), u$2("span", { children: t("upsells.loading") })] })), !isLoading && upsells.length === 0 && (u$2("div", { style: { textAlign: "center", padding: "40px 20px", ...textStyles.muted }, children: u$2("p", { children: t("upsells.noExtras") }) })), !isLoading && upsells.length > 0 && (u$2("div", { style: { display: "flex", flexDirection: "column", gap: "12px", flex: 1, overflowY: "auto", paddingBottom: "16px" }, children: upsells.map((upsell) => (u$2(UpsellCard, { upsell: upsell, isSelected: isSelected(upsell.id), participantCount: participantCount, onSelect: () => selectUpsell(upsell.id) }, upsell.id))) })), selectedCount > 0 && (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", marginTop: "16px", paddingBottom: "16px", paddingTop: "16px", borderTop: "1px solid var(--bw-border-color)", fontSize: "14px" }, children: [u$2("span", { style: textStyles.muted, children: selectedCount === 1 ? t("upsells.selected", { count: selectedCount }) : t("upsells.selectedPlural", { count: selectedCount }) }), u$2("span", { style: { fontWeight: 600, color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: ["+", formatCurrency(selectedTotal)] })] }))] }) }));
|
|
13855
|
+
return (u$2(Sidebar, { isOpen: isOpen, onClose: onClose, title: t("upsells.title"), footer: footerContent, children: u$2("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "16px 16px" }, children: [isLoading && (u$2("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "12px", padding: "40px 20px", ...textStyles.muted }, children: [spinner(), u$2("span", { children: t("upsells.loading") })] })), !isLoading && upsells.length === 0 && (u$2("div", { style: { textAlign: "center", padding: "40px 20px", ...textStyles.muted }, children: u$2("p", { children: t("upsells.noExtras") }) })), !isLoading && upsells.length > 0 && (u$2("div", { style: { display: "flex", flexDirection: "column", gap: "12px", flex: 1, overflowY: "auto", paddingBottom: "16px" }, children: upsells.map((upsell) => (u$2(UpsellCard, { upsell: upsell, isSelected: isSelected(upsell.id), participantCount: participantCount, onSelect: () => selectUpsell(upsell.id), roundPricesEnabled: roundPricesEnabled }, upsell.id))) })), selectedCount > 0 && (u$2("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", marginTop: "16px", paddingBottom: "16px", paddingTop: "16px", borderTop: "1px solid var(--bw-border-color)", fontSize: "14px" }, children: [u$2("span", { style: textStyles.muted, children: selectedCount === 1 ? t("upsells.selected", { count: selectedCount }) : t("upsells.selectedPlural", { count: selectedCount }) }), u$2("span", { style: { fontWeight: 600, color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: ["+", formatCurrency(selectedTotal)] })] }))] }) }));
|
|
13898
13856
|
}
|
|
13899
13857
|
|
|
13900
13858
|
// Main widget component
|
|
@@ -14154,6 +14112,7 @@
|
|
|
14154
14112
|
connectedAccountId: data.connectedAccountId,
|
|
14155
14113
|
mollieProfileId: data.mollieProfileId,
|
|
14156
14114
|
mollieTestmode: data.mollieTestmode,
|
|
14115
|
+
roundPricesEnabled: data.roundPricesEnabled ?? true,
|
|
14157
14116
|
});
|
|
14158
14117
|
}
|
|
14159
14118
|
if (data.stripePublishableKey) {
|
|
@@ -14212,6 +14171,7 @@
|
|
|
14212
14171
|
connectedAccountId: data.connectedAccountId,
|
|
14213
14172
|
mollieProfileId: data.mollieProfileId,
|
|
14214
14173
|
mollieTestmode: data.mollieTestmode,
|
|
14174
|
+
roundPricesEnabled: data.roundPricesEnabled ?? true,
|
|
14215
14175
|
});
|
|
14216
14176
|
if (!stripePromise && data.stripePublishableKey) {
|
|
14217
14177
|
const stripeOptions = {
|
|
@@ -14360,6 +14320,8 @@
|
|
|
14360
14320
|
const handleBookingSuccess = (result) => {
|
|
14361
14321
|
setIsSuccess(true);
|
|
14362
14322
|
setSuccessPaymentIntentId(result.paymentIntent.id);
|
|
14323
|
+
setSidebarOpen(false);
|
|
14324
|
+
setShouldRenderBookingForm(false);
|
|
14363
14325
|
config.onSuccess?.(result);
|
|
14364
14326
|
};
|
|
14365
14327
|
const handleBookingError = (errorMessage) => {
|
|
@@ -14616,7 +14578,7 @@
|
|
|
14616
14578
|
setShouldRenderInstanceSelection(true);
|
|
14617
14579
|
}
|
|
14618
14580
|
}, children: config.buttonText ||
|
|
14619
|
-
(isDirectInstanceMode ? t("button.bookNow") : t("button.selectDate")) }), shouldRenderInstanceSelection && (u$2(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => setSidebarOpen(false), isOpen: sidebarOpen && currentStep === "eventInstances", onClose: () => setSidebarOpen(false), isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderUpsells && (u$2(UpsellsStep, { upsells: upsells, selectedUpsells: selectedUpsells, participantCount: tempParticipantCount, isLoading: isLoadingUpsells, isOpen: currentStep === "upsells", onClose: () => setCurrentStep("eventInstances"), onSelect: handleUpsellsSelect, onContinue: handleUpsellsContinue, onBack: handleUpsellsBack })), shouldRenderBookingForm && eventDetails && (u$2(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), onBackToEventTypes: () => setSidebarOpen(false), selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), systemConfig: systemConfig, selectedUpsells: selectedUpsells, upsells: upsells })), u$2(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
|
|
14581
|
+
(isDirectInstanceMode ? t("button.bookNow") : t("button.selectDate")) }), shouldRenderInstanceSelection && (u$2(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => setSidebarOpen(false), isOpen: sidebarOpen && currentStep === "eventInstances", onClose: () => setSidebarOpen(false), isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderUpsells && (u$2(UpsellsStep, { upsells: upsells, selectedUpsells: selectedUpsells, participantCount: tempParticipantCount, isLoading: isLoadingUpsells, isOpen: currentStep === "upsells", onClose: () => setCurrentStep("eventInstances"), onSelect: handleUpsellsSelect, onContinue: handleUpsellsContinue, onBack: handleUpsellsBack, roundPricesEnabled: systemConfig?.roundPricesEnabled !== false })), shouldRenderBookingForm && eventDetails && (u$2(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), onBackToEventTypes: () => setSidebarOpen(false), selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), systemConfig: systemConfig, selectedUpsells: selectedUpsells, upsells: upsells })), u$2(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
|
|
14620
14582
|
setIsSuccess(false);
|
|
14621
14583
|
setCurrentStep("eventTypes");
|
|
14622
14584
|
setSidebarOpen(false);
|
|
@@ -14663,7 +14625,7 @@
|
|
|
14663
14625
|
};
|
|
14664
14626
|
};
|
|
14665
14627
|
const backHandlers = getBackHandlers();
|
|
14666
|
-
return (u$2(StyleProvider, { config: config, children: [u$2("div", { ref: setWidgetContainerRef, children: [cardsView, shouldRenderInstanceSelection && (u$2(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: handleBackToEventTypes, isOpen: currentStep === "eventInstances", onClose: handleBackToEventTypes, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderUpsells && (u$2(UpsellsStep, { upsells: upsells, selectedUpsells: selectedUpsells, participantCount: tempParticipantCount, isLoading: isLoadingUpsells, isOpen: currentStep === "upsells", onClose: () => setCurrentStep("eventInstances"), onSelect: handleUpsellsSelect, onContinue: handleUpsellsContinue, onBack: handleUpsellsBack })), shouldRenderBookingForm && eventDetails && (u$2(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: backHandlers.onBackToEventInstances, onBackToEventTypes: backHandlers.onBackToEventTypes, selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: backHandlers.onClose, systemConfig: systemConfig, selectedUpsells: selectedUpsells, upsells: upsells })), u$2(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
|
|
14628
|
+
return (u$2(StyleProvider, { config: config, children: [u$2("div", { ref: setWidgetContainerRef, children: [cardsView, shouldRenderInstanceSelection && (u$2(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: handleBackToEventTypes, isOpen: currentStep === "eventInstances", onClose: handleBackToEventTypes, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderUpsells && (u$2(UpsellsStep, { upsells: upsells, selectedUpsells: selectedUpsells, participantCount: tempParticipantCount, isLoading: isLoadingUpsells, isOpen: currentStep === "upsells", onClose: () => setCurrentStep("eventInstances"), onSelect: handleUpsellsSelect, onContinue: handleUpsellsContinue, onBack: handleUpsellsBack, roundPricesEnabled: systemConfig?.roundPricesEnabled !== false })), shouldRenderBookingForm && eventDetails && (u$2(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: backHandlers.onBackToEventInstances, onBackToEventTypes: backHandlers.onBackToEventTypes, selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: backHandlers.onClose, systemConfig: systemConfig, selectedUpsells: selectedUpsells, upsells: upsells })), u$2(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
|
|
14667
14629
|
setIsSuccess(false);
|
|
14668
14630
|
setCurrentStep("eventTypes");
|
|
14669
14631
|
setSuccessPaymentIntentId(null);
|
|
@@ -14724,7 +14686,7 @@
|
|
|
14724
14686
|
}
|
|
14725
14687
|
}
|
|
14726
14688
|
|
|
14727
|
-
var css_248z = ".booking-widget-container{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;color:var(--bw-text-color,#1e293b);direction:ltr;display:block;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;position:relative;text-align:left}.booking-widget-container *,.booking-widget-container :after,.booking-widget-container :before{box-sizing:border-box;margin:0;padding:0}.booking-widget-container input,.booking-widget-container select,.booking-widget-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.booking-widget-container button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.booking-widget-container a{color:inherit;text-decoration:none}.booking-widget-container img{display:block;height:auto;max-width:100%;vertical-align:middle}.booking-widget-container ol,.booking-widget-container ul{list-style:none}.booking-widget-container h1,.booking-widget-container h2,.booking-widget-container h3,.booking-widget-container h4,.booking-widget-container h5,.booking-widget-container h6{font-size:inherit;font-weight:inherit}#booking-widget-portal{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);direction:ltr;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;text-align:left}#booking-widget-portal *,#booking-widget-portal :after,#booking-widget-portal :before{box-sizing:border-box}#booking-widget-portal-root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);line-height:1.5}:root{--bw-highlight-color:#00b1aa;--bw-highlight-color-rgb:0,177,170;--bw-background-color:#f8fdfe;--bw-surface-color:#fff;--bw-text-color:#0e7490;--bw-text-muted:rgba(14,116,144,.7);--bw-border-color:#bae6fd;--bw-success-color:#38bdf8;--bw-warning-color:#fbbf24;--bw-error-color:#f43f5e;--bw-border-radius:18px;--bw-border-radius-small:calc(var(--bw-border-radius)*0.8);--bw-spacing:16px;--bw-spacing-large:24px;--bw-font-family:\"Inter\",system-ui,sans-serif;--bw-font-size:14px;--bw-font-size-large:18px;--bw-font-size-small:12px;--bw-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--bw-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--bw-highlight-muted:rgba(0,177,170,.1);--bw-highlight-subtle:rgba(0,177,170,.05);--bw-text-subtle:rgba(14,116,144,.4)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes
|
|
14689
|
+
var css_248z = ".booking-widget-container{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;color:var(--bw-text-color,#1e293b);direction:ltr;display:block;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;position:relative;text-align:left}.booking-widget-container *,.booking-widget-container :after,.booking-widget-container :before{box-sizing:border-box;margin:0;padding:0}.booking-widget-container input,.booking-widget-container select,.booking-widget-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.booking-widget-container button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.booking-widget-container a{color:inherit;text-decoration:none}.booking-widget-container img{display:block;height:auto;max-width:100%;vertical-align:middle}.booking-widget-container ol,.booking-widget-container ul{list-style:none}.booking-widget-container h1,.booking-widget-container h2,.booking-widget-container h3,.booking-widget-container h4,.booking-widget-container h5,.booking-widget-container h6{font-size:inherit;font-weight:inherit}#booking-widget-portal{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);direction:ltr;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;text-align:left}#booking-widget-portal *,#booking-widget-portal :after,#booking-widget-portal :before{box-sizing:border-box}#booking-widget-portal-root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);line-height:1.5}:root{--bw-highlight-color:#00b1aa;--bw-highlight-color-rgb:0,177,170;--bw-background-color:#f8fdfe;--bw-surface-color:#fff;--bw-text-color:#0e7490;--bw-text-muted:rgba(14,116,144,.7);--bw-border-color:#bae6fd;--bw-success-color:#38bdf8;--bw-warning-color:#fbbf24;--bw-error-color:#f43f5e;--bw-border-radius:18px;--bw-border-radius-small:calc(var(--bw-border-radius)*0.8);--bw-spacing:16px;--bw-spacing-large:24px;--bw-font-family:\"Inter\",system-ui,sans-serif;--bw-font-size:14px;--bw-font-size-large:18px;--bw-font-size-small:12px;--bw-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--bw-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--bw-highlight-muted:rgba(0,177,170,.1);--bw-highlight-subtle:rgba(0,177,170,.05);--bw-text-subtle:rgba(14,116,144,.4)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-spin{animation:spin 1s linear infinite}.animate-shimmer{animation:shimmer 2s infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-fade-in{animation:fade-in .2s ease-out}.animate-slide-in-up{animation:slide-in-up .3s ease-out}.animate-scale-in{animation:scale-in .2s ease-out}.skeleton-shimmer{overflow:hidden;position:relative}.skeleton-shimmer:after{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}@media (max-width:768px){.sidebar-mobile{border-radius:0!important;max-width:100%!important;width:100%!important}}@media (max-width:600px){.event-type-list{gap:12px!important;padding:8px!important}.event-type-card{flex:1 1 100%!important;max-width:100%!important;padding:0!important}.event-type-img{height:160px!important}.event-type-title{font-size:1.1rem!important}.event-type-desc{font-size:.8rem!important;max-height:100px!important;min-height:100px!important}.event-type-content{padding:16px 24px!important}}.event-type-markdown{overflow:visible!important}.event-type-markdown p{color:var(--bw-text-muted);font-family:var(--bw-font-family);line-height:1.6;margin:0 0 8px}.event-type-markdown p:last-child{margin-bottom:0}.event-type-markdown h2{font-size:18px!important;font-weight:700!important;margin:12px 0 6px!important}.event-type-markdown h2,.event-type-markdown h3{color:var(--bw-text-color)!important;line-height:1.3!important}.event-type-markdown h3{font-size:16px!important;font-weight:600!important;margin:10px 0 4px!important}.event-type-markdown strong{color:var(--bw-text-color);font-weight:600}.event-type-markdown em{font-style:italic}.event-type-markdown u{text-decoration:underline}.event-type-markdown ul{list-style:none!important;margin:6px 0!important;padding:0 0 0 24px!important;position:relative!important}.event-type-markdown ul li{color:var(--bw-text-muted)!important;font-family:var(--bw-font-family)!important;margin-bottom:2px!important;padding-left:0!important;position:relative!important}.event-type-markdown ul li:before{color:var(--bw-text-color)!important;content:\"•\"!important;font-weight:700!important;left:-16px!important;position:absolute!important;top:0!important}.event-type-markdown ol{counter-reset:list-counter!important;list-style:none!important;margin:6px 0!important;padding:0 0 0 24px!important;position:relative!important}.event-type-markdown ol li{color:var(--bw-text-muted)!important;counter-increment:list-counter!important;font-family:var(--bw-font-family)!important;margin-bottom:2px!important;padding-left:0!important;position:relative!important}.event-type-markdown ol li:before{color:var(--bw-text-color)!important;content:counter(list-counter) \".\"!important;font-weight:700!important;left:-20px!important;position:absolute!important;top:0!important}.event-type-markdown blockquote{border-left:2px solid var(--bw-border-color);color:var(--bw-text-muted);font-style:italic;margin:4px 0;padding-left:12px}.event-type-markdown a{color:var(--bw-highlight-color);text-decoration:underline}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--bw-text-color);font-weight:600;margin-bottom:.5em}.markdown-content h1{font-size:1.5em}.markdown-content h2{font-size:1.25em}.markdown-content h3{font-size:1.1em}.markdown-content p{line-height:1.6;margin-bottom:1em}.markdown-content ol,.markdown-content ul{margin-bottom:1em;padding-left:1.5em}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin-bottom:.25em}.markdown-content a{color:var(--bw-highlight-color);text-decoration:underline}.markdown-content a:hover{opacity:.8}.markdown-content strong{font-weight:600}.markdown-content em{font-style:italic}.markdown-content code{background:var(--bw-highlight-subtle);border-radius:4px;font-family:monospace;font-size:.9em;padding:.125em .25em}.markdown-content blockquote{border-left:3px solid var(--bw-highlight-color);color:var(--bw-text-muted);margin:1em 0;padding-left:1em}.print-only{display:none}.print-hidden{display:block}@media print{.print-only{display:block}.print-hidden{display:none!important}.print-booking-header{border-bottom:2px solid #000;display:block;margin-bottom:24px;padding-bottom:16px;text-align:center}.print-booking-header h1{font-size:24px;margin:0 0 8px}.print-booking-header .subtitle{color:#666;font-size:14px}.print-booking-card{border:1px solid #ccc;border-radius:8px;margin-bottom:16px;padding:16px;page-break-inside:avoid}.print-section-title{border-bottom:1px solid #ddd;display:block;font-size:16px;font-weight:600;margin-bottom:12px;padding-bottom:8px}.print-detail-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.print-detail-item{margin-bottom:8px}.print-detail-label{color:#666;font-size:12px;margin-bottom:4px}.print-detail-value{font-size:14px;font-weight:600}.print-status-badge{border-radius:9999px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.print-status-paid{background-color:#dcfce7;color:#166534;display:inline-block}.print-participant{align-items:center;background-color:#f9fafb;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:8px;padding:8px}.print-participant-name{font-weight:600}.print-participant-age{color:#666;font-size:12px}.print-payment-summary{display:block}.print-payment-row{border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:4px 0}.print-payment-row:last-child{border-bottom:none;font-weight:600}.print-footer{border-top:1px solid #ddd;color:#666;display:block;font-size:12px;margin-top:24px;padding-top:16px;text-align:center}.print-footer p{margin:4px 0}}";
|
|
14728
14690
|
styleInject(css_248z);
|
|
14729
14691
|
|
|
14730
14692
|
// Export init function for vanilla JS usage with Preact
|